网上有很多关于pos机刷卡系统繁忙,BH1415F智能调频控制系统C语言程序的知识,也有很多人为大家解答关于pos机刷卡系统繁忙的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!
本文目录一览:
pos机刷卡系统繁忙
/***************************************
BH1415F芯片智能调频控制电路
STC89C52单片机 LCD1602显示
西电德显计划
***************************************/
#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); //发送数据函数
void Key_Scan_1(void); //控制静音
void Key_Scan_2(void); //频率步进 精度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; //保存频率数据
uint ui_TEMP_2; //保存立体声数据
uint ui_TEMP_3; //保存静音数据
uint ui_TEMP_4; //
/**********************************主程序*************************************/
void main(void)
{
Send_16(0x3e7,0x01,0x00); //设置初始频率99.9MHz、立体声、锁相环
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); //延时10ms
lcd_disp(0,70); //第1个字符显示F
lcd_disp(1,77); //显示M
lcd_disp(2,58); //显示 :号
if(ui_TEMP_1>=1000)
{
lcd_disp(3,ui_TEMP_1/1000+48); //加48是因为前面已有47个符号
}
lcd_disp(4,ui_TEMP_1/100+48); //
lcd_disp(5,ui_TEMP_1/10+48); //
lcd_disp(6,46); //显示小数点
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); //左箭头
}
/**********************************延时子程序********************************/
void Delay(uchar ms)
{ // lcd延时子程序
uchar i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/**********************************LCD1602函数*********************************/
void lcd_init()
{ //LCD初始化设定
lcd_wcmd(0x38); //
Delay(1);
lcd_wcmd(0x38); //
Delay(1);
lcd_wcmd(0x38); //设置8位格式,2行,5*7
Delay(1);
lcd_wcmd(0x0c); //整体显示,关光标,不闪烁
Delay(1);
lcd_wcmd(0x06); //设定输入方式,增量不移位
Delay(1);
lcd_wcmd(0x01); //清除LCD的显示内容
Delay(1);
}
bit lcd_bz()
{ // 测试LCD忙碌状态
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) // 写入指令数据到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显示位置和数据
{
lcd_wcmd(pos | 0x80); //设定显示位置
while(lcd_bz()); //写入字符显示数据到LCD
lcd1602_rs = 1; //数据
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) //频率步进
{
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);
}
}
}
/**********************************数据发送*************************************/
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;
}
/**********************************数据发送*************************************/
以上就是关于pos机刷卡系统繁忙,BH1415F智能调频控制系统C语言程序的知识,后面我们会继续为大家整理关于pos机刷卡系统繁忙的知识,希望能够帮助到大家!
