毕业设计(论文)数字电子钟的设计1_第1页
毕业设计(论文)数字电子钟的设计1_第2页
毕业设计(论文)数字电子钟的设计1_第3页
毕业设计(论文)数字电子钟的设计1_第4页
毕业设计(论文)数字电子钟的设计1_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、目目 录录 摘摘 要:要: .1 关键词:关键词: .1 第一章第一章 80518051 单片机的结构单片机的结构 .1 1 1、8051 单片机的片内资源.1 2 2、8051 的引脚信号.2 第二章第二章 复位电路和时钟电路复位电路和时钟电路 .5 1 1、复位电路.5 2 2、 时钟电路.5 第三章第三章 ledled 数码管接口技术数码管接口技术 .6 1 1、led 数码管的结构与原理.6 2 2、多位 led 显示器的显示方式.7 3 3、 led 显示器接口技术.8 第四章第四章 程序程序 .10 总总 结:结: .19 参考文献:参考文献: .19 附录(电子钟电路图)附录(电

2、子钟电路图) .20 数字电子钟的设计 信息信息 04020402 邢邢 钊钊 摘摘 要:要:数字电子钟的设计方法有很多种,例如,可用中小规模集 成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及 其所需要的外围电路组成电子种;还可以利用单片机来实现电子钟 等等。这些方法都各有特点,其中,利用单片机实现的电子钟具有 编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制 信号,精确度高等特点。下面所设计的电子钟是由单片机和外部显 示电路够成采用动态显示。 关键词关键词:电子钟;单片机;led 数码管显示 第一章第一章 80518051 单片机的结构单片机的结构 1 1、8051 单

3、片机的片内资源 8051 单片机是在一块芯片中集成了 cpu、 ram、 rom、定时器/ 计数器和 多种功能的 i/o 接口等一台计算机所需要的基本功能部件。单片机内包含下列 几个部件: 一个 8 位 cpu; 一个片内振荡器及时钟电路; 4k 字节 rom 程序存储器: 128 字节 ram 数据存储器; 两个 16 位定时器/计数器; 可寻址 64k 外部数据存储器和 64k 外部程序存储器空间的控制电路; 32 条可编程的 i/o 线(四个 6 位并行 i/o 端口) 一个可编程全双工串行口; 具有五个中断源、两个优先级嵌套中断结构。 8051 单片机框图如图 11 所示。各功能部件由

4、内部总线联接在一起。 图中 4k(4096)字节的 rom 存储器部分用 eprom 替换就成为 8751; 图中去掉 rom 部分就成为 8031 的结构图。 图图 1 11 1 2 2、8051 的引脚信号 8051 单片机都采用 40 引脚的双列直播封装方式。图 12(a)为引脚排 列图, (b)为逻辑符号图。 图图 1 12 2 40 条引脚说明如下: 主电源引脚 vss 和 vcc vss 接地。 vcc 正常操作时为十 5 伏电源。 外接晶体引脚 xtal1 和 xtal2 xtal1 内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当 采用外部振荡器时,此引脚接地。 xta

5、l2 内部振荡器的反相放大器的输出端,是外接晶体的另一端。当采 用外部振荡器时,此引脚接外部振荡源。 控制或与其它电源复用引脚 rst/vpd,ale/prog,psen 和 ea/vpp。 rst/vpd 当振荡器运行时。在此引脚上出现两个机器同期的高电平(由 低到高跳变) ,将使单片机复位。 在 vcc 掉电期间,此引脚可接上备用电源,由 vpd 向内部 ram 提供备用 电源,以保持内部 ram 中的数据。 ale/prog 正常操作时为 ale 功能(允许地址钱存) ,提供把地址的低字 节锁存到外部锁存器。ale 引脚以不变的频率(振荡周期的 1/6)周期性地发出 正脉冲信号。因此,它

6、可用作对外输出的时钟,或用于定时目的。但要注意, 每当访问外部数据存储器时,将跳过一个 ale 脉冲。 ale 端可以驱动(吸收或 输出电流)八个 lsttl 电路。 对于 eprom 型单片机,在 eprom 编程期间,此引脚接收编程脉冲(prog 功能) 。 psen 外部程序存储器读选通信号输出端。在从外部程序存储器取指令 (或数据)期间;psen 在每个机器周期内两次有效。 psen 同样可以驱动八个 lsttl 输入。 eavpp ea 为内部程序存储器和外部程序存储器选择端。当 ea 为高电 平时,访问内部程序存储器(pc 值小于 4k) 。当 ea 为低电平时,则访问外部程 序存

