┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |
//程序功能:液晶5位显示,每个按键对应一位。按一下按键,相应位加1,可进位。超出量程,则清0
#include "reg52.h"
#define uchar unsigned char
typedef bit BOOL ;
sbit Key1= P3^2;
sbit Key2= P3^3;
sbit Key3= P3^4;
sbit Key4= P3^5;
sbit Key5= P3^7;
sbit rs = P2^6 ;
sbit rw = P3^6 ;
sbit ep = P2^7 ;
//各位计数变量
uchar dis[5]={0x30,0x30,0x30,0x30,0x30};
void delay(uchar ms)
{ // 延时子程序
uchar i ;
while(ms--)
{
for(i = 0 ; i<250;i++) ;
}
}
BOOL lcd_bz()
{ // 测试LCD忙碌状态
BOOL result ;
rs = 0 ;
rw = 1 ;
ep = 1 ;
result = (BOOL)(P0 & 0x80) ;
ep = 0 ;
return result ;
}
void lcd_wcmd(uchar cmd)
{ // 写入指令数据到LCD
while(lcd_bz()) ;
rs = 0 ;
rw = 0 ;
ep = 0 ;
P0 = cmd ;
ep = 1 ;
ep = 0 ;
}
void lcd_pos(uchar pos)
{ //设定显示位置
lcd_wcmd(pos | 0x80) ;
}
void lcd_wdat(uchar dat)
{ //写入字符显示数据到LCD
while(lcd_bz()) ;
rs = 1 ;
rw = 0 ;
ep = 0 ;
P0 = dat ;
ep = 1 ;
ep = 0 ;
}
void lcd_init()
{ //LCD初始化设定
lcd_wcmd(0x38) ; //function set
delay(1) ;
lcd_wcmd(0x38) ; //function set
delay(1) ;
lcd_wcmd(0x08) ; //display on/off
delay(1) ;
lcd_wcmd(0x01) ; //清除LCD的显示内容
delay(1) ;
lcd_wcmd(0x06) ; //entry mode set
delay(1) ;
lcd_wcmd(0x0c) ; //entry mode set
delay(1) ;
}
/*---------------
函数名称:display()
功能 :在LCD上显示数组的数据
说明 :先写显示地址,后写显示数据
调用 :lcd_wcmd(), lcd_pos()
入口参数:pos 写入的位置,q指向要写入的数据所在的数组
返回值 :无
----------------*/
void display(uchar pos, uchar *q)
{
uchar i ;
//lcd_wcmd(0x01) ; //clear
delay(10) ;
lcd_pos(pos) ;
for(i=0;i<5;i++)
{
lcd_wdat(*q) ;
q++ ;
delay(10) ;
}
}
void main()
{
Key1=1;
Key2=1;
Key3=1;
Key4=1;
lcd_init() ; // 初始化LCD
while(1) //循环执行
{
if(!Key1)//如果键1按下,下同
{
while(!Key1);
++dis[0];
}
if(!Key2)
{
while(!Key2);
++dis[1];
}
if(!Key3)
{
while(!Key3);
++dis[2];
}
if(!Key4)
{
while(!Key4);
++dis[3];
}
if(!Key5)
{
while(!Key5);
++dis[4];
}
if((dis[0]-0x30)>9)//个位进位,下同
{
dis[0]=0x30;
++dis[1];
}
if((dis[1]-0x30)>9)
{
dis[1]=0x30;
++dis[2];
}
if((dis[2]-0x30)>9)
{
dis[2]=0x30;
++dis[3];
}
if((dis[3]-0x30)>9)
{
dis[3]=0x30;
++dis[4];
}
if((dis[4]-0x30)>9)
{
dis[0]=0x30;
dis[1]=0x30;
dis[2]=0x30;
dis[3]=0x30;
dis[4]=0x30;
}
display(0x00,dis); //只须调用显示函数
}
}
┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |