C52单片机电子时钟电路设计 课程设计.doc

上传人:laozhun 文档编号:3931484 上传时间:2023-03-28 格式:DOC 页数:21 大小:1.13MB
返回 下载 相关 举报
C52单片机电子时钟电路设计 课程设计.doc_第1页
第1页 / 共21页
C52单片机电子时钟电路设计 课程设计.doc_第2页
第2页 / 共21页
C52单片机电子时钟电路设计 课程设计.doc_第3页
第3页 / 共21页
C52单片机电子时钟电路设计 课程设计.doc_第4页
第4页 / 共21页
C52单片机电子时钟电路设计 课程设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《C52单片机电子时钟电路设计 课程设计.doc》由会员分享,可在线阅读,更多相关《C52单片机电子时钟电路设计 课程设计.doc(21页珍藏版)》请在三一办公上搜索。

1、单片机原理及应用课程设计题 目: C52单片机电子时钟电路设计 姓 名: 陶鹏鹏 专 业: 电子科学与技术 班 级: 121班 指导教师: 高 海 涛 安徽科技学院 数理学院目录1、基于单片机的电子时钟电路设计1.1设计任务与要求1.1.1设计目的:1.1.2设计要求:1.2方案设计2、单片机应用系统简介2.1AT89C52单片机的功能结构2.2单片机的引脚定义及功能2.3 定时计数器2.3.1定时/计数器结构2.3.2工作原理2.4键盘接口技术2.5复位操作2.6 显示控制模块3、硬件电路设计3.1电子时钟的电路图3.2单元电路设计3.2.1晶振、复位电路模块3.2.2键盘控制模块3.2.3

2、蜂鸣器电路模块3.2.4显示器电路模块4、软件设计4.1系统主程序设计4.2主程序清单4.3系统仿真与调试5、结论与心得摘 要电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用数码管显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示

3、时间的功能,还可以进行时,分和秒的校对,片选的灵活性好。 本课程设计就是用一块89C52单片机和共阴极数码管显示屏及其他元器件设计出一个电子时钟。用单片机的定时器来产生时钟信号,通过扫描几个按键来控制时钟。把这几个模块的程序及原理图设计好后组合在一起就成了一个电子时钟。 关键词:89C52单片机;共阴极数码管;定时器;石英晶体振荡器;1、基于单片机的电子时钟电路设1.1设计任务与要求 1.1.1设计目的:(1)学习输出口的使用方法;(2)学习定时/计数器的使用;(3)学习中断的使用;1.1.2设计要求:电路的基本功能应包括数码显示时间、可以手动调节时间、定时闹铃等,制作出实物并调试演示成功。1

4、.2方案设计 方案:该系统采用52系列单片机AT89C52作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。AT89C52单片机特点如下:(1)单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。(2)单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚, 可扩充为各种规模的微电脑系统。(3)控制功能强:

5、单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。AT89C52单片机晶振 复位电路独立键盘电路显示电路蜂鸣器电路图1.1时钟电路结构设计总框图2、单片机应用系统简介2.1AT89C52单片机的功能结构如下图所示,单片机是属于三总线结构,89C52单片机功能方框图。图2.1单片机内部结构框2.2单片机的引脚定义及功能图2.1双列直插式引脚分布引脚功能:VCC工作电源+5V。GND电源地。ALE/PROG访问外部存储器时作为低8位地址锁存控制信号;在对EPROM编程时作为编程脉冲输入;在不访问外部存储器和非EPROM编程状态下,该脚输出频率为1/6单片机晶振频率的方波信号,

6、该信号,可作为时钟脉冲,但在访问数据存储器时会丢失一个脉冲。PSEN外部程序存储器读选通信号。EA/VPP访问程序存储器控制信号。当EA为低电平时,只读外部存储器,当EA为高电平时则先读内部程序存储器,再读外部程序存储器;这个引脚在编程时接编程电压VPP。RST复位信号,对系统复位信号要2T。XTAL1片内振荡电路输入端。XTAL2片内振荡电路输出端。P0-P3输入输出端口。2.3 定时计数器 2.3.1定时/计数器结构图2.2定时/计数器结构89C52单片机内部设有两个16位定时/计数器,简称为定时器0(T0)和定时器1(T1)。定时器计数器的结构如图2.2所示:TMOD方式控制寄存器,用于

