基于单片机原理的电子时钟设计剖析.docx
- 文档编号:30661901
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:16
- 大小:106.32KB
基于单片机原理的电子时钟设计剖析.docx
《基于单片机原理的电子时钟设计剖析.docx》由会员分享,可在线阅读,更多相关《基于单片机原理的电子时钟设计剖析.docx(16页珍藏版)》请在冰豆网上搜索。
基于单片机原理的电子时钟设计剖析
电气工程及其自动化
单片机原理及应用课程设计报告
姓名:
学号:
专业班级:
题目:
基于单片机原理的电子时钟设计
电气与电子工程学院
2014年12月31日
一设计目的
1.通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手能力。
2.通过电子时钟(LCD显示)的设计,掌握计数器及中断的使用方法,和简单的程序编写,最终提高我们的逻辑抽象能力
二设计任务和要求
以AT89C51单片机为核心的时钟,在LED显示器上显示当前的时间:
使用字符型LCD显示器显示当前时间。
显示格式为“时时:
分分:
秒秒”。
用4个功能键操作来设置当前时间。
功能键K1~K4功能如下。
K1—设置小时。
K2—设置分钟。
K3—设置秒数。
K4—确认完成设置。
程序执行后工作指示灯LED闪动,表示程序开始执行,LED显示“00:
00:
00”,然后开始计时。
三设计原理分析
3.1单片机原理
单片机是一种集成电路芯片,采集超大规模集成电路技术把具有数据处理能力(如算数运算、逻辑运算、数据传送、中断处理)的微型处理器,随机存取数据存储器(RAM)、只读程序存储器(ROM)、输入/输出电路(I/O),可能还包括定时/计数器、串行通信口(SCI)、显示驱动电路(LCD或LED驱动电路)、脉宽调制电路(PWM)、模拟多路转化器及A/D转化器等电路集成到一片芯片上,构成一个最小而又完善的计算机系统。
这些电路能在软件的控制下准确、迅速、高效的完成程序设计者事先规定的任务。
3.2时钟的总体设计思路
按照系统的设计功能要求,本时钟系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制时钟的调整及显示。
四硬件资源及其分配
4.1单片机控制系统
本次设计时钟电路,采用了ATC89C51单片机芯片控制电路,这种单片机芯片比较简单,并且省去了很多复杂的线路,更容易表达和理解,通过按钮来调节电子钟的时、分、秒。
并且这次电路我采用了一个按钮控制一个显示的方案,在调节小时/分钟/秒数时,只需要按下对其控制的按钮进行调节就行了,不要普遍所见的需要进入调节界面。
同时这次我采用了c语言控制整个时钟的显示,这样通过三个模块:
单片机芯片、LED显示屏、按钮控制电路即可达到设计要求。
4.2键盘控制系统设计
按键需要3个,分别实现为调整小时、分钟、秒数三个功能。
用单片机的3个I/O口接收控制信号,其电路如图下:
通过控制键来控制所要调节的是时、分、还是秒。
在按下小时/分/秒键后将对小时/分/秒进行调整调整,从而调整到自己所需要的时间
。
4.3显示电路
显示电路如图所示:
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM
4.4硬件原理及说明
AT89C51是美国Intel公司生产的低电压,高性能CHMOS8位单片机,片内含有4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用Intel公司的高密度、非易失性存储技术生产,片内置通用4位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机适合于许多较为复杂控制应用场合。
4.5主要性能参数
与MCS-51产品指令和引脚完全兼容
4k字节可重擦写Flash闪速存储器
1000次擦写周期
全静态操作:
0Hz—24MHz
三级加密程序存储器
128×8字节内部RAM
32个可编程I/O口线
2个16位定时/计数器
5个中断源
可编程串行UART通道
低功耗空闲和掉电模式
五硬件图
六程序框图
6.1软件主要完成的功能
(1)显示时间程序
用软件调节时间,通过程序的调节,最后用LED现实时钟
(2)调节时间程序
按键调节时间,能实现时、分的调节
6.2软件设计的主要流程
时间控制程序
时间控制程序,用中断准确的控制时间,采用60进制,60秒为一分钟,60分钟为一个小时,全天设置为24小时。
程序用C语言编写。
编程时采用KEILC,而仿真用PROTUES,仿真时仿真图如图所示
七汇编源程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineDelayNOP(){_nop_();_nop_();_nop_();_nop_();}
sbitK1=P1^0;
sbitK2=P1^1;
sbitK3=P1^2;
sbitK4=P1^3;
sbitSPK=P3^0;
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
ucharcodeStr1[]="CurrentTime";//一下两个字符串的串长均为16
ucharcodeStr2[]="SetNewTime...";
ucharHMS_String[]="00:
00:
00";//带显示的时间串
bitSettime=0;//是否修改时间
bitChange_H_or_M=1;//1表示修改时.0表示修改分
ucharMilliSecond,Hour=0,Minute=0,Second=0;
//延时函数
voidDelayMS(uintx)
{
uchari;
while(x--)for(i=0;i<120;i++);
}
//LCD忙状态检测
bitLCD_Busy_Check()
{
bitresult;
RS=0;RW=1;E=1;DelayNOP();result=(bit)(P0&0x80);E=0;
returnresult;
}
//写LCD命令
voidLCD_Write_Command(ucharcmd)
{
while(LCD_Busy_Check());//判断LCD是否忙碌
RS=0;RW=0;E=0;_nop_();_nop_();P0=cmd;DelayNOP();
E=1;DelayNOP();E=0;
}
//设置LCD显示位置
voidLCD_Set_Pos(ucharpos)
{
LCD_Write_Command(pos|0x80);
}
//写LCD数据
voidLCD_Write_Data(uchardat)
{
while(LCD_Busy_Check());//判断LCD是否忙碌
RS=1;RW=0;E=0;
P0=dat;DelayNOP();
E=1;DelayNOP();E=0;
}
//LCD初始化
voidLCD_Initialize()
{
LCD_Write_Command(0x38);DelayMS
(1);
LCD_Write_Command(0x0c);DelayMS
(1);
LCD_Write_Command(0x06);DelayMS
(1);
LCD_Write_Command(0x01);DelayMS
(1);
}
//显示函数,在LCD指定的行上显示字符串
voidDisplay_String(uchar*str,ucharLineNo)
{
uchark;
LCD_Set_Pos(LineNo);
for(k=0;k<16;k++)LCD_Write_Data(str[k]);
}
//蜂鸣函数
voidBeep()
{
uchari,j=70;
for(i=0;i<200;i++)
{
while(--j);SPK=~SPK;
}
DelayMS(300);SPK=0;
}
//时分秒显示
voidDisplay_HMS(ucharh,m,s)
{
if(Settime)HMS_String[3]='>';//显示修改标志
elseHMS_String[3]='';//不显示修改标志
HMS_String[4]=h/10+'0';//时
HMS_String[5]=h%10+'0';
HMS_String[7]=m/10+'0';//分
HMS_String[8]=m%10+'0';
HMS_String[10]=s/10+'0';//秒
HMS_String[11]=s%10+'0';
Display_String(HMS_String,0x40);
}
//设置时间
voidChange_Time()
{
Settime=0;
if(K1==0||K2==0||K3==0)//按下k1k2k3中的任何一个键即进入修改状态
{
TR0=0;
Display_String(Str2,0x00);//第一行提示修改时间
Settime=1;
}
while(Settime)
{
if(K1==0)//确定调整小时还是分钟
{
Beep();
while(K1==0)
Change_H_or_M=!
Change_H_or_M;
}
elseif(K2==0)//增加
{
Beep();
while(K2==0);
if(Change_H_or_M==1)
{if(++Hour==24)Hour=0;}
else
{if(++Minute==60)Minute=0;}
}
elseif(K3==0)//减少
{
Beep();
while(K3==0);
if(Change_H_or_M==1)
{if(--Hour==0xff)Hour=23;}
else
{if(--Minute==0xff)Minute=59;}
}
elseif(K4==0)//确定
{
Beep();
while(K4==0);
Display_String(Str1,0x00);//第一行还原显示str1
Settime=0;
TR0=1;
}
Display_HMS(Hour,Minute,Second);
}//外层While在这里结束
}
//定时器0中断
voidTime0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//重新装入50MS定时
if(++MilliSecond==20)//50*20=1s
{
MilliSecond=0;
if(++Second==60)
{
Second=0;
if(++Minute==60)
{
Minute=0;
if(++Hour==24)
{
Hour=0;Minute=0;Second=0;
}
}
}
}
}
//主函数
voidmain()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IE=0x82;
SPK=0;
LCD_Initialize();
Display_String(Str1,0x00);//第一行显示
TR0=1;
P1=0xFF;
while
(1)
{
Display_HMS(Hour,Minute,Second);//第二行显示时分秒
DelayMS(500);
Change_Time();//显示过程中允许修改时间
}
}
八调试运行
1接硬件图接线
2从开始运行,检查电子时钟初始值,查看初始值是否为“00:
00:
00”,如有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。
3调试初始值过后,检查四个功能键功能是否完好,如有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。
4整体运行,观察初始值和功能键是否都符合要求,如果不符合,则再调试,直至满足要求.
九Proteus仿真截图
用Protues软件画出电路,用keil软件代码进行编译成功后,未添加源程序时的仿真电路图
输入汇编源程序后程序后,电路的仿真图
十设计心得体会
通过这次的单片机课程设计,我更进一步了解到单片机的优点和强大功能,在查找资料的过程中,认识到单片机应用的广泛性。
在设计中,我通过查阅各种单片机资料,并以单片机课程设计指导书作为参考,在何春霞老师的细心指导下,我终于历经两周的时间完成了这次单片机的设计,这次单片机的设计不仅使我对单片机课程有了进一步的了解,同时更加深了我对单片机的应用。
学完单片机课程后我只是对单片机有了一些理论的了解,但这次单片机课程设计却加深了我对单片机理论与实践的结合。
但由于我的知识水平有限,设计的单片机电子时钟还是存在一些的缺点和不足,如在电子时钟的基础上实现闹钟音乐等方面的设计,希望能在以后的学习过程钟,能够尽快的解决这些问题。
最后,我觉得单片机的课程设计是很有意义的,在这个过程中可以学会如何把自己平时所学的东西应用到实际中。
虽然我对这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得有点难,也没有很有效的办法通过自身去理解,但是靠着这两个多星期的“学习”,在小组同学的帮助和讲解下,自己开始主动学习并逐步从基础慢慢开始弄懂它。
我认为这个收获应该说是相当大的。
我觉得课程设计反映的是一个从理论到实际应用的过程,这个过程对缺乏实际经验的我们是非常重要的。
通过这次单片机课程设计使我认识到自身知识及能力的薄弱,更让我知道实践的重要性。
在以后的学习过程中,我会更加努力学习相关知识和应用,真正能够运用单片机组成的微控制系统解决各种实际的问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 原理 电子 时钟 设计 剖析