单片机电子钟程序设计实习报告 单片机LCD1602电Word文档下载推荐.docx
- 文档编号:17002362
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:8
- 大小:20.91KB
单片机电子钟程序设计实习报告 单片机LCD1602电Word文档下载推荐.docx
《单片机电子钟程序设计实习报告 单片机LCD1602电Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机电子钟程序设计实习报告 单片机LCD1602电Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
分分:
秒秒,24小时制),可随时进行时间调整。
设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。
单片机在这种情况下诞生了基于单片机电子时钟。
2、原理框图
3、硬件电路原理图
3.硬件模块功能介绍
3.1AT89C52单片机
AT89C52提供以下标准功能:
8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路[2]。
同时,AT89C52可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
3.2液晶显示器LCD
液晶显示器简称是利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。
其特点是体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用系统中有着日益广泛的应用。
1602芯片:
主要用于显示时间和定时时间。
1602芯片由点阵字符液晶显示器件和专用的行、列驱动器、控制及必要的链接件、结构件组装而成,可以显示数字和西文字符,但不能显示图形,已经可以满足本次设计的需要。
1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。
3.3键盘控制模块
按键中有一个复位键及定时键、调时键加一键和减一键,一个按键接在复位电路上,另外四个按键接在P0--P4口,低电平表示有按钮按下;
按钮没有接防抖电路,需要设计软件防抖。
1、定时。
按下定时键后可以开始定时,过程如下:
定时---〉小时加/减---〉按定时---分钟加/减---按定时。
2、调时。
按下调时键后可以调时,过程如下:
调时---年加/减---调时--月加/减---调时---日加/减---调时---时加/减---调时---分加/减---调时---秒加/减---调时。
3.4直流稳压电源部分
直流稳压电源是给电子设备提供稳定直流电压的电子电路。
这次电路需要的是+5V直流电源。
4.软件设计
4.3代码附录
#includereg51.h
#includeintrins.h
#includeabsacc.hucharcodestr0={"
codestr1={"
情侣网名"
};
voiddelay_LCM(uint);
//LCD延时子程序
voidinitLCM(void);
//LCD初始化子程序
voidlcd_wait(void);
//LCD检测忙子程序
voidWriteCommandLCM(ucharWCLCM,ucharBusyC);
//写指令到ICM子函数
voidWriteDataLCM(ucharWDLCM);
//写数据到LCM子函数
voidDisplayOneChar(ucharX,ucharY,ucharDData);
//显示指定坐标的一个字符子函数
voidDisplayListChar(ucharX,ucharY,ucharcode*DData);
//显示指定坐标的一串字符子函数
voidinit_timer0(void);
//定时器初始化
voiddisplayfun1(void);
voiddisplayfun2(void);
voiddisplayfun3(void);
voidkeyscan(void);
//键盘扫描子程序
voidset_adj(void);
voidinc_key(void);
voiddec_key(void);
/*显示指定坐标的一串字符子函数*/
voidDisplayListChar(ucharX,ucharY,ucharcode*DData)
{ucharListLength=0;
Y&
=0x01;
X&
=0x0f;
while(X16)
{DisplayOneChar(qq情侣网名);
ListLength++;
X++;
}}
/*液晶显示子函数1正常显示*/
voiddisplayfun1(void)
{
WriteCommandLCM(0x0c,1);
//显示屏打开,光标不显示,不闪烁,检测忙信号
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
DisplayOneChar(7,1,hour/10+0x30);
//液晶上显示小时
DisplayOneChar(8,1,hour%10+0x30);
DisplayOneChar(10,1,minite/10+0x30);
//液晶上显示分
DisplayOneChar(11,1,minite%10+0x30);
DisplayOneChar(13,1,second/10+0x30);
//液晶上显示秒
DisplayOneChar(14,1,second%10+0x30);
}
/*键盘扫描子函数*/
voidkeyscan(void)
{if(ADJ_key==0)
{delay_LCM(5);
if(ADJ_key==0)
{while(!
ADJ_key);
set_adj();
if(INC_key==0)
INC_key);
inc_key();
if(DEC_key==0)
DEC_key);
dec_key();
/*设定工作模式子函数*/
voidset_adj(void)
{delay_LCM(100);
set++;
if(set2)set=0;
/*按键加法子函数*/
voidinc_key(void)
{delay_LCM(150);
if(set==1)
{hour++;
if(hour=23)hour=23;
elseif(set==2)
{minite++;
if(minite=59)minite=59;
elsedisplayfun1();
/*按键减法子函数*/
voiddec_key(void)
delay_LCM(150);
{hour--;
if(hour=0)hour=0;
{minite--;
if(minite=0)minite=0;
/*定时器t0初始化*/
voidinit_timer0(伤感网名)
{TMOD=0x01;
//time0为定时器,方式1TH0=0x3c;
//预置计数初值
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
/*定时器t0中断子函数*/
voidtimer0(void)interrupt1using0//定时器0方式1,50ms中断一次
TH0=0x3c;
mstcnt++;
if(mstcnt=20)
{second++;
mstcnt=0;
if(second=60)
second=0;
if(minite=60)
hour++;
minite=0;
light=0;
delay_LCM(200);
light=1;
if(hour=24)
{hour=0;
keyscan();
//按键扫描
/*个性网名*/
voidmain(void)
P1=0xff;
//初始化p1口,全设为1delay_LCM(500);
//延时500ms启动
initLCM();
//LCD初始化
init_timer0();
//时钟定时器0初始化
while
(1)
{keyscan();
switch(set)//LCD根据工作模式显示
case0:
displayfun1();
delay_LCM(1000);
//正常工作显示
break;
case1:
displayfun2();
//调整分显示
case2:
displayfun3();
//调整时显示
default:
5.调试过程
调试的主要过程包括硬件调试和软件调试,其中软件调试,也即程序编译与仿真过程处于本次设计调试过程的核心环节。
由于本设计已经制作出液晶显示电子钟,所以硬件调试也很重要。
两种调试过程并非孤立或者分开的,而是紧密相关。
在此我们用到的开发工具是仿真器。
5.1硬件调试
完成仿真器软件仿真后,就要连接上硬件也即液晶显示电子钟成品板进行硬件调试。
将仿真器通过串行电缆连接计算机上,将仿真头接到仿真器,检查接线是否有误,确信没有接错后,接上电源,打开仿真器的电源开关。
再进行仿真器和通信设置。
仿真器和仿真头设置正确,并且硬件连接没有错误,出现"
硬件仿真"
的对话框,并显示仿真器、仿真头的型号及仿真器的序列号。
表明仿真器初始化正确。
硬件调试很重要也很麻烦,由于本次设计硬件非PCB制板,而是手工焊板,焊点质量、布线是否合理等对系统的影响比较大,这无疑增加硬件调试的难度。
由于此前没有很多的练习,本次设计我所制作的液晶显示电子钟在质量工艺上很难达到满意程度,不过在调试中还算稳定,基本功能都能较稳定地实现。
5.2软件调试
系统仿真分析电路原理图在ISIS里设计完成,并将系统软件编译成.Hex文件,再进行电子时钟的系统虚拟仿真。
(1)在ISIS的原理图中,右键单击AT89C51将其选中,然后单击左键打开AT89C51的EditComponent对话框,如下图所示。
(2)选择相应的.Hex文件,再在ProteusISIS编辑窗口的File菜单中选择SaveDesign选项,保存设计,生成.DSN文件。
5.3测试数据与数据分析
在ProteusISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如下图所示。
实现功能的具体方法:
当进入调整功能时,按第一个键K1进行减运算,按第二个键K2进行加运算。
按下第三个键K3,实现日期\时间调整及\定时功能,等数字闪烁后,按一二键进行加减,从而可以进行具体日期时间调整。
按下第四个键K4,可以进行时间\日期切换,将显示时间或日期,采用24小时制。
时间显示格式为:
时-分-秒;
日期显示格式为:
日-月-年。
具有显示时间和日期的功能。
三、总结:
个人心得体会
通过这次对电子钟的设计与制作,让我了解了什么是嵌入式系统开发,虽然这次的实习做的电子钟比其他同学做的较简单,但是也给将来进入嵌入式系统开发有了一个起点的基础。
在这次实习的过程,刚开始的时候,真的有点不知所措,因为刚刚学习完单片机,以及微机原理课程,接着就立即开始了这个实习了。
幸好有三个星期的时间来准备。
画电路原理图,一开始就觉得有点烦,因为那个软件有很多基本操作都不知道,做起来非常的费时又费力,幸好一个组里可以有两个成员,我的组员就是我的得力助手了,我解决不了的问题,他就去跑腿求问其他同学或者老师,反正有了解决办法就一起动手解决。
这个电子钟的软件程序都是使用C语言编写的,毕竟使用汇编对于我们来说难度都是比较大啊。
这次嵌入式电子钟课程设计是一个学习新知识、巩固加深所学课本理论知识的过程,它培养了我们综合运用知识的能力,独立思考和解决问题的能力。
它不仅加深了我对单片机技术课程的理解,还让我感受到了电子钟设计的乐趣。
在这次设计中,虽然我比较怕麻烦,但是还是跟组员一起坚持到底,反复设计、绘图与修改,就是希望能把这次课程设计做好。
因此对我来说,这次课程设计是非常有意义的。
参考文献:
80C51单片机原理与应用技术吴炳胜编著微型计算机原理与应用杨宏五等编著个人博客宗旨:
分享给需要帮助的网名,网民,网友.文档下载地址:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机电子钟程序设计实习报告 单片机LCD1602电 单片机 电子钟 程序设计 实习 报告 LCD1602