简易电子钟第十二组.docx
- 文档编号:10473236
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:17
- 大小:195.16KB
简易电子钟第十二组.docx
《简易电子钟第十二组.docx》由会员分享,可在线阅读,更多相关《简易电子钟第十二组.docx(17页珍藏版)》请在冰点文库上搜索。
简易电子钟第十二组
安徽电子信息职业技术学院
《单片机应用技术》
课程设计报告书
题目:
简易电子钟
姓名:
刘鹏、陈世坤、殷乐
专业:
计算机控制技术
班级:
计控101班
学号:
100201109,100201110,100201113
设计成绩:
指导教师:
李老师
设计完成日期2011年12月23日
目录
一、绪言……………………………………………………………………………3
(一)课程设计目的及功能…………………………………………………3
(二)简易电子钟任务设计…………………………………………………4
二、系统设计………………………………………………………………………5
(一)硬件电路设计…………………………………………………………5
(二)程序流程图……………………………………………………………7
(三)C语言程序设计………………………………………………………8
三、简易电子钟仿真………………………………………………………………11
(一)系统仿真………………………………………………………………11
(二)工作原理分析…………………………………………………………13
结束语……………………………………………………………………………14
参考文献………………………………………………………………………………15
摘要
本次设计主要的目的是设计出一个简易的电子钟,并且可以实现显示日期和时间的功能。
主要使用的方法是,用C语言程序控制单片机从而实现数码管计时显示与日期的显示。
主要使用的部件有:
51系列单片机、数码管、74LS245等部件。
本次设计通过Proteus软件进行电路的防真设计,通过Keil进行程序的编程以及生成可执行文件加载至Proteus仿真电路中来实现设计内容。
关键词:
数码管;定时器;中断处理
一、绪言
(一)课程设计目的及功能
1.课程设计的目的:
本次课程设计是为了进一步的掌握定时器的使用以及程序中断处理的编程方法。
设计出以51系列单片机控制数码管的动态显示实现出一个计时器的功能。
通过此次实验进一步的掌握单片机应用系统的设计方案和C语言程序的设计方法。
2.实现功能
利用AT89C52单片机作为主要控制器,使用74LS245作为数码管驱动及收发数据的桥梁。
设计出一个电子时钟,电子时钟的显示格式为:
XX-XX-XX由左向右分别为:
时、分、秒中间以“—”隔开。
按动按键时数码管显示变更为XXXX.XX.XX由左向右为年、月、日中间以“.”隔开。
(1)系统有两种工作状态:
显示时间的计时状态和显示日期的日期状态。
(2)开始执行时,程序显示的时间的计时状态,通过单击按键进行对状态的切换且在切换为日期状态的同时不可以影响到计时状态的计时。
再次单击按键后日期显示重新变为计时状态。
(二)设计任务
1.简介
图1-1现实中的电子钟
电子钟是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命。
电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便
2.工作原理
电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,具有校时功能和报时功能。
因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。
主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。
整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。
LCD数字电子钟除了在城市的主要营业场所、车站、码头等公共场所使用,还可以改装在摩托车和汽车上,LCD显示,带蓝色背光,白天在太阳光下也能非常清楚的看到显示时间,关钥匙可以关闭蓝色背光,时间还能显示也不会清零,因LCD的显示耗电量很省的,所以一直工作也不必担心耗电问题。
在骑摩托车时,为了看时间,先要停下车子,取出手机,才能看时间,是否有点麻烦,现在车上改装了一个蓝色背光的液晶电子钟后,不管白天黑夜色,随时可以看时间,非常方便。
3.电子钟的辐射
电子产品都有辐射,不过电子钟危害不大。
像那种小电子钟基本上是没有什么辐射的,就算有的有,也只是一点点对人体够不成任何危害,不象手机的辐射那么大。
4.优点
与传统的机械钟先比,电子钟具有更优异的优点。
由于电子钟采用数字集成电路的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,电子钟用于定时自动报警、按时自动打铃、时间程序自动控制、定时广播及自动控制等各个领域。
二、系统设计
(一)硬件电路设计
1、电子钟电路设计
实验采用的是AT89C52单片机进行电路的设计与实现其电路图如下图所示
图2-1简易电子钟硬件电路图
图2-2简易电子钟硬件电路局部图
图2-3计时器设计电路路图
2、主要元器件选择
主要元器件选用型号和数量如表2-1所示:
序号
材料名称
规格型号
数量
元件代号
1
单片机
AT89C51
1
U1
2
晶振
12MHz
1
X1
3
电阻
10K
2
R1、R2
4
驱动芯片
74LS245
1
U2
5
电容
30pF
2
C1,C2
6
电解电容
10uF
1
C3
7
数码管
7SEG-MPX8-CA-BULE
1
无
8
按键
1
表2-1主要元器件清单
(二)程序流程图
1、主程序流程图
按简易电子钟方案要求,主程序应是完成正常情况下使A、B两车道轮流放行。
主程序流程图如下:
图2-4程序流程图
(三)C语言程序设计
本次实验程序如下:
1、主程序#include
unsignedcharcode
tab[]={0x3F,0x06,0x5B,0x4F,0x66,//定义“0-9”和“-”十一个字型码表
0x6D,0x7D,0x07,0x7F,0x6F,0x40};
tabliu[]={0x4F,0x5B,0xDB,0x06,//定义年月日2011.12.23的字型码表
0x86,0x06,0x3F,0x5B};
unsignedchardat[]={0,0,0,0,0,0,0,0};
unsignedcharj,tmp,a;//定义变量
unsignedcharhour=0;
unsignedcharminute=0;
unsignedcharsecond=0;
unsignedcharirq_count=0;//中断计数
unsignedcharID;
unsignedcharliu=0;
voiddelay10ms()/*键盘去抖动延迟函数*/
{
unsignedchari,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
voidDelay()/*延迟函数*/
{
unsignedchari;
for(i=0;i<20;i++);
}
voidtimer0(void)interrupt1/*定时计数器0的中断服务子程序*/
{
TH0=0x3C;//晶振:
12MHz
TL0=0xB0;//晶振:
12MHz
irq_count++;//1s
if(irq_count>=20)
{
irq_count=0;
second++;
if(second>=60)
{
second=0;
minute++;
if(minute>=60)
{
minute=0;
hour++;
if(hour>=24)hour=0;
}
}
dat[7]=hour/10;//计算小时数十位在字型编码表的数位
dat[6]=hour%10;//计算小时数个位在字型编码表的数位
dat[5]=10;//定义字型编码表中的“-”
dat[4]=minute/10;//计算分钟数十位在字型编码表的数位
dat[3]=minute%10;//计算分钟数个位在字型编码表的数位
dat[2]=10;//定义字型编码表中的“-”
dat[1]=second/10;//计算秒数十位在字型编码表的数位
dat[0]=second%10;//秒计算数个位在字型编码表的数位
}
}
voidmain(void)/*主函数*/
{EA=1;//T0方式1计时
ET0=1;
TMOD=0x01;//晶振:
12MHz
TH0=0x3C;//晶振:
12MHz
TL0=0xB0;//*开中断,启动定时器
TR0=1;
{
while
(1)//使用一个SHILE死循环
{//判断按键是否按下
if(P3_0==0)
{
delay10ms();//延迟10ms去抖动
if(P3_0==0)//判断按键是否按下
{
ID++;
if(ID==2)
{
ID=0;
}
while(P3_0==0);
}
}
switch(ID)
{
case0:
//当按键未按下执行此段程序
tmp=0x01;
for(j=0;j<8;j++)
{
P0=tab[dat[j]];
P1=~tmp;
tmp=tmp<<1;
Delay();
P1=0xff;
}
break;
case1:
//当按键按下执行此段程序
a=0x01;
for(liu=0;liu<8;liu++)
{
P0=tabliu[liu];
P1=~a;
a=a<<1;
Delay();
P1=0xff;
}
break;
}
}
}
}
三、简易电子钟仿真
(一)系统仿真
在完成了简易电子钟硬件设计和软件设计以后,便进入系统的调试阶段。
系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。
1、Keil调试
图3-1程序调试完成图
2、Proteus调试
图3-2简易电子钟效果图(显示时间)
图3-3简易电子钟效果图(显示日期)
(二)工作原理分析
简易电子钟该电路由8个LED数码管来分别显示时、分、秒;同时,由于所用数码管较多,本次电路采用数码管动态显示技术;考虑到P0口驱动能力,所以在P0口与LED数码管之间加了一个8路双向收发器74LS245.由P1口选择输入的数码管所在数位,由P0口输入显示字符。
程序设计主要由三大模块构成:
主函数、定时计数器0的中断服务子程序和延迟函数三个部分,来实现案件及计时、显示日期功能。
结束语
完成情况:
经过半个月的努力,完成了简易电子钟控制方案的设计,用AT89C51单片机实现交通灯控制方案,本方案也可用AT89C51单片机来实现,这样可减小电路板的体积、降低生产成本。
本设计只包括简易电子钟部分,在路口实际使用的点阵式LED显示器及其驱动部分均未涉及。
所得收获:
通过这次课程设计,使我得到了一次用专业知识和专业技能去分析问题、解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及用汇编语言设计程序的思路技巧等方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
参考文献
[1].郭志勇.单片机应用技术项目教程(C语言版)
[2].李朝清.单片机原理及接口技术.北京:
北京航空航天大学出版社.
[3].张迎新等.单片机初级教程.北京:
北京航空航天大学出版社.
[4].胡汉才.单片机原理及接口技术.北京:
清华大学出版社.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 电子钟 第十二