《单片机课程设计-数字钟设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计-数字钟设计.docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微型计算机技术题目名称:多功能数字钟专业 自动化 班级 10 级 2 班姓名 苑 红 学号 202328168 学校:青岛理工大学自动化学院指导教师:史贺男2023 年 12 月 25 日第 13 页共 22 页课程设计任务书课程名称:微型计算机技术设计题目:多功能数字钟系统硬件要求:1、配置单片机的外部程序 ROM 空间,容量为 16K使用 27128 芯片。2、使用 51 单片机内部时钟信号为系统供给计时信号。3、配置 LED 数码管或液晶显示器显示时间,设置 4 位操作按键。系统功能要求:1、在 LED 数码显示器或液晶显示器上显示:时:分:秒。2、按键功能自定义,实现按键调整时间功能。
2、3、具有闹钟功能选做。4、具有秒表功能选做。其他要求:1、每位同学独立完本钱设计。2、依据题目要求,提出系统设计方案。3、设计系统电路原理图。5、调试系统硬件电路、功能程序。6、编制课程设计报告书并装订成册,报告书内容按挨次(1) 报告书封面(2) 课程设计任务书(3) 系统设计方案的提出、分析(4) 系统中典型电路的分析(5) 系统软件构造框图(6) 系统电路原理图(7) 源程序(8) 课设字数不少于 2023 字成绩评语前言 :目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。的导航装置,飞机上各种仪表的掌握,计算机的网络通讯与数据传输,工业自动化过程的实时掌握和数
3、据处理,广泛使用的各种智能 IC 卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的掌握,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动掌握领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化掌握的科学家、工程师。数字钟以成为人们日常生活中数字电子钟一般由振荡器,分频器,译码器,显示器等局部组成。数字钟的应用格外广泛,应用于人家庭以及车站。码头。剧场, 办公室等公共场所,给人们的生活,学习,工作,消遣带来极大的便利,由于数字集成电路技术的进展和承受了先进的石英技术,使数字钟具有走时准确,性能稳定, 携带便利等特点,它还用于计时
4、,自动报时及自动掌握等各个领域。 尽管目前市场上以有现成数字钟集成电路芯片出售,价格廉价这些都是数字电路中最根本的, 应用最广的电路。数字电子钟的根本规律功能框图如下:它是一个将“时”, “分”,“秒”显示于人的视觉器官的计时装置。这次的课程设计主要是承受 51 单片机内部时钟信号为系统供给计时信号,可以通过按键修改时间,使其在给定的时间上进展刷,最终在数码管上显示时间,通过初值直接给数码管初始化这次主要是对时分秒的编程。还带有闹钟功能设置好时间在时间到时蜂鸣器发出声音。1、系统方案与论证1.1 方案设计主要利用 AT89C51 单片机外接 8155 扩展单片机 IO 口,B 口、C 口掌握数
5、码管的位显示, A 口掌握数码管的段显示,P1 口与按键和蜂鸣器相接用于时间的校正和声音提示,使用 27128 芯片配置单片机的外部程序容量为 16K 的 ROM 空间。本设计承受一节 1.5V 干电池为整个系统供电,在设计中引入一个升压电路从 1.5V 升至 5V,产生+5V 电压用于给 CPU 及显示电路供给工作电压,这是数字时钟正常工作时的总电压。系统初始化键盘时间设定与选择LED数码管时间显示51单片机处理8155锁存器271282-4译码器显示电路将“时”、“分”、“秒”计数器的输出,通过六个八段 LED 显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器
6、来对“时”、“分”、“秒”显示数字进展校对调整图 1系统构造图1.2 主要模块方案选择比较与论证1.2.1 单片机的选取选用 AT89C51 作为掌握器,价格低,性价比高,多个定时器和其他外围功能丰富。而且运行速度快工作稳定。1.2.2 模式转换的选择:键盘按键选择模式,便利易于掌握。1.2.3 输入方案的选择通过独立键盘输入数据,通过数据的加减来确定数据,功能齐全且直接输入便利快捷。1.2.4 显示方案的选择方案一:使用功能更好的液晶显示,增加显示信息的可读性,看起来更便利。而 12864 点阵液晶模块有明显的优点:微功耗,尺寸小,超薄轻松,字迹美观,视觉舒适,显示信息量大,大局部功能用不到
7、,造成铺张。方案二:时间显示可以用数码管,显示信息少,简洁掌握。经比较,应选用方案二进展设计。2、系统硬件模块2.1 AT89C51 单片机AT89C51 是一种带 4K 字节 FLASH 存储器FPEROMFlash Programmable and Erasable Read Only Memory的低电压、高性能 CMOS 8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 1000 次。该器件承受 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于
8、将多功能 8 位CPU 和闪耀存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微掌握器, AT89C51 单片机为很多嵌入式掌握系统供给了一种敏捷性高且价廉的方案。2.2 复位电路一般状况下单片机的复位电路有两种,即上电复位和手动复位电路。如下图为手动复位电路。2.晶振电路图 2 复位电路图 晶振电路2.按键调整电路图 按键调整电路本系统承受四位按键 S4 为功能选择键,S3 为时分秒选择键,S2、S1 为数字加减键。2.蜂鸣器电路由于 51 单片机管脚功率限制问题,本系统蜂鸣器电路承受一个晶体管驱动,功率大,安全稳定。图蜂鸣器电路2.6 74LS373 芯片电路与管脚图图
9、74LS373 管脚电路图373 为三态输出的八 D 透亮锁存器,共有 54S373 和 74LS373 两种线路373 的输出端 O0O7 可直接与总线相连。当三态允许掌握端 OE 为低电寻常,O0O7 为正常规律状态,可用来驱动负载或总线。当 OE 为高电寻常,O0O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的规律操作不受影响。当锁存允许端 LE 为高电寻常,O 随数据 D 而变。当 LE 为低电寻常,O 被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使沟通和直流噪声抗扰度被改善 400mV。引出端符号:D0D7 数据输入端OE 三态允许掌握端低电平有效
10、LE 锁存允许端O0O7 输出端2.7 27128 电路与管脚图图 727128 管脚电路图27128 使用了一片用与扩展外部 ROM27128 管脚说明A0 到 A13 为 14 条地址信号输入线,说明芯片容量为 2 的 14 次方,即 16KD0 到 D7 为数据线,表示芯片的每个存储单元存放一个字节8 位二进制数。对芯片读数时,作为输出线,对芯片编程时,作为输入线。CE 为输入信号,低电平有效。有称作片选信号 OE 为输出允许信号,低电平有效PGM 为编程脉冲输入端,当对芯片编程时,由此端参加编程脉冲信号;读取数据时 PMG 的值为 1Vcc 和 Vpp 都是接电源的,正常工作时是+5V
11、2.8 外部并行口扩展 8155 电路图图 88155 管脚电路图2、8155 的地址编码及工作方式8155 各引脚功能说明如下: RST:复位信号输入端,高电平有效。复位后,3 个 I/O 口均为输入方式。AD0AD7:三态的地址/数据总线。与单片机的低 8 位地址/数据总线P0口相连。单片机与 8155 之间的地址、数据、命令与状态信息都是通过这个总线口传送的。RD:读选通信号,掌握对 8155 的读操作,低电平有效。WR:写选通信号,掌握对 8155 的写操作,低电平有效。CE:片选信号线,低电平有效。IO/M :8155 的 RAM 存储器或 I/O 口选择线。当IO/M 0 时,则选
12、择8155 的片内 RAM,AD0AD7 上地址为 8155 中 RAM 单元的地址00HFFH;当 IO/M 1 时,选择 8155 的 I/O 口,AD0AD7 上的地址为 8155 I/O 口的地址。ALE:地址锁存信号。8155 内部设有地址锁存器,在 ALE 的下降沿将单片机 P0 口输出的低 8 位地址信息及 ,IO/ 的状态都锁存到 8155 内部锁存器。因此, P0 口输出的低 8 位地址信号不需外接锁存器。PA0PA7:8 位通用 I/O 口,其输入、输出的流向可由程序掌握。PB0PB7:8 位通用 I/O 口,功能同 A 口。PC0PC5:有两个作用,既可作为通用的 I/O
13、 口,也可作为 PA 口和 PB 口的掌握信号线,这些可通过程序掌握。TIMER IN:定时/计数器脉冲输入端。TIMER OUT:定时/计数器输出端。VCC:5V 电源。在单片机应用系统中,8155 是按外部数据存储器统一编址的,为 16 位地址,其高 8 位由片选线 供给, CE0,选中该片。当 CE0,IO/M 0 时,选中 8155 片内 RAM,这时 8155 只能作片外 RAM 使用,其 RAM 的低 8 位编址为 00HFFH;当 CE0,IO/M 1 时,选中 8155 的I/O 口,其端口地址的低 8 位由 AD7AD0 确定2.9 六位 8 段LED 数码管显示电路图 10
14、LED 数码管电路图数码管时间显示分为 时、分、秒三局部,JP3 为秒位 承受 24 进制,JP2 为分位,承受 60 进制,JP1 为时位,承受 60 进制。3、系统软件调试3.1 程序构造1主程序。 实现初始化与键盘监控, 2定时器 T0 中断效劳程序。时钟电路的设计功能是利用单片机内部的定时/计数器进展中断定时,协作软件 延时实现时、分、秒的计时。利用定时器 T0 中断效劳程序实现计时功能,同时 刷计时缓冲区。定时器 T0 每隔 100ms 好处中断一次设系统使用 12MHZ 晶振,定时 T0 工作方式 1 的定时初值为 3CBOH(即 THO=3CH,TL0=0B0H),每循环中断 1
15、0 次则延时时间为 1s,重复 60 次为 1min,分计时 60 次为 1 小时,小时计时 24 次则时间重回到 00:00:00。 3时间设置与闹钟设置子程序。 实现当前时间及定时启闹钟时间的键盘输入设置。其功能是 用键盘设置子程序将键入的 6 位时间值送入键盘设置缓冲区, 用合字子程序将键 盘设置缓冲区中的 6 位 BCD 码合并为 3 位压缩 BCD 码, 送入计时缓冲区或闹钟值存放区。假设键盘输入的小时值大于 23 或分和秒值大于 59,则不合法,将取消本 次设置,清 0 重开头计时。4键盘扫描子程序。 推断是否有键按下, 无键按下则循环等待, 有键按下则求取返回。 5显示子程序。
16、实现显示缓冲区的 6 位 BCD 码的动态扫描方式显示。 首先将 3 字节计时缓冲区中 时、分、和秒压缩 BCD 码拆分为6 字节 BCD 码,由拆字子程序实现。当按下时间 或闹钟设置键后,在 6 位设置完成之前,应显示键入的数据而不显示当前时间, 为此系统设置一个计时显示允许标志位 F0,在时间/闹钟设置期间 F0=1,不调用 拆字子程序。 6定时比较子程序。 实现当前时间与预设的启闹钟时间的比较,假设二者完全一样时,启动蜂鸣器名 叫并置位闹钟标志位。当重按下 ALM 键时,停闹并清 0 闹钟标志。7 其他关心功能子程序。 键盘设置子程序:将键入的 6 位时间值送入键盘设置缓冲区。 拆字程序
17、:将 3 字节计时缓冲区中时、分和秒压缩 BCD 码拆分为 6 字节 BCD 码并刷显示缓冲区。 合字子程序:将键盘设置缓冲区中 6 位 BCD 码合并为 3 位压缩 BCD 码,送入 计时缓冲区或闹钟值存放区,同时检测时间值的合法性。3、2 系统软件流程图主程序开头时钟模式闹钟模式芯片初始化数码管初始化键盘初始化键盘扫描时间设定?键盘扫描闹钟设定?时钟显示页面数码管显示初始值时钟显示页面键盘扫描时分秒选择键盘扫描模式选择键盘扫描时分秒选择时分秒秒表模式时分秒加减加减开头暂停清零设定确认时钟显示页面设定确认完毕3.3 源程序见附录4、设计总结心得体会在本次课程设计制作过程中,收获颇多。首先,自
18、学力量大大提高。由一开头的一无所知到最终设计成功,所需要的学问除了来自课堂,更多的是课外通过上网查询、向教师等多种渠道获得。其次,在制作过程中遇到很多硬件和软件等各方面的问题,屡次修改最终将困难一一解决。通过这次设计不仅丰富了理论学问,更激发了创精神,受益终生。5参考文献【1】单片微机原理及应用【M】.清华大学出版社.2023.【2】黄庆华,张永格.单片机开发技术和实训【M】.【3】电子技术根底模拟局部第四版【M】.高等教育出版社.19962023 重印.【4】全国大学生电子设计竞赛训练教程【M】.电子工业出版社.2023-1.【5】数字电子技术根底【M】高等教育出版社.1998-12.【6】
19、模拟电子技术根底【M】高等教育出版社.2023-12.【7】仪器仪表学报【J】第 33 卷第六期.2023.附录源程序#include #include unsigned char led14=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00,0x76,0x77;/用一维数组定义 0-9、横杠、全灭 H 和 Aunsigned char a8=2,3,10,5,9,10,0,0;/给数码管赋初值unsigned char second=0,minute=59,hour=23;unsigned char minute1=0,h
20、our1=0;unsigned char b8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /位选unsigned char i,k=0;unsigned int temp;unsigned char M,S_flag,beep_num,ZD_flag; sbit K1=P30;sbit K2=P31; sbit K3=P32; sbit BEEP=P33;/延时函数 /void delay_10us(unsigned n)/10 微秒级延时do_nop_;_nop_;_nop_;_nop_;_nop_; while(-n);void delay_ms(u
21、nsigned n)/毫秒级延时do delay_10us(100); while(-n);void initM=0;S_flag=0;/闪耀标志位 TMOD=0x10;/定时器 1 以方式 1 定时TH1=0xfc;TL1=0x18;EA=1;/翻开总中断ET1=1;/允许定时器 1 中断TR1=1;/开启定时器 1 (开头定时计数)void time1 interrupt 3/定时器 1 中断函数TH1=0xfc;/定时 1ms TL1=0x18;temp+;if(temp=1000)/协作定时器定时 1stemp=0; second+;if(second=59)/正常走时时间second
22、=0; if(minute59)minute+;elseminute=0;hour+;hour%=24;/不使小时数越界if(hour%12=0) beep_num=24;/12/24 点鸣笛 12 声else beep_num=hour%12*2;/其它时间的鸣笛声数ZD_flag=1;/整点标志位if(hour1=hour&minute1=minute)/闹钟时间到beep_num=120;/闹 1min ZD_flag=1;if(temp%250=0)/每 250ms S_flag=!S_flag;/闪耀标志位取反if(ZD_flag)/有闹时任务beep_num-;/鸣笛数减 1 if
23、(beep_num)BEEP=!BEEP;/鸣笛位取反1 次响 1 次不响) else BEEP=0; ZD_flag=0;if(k=8)k=0;P1=ak;P2=bk+;/先送代码,再翻开关,防止余晖效应delay_10us(20);/多亮一会儿P2=0xff;/熄灭数码管/显示模块 / void displaya0=(M=1)?(S_flag=1)?ledhour/10:led11):(M=3)?(S_flag=1)?ledhour1/10:led11):(M=4)?ledhour1/10:ledhour/10);/数码管第一位显示a1=(M=1)?(S_flag=1)?ledhour%1
24、0:led11):(M=3)?(S_flag=1)?ledhour1%10:led11):( M=4)?ledhour1%10:ledhour%10);a2=led10;a3=(M=2)?(S_flag=1)?ledminute/10:led11):(M=4)?(S_flag=1)?ledminute1/10:led11):(M=3)?ledminute1/10:ledminute/10);a4=(M=2)?(S_flag=1)?ledminute%10:led11):(M=4)?(S_flag=1)?ledminute1%10:led1 1):(M=3)?ledminute1%10:ledm
25、inute%10);a7=(M=3|M=4)?led13:ledsecond%10;/按键处理函数 / void key_prcif(K1=0)delay_ms(2);/延时去抖 if(K1=0)/按 K1 进展模式切换M+; if(M=5) M=0;while(!K1);/等待按键释放if(M!=0)switch(M)case 1:/模式 1调时if(K2=0)delay_ms(2);/延时去抖if(K2=0)/加键按下hour=0;if(hour 0) hour-;else hour=23;while(!K3); break;case 2:/模式 2调分if(K2=0)delay_ms(2
26、);/延时去抖if(K2=0)/加键按下while(!K2);if(minute0)minute-; else minute=59; break;while(!K3);case 3:/模式 3闹钟调时if(K2=0)delay_ms(2);/延时去抖if(K2=0)/加键按下if(hour10)hour1-; else hour1=23;break;while(!K3);case 4:/模式 4闹钟调分if(K2=0)delay_ms(2);/延时去抖if(K2=0)/加键按下while(!K2);if(K3=0)if(minute10)minute1-; else minute1=59;while(!K3);break;void maininit; while(1)key_prc; display;附录 电路原理图第 22 页 共 22 页