7、储器。对于 eprom 型单片机,在 eprom 编程期间,此引脚上加 21veprom 编 程电源(vpp) 。 输入/输出引脚 p0.0p0.7,p1.0p1.7,p2.0p2.7,p3.0p3.7 p0.0p0.7: p0 是一个 8 位漏极开路型双向 i/o 口。在访问外部存储 器时,它是分时传送的低字节地址和数据总线。po 口能以吸收电流的方式驱动 八个 lsttl 负载。 p1.0p1.7: p1 是一个带有内部提升电阻的 8 位准双向 i/o 口。它能 驱动(吸收或输出电流)四个 lsttl 负载。 p2.0p2.7: p2 是一个带有内部提升电阻的 8 位准双向 i/o 口。在

8、访 问外部存储器时,它输出高 8 位地址。p2 口可以驱动(吸收或输出电流)四个 lsttl 负载。 p3.0p3.7:p3 是一个带有内部提升电阻的 8 位准双向 i/o 口。能驱 动(吸收或输出电流)四个 lsttl 负载。p3 口还用于第二功能请参看表 11。 表表 1 11 1 第二章第二章 复位电路和时钟电路复位电路和时钟电路 1 1、复位电路 8051 单片机的复位电路如图 21 所示。在 reset(图中表示为 rst)输入 端出现高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作, 必须使 rst 引脚至少保持两个机器周期(24 个振荡器周期)高电平。cpu 在第

9、二个机器周期内执行内部复位操作、以后每一个机器周期重复一次,直至 rst 端电平变低。复位期间不产生 ale 及 psen 信号。 图图 2 21 1 2 2、 时钟电路 8051 片内设有一个由反向放大器所构成的振荡电路,xtall 和 xtal2 分别 为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。 图图 2 22 2 内部方式时钟电路如图 2-2(a)所示。在 xtal1 和 xtal2 引脚上外接定时 元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成 的并联谐振回路。晶体可以在 1.2 mhz 到 12mhz 之间选择,电容值在 530 pf 之

10、间选择,电容的大小可起频率微调作用。外部方式的时钟电路如图 2- 2(b)所示,xtall 接地;xtal2 接外部振荡器。对外部振荡信号无特殊要求, 只要保证脉冲宽度,一般采用频率低于 12mhz 的方波信号。 第三章第三章 ledled 数码管接口技术数码管接口技术 1 1、led 数码管的结构与原理 八段 led 显示器的每一段均由一个或几个 led 组成,依靠段的组合来显示 所需的数字或字符。 段的标记一般采用字母 a、b、c、d、e、f、g、h 来表示,见图 3-1(a) 。 八段 led 显示器有共阴极的和共阳极的两种,图 3-1(b)、(c)。 图图 3 31 1 显示原理 八段

11、 led 显示器与单片机的接口比较简单,只要将一个 8 位并行口与显示 器的引脚对应相接即可,如图 3-2。由 8 位并行口输出不同的字节数据,显示 出不同的数字或字符。 图图 3 32 2 控制 led 显示出不同的数字或字符的 8 位字节数据称为“段选码” 。共阴极 led 与共阳极 led 的段选码互为补码。 常用字符的段选码 设 8 位并行口与 led 数码管各段的连接是: h g f e d c b a | | | | | | | | d7 d6 d5 d4 d3 d2 d1 d0 常用字符的段选码如下: 显示字符 共阴极 共阳极 显示字符 共阴极 共阳极 0 3fh c0h a 7

12、7h 88h 1 06h f9h b 7ch 83h 2 5bh a4h c 39h c6h 3 4fh b0h d 5eh a1h 4 06h 99h e 79h 86h 5 6dh 92h f 71h 8eh 6 7dh 82h u 3eh c1h 7 07h f8h y 6eh 91h 8 7fh 80h 8. ffh 00h 9 6fh 90h 全灭 00h ffh 2 2、多位 led 显示器的显示方式 将多个 led 显示块组合在一起就构成了多位 led 显示器。每个 led 显示器 的段引脚称为段选线,公共端称为位选线。段选线控制显示的字符,位选线控 制该 led 的亮和灭。按照

