单片机LCD显示数字24并倒数
时间: 2023-12-21 19:06:30 浏览: 21
以下是一个基于51单片机的LCD显示数字24并倒数的简单程序:
```c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P2^0; // 数据/命令选择信号
sbit RW = P2^1; // 读/写选择信号
sbit EN = P2^2; // 使能信号
void delay(uint t) // 延时函数
{
uint i, j;
for(i = 0; i < t; ++i)
for(j = 0; j < 1275; ++j);
}
void init_lcd() // LCD初始化函数
{
RS = 0;
RW = 0;
EN = 0;
delay(15);
P0 = 0x38; // 设置8位数据总线,2行显示,5*7点阵字体
EN = 1;
delay(5);
EN = 0;
P0 = 0x0c; // 开启显示,关闭光标,关闭闪烁
EN = 1;
delay(5);
EN = 0;
P0 = 0x01; // 清除显示
EN = 1;
delay(5);
EN = 0;
P0 = 0x06; // 光标移动方式,光标右移,字符不动
EN = 1;
delay(5);
EN = 0;
}
void write_com(uchar com) // 写命令函数
{
RS = 0;
RW = 0;
EN = 0;
P0 = com;
EN = 1;
delay(5);
EN = 0;
}
void write_data(uchar dat) // 写数据函数
{
RS = 1;
RW = 0;
EN = 0;
P0 = dat;
EN = 1;
delay(5);
EN = 0;
}
void main()
{
uchar i, j;
init_lcd();
write_com(0x80); // 设置光标位置,第1行第1列
write_data('2'); // 显示数字2
write_data('4'); // 显示数字4
delay(500); // 延时0.5秒
write_com(0x01); // 清屏
for(i = 2; i >= 1; --i) // 循环倒数
{
write_com(0x80); // 设置光标位置,第1行第1列
write_data(i + '0'); // 显示数字
write_data(' '); // 显示空格
for(j = 9; j >= 0; --j) // 每秒减一
{
write_com(0x87); // 设置光标位置,第1行第8列
write_data(j + '0'); // 显示数字
delay(100); // 延时0.1秒
}
}
while(1); // 程序结束
}
```
程序的主要思路是先在LCD上显示数字24,然后倒数数秒并在LCD上显示。程序中使用了LCD的基本操作函数,包括初始化函数、写命令函数和写数据函数,以及简单的延时函数。