- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
单片机综合实验报告
题
目:
电子时钟设计
班
级:
0309410
姓
名:
吴 再 新
学
号:
030941022
指导老师: 高 林
时 间: 2011-12-29
一、实验内容:
以AT89C51单片机为核心设计电子时钟,在 LCD显示器上显示当前的时间。
二、实验电路及功能说明
实验电路如下所示:
功能说明:实验硬件电路图如上图所示电路图,它由AT89C51单片机、晶振电路、复位电路、显示电路等构成,加上实验程序后,实现了时间、日期、和星期的显示,整点报时,时间、日期、星期可调至任意值等功能。
三、实验程序流程图:
主程序:
开始
开始
程序初始化
进入定时器 0中断
N
N
N
是否到整点
控制键是否按下
20次是否到了
Y
Y
闹铃
Y
执行相应操作
LCD显示
N
执行相应操作
是否有其他键按下
Y
重装初值子程序:
重装初值
N是否到了
N
是否到了20次
Y
秒加1;秒是否
到了60
Y
N
N
秒=0;分加1,;
分是否到了60
Y
N
分=0;时加1;时是
否到了24
Y
时=0
四、实验结果分析
这次实验一共用了4个按键,一个是用控制的,按下一次的时刻时间停止计时,液晶上的光标在秒的位置上闪烁,此时按一下加键的话,秒会加一,按下减键的话,秒减一;当按下控制键第二次的时刻,光标停留在分得位置,此时按加减键可以调节分钟;第三次按下控制键会,光标停留在时的位置,按下加减键分别可以调节时的加减;同理,可以调节星期、年、月、日等;当按下退出设置键时,就会退出当前的设值,时间开始走;单片机的数字钟设计精度比较高,因为在程序的执行过程中,指令不会影响定时器的正常计时,从而使数字钟的精度取决于单片机的机器周期电路,和定时器T0的硬件电路的精度。
五、心得体会
这次实验程序的设计方面还是有些地方有待改进的地方,定时器T0的中断服务子程序写得过于复杂,而且在里面有些延时的指令,这样会对数字钟的精度有一定的影响;这次设计由于时间有限,没有把定时闹铃的功能加上去,在以后的学习当中我会进一步的完善数字钟的功能。通过这次设计,对我来说收获颇大,让我掌握了LCD1602的操作方法,进一步熟练了51单片机C语言编程的方法。在软件的调试过程中,出现过很多错误,通过查找资料一步一步的解决了。
六、程序清单
#includereg52.h
P0=date;
#defineucharunsignedchar
delay(5);
#defineuintunsignedint
en=0;
sbitrs=P3^5;
delay(5);
sbitrd=P3^6;
en=1;
sbiten=P3^7;
delay(5);
sbitkey1=P3^0;
en=0;
sbitkey2=P3^1;
}
sbitkey3=P3^2;
sbitkey4=P3^3;sbitSpeak=P1^0;
ucharcodetable1[]=2011-12-25TUS;ucharcodetable2[]=WZX00:00:00;ucharcode
voidinti() //初始化函数
{
TMOD=0x01; //装初值TH0=(65536-50000)/256;TL0=(65536-50000)%256;
table3[]=MONTUSWEDTHUFRISTASON;
EA=1;
//开总中断
uchar
ET0=1;
TR0=1;
//开定时器0中断
//启动定时器
shi,fen,miao,key2num,keynum,num,count,nian,yue,r
shi=0;
i,count;
fen=59;
miao=57;
voiddelay(uintz)
{
//延迟函数
Speak=0;key2num=5;
uinti,j;
ri=25;
for(i=z;i0;i--)
yue=12;
for(j=110;j0;j--);
nian=11;
}
en=0;
write_com(0x38);
voidwrite_com(ucharcom)
{
//写命令函数
write_com(0x0c);
write_com(0x06);
rs=0;
write_com(0xd0);
rd=0;
write_com(0x01);
P0=com;
delay(5);
write_com(0x80);
en=0;
for(num=0;num16;num++)
delay(5);
{
en=1;
write_date(table1[num]);
delay(5);
delay(5);
en=0;
}
}
write_c
您可能关注的文档
最近下载
- 北京第八十中学初一新生分班(摸底)语文考试模拟试卷(10套试卷带答案解析).pdf VIP
- 关爱老人防治痴呆课件.pptx
- 2022年粤港澳大湾区医疗器械行业发展状况与未来展望.docx
- 安徽师范大学2021-2022学年第1学期《细胞生物学》期末考试试卷(B卷)含标准答案.docx
- 青岛版科学五年级下册全册试卷 .pdf
- SGS MDR 欧盟ce法规培训.pdf VIP
- 2023年大庆师范学院公共课《马克思主义哲学》期末试卷B(有答案).docx VIP
- 《DB11T828.3-2011-实验用小型猪第3部分:遗传质量控制》.pdf VIP
- 光伏市场开发培训课件.pptx
- GY 5212-2008广播电视传输网络系统安装工程预算定额.pdf
文档评论(0)