课程名称:单片机原理与应用
班级: 姓名: 学号: 日期:
一、实验目的
掌握单片机使用定时器/计数器控制字符型液晶显示器LCD1602的设计与软件编程 二、实验要求
在LCD上显示当前的时间。显示格式为“时时:分分:秒秒”。设有4个功能键k1~k4,功能如下:
生活垃圾处理器(1)k1——进入时间修改。
(2)k2——修改小时,按一下k2,当前小时增1。
(3)k3——修改分钟,按一下k3,当前分钟增1。
(4)k4——确认修改完成,电子钟按修改后的时间运行显示。 纳米导光板三、实验要求
提交的实验报告中应包括:电路原理图、实验设计思路、C51源程序(含注释语句)、运行效果(含运行截图与说明)、实验小结
三、硬件电路原理图的设计
四、编程思路及C51源程序
编程思路:
1、实现当按下K1之后,使中断T0停止计数
2、实现当按下K2之后,使小时加一
3、实现当按下K3之后,使分钟加一
4、实现当按下K4之后,使中断T0恢复计数
源程序:
#include<reg51.h>
偏振分束器#ifndef LCD_CHAR_1602_2005_4_9
#define LCD_CHAR_1602_2005_4_9
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs = P2^0;
sbit lcdrw = P2^1;
sbit lcden = P2^2;
void delay(uint z) //延时函数,此处使用晶振为11.0592MHz
轻触开关电路{
uint x,y;电子定时器
for(x=z;x>0;x--)
{
for(y=110;y>0;y--)
{
;
}
}
}
void write_com(uchar com) //写入指令数据到 lcd {
lcdrw=0;
lcdrs=0;
P3=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date) //写入字符显示数据到 lcd
{
lcdrw=0;
lcdrs=1;
P3=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init1602() //1602液晶初始化设定
{
lcdrw=0;
lcden=0;
write_com(0x3C);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
/*void write_string(uchar *pp,uint n)//采用指针的方法输入字符,n为字符数目
数据采集板{
int i;
for(i=0;i<n;i++)
write_data(pp[i]);
}*/
void write_sfm(uchar add,uchar date)//向指定地址写入数据
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_data(0x30+shi);
write_data(0x30+ge);