pos机刷卡系统繁忙,BH1415F智能调频控制系统C语言程序

 新闻资讯  |   2023-07-03 12:45  |  投稿人:pos机之家

网上有很多关于pos机刷卡系统繁忙,BH1415F智能调频控制系统C语言程序的知识,也有很多人为大家解答关于pos机刷卡系统繁忙的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!

本文目录一览:

1、pos机刷卡系统繁忙

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机刷卡系统繁忙的知识,希望能够帮助到大家!

转发请带上网址:http://www.poszjia.com/news/78057.html

你可能会喜欢:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 babsan@163.com 举报,一经查实,本站将立刻删除。