7、设定定时计数器的工作方式 TCON定时器控制寄存器,用于启动定时计数器 IE中断允许控制寄存器:定时计数器是微机的中断源2.3.2工作原理89C52系列单片机内部定时计数器的工作原理可用图2.3来说明。图2.3 定时计数器的工作原理定时/计数功能选择:当CT0时,为定时器功能,此时,C与A相连(计数脉冲为机器周期);当CT1时,为计数功能,此时,C与B相连(计数脉冲从 P3.4或P3.5口输入)。 定时/计数器设置:定时计数器设置由工作方式控制寄存器(TMOD)、定时控制寄存器(TCON)以及中断允许寄存器(IE)共同完成。2.4键盘接口技术 键盘分两类:独立连接多键盘和矩阵式键盘,如图2.4

8、所示。图2.4独立式键盘独立式按键结构独立式按键结构的键盘是最简单的键盘电路,每个键独立接入一根输入线。这种键盘的优点是结构简单、使用十分方便,目前这种结构的键盘应用还相当普遍,这种键盘的缺点是随着键数数量的增加所占用的I/O口线也增加。独立式按键结构的键盘在没有键按下时,数据输入线均为高电平,当有键按下时,与之对应的数据线将变成低电平。因此可用位指令判别是否有键按下。2.5复位操作复位操作是单片机的初始化操作,单片机在进入运行前和在运行过程中程序出错或操作失误使系统不能正常运行时,需要进行复位操作。复位操作后,程序将从0000H开始重新执行。除此之外,复位操作还使单片机的ALE和PSEN引脚

9、信号在复位期间变为无效状态。单片机对复位信号的要求:一是复位信号为高电平,二是复位信号有效持续时间不少于24个振荡脉冲(两个机器周期)以上。在这里特别要提醒的是,在一个应用系统中,如果有几片单片机同时工作,在程序上有连接关系,系统复位时,应确保每一片单片机同时复位。复位信号由单片机的RST引脚输入,复位操作有上电自动复位、按键复位和外部脉冲复位三种方式。随着单片机技术的发展,目前有些单片机内部带有看门狗电路,当程序进行出错或进入了无休止循环时,看门狗电路将利用软件强行使系统复位。2.6 显示控制模块图2.5八位共阴数码管显示为了节省I/O口,采用动态显示的方法,用两片74HC573,用作段锁存

10、和位锁存器。3、硬件电路设计3.1电子时钟的电路图图3.1电子时钟电路原理图3.2单元电路设计 3.2.1晶振、复位电路模块 图3.2晶振、复位电路图晶振电路:采用12Mhz的晶振,22pF的电容。当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。上电后,保持RST一段高电平时间。3.2.2键盘控制模块 图3.2键盘控制电路图根据题目要求,只需要6个按键(如图3.2),选用

11、独立按键模式。 这6个键的功能分别为: KEY1:时钟时位加键,每按一次时位的时间值加1;KEY2:时钟时位减键,每按一次时位的时间值减1;KEY3:时钟分位加键,每按一次分位的时间值加1;KEY4:时钟分位减键,每按一次分位的时间值减1;KEY5:时钟秒位加键,每按一次秒位的时间值加1;KEY6:时钟秒位减键,每按一次秒位的时间值减1;3.2.3蜂鸣器电路模块图3.3蜂鸣器电路模块喇叭一脚与单片机的P1.1脚相连,一脚接地。如图3.3所示。3.2.4显示器电路模块4、软件设计4.1系统主程序设计初始化程序:设置单片机的定时器0工作在模式1(16位定时器),对定时器0赋初值,开启总中断和定时器

12、中断,定时器开始计时,可计时24小时,为节省I/O口,用动态扫描的方法,用两片74HC573分别控制段选通和位选通,将时间显示到共阴极数码管上,计时完成后重新开始计时,蜂鸣器电路可通过P11口在整点时发声报时。4.2主程序清单根据硬件电路的连接以及我们要实现的功能,编写出了如下的C程序,该程序能够实现我们设计所需要的功能,具体的程序代码如下:#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义unsigned char frq;sbit H_KEY_ADD=P32; /定义按键输入端口sbit H_KEY_DEC=P33;sbit M_KEY_ADD=P34;sb

13、it M_KEY_DEC=P35;sbit S_KEY_ADD=P36;sbit S_KEY_DEC=P37;#define DataPort P0 /定义数据端口 程序中遇到DataPort 则用P0 替换sbit LATCH1=P22;/定义锁存使能端口 段锁存sbit LATCH2=P23;/ 位锁存sbit Beep = P11;/定义喇叭端口 bit BeepFlag;unsigned char code dofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值09unsigned char co

