关键词不能为空

当前您在: 主页 > 英语 >

单片机设计 按键顺序控制加减计数(1602 液晶显示) 程序

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-10-21 14:43
tags:按顺序

堪的拼音-英国士兵

2020年10月21日发(作者:韦蟾)



#include
#include
#define uchar unsigned char
#define uint unsigned int
#define LCD_IO P2
sbit KK1 = P3^2; 按键输入;
sbit KK2 = P3^3; 按键输入;
sbit LCD_RS = P3^5;
sbit LCD_RW = P3^6;
sbit LCD_EN = P3^7;
uchar code LCD_line1[] =
int idata mydata=0;
************************************ **************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
******************** *******************************************
void Delay_1ms(uint x)
{
uchar i, j;
for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);
}
************************************************ **************
* 名称 : lcd_bz( )
* 功能 : 测试忙碌子程序
* 输入 : 无
* 输出 : result
****** ************************************************** *******
bit lcd_bz()
{
bit result;
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
_nop_();
_nop_();
result=(bit)(P3&0x80);
LCD_EN = 0;
return result;
}



******* ************************************************** *****
* 名称 : W_LCD_Com( )
* 功能 : 写指令子程序
* 输入 : com
* 输出 : 无
**************** ***********************************************
void W_LCD_Com(uchar com)
{
while(lcd_bz());
LCD_RS = 0; LCD_RW=0; LCD_EN = 0; LCD_RS和RW同时为低电平时,可以写入指

LCD_IO = com; Delay_1ms(5); 下面用EN输入一个高脉冲
LCD_EN = 1; Delay_1ms(5); LCD_EN = 0;
}

*********************** ***************************************
* 名称 : W_LCD_Dat( )
* 功能 : 写数据子程序
* 输入 : dat
* 输出 : 无
******************************** *******************************
void W_LCD_Dat(uchar dat)
{
while(lcd_bz());
LCD_RS = 1; LCD_RW=0;LCD_EN = 0; LCD_RS为高,LCD_RW为低时,可以写入数据
LCD_IO = dat; Delay_1ms(5); 下面用EN输入一个高脉冲
LCD_EN = 1; Delay_1ms(5); LCD_EN = 0;
}

*********************** ***************************************
* 名称 : W_LCD_STR( )
* 功能 : 写字符串子程序
* 输入 : *s
* 输出 : 无
******************************** *******************************
void W_LCD_STR(uchar *s)
{
while(*s > 0) {W_LCD_Dat(*s); s++;}
}

***************************** *********************************
* 名称 : LCD_cursor( )
* 功能 : 设置光标位置子程序
* 输入 : pos



* 输出 : 无
*************** ************************************************

void LCD_cursor(uchar pos) LCD光标定位到处
{
W_LCD_Com(pos+0x80); 第一行地址是0x80
}

************************ **************************************
* 名称 : initial( )
* 功能 : 初始化子程序
* 输入 : 无
* 输出 : 无
* 指令 :#define LCD_AC_AUTO_INCREMENT 0x06 数据读、写操作后,AC自动增一
#define LCD_DISPLAY_ON 0x0C 显示开
#define LCD_DISPLAY_DOUBLE_LINE 0x38 两行显示
************************************************* **************
void initial()
{
W_LCD_Com(0x06|0x04);
W_LCD_Com(0x0c|0x08);
W_LCD_Com(0x38);
W_LCD_STR(LCD_line1);
}

******* ************************************************** *****
* 名称 : Main()
* 功能 : 主函数
**** ************************************************** *********
void main()
{
bit flag;
uchar temp;
uchar pos;
Delay_1ms(10)
initial();
while(1){
pos=0x4f;
if(mydata>255)
mydata=0;
else if(mydata<0)
mydata=255;
if(mydata>127) 把mydata当做-128~127的有符号数来显示
{



flag=1;
temp=256-mydata;
}
else {temp=mydata;flag=0;}
LCD_cursor(pos);
W_LCD_Dat((temp%10)+'0');
pos--;光标左移(其实光标不显示,只是为了输出高位)
Delay_1ms(10);
if(temp100 || temp10)
{
LCD_cursor(pos);
W_LCD_Dat((temp10)%10+'0');
pos--;
}
Delay_1ms(10);
if(temp100)
{
LCD_cursor(pos);
W_LCD_Dat((temp100)%10+'0');
pos--;
}
if(flag)
{
LCD_cursor(pos);
W_LCD_Dat('-');负号
}
else
{ LCD_cursor(pos);
W_LCD_Dat(' ');清除负号(空格代替)
}
if(!KK1)
{
while(KK2);
while(!KK2);
mydata++;
}
else if(!KK2)
{
while(KK1);
while(!KK1);
mydata--;
}
}
}

单纯的意思-好看的英文名字


碗英语-插的拼音怎么写


芧怎么读-贵族血统


中央的反义词是什么-lister


underscore-商业本票


六下英语书人教版-11月英文


嗪怎么读-让我们的英文


nurse什么意思-戻



本文更新与2020-10-21 14:43,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/416239.html

单片机设计 按键顺序控制加减计数(1602 液晶显示) 程序的相关文章

单片机设计 按键顺序控制加减计数(1602 液晶显示) 程序随机文章