用1602液晶显示秒表功能 c语言编写程序 单片机 加注释,1602LCD液晶显示秒表
时间: 2024-02-23 21:58:28 浏览: 27
好的,下面是用C语言编写的1602液晶显示秒表的程序,已加上注释,供您参考:
```c
#include <reg52.h> // 引入单片机头文件
#define uchar unsigned char // 定义uchar类型,用于存储无符号字符
#define uint unsigned int // 定义uint类型,用于存储无符号整数
sbit RS = P2^0; // 定义RS引脚
sbit RW = P2^1; // 定义RW引脚
sbit EN = P2^2; // 定义EN引脚
uchar second,minute,hour; // 定义秒、分、时
void delay(uint i) // 延时函数
{
uint j,k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
void write_com(uchar com) // 写命令函数
{
RS = 0; // 将RS引脚置0,表示写入命令
RW = 0; // 将RW引脚置0,表示写入模式
P0 = com; // 将命令写入P0口
EN = 1; // 将EN引脚置1,表示执行命令
delay(1); // 延时
EN = 0; // 将EN引脚置0,表示结束命令
}
void write_data(uchar dat) // 写数据函数
{
RS = 1; // 将RS引脚置1,表示写入数据
RW = 0; // 将RW引脚置0,表示写入模式
P0 = dat; // 将数据写入P0口
EN = 1; // 将EN引脚置1,表示执行命令
delay(1); // 延时
EN = 0; // 将EN引脚置0,表示结束命令
}
void init() // 初始化函数
{
write_com(0x38); // 设置显示模式为16x2,8位数据总线,5x8点阵字体
write_com(0x0c); // 设置显示模式为开,光标不显示
write_com(0x06); // 设置光标移动方向为右移
write_com(0x01); // 清除显示屏幕
write_com(0x80); // 设置光标位置为第一行第一列
}
void display() // 显示函数
{
write_com(0x80); // 设置光标位置为第一行第一列
write_data(hour/10+0x30); // 显示小时的十位数
write_data(hour%10+0x30); // 显示小时的个位数
write_data(':'); // 显示分隔符
write_data(minute/10+0x30); // 显示分钟的十位数
write_data(minute%10+0x30); // 显示分钟的个位数
write_data(':'); // 显示分隔符
write_data(second/10+0x30); // 显示秒钟的十位数
write_data(second%10+0x30); // 显示秒钟的个位数
}
void timer0() interrupt 1 // 定时器0中断服务函数
{
TH0 = 0XFC; // 设置定时器初值
TL0 = 0X67; // 设置定时器初值
second++; // 秒数加1
if(second == 60) // 如果秒数等于60
{
second = 0; // 秒数清零
minute++; // 分钟数加1
if(minute == 60) // 如果分钟数等于60
{
minute = 0; // 分钟数清零
hour++; // 小时数加1
if(hour == 24) // 如果小时数等于24
{
hour = 0; // 小时数清零
}
}
}
display(); // 显示当前时间
}
void main() // 主函数
{
TMOD = 0x01; // 设置定时器0为模式1
TH0 = 0XFC; // 设置定时器初值
TL0 = 0X67; // 设置定时器初值
ET0 = 1; // 开启定时器0中断
EA = 1; // 开启总中断
TR0 = 1; // 启动定时器0
init(); // 初始化显示屏幕
while(1); // 循环
}
```
上述程序的实现过程是:首先,通过定义RS、RW、EN引脚,以及定义second、minute、hour变量,实现程序所需的基本功能。然后,编写delay函数,实现延时功能。接着,编写write_com函数和write_data函数,实现向液晶屏写入命令和数据的功能。在init函数中,设置显示模式、光标显示模式、光标移动方向、清除显示屏幕、设置光标位置等,完成液晶屏的初始化。在display函数中,显示当前时间。在timer0函数中,设置定时器0的工作方式、定时器初值、开启定时器0中断、启动定时器0,并在定时器0中断服务函数中,实现秒表功能。在主函数中,循环执行程序。