《单片机课程设计(论文多功能数字钟的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计(论文多功能数字钟的设计.doc(18页珍藏版)》请在三一办公上搜索。
1、摘要电子钟在日常生活中最常见,应用也最广泛。作为一种定时工具被广泛的使用在生产生活的各方面。人类最初依靠太阳的角度来进行定时,所以受天气的影响比较大,为了克服依靠自然现象定时的缺点人们发明的机器钟表,电子钟表一系列的定时工具。而电子钟表具有价格便宜,质量轻,定时误差小等优点,被广泛的应用在生产,生活的各个方面。由于电子钟的能提供精确定时又被广泛的运用在测量之中。此电子钟采用单片机进行设计,8段数码通过单片机进行刷新显示。其设计的产品除了单片机之外没有用到其他集成块,使其成本可以大大降低,而其便于维修。成品可以被广泛的用于公共场所,匾额装饰,以及教学等方面。本文主要就是设计一款数字钟,以AT89
2、C51单片机为核心,配备LED显示模块、键盘输入模块、等功能模块。数字钟采用24小时制方式显示时间,定时信息以及年月日显示等功能。文章的核心主要从硬件设计和软件编程两个大的方面。目录摘要11 设计要求及方案确定31.1 设计要求31.2方案确定32 硬件电路设计及描述321 确定元器件的型号及参数32.1.1 单片机的选择32.1.2 AT89C51单片机的介绍52.1.3 LED数码管显示模块72.1.4 键盘输入模块82.1.5 闹铃模块.82.1.6 电源电路82.1.7 蜂鸣器的介绍92.2 硬件电路图103 软件设计103.1 程序结构设计103.1.1 程序结构103.1.2 主要
3、程序模块清单113.2 程序144 参考文献17结束语181 设计要求及方案确定1.1 设计要求利用单片机设计制作具有下列功能的数字钟: 自动计时,由6位LED显示器显示时、分和秒 具备调整功能,可以直接由09数字键设置当前时间; 具备定时闹钟功能。1.2方案确定数字钟电路由单片机、键盘输入、时钟显示模块及闹铃模块组成。 单片机选用AT89C51即可满足要求。 键盘及显示模块采用8155芯片扩展如原理图,键盘输入电路采用43键盘, 包括09共10个数字键(键号为00H09H)、C/R键(时间设定/启动计时键,键号为0AH)和ALM键(闹钟设置/启闹/停闹,键号为0BH)。LED数码管显示电路:
4、采用共阴极数码管实现时钟显示,6位LED从左到右依次显示时、分和秒,采用24小时计时。2 硬件电路设计及描述21 确定元器件的型号及参数2.1.1 单片机的选择 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容
5、性方向发展。其发展趋势不外乎以下几个方面:1、多功能 单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、高速I/O口及计数器的捕获/比较逻辑等。 有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器、SMART CARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。2、高效率和高性能 为了提高执行速度和执行效率,单片机开始使用RISC、
6、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。 由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发 难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3、低电压和低功耗 单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。这些特性
7、使得单片机系统可以在更小电源的支持下工作更长的时间。4、低价格 单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。下面大致介绍一下单片机的主要应用领域和特点。(1)家用电器领域 用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。(2)办公自动化领域 单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。(3)商业应用领域 商业应用系统部分与家用和办公应用系统相似,但更加注重
8、设备的稳定性、可靠性和安全性。商用系统中广泛使用的电子计量仪器、收款机、条形码阅读器、安全监测系统、空气调节系统和冷冻保鲜系统等,都采用了单片机构成的专用系统。与通用计算机相比,这些系统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。(4)工业自动化在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都是以单片机为核心的单片机和多机系统。(5)智能仪表与集成智能传感器 目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。将单片机和传感器相结合,可以构成新一代的智能传感器。它将传感器变换后的物理量作进一步
9、的变化和处理,使其成为数字信号,可以远距离传输并与计算机接口。(6)现代交通与航空航天领域通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高,因此采用单片机系统更加重要。 目前,我国生产很多型号的单片机,在此,我们采用型号为AT89C51的单片机AT89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结
10、合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。2.1.2 AT89C51单片机的介绍AT89C51是MCS-51系列单片机的典型产品之一。其内部具有的硬件资源如图所示。AT89C51单片机的P口特点:P0口:是一个8位漏极开路输出型双向I/O端口。作为输出端口时,每位能以吸收电流的方式驱动8 个TTL输入,对端口写1时,又可作高阻抗输入端用。在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,在访问期间将激活内部的上拉电阻。 P1口:P1口是一个带有内部上拉电阻的8位双向I/O端口。P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写
11、1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。P2口:P2口是一个带有内部上拉电阻的8位双向I/O端口。P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。在访问外部程序存储器时和16位外部地址的外部数据存储器(如执行 MOVX DPTR)时,P2口送出高8位地址。在访问8位地址的外部数据存储器(如执行 MOVX RI)时,P
12、2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。 P3口:P3口是一个带有内部上拉电阻的8位双向I/O端口。P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。 内部单元: 1、算术逻辑部件ALU:用以完成+、-、*、/ 的算术运算及布尔代数的逻辑运算,并通过运算结果影响程序状态寄存器PSW的某些位,从而为判断、转移、十进制修正和出错等提供依据。 2、累加器A:在算术逻辑运算中存放一个
13、操作数或结果,在与外部存储器和I/O接口打交道时,进行数据传送都要经过A来完成。 3、寄存器B:在 *、/ 运算中要使用寄存器B 。乘法时,B用来存放乘数以及积的高字节;除法时,B用来存放除数及余数。不作乘除时,B可作通用寄存器使用。 4、程序状态标志寄存器PSW:用来存放当前指令执行后操作结果的某些特征,以便为下一条指令的执行提供依据。Cy:进位标志。有进位或借位,则Cy1,否则Cy0 ;在布尔运算时,Cy(简称C)作为布尔处理器。AC:辅助进位标志位。F0:用户标志位:用户可用软件对F0置位“1”或清“0”,以决定程序的流向。OV:溢出标志位:当运算结果溢出时,OV为“1”,否则为“0”。
14、D.1:未定义。P: 奇偶校验位:当累加器A中的“1”的个数为奇数时,P置“1”,否则P置“0”。RS1、RS0:工作寄存区选择位:指令的执行提供依据。AT89C2051单片机的P口特点 P1口:P1口是一个8位双向I/O端口,其中P1.2P1.7引脚带有内部上拉电阻,P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。P1口输出缓冲器可吸收20mA电流,并能直接驱动LED显示。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个
15、电流(Iil)。 P3口:P3.0P3.5、P3.7是带有内部上拉电阻的7个双向I/O端口。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O口引脚而只读。P3口输出缓冲器可吸收20mA电流。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。 AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能
16、,直到下一个硬件复位为止。2.1.3 LED数码管显示模块LED数码管显示电路:主芯片使用AT89C51或STC89C52单片机,晶振使用12MHz或11.0592MHz,使用3个2位一体共阴数码管组成6位显示时、分、秒,或者使用4位一体时钟专用数码管。 通过S1、S2、S3、和S4这4个按键进行调节,S1调时,S2调分,S3切换时钟与闹钟,S4是复位。 显示“时间”的时候通过S1调“时”,S2调“分”,通过S3切换到“闹钟”的时候,同样可以通过S1调节闹钟的“时”,S2调节闹钟的“分”,从而实现“时钟”与“闹钟”两个时间任意调节。 闹钟时间到蜂鸣器会响铃一分钟,响铃的时候若要停止响铃,只要按
17、下S3切换到闹钟显示既可,要再恢复响铃就再按一下S3切换回时钟显示(一分钟响铃时间内)。 设置完闹钟忘记返回到时间显示,秒钟走到一分钟的时候会自动切换回时间显示。 “时”与“分”之间的两个LED长亮(也可设置成闪烁),“分”与“秒”之间的两个LED每秒闪烁一次,为了方便区分时钟与闹钟的显示,当切换到闹钟设置的时候“分”与“秒”之间的LED停止闪烁并熄灭,而且“秒”也不显示。2.1.4 键盘输入模块键盘控制电路:键盘部分采用普通的按键进行设计,使用软件延时消除开关抖动2.1.5 闹铃模块.闹铃电路:闹铃电路通过p1.7口输出1HZ脉冲使蜂鸣器发出间隔为一秒的蜂鸣声.2.1.6 电源电路2.1.7
18、 蜂鸣器的介绍 1、蜂鸣器的认识蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 1蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。2蜂鸣器的分类 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。3蜂鸣器的电路图形符号 蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。2、蜂鸣器的结构原理1.压电式蜂鸣器 压电式蜂鸣器主要由多谐振
19、荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。有源蜂鸣器直接接上额定电源(
20、新的蜂鸣器在标签上都有注明)就可连续发声2.2 硬件电路图数字钟硬件电路图3 软件设计3.1 程序结构设计3.1.1 程序结构(1)主程序。实现初始化与键盘监控,如图1所示。(2)定时器T0中断服务程序。时钟电路的设计功能是利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。利用定时器T0中断服务程序实现计时功能,同时刷新计时缓冲区。定时器T0每隔100ms益处中断一次(设系统使用6MHZ晶振,定时T0工作方式1)的定时初值为3CBOH(即THO=3CH,TL0=0B0H),每循环中断10次则延时时间为1s,重复60次为1min,分计时60次为1小时,小时计时24次则时
21、间重新回到00:00:00。(3)时间设置与闹钟设置子程序。实现当前时间及定时启闹钟时间的键盘输入设置。流程图如图2所示。其功能是用键盘设置子程序将键入的6位时间值送入键盘设置缓冲区,用合字子程序将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区。若键盘输入的小时值大于23或分和秒值大于59,则不合法,将取消本次设置,清0重新开始计时。(4)键盘扫描子程序。判断是否有键按下,无键按下则循环等待,有键按下则求取返回。流程图如图3 。(5)显示子程序。实现显示缓冲区的6位BCD码的动态扫描方式显示。首先将3字节计时缓冲区中时、分、和秒压缩BCD码拆分为6字节BCD
22、码,由拆字子程序实现。当按下时间或闹钟设置键后,在6位设置完成之前,应显示键入的数据而不显示当前时间,为此系统设置一个计时显示允许标志位F0,在时间/闹钟设置期间F0=1,不调用拆字子程序。(6)定时比较子程序。 实现当前时间与预设的启闹钟时间的比较,若二者完全相同时,启动蜂鸣器名叫并置位闹钟标志位。当重新按下ALM键时,停闹并清0闹钟标志。(7)其他辅助功能子程序。键盘设置子程序:将键入的6位时间值送入键盘设置缓冲区。拆字程序:将3字节计时缓冲区中时、分和秒压缩BCD码拆分为6字节BCD码并刷新显示缓冲区。 合字子程序:将键盘设置缓冲区中6位BCD码合并为3位压缩BCD码,送入 计时缓冲区或
23、闹钟值寄存区,同时检测时间值的合法性。3.1.2 主要程序模块清单资源分配:8155的A口作为6位LED显示的位选口,B口作为段选口,C口的低3位为键盘输入口,对应02行,A口同时用做键盘的列扫描口。8155的地址分配如下控制寄存器:8000H,定义为PORTA口:8001H,定义为PORTAB口:8002H,定义为PORTBC口:8003H,定义为PORTC片内RAM及标志位的分配与定义如图4。地址功能名称初始化值30H35H显示缓冲区,时、分、秒DISPDISP500H2CH3FH计时缓冲区,时、分、秒、100msHOUR,MIN,SEC,MSEC00H40H42H闹钟值寄存区,时、分、秒
24、AHOUR,AMIN,ASECFFH50H7FH堆栈区PSW.5计时显示允许位(1禁止,0允许)F00PSW.1闹钟标志位(1正在闹铃,0未闹铃)F10开始保持堆栈区8115、定时器T0数据缓冲区闹钟标志位初始化调用延时子程序调用键扫描子程序是C/R键吗?是ALM键吗?闹钟标志位=1吗?停闹清0闹钟标志地址指针指向计时缓冲区调用时间设置/闹钟定时程序地址指针指向闹钟值寄存区图1 主程序流程图保护现场调用键盘设置子程序调用合字子程序恢复现场返回图2 时间设置/闹钟定时流程图扫描键盘有键按下吗?调用显示子程序有键按下吗?求取键号返回调用显示程序调用定时比较程序调用显示程序调用定时比较程序NN图3键
25、盘扫描程序图3.2 程序主程序: ORG 000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0030HMAIN: MOV SP, #50H ;设置堆栈区 MOVX DPTR,#PORT ;8155初始化 MOV A, #03H MOVX DPTR, A CLR F1 ;清0闹钟标志位 CLR F0 ;允许计时显示MOV AHOUR, #0FFH ;闹钟值寄存区置初值MOV AMIN, #0FFHMOV ASEC, #0FFHMOV R7, #10H ;显示缓冲区、计时缓冲区清0MOV R0,#DISP0CLR ALOOP: MOV R0, A INC R0 DJN
26、Z R7, LOOP MOV TMOD, #01H ;定时器T0初始化MOV TL0, #0B0HMOV TH0, #3CHSETB TR0 ;启动定时器SETB EA ;开中断SETB ET0BEGIN: ACALL ALARM ;调用定时比较 ACALL KEYSCAN ;调用键盘扫描 CJNE A, #0AH, NEXT1 ;是C/R键否? CLR TR0 ;暂时停止计时 MOV R1, #HOUR ;地址指针指向计时缓冲区首地址 AJMP MODNEXT: CJNE A, #0BH, BEGIN ;是ALM键否?JB F1, NEXT2 ;闹钟正在闹铃否?MOV R1, #AHOUR
27、;地址指针指向闹钟值寄存区首地址MOD: SETB F0 ;禁止显示计时时间 ACALL MODIFY ;调用时间设置/闹钟定时程序SETB TR0 ;重新开始计时CLR F0 ;恢复显示计时时间AJMP BEGINNEXT2: SETB P1.0 ;闹钟正在闹鸣,停闹CLR F1AJMP BEGIN ;清0闹铃标志定时器T0中断服务子程序:CLOCK: PUSH PSW PUSH ACC ;保护现场MOV TL0, #0B7HMOV TH0, #3CH ;重装初值,时间校正INC MSECMOV A, MSECCJNE A, #0AH, DONEMOV MSEC, #00HMOV A, SE
28、CADD A, #01HDA A ;二十进制转换MOV SEC,A CJNE A, #60H, DONEMOV SEC, #00HMOV A, MINADD A,#01HDA AMOV MIN ACJNE A, #60H, DONEMOV MIN, #00HMOV A, HOURADD A, #01HDA AMOV HOUR, ACJNE A, #24H, DONEMOV HOUR, #00HDONE: POOP ACCPOP PSWRET键盘设置子程序:KEYIN: PUSH PSW ;保护现场 PUSH ACCSETB RS1MOV RO, #DISP0 ;R0指向显示缓冲区首地址MOV
29、R7, #06H ;设置键盘输入次数L1: CLR RS1ACALL KEYSCAN ;调用键盘扫描程序取下键号SETB RS1CJNE A, #0AH, 12 ;键入数合法性检测(是否大于9)L2: JNC L1 ;大于9,重新键入 MOV R0, A ;键号送显示缓冲区INC R0DJNZ 7,L1 ;6位时间输入完否?未完继续CLR RS1 ;恢复现场POP ACCPOP PSWRET定时比较模块:ALARM: MOV A, ASECCJNE A, SEC, BACK ;秒单元相同则继续比较,否则返回MOV A, AMIN CJNE A, MIN, BACK ;分单元相同则继续比较,否则
30、返回MOV A, HOURCJNE A,HOUR, BACK ,小时单元相同定时时间到CLR P1.0 ;启动闹鸣叫SETB F1 ;置位闹钟标志BACK: RET4 参考文献单片机原理及应用 姜志海 电子工业出版社电子技术基础试验 陈大钦 高等教育出版社电路基础 许熙文 高等教育出版 单片机应用技术 北京理工大学出版社 主编 倪志连单片机原理与应用系统设计 电子工业出版社 主编 张琦51系列单片机高级实例开发指南李军 北京航空航天大学出版社结束语我在这一次数字电子钟的设计过程中,很是受益匪浅。通过对自己在大学三年时间里所学的知识的回顾,并发挥对所学知识的理解和思考及书面表达能力,自己亲手设计
31、,最终完成目标了。以前上课都是上一些最基本的东西,而现在却可以将以前学的东西作出有实际价值的东西。在这个过程中,我的确学得到很多在书本上学不到的东西,如:如何利用现有的元件组装得到设计要求,如何找到错误的原因,如何利用计算机来画图等等。但也遇到了不少的挫折,有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是芯片的管脚接错了,有时更是忘接电源了。在学习中的小问题在课堂上不可能犯,在动手的过程中却很有可能犯。特别是在接电路时,一不小心就会犯错,而且很不容易检查出来。但现在回过头来看,还是挺有成就感的。 这为自己今后进一步深化学习,积累了一定宝贵的经验。把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个课程设计十分有意义 ,我获得宝贵经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。自己今后将会更加的把理论知识和实际应用结合起来,提高自己的能力。18