14、de dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分别对应相应的数码管点亮,即位码unsigned char TempData8; /存储显示值的全局变量unsigned char h,m,s;bit UpdateTimeFlag;void DelayUs2x(unsigned char t);/函数声明 void DelayMs(unsigned char t);void Display(unsigned char FirstBit,unsigned char Num);void Init_Timer0(void);void Be

15、ep_OFF(void);void Beep_ON(void);void Display_Data_Operation(void); void main (void) unsigned char num=0; H_KEY_ADD=1; /按键输入端口电平置高 H_KEY_DEC=1; M_KEY_ADD=1; /按键输入端口电平置高 M_KEY_DEC=1; S_KEY_ADD=1; /按键输入端口电平置高 S_KEY_DEC=1; Init_Timer0(); while (1) /主循环 if(!H_KEY_ADD) /如果检测到低电平,说明按键按下 DelayMs(10); /延时去抖,

16、一般10-20ms if(!H_KEY_ADD) /再次确认按键是否按下,没有按下则退出 while(!H_KEY_ADD);/如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁 if(h0) /减操作 h-; if(!M_KEY_ADD) /如果检测到低电平,说明按键按下 DelayMs(10); /延时去抖,一般10-20ms if(!M_KEY_ADD) /再次确认按键是否按下,没有按下则退出 while(!M_KEY_ADD);/如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁 if(m0) /减操作 m-; if(!S_KEY_ADD) /如果检

17、测到低电平,说明按键按下 DelayMs(10); /延时去抖,一般10-20ms if(!S_KEY_ADD) /再次确认按键是否按下,没有按下则退出 while(!S_KEY_ADD);/如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁 if(s0) /减操作 s-; TempData0=dofly_DuanMah/10;/分解显示信息,如要显示68,则68/10=6 68%10=8 TempData1=dofly_DuanMah%10; TempData2=0x40; /显示一横 TempData3=dofly_DuanMam/10; TempData4=dofly_

18、DuanMam%10; TempData5=0x40; TempData6=dofly_DuanMas/10; TempData7=dofly_DuanMas%10; / Display(0,8); /显示全部8位 /主循环中添加其他需要一直工作的程序 if(BeepFlag=1) BeepFlag=0; DelayMs(500); /延时1ms,累加频率值 frq+; /*- uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5

19、 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个

20、显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2-*/void Display(unsigned char FirstBit,unsigned char Num) static unsigned char i=0; DataPort=0; /清空数据,防止有交替重影 LATCH1=1; /段锁存 LATCH1=0; DataPort=dofly_WeiMai+FirstBit; /取位码 LATCH2=1; /位锁存 LATCH2=0; DataPort=TempDatai; /取显示数据,段码 LATCH1=1; /段锁存 LATCH1=0; i+; if(i=Num)

21、i=0;/*- 定时器初始化子程序-*/void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 EA=1; /总中断打开 ET0=1; /定时器中断打开 TR0=1; /定时器开关打开/*- 定时器中断子程序-*/void Timer0_isr(void) interrupt 1 static unsigned int t; TH0=(65536-2000)/256; /重新赋值 2ms TL0=(65536-2000)%256; Display(0,8); t+; if(500=t) t=0; s+; i

22、f(60=s) s=0; m+; if(60=m) m=0; h+; if(24=h) h=0; if(s=0) if(m=0) BeepFlag=1;Beep=!Beep; 4.3系统仿真与调试设计中分4个模块,测试的步骤如下: (1)上电后,数码管显示000000,之后秒钟自动增加。 (2)整点时蜂鸣器发声报时。 (3)按下KEY1,KEY3,KEY5,可分别看到数码管时位,分位,秒位时间数值的加值变化。 (4)按下KEY2,KEY4,KEY6,可分别看到数码管时位,分位,秒位时间数值的减值变化。5、结论与心得在此次单片机课程设计过程中,我经历了缺乏实践经验的失落,也经历了仿真成功而热情高

23、涨。特别是Proteus仿真软件的使用,经历了从陌生到熟悉的过程,从头开始学起,对着芯片原理进行仿真画图,刚刚开始时候感觉到有些难下手,因为是英文版的软件,很多东西都看不太明白,查找元件都是通过自己一个个来寻找的,才把仿真图画了出来,然后把写好的程序导入芯片,进行仿真。可是一开始没有搞清楚电路的内部结构,仿真也一直不成功。后来通过不断的调试,不断的修改,当看到程序正常运行的那一刻,心里真是特别的激动。生活就是这样,汗水预示着结果,也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的较简单的课程制作,可是平心而论,也耗费了我不少的心血。 对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。通过这次课程设计,我体会到了知识的重要性,在今后的学习中,我会更加努力。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号