任务书——电脑时钟(带定时启闹功能)一、课程设计题目:电脑时钟的设计与制作二、课程设计要求:要求设计制作的电脑时钟具有以下功能:1.自动计时,由6位LED显示器显示时、分和秒;2.具备校准功能,可以直接由0-9数字键设置当前时间;3.具备定时启闹功能。
三、设计任务概述:通过设计一个电脑时钟,掌握Protel 设计单片机应用系统硬件线路图的方法,掌握使用Dais集成开发环境开发单片机应用系统控制程序的基本步骤和方法。
任务涉及的知识面包括MCS-51汇编程序语言、MCS-51 单片机I/O 应用、中断与定时器应用、人机接口应用技术等。
四、工作计划及安排:①布置任务、分析任务、学习汇编语言、单片机的功能程序设计(3 天)②方案设计、使用Protel 设计和绘制电脑时钟的硬件原理图(2 天)③电脑时钟控制程序设计和调试(4 天)④撰写实习报告(1 天)五、考核及成绩评定方式:设计结果占40 %;实习报告占40%;平时抽查(含半小时抽查):20%;课程程设计的成绩可为优秀、良好、中等、及格、不及格五个等级;考勤:迟到扣5 分/次,旷课扣10 分/次设计说明书目录0、前言单片机的应用介绍1、课程设计的目的和要求1.1课程设计的目的1.2课程设计的基本要求2、总体设计2.1、总体方案2.1.1、计时方案2.1.2、键盘/显示方案2.2、硬件总体设计2.2.1、系统组成方案2.2.2、扩展单元编址2.2.3、键盘、显示功能的定义2.3、软件总体设计2.3.1、存储单元的分配、标志位的定义2.3.2、主程序框图及清单(带有注释)3、硬件设计本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等。
4、软件设计本系统的主要子程序、中断服务程序的框图及程序清单(带有注释)5、总结课程设计的收获、体会以及对本教学环节的意见和建议6、参考文献7、系统原理图A3图纸绘制摘要:用8051单片机CPU及接口电路设计电压检测报警系统并实现。
包括企划,设计,运行.调试等过程。
用到8051,8255两种芯片。
前言目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
由于单片机有许多优点,因此其应用领域之广,几乎到了无孔不入的地步。
单片机应用的主要领域有:1)智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统的电子线路控制,升级换代,提高档次。
如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等。
2)办公自动化设备:现代办公室使用的大量通信和办公设备多数嵌入了单片机。
如打印机、复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。
3)商业营销设备:在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制。
4)工业自动化控制:工业自动化控制是最早采用单片机控制的领域之一。
如各种测控系统、过程控制、机电一体化、PLC等。
在化工、建筑、冶金等各种工业领域都要用到单片机控制。
5)智能化仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。
如数据处理和存储、故障诊断、联网集控等。
6)智能化通信产品:最突出的是手机,当然手机内的芯片属专用型单片机。
7)汽车电子产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机。
8)航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。
单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。
更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。
以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。
以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。
这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。
随着单片机应用的推广,微控制技术将不断发展完善。
1. 课程设计的目的和要求1.1 课程设计的目的通过课程设计让我们把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发我们的学习的热情。
用8051单片机CPU及接口电路设计并实现显示时间的电脑时钟。
1.2 课程设计的基本要求1.自动计时,由6位LED显示器显示时、分和秒;2.具备校准功能,可以直接由0-9数字键设置当前时间;3.具备定时启闹功能。
2.总体设计2.1、总体方案2.1.1、计时方案利用MCS-51单片机内部的定时器/计数器进行中短定时,配合软件延时实现时,分,秒的计时。
2.1.2、键盘/显示方案采用动态显示模型,如图1所示。
图-1动态显示模型2.2、硬件总体设计2.2.1、系统组成方案电路的核心是8051单片机,系统配备6位LED显示和4X3键盘,采用8255做为键盘/显示接口电路,利用8255的A口作为6位LED显示的选口,B口作为段选口,C口的低3位为键盘输入口,对应0-2 行,A口同时用作键盘的列扫描口。
由于采用共阴极数码管,A口输出低电平选中相应的位,而B口输出高电平点亮相应的段,P1.0接蜂鸣器,低电平驱动蜂鸣器鸣叫。
2.2.2、扩展单元编址8255的地址分配如下:控制寄存器:8000H,定义为PORT ;A口:8001H,定义为PORTA;B口:8002H,定义为PORTB;C口:8003H,定义为PORTC;2.2.3、键盘、显示功能的定义时钟显示: 6位LED从左到右依次显示时,分,秒,采用24h计时.键盘功能: 0-9数字键(健号为00H-09H),C/R键(时间设置/启动计时键,键号为0AH)和ALM键(闹钟设置/启闹/停闹键,键号位0BH).)(1)时间显示上电后系统自动进入时钟显示,从00:00:00开始计时,此时可以设置当前时间。
(2)时间调整按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间。
按下0-9数字键可以顺序设置时,分,秒,并在相应的LED上显示设置值,设置完毕后系统将从设定后的时间开始计时显示。
(3)闹钟设置按下ALM键,系统继续计时,显示00:00:00,进入闹钟设定状态,等待键入启闹时间。
按下0-9数字键可以顺序进行相应的时间设置,并在相应的LED上显示设置值,设置完毕后系统启动定时启闹功能,并恢复时间显示。
定时时间到,蜂鸣器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。
2.3、软件总体设计软件设计分为下面功能模块。
(1)主程序初始化与键盘键控。
(2)计时定时器0中断服务子程序,完成刷新计时缓冲区功能。
(3)时间设置与闹钟设置由键盘输入设置当前时间与定时启闹时间。
(4)显示完成6位动态显示。
(5)键盘扫描判断是否有键按下,若有则求取键号。
定时比较判断启闹时间到否,如到则启动蜂鸣器鸣叫。
(6)其他辅助功能子程序。
主程序模块MAIN,流程图如图-3示。
计时程序模块CLOCK,流程图如图-4示。
定时器0每隔100ms溢出中断一次,则循环中断10次延时时间为1s,重复60次为1min,分计时60次为1h,小时计时24次则时间重新回到00:00:00。
设系统使用6MHz晶振,定时器0工作在方式1的定时器初值为3CB0H,即TH0=3CH,TL0=OB0H。
时间设置程序和闹钟定时程序模块MODIFY,流程图如-5所示。
将键盘输入的6位时间值合并为3位压缩BCD码(时,分,秒),送入计时缓冲区和闹钟值寄存区,做为当前计时起始时间或闹钟定时时间,模块入口微计时缓冲区或闹钟值寄存区的首地址。
如图-6示,键盘设置子程序KEYIN的功能是将键入的6位时间值送入键盘设置缓冲区,用合字子程序COMB将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区。
若键盘输入的小时值大于23,分和秒值大于59,则不合法,将取消本次设置,清零重新开始计时。
键盘扫描程序模块YSCAN,流程图如-7示。
判断是否有键按下,无键按下则循环等待,有键按下则求取键号后返回。
图-3主程序流程图图-4 计时流程图图-5时间设置程序和闹钟定时流程图图-7键盘扫描程序流程图图-6键盘设置子程序流程图图-9定时比较程序流程图显示程序模块DISPLAY,流程图如-8示。
将显示缓冲区的6位BCD码用动态扫描方式显示。
首先将3B计时缓冲区中时,分,和秒压缩BCD码拆分为6BBCD码,由拆字子程序SEPA来实现。
当按下时间或闹钟设置键后,在6位设置完成之前,应显示键入的数据而不显示当前时间。
为此系统设置一个计时显示允许标志位F0,在时间/脑钟设置期间F0=1,不调用拆字程序SEPA。
图-8显示程序流程图定时比较程序模块ALARM,流程图图-9示。
将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的值)比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位,重新按下ALM键停闹,并清零脑钟标志。
拆字程序的功能是将3B计时缓冲区中时,分和秒压缩BCD码拆分为6BBCD码并刷新显示缓冲区;合字程序的功能是将键盘设置缓冲区中6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区,同时检测时间值的合法性。
2.3.1、存储单元的分配、标志位的定义定时器0按照方式1工作,片内RAM及标志位的分配与定义见图2所示2.3.2、主程序框图及清单(带有注释)************************主程序MAIN************************ ORG 0000HAJMP MAINORG 000BHAJMP CLOCKORG 0030HPORT EQU 8000HPORTA EQU 8001HPORTB EQU 8002HPORTC EQU 8003HDISP0 EQU 30HDISP1 EQU 31HDISP2 EQU 32HDISP3 EQU 33HDISP4 EQU 34HDISP5 EQU 35HHOUR EQU 3CHMIN EQU 3DHSEC EQU 3EHMSEC EQU 3FHAHOUR EQU 40HAMIN EQU 41HASEC EQU 42HF1 BIT PSW.1MAIN: MOV SP, #50H ;设置堆栈区MOVX DPTR, #PORTMOV A, #03HMOVX @DPTR,A ;8155初始话CLR F1 ;清零闹钟标志位CLR F0 ;允许计时显示MOV AHOUR, #0FFHMOV AMIN, #0FFHMOV ASEC, #0FFHMOV R7, #10HMOV R0, #DISP0CLR ALOOP: MOV @R0, AINC R0DJNZ R7, LOOP ;设置初值MOV TMOD, #01HMOV TL0, #0B0HMOV TH0, #3CH ;定时器0初始化SETB TR0 ;启动定时器SETB EASETB ET0 ;开中断BRGIN: ACALL ALARM ;调用定时比较AACALL KEYSCAN ;调用键盘扫描CJNE A, #0AH, NEXT1 ;是CLR/RST键否CLR TR0 ;是则暂时停止计时MOV R1, #HOUR ;地址指针向计时缓冲区首地址AJMP MODNEXT1: CJNE A, #0BH ,BEGIN ;是ALARM键否JB F1, NEXT2 ;闹钟正在闹响否MOV R1, #AHOUR ;地址指针指向闹钟值寄存区首地址MOD: SETB F0 ;置位时间设置/闹钟定时标志,禁止显示计时时间 ACALL MODIFY ;调用时间设置/闹钟定时程序SETB TR0 ;重新开始计时CLR F0 ;清零时间设置/闹钟定时标志,恢复显示计时时间 AJMP BEGINNEXT2: SETB P1.0 ;闹钟正在闹响,停止CLR F1 ;清零闹钟标志AJMP BEGIN************************时间设置/闹钟定时模块MODIFY****************MODIFY : ACALL KEYIN ;调用键盘设置子程序ACALL COMB ;调用合字子程序RET3. 硬件设计本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等。