13、显示器的工作方式不同,位选线和段选线的连接方法 也不同。 led 显示器有静态显示和动态显示两种方式。 静态显示 所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定 地导通或截止。例如,七段显示器的 a,b,c,d,e,f 导通,g 截止,则显示 0。 这种显示器方式,每一位都需要有一个 8 位输出口控制。所以占用硬件多, 一般用于显示器位数较小(很少)的场合。当位数较多时;用静态显示所需的 i/o 口太多,一般采用动态显示方法。 动态显示 所谓动态显示,就是将所有各位的段选线并联在一起,由一个 8 位并行口 控制,而各位的公共端 com 分别由相应的 i/o 口线控制。要使各位

14、显示出不同 的字符,就得采用扫描的方法,一位一位地轮流点亮各位显示器(扫描) 。对于 每一位显示器来说,每隔一段时间点亮一次。 显示器的点亮既跟点亮时的导通电流有关,也跟点亮时间和间隔时间的比 例有关。调整电流和时间的参数,可实现亮度较高较稳定的显示。 若显示器的位数不大于 8 位,则控制显示器公共极电位只需一个 i/o 口 (称为位选口) ,控制各位显示器所显示的字形也需一个 i/o 口(称为段选口) 。 图 3-3 是一种采用 8155 与 6 位共阴极 led 显示器的接口电路。 图图 3 33 3 3 3、 led 显示器接口技术 为了显示相应的字符,必须将该字符转换成相应的段选码。这

15、种转换也称 为译码。译码可以采用硬件的方法,也可以采用软件的方法。 采用硬件译码的 led 显示器接口技术 在有些场合中,仅要求 led 显示器能显示十六进制和十进制带小数点的数。 这时,可选用 motorola 公司的 mc14495(cmos bcd-7 段十六进制锁存译码驱动 器) ,如图 3-4。 采用软件译码的 led 显示器接口技术 在有些应用场合中,不仅要求 led 显示器能显示十六进制数,还要求能显 示某些特殊的字符(如“cpu” ) ,这时就需要采用软件译码。 由于单片机本身具有较强的逻辑控制能力,采用软件译码并不复杂。其译 码逻辑可以随意编程设定,不受硬件逻辑限制,同时还能

16、简化硬件电路结构。 因此,在单片机应用系统中使用非常广泛。 图图 3 34 4 软件译码的基本方法: 将所有要显示的字符的段选码列成一个表(字库) ,存放在存储器中,使用 时,按照所需显示的字符从表中查取相应的段选码送到显示口。 第四章第四章 程程 序序 定时器 t0、t1 溢出周期为 50ms,t0 为秒计数用, t1 为调整时闪烁用,; p3.7 为调整按钮,p1 口 为字符输出口,采用共阳显示管。 中断入口程序 org 0000h ;程序执行开始地址 ljmp start ;跳到标号 start 执行 org 0003h ;外中断 0 中断程序入口 reti ;外中断 0 中断返回 or

17、g 000bh ;定时器 t0 中断程序入口 ljmp intt0 ;跳至 intto 执行 org 0013h ;外中断 1 中断程序入口 reti ;外中断 1 中断返回 org 001bh ;定时器 t1 中断程序入口 ljmp intt1 ;跳至 intt1 执行 org 0023h ;串行中断程序入口地址 reti ;串行中断程序返回 主 程 序 ; start: mov r0,#70h ;清 70h-7ah 共 11 个内存单元 mov r7,#0bh ; cleardisp: mov r0,#00h ; inc r0 ; djnz r7,cleardisp ; mov 20h,#

18、00h ;清 20h(标志用) mov 7ah,#0ah ;放入熄灭符数据 mov tmod,#11h ;设 t0、t1 为 16 位定时器 mov tl0,#0b0h ;50ms 定时初值(t0 计时用) mov th0,#3ch ;50ms 定时初值 mov tl1,#0b0h ;50ms 定时初值(t1 闪烁定时用) mov th1,#3ch ;50ms 定时初值 setb ea ;总中断开放 setb et0 ;允许 t0 中断 setb tr0 ;开启 t0 定时器 mov r4,#14h ;1 秒定时用初值(50ms20) start1: lcall display ;调用显示子程

