单片机电子时钟实验报告.docx
- 文档编号:6241069
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:8
- 大小:558.99KB
单片机电子时钟实验报告.docx
《单片机电子时钟实验报告.docx》由会员分享,可在线阅读,更多相关《单片机电子时钟实验报告.docx(8页珍藏版)》请在冰点文库上搜索。
单片机电子时钟实验报告
单片机电子时钟实验报告
实验任务:
YL39LCD1602测试电子时钟
院系:
通信工程
学号:
年级:
一在KEIL中加入如下程序:
#include
#defineucharunsignedchar
ucharcodedislcd[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2d};
sbitrs=P0^7;
sbitrw=P0^6;
sbite=P0^5;
sbitkey1=P3^2;
sbitkey2=P3^3;
sbitkey3=P3^4;
unsignedintcou,sec,min,hou;
unsignedintm,n;
/*****************************
函数名:
延时子函数
入口参数:
出口参数:
功能:
延时
******************************/
voiddelay()
{
unsignedintj;
for(j=0;j<255;j++);
}
/*****************************
函数名:
延时子函数
入口参数:
出口参数:
功能:
用于按键延时
******************************/
voiddelay1()
{
unsignedinti,j;
for(i=0;i<20;i++)
for(j=0;j<160;j++);
}
/*****************************
函数名:
向液晶写命令
入口参数:
i
出口参数:
功能:
通过数据口向液晶写命令
******************************/
voidlcd_wmc(uchari)//写命令
{
P2=i;
rs=0;
rw=0;
e=0;
delay();
e=1;
}
/*****************************
函数名:
向液晶写数据
入口参数:
i
出口参数:
功能:
通过数据口向液晶写数据
******************************/
voidlcd_wmd(uchari)
{
P2=i;
rs=1;
rw=0;
e=0;
delay();
e=1;
}
/*****************************
函数名:
液晶初始化
入口参数:
出口参数:
功能:
设定液晶显示初始化
******************************/
voidlcd_init()//1602液晶初始化
{
lcd_wmc(0x01);//清屏
lcd_wmc(0x38);//
lcd_wmc(0x0c);
lcd_wmc(0x06);
}
/*****************************
函数名:
时间显示
入口参数:
出口参数:
功能:
在液晶第一行显示时间
******************************/
voidlcd_time()
{
lcd_wmc(0x80);
lcd_wmd(dislcd[hou/10]);
lcd_wmc(0x81);
lcd_wmd(dislcd[hou%10]);
lcd_wmc(0x82);
lcd_wmd(dislcd[10]);
lcd_wmc(0x83);
lcd_wmd(dislcd[min/10]);
lcd_wmc(0x84);
lcd_wmd(dislcd[min%10]);
lcd_wmc(0x85);
lcd_wmd(dislcd[10]);
lcd_wmc(0x86);
lcd_wmd(dislcd[sec/10]);
lcd_wmc(0x87);
lcd_wmd(dislcd[sec%10]);
}
/*****************************
函数名:
主函数
入口参数:
出口参数:
功能:
******************************/
voidmain()
{
P2=0xff;
cou=0;
sec=15;
min=52;
hou=13;
TMOD=0x01;
TH0=0xca;
TL0=0x0e;
EA=1;
ET0=1;
TR0=1;
lcd_init();
lcd_time();
while
(1)//按键程序
{
if(key1==0)//键值key1是否有效
{
delay1();//键值有效,等待key1弹起
if(key1==1)//key1弹起,分针加
{
min++;
if(min>59)
{
min=0;
hou++;
}
lcd_wmc(0x83);
lcd_wmd(dislcd[min/10]);
lcd_wmc(0x84);
lcd_wmd(dislcd[min%10]);
}
}
if(key2==0)
{
delay1();
if(key2==1)
{
hou++;
if(hou>23)
hou=0;
lcd_wmc(0x80);
lcd_wmd(dislcd[hou/10]);
lcd_wmc(0x81);
lcd_wmd(dislcd[hou%10]);
}
}
}
}
/*****************************
函数名:
定时器0中断函数
入口参数:
出口参数:
功能:
时间调整
******************************/
voidtime0()interrupt1
{
TH0=0xca;
TL0=0x0e;
cou++;
if(cou>=100)
{
cou=0;
sec++;
lcd_time();
if(sec>59)
{
sec=0;
min++;
lcd_time();
if(min>59)
{
min=0;
hou++;
lcd_time();
if(hou>23)
hou=0;
}
}
}
}
二:
编译之后,在原装单片机上插上液晶显示屏
三:
将单片机换成自己焊接的电路板,插入液晶显示屏如图:
显示时间13点52分28秒
实验结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 时钟 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)