網(wǎng)上有很多關(guān)于pos機(jī)刷卡系統(tǒng)繁忙,BH1415F智能調(diào)頻控制系統(tǒng)C語言程序的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)刷卡系統(tǒng)繁忙的問題,今天pos機(jī)之家(www.rcqwhg.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
pos機(jī)刷卡系統(tǒng)繁忙
/***************************************
BH1415F芯片智能調(diào)頻控制電路
STC89C52單片機(jī) LCD1602顯示
西電德顯計(jì)劃
***************************************/
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit BH1415F_MUTE = P2^4;
sbit BH1415F_DA = P2^5;
sbit BH1415F_CLK = P2^6;
sbit BH1415F_CE = P2^7;
sbit KEY_1= P1^4;
sbit KEY_2= P1^5;
sbit KEY_3= P1^6;
sbit KEY_4= P1^7;
sbit lcd1602_rs = P2^0;
sbit lcd1602_rw = P2^1;
sbit lcd1602_ep = P2^2;
sbit lg = P2^3;
void Send_16(uint ui_Date, uchar uc_MONO ,uchar uc_PD); //發(fā)送數(shù)據(jù)函數(shù)
void Key_Scan_1(void); //控制靜音
void Key_Scan_2(void); //頻率步進(jìn) 精度0.1MHZ
void Key_Scan_3(void); //頻率步退 精度0.1MHZ
void Key_Scan_4(void); //立體聲控制
void Delay(uchar ms);
void Disp(void);
void lcd_wdat(uchar dat);
void lcd_wcmd(uchar cmd);
void lcd_pos(uchar pos);
void lcd_init(void);
void lcd_disp(uchar pos,uchar dat);
bit lcd_bz(void);
uchar uc_Count_1;
uchar uc_Count_2;
uchar uc_Count_3;
uchar uc_Count_4;
uint ui_TEMP_1; //保存頻率數(shù)據(jù)
uint ui_TEMP_2; //保存立體聲數(shù)據(jù)
uint ui_TEMP_3; //保存靜音數(shù)據(jù)
uint ui_TEMP_4; //
/**********************************主程序*************************************/
void main(void)
{
Send_16(0x3e7,0x01,0x00); //設(shè)置初始頻率99.9MHz、立體聲、鎖相環(huán)
ui_TEMP_2=0x01;
BH1415F_MUTE=0;
Disp();
while(1)
{
Key_Scan_1();
Key_Scan_2();
Key_Scan_3();
Key_Scan_4();
}
}
/**********************************顯示子程序*************************************/
void Disp(void)
{
lcd_init(); // 初始化LCD
Delay(10); //延時(shí)10ms
lcd_disp(0,70); //第1個(gè)字符顯示F
lcd_disp(1,77); //顯示M
lcd_disp(2,58); //顯示 :號
if(ui_TEMP_1>=1000)
{
lcd_disp(3,ui_TEMP_1/1000+48); //加48是因?yàn)榍懊嬉延?7個(gè)符號
}
lcd_disp(4,ui_TEMP_1/100+48); //
lcd_disp(5,ui_TEMP_1/10+48); //
lcd_disp(6,46); //顯示小數(shù)點(diǎn)
lcd_disp(7,ui_TEMP_1+48); //
if(ui_TEMP_2)
{
lcd_disp(9,83); //S
lcd_disp(10,84); //T
lcd_disp(11,69); //E
}
if(ui_TEMP_3)
{
lcd_disp(13,77); //M
lcd_disp(14,85); //U
}
lcd_disp(15,127); //左箭頭
lcd_disp(64,126); //右箭頭
lcd_disp(66,88); //西X
lcd_disp(67,68); //電D
lcd_disp(69,77); //M
lcd_disp(70,85); //U
lcd_disp(71,83); //S
lcd_disp(72,73); //I
lcd_disp(73,67); //C
lcd_disp(76,79); //O
lcd_disp(77,78); //N
lcd_disp(79,127); //左箭頭
}
/**********************************延時(shí)子程序********************************/
void Delay(uchar ms)
{ // lcd延時(shí)子程序
uchar i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/**********************************LCD1602函數(shù)*********************************/
void lcd_init()
{ //LCD初始化設(shè)定
lcd_wcmd(0x38); //
Delay(1);
lcd_wcmd(0x38); //
Delay(1);
lcd_wcmd(0x38); //設(shè)置8位格式,2行,5*7
Delay(1);
lcd_wcmd(0x0c); //整體顯示,關(guān)光標(biāo),不閃爍
Delay(1);
lcd_wcmd(0x06); //設(shè)定輸入方式,增量不移位
Delay(1);
lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容
Delay(1);
}
bit lcd_bz()
{ // 測試LCD忙碌狀態(tài)
bit result;
lcd1602_rs = 0;
lcd1602_rw = 1;
lcd1602_ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80);
lcd1602_ep = 0;
return result;
}
void lcd_wcmd(uchar cmd) // 寫入指令數(shù)據(jù)到LCD
{
while(lcd_bz());
lcd1602_rs = 0; //指令
lcd1602_rw = 0; //寫入
lcd1602_ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
lcd1602_ep = 1; //允許
_nop_();
_nop_();
_nop_();
_nop_();
lcd1602_ep = 0;
}
void lcd_disp(uchar pos,uchar dat) //lcd顯示位置和數(shù)據(jù)
{
lcd_wcmd(pos | 0x80); //設(shè)定顯示位置
while(lcd_bz()); //寫入字符顯示數(shù)據(jù)到LCD
lcd1602_rs = 1; //數(shù)據(jù)
lcd1602_rw = 0; //寫入
lcd1602_ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
lcd1602_ep = 1; //允許
_nop_();
_nop_();
_nop_();
_nop_();
lcd1602_ep = 0;
}
/**********************************鍵盤掃描1*********************************/
void Key_Scan_1(void) //控制靜音
{
if(KEY_1==0)
{
{
Delay(20); //軟件防抖
if(KEY_1==0)
{
BH1415F_MUTE=(uc_Count_1++)%2;
ui_TEMP_3=BH1415F_MUTE;
while(KEY_1==0);
}
Disp();
while(KEY_1==0);
}
}
}
/**********************************鍵盤掃描2*************************************/
void Key_Scan_2(void) //頻率步進(jìn)
{
if(KEY_2==0)
{
Delay(20);
if(KEY_2==0)
{
uc_Count_2++;
if(uc_Count_2==200)
{
uc_Count_2=0;
Send_16(0x3e7,ui_TEMP_2,0x00);
}
Send_16(ui_TEMP_1+1,ui_TEMP_2,0x00);
Disp();
while(KEY_2==0);
}
}
}
/**********************************鍵盤掃描3*************************************/
void Key_Scan_3(void) //頻率步退
{
if(KEY_3==0)
{
Delay(20);
if(KEY_3==0)
{
uc_Count_3++;
if(uc_Count_3==300)
{
uc_Count_3=0;
Send_16(0x3e7,ui_TEMP_2,0x00);
}
Send_16(ui_TEMP_1-1,ui_TEMP_2,0x00);
Disp();
while(KEY_3==0);
}
}
}
/**********************************鍵盤掃描4*************************************/
void Key_Scan_4(void) //立體聲控制
{
if(KEY_4==0)
{
Delay(20); //軟件防抖
if(KEY_4==0)
{
uc_Count_4++;
if(ui_TEMP_2=uc_Count_4%2)
Send_16(ui_TEMP_1,0x01,0x00);
else
Send_16(ui_TEMP_1,0x00,0x00);
Disp();
while(KEY_4==0);
}
}
}
/**********************************數(shù)據(jù)發(fā)送*************************************/
void Send_16(uint ui_Date,uchar uc_MONO ,uchar uc_PD)
{
uchar i;
ui_TEMP_1=ui_Date;
BH1415F_CLK=0;
BH1415F_CE=0;
BH1415F_CE=1;
for(i=11;i;--i)
{
BH1415F_DA=ui_Date&0x01;
ui_Date>>=1;
BH1415F_CLK=1;
BH1415F_CLK=0;
}
BH1415F_DA=uc_MONO&0x01;
BH1415F_CLK=1;
BH1415F_CLK=0;
BH1415F_DA=uc_PD&0x20;
BH1415F_CLK=1;
BH1415F_CLK=0;
uc_PD<<=1;
BH1415F_DA=uc_PD&0x20;
BH1415F_CLK=1;
BH1415F_CLK=0;
BH1415F_DA=1;
BH1415F_CLK=1;
BH1415F_CLK=0;
BH1415F_DA=0;
BH1415F_CLK=1;
BH1415F_CLK=0;
BH1415F_CE=0;
}
/**********************************數(shù)據(jù)發(fā)送*************************************/
以上就是關(guān)于pos機(jī)刷卡系統(tǒng)繁忙,BH1415F智能調(diào)頻控制系統(tǒng)C語言程序的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)刷卡系統(tǒng)繁忙的知識(shí),希望能夠幫助到大家!