19、序 jnb p3.7,setmm1 ;p3.7 口为 0 时转时间调整程序 sjmp start1 ;p3.7 口为 1 时跳回 start1 setmm1: ljmp setmm ;转到时间调整程序 setmm 1 秒计时程序 ; ;t0 中断服务程序 intt0: push acc ;累加器入栈保护 push psw ;状态字入栈保护 clr et0 ;关 t0 中断允许 clr tr0 ;关闭定时器 t0 mov a,#0b7h ;中断响应时间同步修正 add a,tl0 ;低 8 位初值修正 mov tl0,a ;重装初值(低 8 位修正值) mov a,#3ch ;高 8 位初值修正

20、 addc a,th0 ; mov th0,a ;重装初值(高 8 位修正值) setb tr0 ;开启定时器 t0 djnz r4, outt0 ;20 次中断未到中断退出 addss: movr4,#14h ;20 次中断到(1 秒)重赋初值 mov r0,#71h ;指向秒计时单元(71h-72h) acall add1 ;调用加 1 程序(加 1 秒操作) mov a,r3 ;秒数据放入 a(r3 为 2 位十进制 数组合) clrc ;清进位标志 cjne a,#60h,addmm ; addmm: jc outt0 ;小于 60 秒时中断退出 acall clr0 ;大于或等于 6

21、0 秒时对秒计时单元 清 0 movr0,#77h ;指向分计时单元(76h-77h) acall add1 ;分计时单元加 1 分钟 mov a,r3 ;分数据放入 a clr c ;清进位标志 cjne a,#60h,addhh ; addhh: jc outt0 ;小于 60 分时中断退出 acall clr0 ;大于或等于 60 分时分计时单元清 0 movr0,#79h ;指向小时计时单元(78h-79h) acall add1 ;小时计时单元加 1 小时 mov a,r3 ;时数据放入 a clr c ;清进位标志 cjne a,#24h,hour ; hour: jc outt0

22、 ;小于 24 小时中断退出 acall clr0 ;大于或等于 24 小时小时计时单元 清 0 outt0: mov 72h,76h ;中断退出时将分、时计时单元数 据移 mov 73h,77h ;入对应显示单元 mov 74h,78h ; mov 75h,79h ; pop psw ;恢复状态字(出栈) pop acc ;恢复累加器 setb et0 ;开放 t0 中断 reti ;中断返回 闪动调时 程 序 ;t1 中断服务程序,用作时间调整时调整单元闪烁指示 intt1: push acc ;中断现场保护 push psw ; mov tl1, #0b0h ;装定时器 t1 定时初值

23、mov th1, #3ch ; djnz r2,intt1out ;0.3 秒未到退出中断(50ms 中断 6 次) mov r2,#06h ;重装 0.3 秒定时用初值 cpl 02h ;0.3 秒定时到对闪烁标志取反 jb 02h,flash1 ;02h 位为 1 时显示单元熄灭 mov 72h,76h ;02h 位为 0 时正常显示 mov 73h,77h ; mov 74h,78h ; mov 75h,79h ; intt1out: pop psw ;恢复现场 pop acc ; reti ;中断退出 flash1: jb 01h,flash2 ;01h 位为 1 时,转小时熄灭控制

24、mov 72h,7ah ;01h 位为 0 时,熄灭符数据放 入分 mov 73h,7ah ;显示单元(72h-73h) ,将不显示 分数据 mov 74h,78h ; mov 75h,79h ; ajmp intt1out ;转中断退出 flash2: mov 72h,76h ;01h 位为 1 时,熄灭符数据放 入小时 mov 73h,77h ;显示单元(74h-75h) ,小时数据将 不显示 mov 74h,7ah ; mov 75h,7ah ; ajmp intt1out ;转中断退出 加 1 子 程 序 ; add1: mov a,r0 ;取当前计时单元数据到 a dec r0 ;指

25、向前一地址 swap a ;a 中数据高四位与低四位交换 orl a,r0 ;前一地址中数据放入 a 中低四位 add a,#01h ;a 加 1 操作 da a ;十进制调整 mov r3,a ;移入 r3 寄存器 anl a,#0fh ;高四位变 0 mov r0,a ;放回前一地址单元 mov a,r3 ;取回 r3 中暂存数据 inc r0 ;指向当前地址单元 swap a ;a 中数据高四位与低四位交换 anl a,#0fh ;高四位变 0 mov r0,a ;数据放入当削地址单元中 ret ;子程序返回 清零程序 ; ;对计时单元复零用 clr0: clr a ;清累加器 mov

