单片机电子时钟报告_第1页
单片机电子时钟报告_第2页
单片机电子时钟报告_第3页
单片机电子时钟报告_第4页
单片机电子时钟报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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晶振、复位电路模块

2、3.2.2键盘控制模块3.2.3蜂鸣器电路模块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设计要求:电路的基本功能应包括数码显示

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

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

6、ROM编程状态下,该脚输出频率为1/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)

7、。定时器计数器的结构如图2.2所示:TMOD方式控制寄存器,用于设定定时计数器的工作方式 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

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

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

10、省I/O口,采用动态显示的方法,用两片74HC573,用作段锁存和位锁存器。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.

11、2键盘控制电路图根据题目要求,只需要6个按键(如图3.2),选用独立按键模式。 这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工

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

13、EY_DEC=P33;sbit M_KEY_ADD=P34;sbit 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,0x7

14、f,0x6f;/ 显示段码值09unsigned char code 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

15、);void Init_Timer0(void);void Beep_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) /如果检

16、测到低电平,说明按键按下 DelayMs(10); /延时去抖,一般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(

17、m0) /减操作 m-; if(!S_KEY_ADD) /如果检测到低电平,说明按键按下 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=do

18、fly_DuanMam/10; TempData4=dofly_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 这里使用晶

19、振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 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 表示需要显示的

20、第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。 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) 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论