C51单片机lcd实现数字秒表计时
时间: 2023-11-16 15:05:03 浏览: 127
基于51单片机的电子计时秒表设计
很高兴为您解答!关于C51单片机lcd实现数字秒表计时的问题,您可以参考以下代码:
```
#include<reg52.h>
#include<intrins.h>
sbit RS=P2^0; //定义LCD的RS接口
sbit RW=P2^1; //定义LCD的写入接口
sbit E=P2^2; //定义LCD的使能接口
void DelayUs2x(unsigned char t);
void DelayMs(unsigned char t);
void LcdWriteCmd(unsigned char cmd);
void LcdWriteDat(unsigned char dat);
void LcdInit();
void TimerInit();
void Display();
void Int0Init(); //按键中断初始化
unsigned char code table[]="1234567890"; //定义计数器显示的数字
unsigned char cnt=0; //计数器变量
unsigned int count=0; //计数变量,最大为65535
void main()
{
LcdInit(); //初始化LCD
TimerInit(); //初始化计数器
Int0Init(); //初始化按键中断
while(1) //循环体
{
Display(); //调用显示函数
}
}
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
DelayUs2x(245);
DelayUs2x(245);
}
}
void LcdWriteCmd(unsigned char cmd) //写入指令
{
RS=0;
RW=0;
P0=cmd;
DelayUs2x(5);
E=1;
DelayUs2x(5);
E=0;
}
void LcdWriteDat(unsigned char dat) //写入数据
{
RS=1;
RW=0;
P0=dat;
DelayUs2x(5);
E=1;
DelayUs2x(5);
E=0;
}
void LcdInit() //LCD初始化
{
LcdWriteCmd(0x38); //8位数据接口,双行显示,5x7点阵
LcdWriteCmd(0x0c); //显示开,无光标
LcdWriteCmd(0x06); //地址自动加1,不移屏
LcdWriteCmd(0x01); //清屏
}
void TimerInit() //计数器初始化
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TR0=1;
ET0=1;
EA=1;
}
void Display() //显示计数器的值
{
unsigned char i;
unsigned char str[7]={"00:00:"};
unsigned int c;
c=count; //读取计数变量的值
str[6]=table[cnt%10]; //个位
str[5]=table[(cnt/10)%10]; //十位
str[3]=table[(c/360000)%10]; //小时的十位
str[4]=table[(c/36000)%10]; //小时的个位
str[1]=table[(c%36000)/6000]; //分钟的十位
str[2]=table[(c%6000)/1000]; //分钟的个位
LcdWriteCmd(0x80); //第1行第1个字符开始显示
for(i=0;i<7;i++)
LcdWriteDat(str[i]);
}
void Int0Init() //按键中断初始化
{
IT0=1;
EX0=1;
}
void Int0() interrupt 0 //按键中断函数
{
TR0=~TR0; //计数器开关
if(TR0)
EA=1;
else
EA=0;
if(!TR0)
cnt=0;
IE0=0; //清除中断标志位
DelayMs(20); //消抖
IE0=1; //重新使能中断
}
void Timer0() interrupt 1 //计数器中断函数
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
count++;
if(count==8640000) //计数器累计1天停止计数
TR0=0;
cnt++;
}
```
此代码使用了C51单片机和LCD,实现了数字秒表计时的功能。 如果需要更加详细的解释,请提出您的疑问,我会给您详细的解答。
阅读全文