26、r0,a ;清当前地址单元 dec r0 ;指向前一地址 mov r0,a ;前一地址单元清 0 ret ;子程序返回 时钟调整程序 ; ;当调时按键按下时进入此程序 setmm: clr et0 ;关定时器 t0 中断 clr tr0 ;关闭定时器 t0 lcall dl1s ;调用 1 秒延时程序 jb p3.7,closedis ;键按下时间小于 1 秒,关闭显示(省 电) mov r2,#06h ;进入调时状态,赋闪烁定时初值 setb et1 ;允许 t1 中断 setb tr1 ;开启定时器 t1 set2: jnb p3.7,set1 ;p3.7 口为 0(键未释放) ,等待 s

27、etb 00h ;键释放,分调整闪烁标志置 1 set4: jb p3.7,set3 ;等待键按下 lcall dl05s ;有键按下,延时 0.5 秒 jnb p3.7,sethh ;按下时间大于 0.5 秒转调小时状态 mov r0,#77h ;按下时间小于 0.5 秒加 1 分钟操作 lcall add1 ;调用加 1 子程序 mov a,r3 ;取调整单元数据 clr c ;清进位标志 cjne a,#60h,hhh ;调整单元数据与 60 比较 hhh: jc set4 ;调整单元数据小于 60 转 set4 循环 lcall clr0 ;调整单元数据大于或等于 60 时清 0 cl

28、r c ;清进位标志 ajmp set4 ;跳转到 set4 循环 closedis: setb et0 ;省电(led 不显示)状态。开 t0 中断 setb tr0 ;开启 t0 定时器(开时钟) close: jb p3.7,close ;无按键按下,等待。 lcalldisplay ;有键按下,调显示子程序延时削抖 jb p3.7,close ;是干扰返回 close 等待 waith: jnb p3.7,waith ;等待键释放 ljmp start1 ;返回主程序(led 数据显示亮) sethh: clr 00h ;分闪烁标志清除(进入调小时状态) sethh1: jnb p3.

29、7,set5 ;等待键释放 setb 01h ;小时调整标志置 1 set6: jb p3.7,set7 ;等待按键按下 lcall dl05s ;有键按下延时 0.5 秒 jnb p3.7,setout ;按下时间大于 0.5 秒退出时间调 整 movr0,#79h ;按下时间小于 0.5 秒加 1 小时操作 lcall add1 ;调加 1 子程序 mov a,r3 ; clr c ; cjne a,#24h,houu ;计时单元数据与 24 比较 houu: jc set6 ;小于 24 转 set6 循环 lcall clr0 ;大于或等于 24 时清 0 操作 ajmp set6 ;

30、跳转到 set6 循环 setout: jnb p3.7,setout1 ;调时退出程序。等待键释放 lcall display ;延时削抖 jnb p3.7,setout ;是抖动,返回 setout 再等待 clr 01h ;清调小时标志 clr 00h ;清调分标志 clr 02h ;清闪烁标志 clr tr1 ;关闭定时器 t1 clr et1 ;关定时器 t1 中断 setb tr0 ;开启定时器 t0 setb et0 ;开定时器 t0 中断(计时开始) ljmp start1 ;跳回主程序 set1: lcall display ;键释放等待时调用显示程序(调 分) ajmp s

31、et2 ;防止键按下时无时钟显示 set3: lcall display ;等待调分按键时时钟显示用 ajmp set4 set5: lcall display ;键释放等待时调用显示程序(调 小时) ajmp sethh1 ;防止键按下时无时钟显示 set7: lcall display ;等待调小时按键时时钟显示用 ajmp set6 setout1: lcall display ;退出时钟调整时键释放等待 ajmp setout ;防止键按下时无时钟显示 显示程序 ; 显示数据在 70h-75h 单元内,用六位 led 共阳数码管显示,p1 口输出段 码数据,p3 口作 ; 扫描控制,每个 led 数码管亮 1ms 时间再逐位循环。 display: mov r1,#70h ;指向显示数据首址 mov r5,#0feh ;扫描控制字初值 play: mov a,r5 ;扫描字放入 a mov p3,a ;从 p3 口输出 m

温馨提示

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

评论

0/150

提交评论