简易数字秒表课程设计1.doc
单片机技术课程设计说明书 题 目 系 、 部: 电气与信息工程系 学生姓名: 胡世平 指导教师: 王韧 职称 副教授 专 业: 自动化 班 级: 自本0801班 完成时间:2010年12月30日星期三摘 要随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,渗透到人们日常生活的方方面面,,掌握必要的电工电子知识已经成为当代大学生特别是理工类大学生必备的素质之一。 本次我们设计的秒表,是以AT89S52为核心,以分频、计数与译码显示模块为主要构成部分的电子秒表的设计方案,充分利用数字电路的计数、译码、显示的优良特性,使整个设计达到了比较满意的效果。基本电路主要有时基产生电路、电源电路、分频电路、计数与译码电路(包括显示电路)、开关按钮电路。所设计的电子秒表达到了设计要求的各项指标,并且在这个基础上进行了功能扩展,系统具有随时启动、停止以及清零功能。这次设计中不但对以前的知识进行巩固,而且学会了更多的新知识,提高思维、强化动手能力,能够更好地适应和走上工作岗位,为以后的就业打下一定的基础。关键词 数字式秒表;单片机;计时ABSTRACTWith the development of electronic technology, electronic technology in various fields of using more and more widely, penetrates into all aspects of People's Daily life, and have the necessary electrical and electronic knowledge has become contemporary college students especially necessary .This we designed stopwatch, is AT89S52 as the core, with separate frequency, counting and decoding display module for main components of electronic stopwatch design scheme, make full use of digital circuit counting, decoding, display excellent characteristics of, make whole design achieved satisfactory effect. The basic circuit main sometimes base produce circuit, count and decoder circuit (including display circuit), switch button circuit. The design of electronic stopwatch meets the design requirements of each index, and on this basis, the function expansion and the system has always start and stop and reset function. This design not only for the previous knowledge for consolidated, and learn to more new knowledge. Key words Digital stopwatch; Computers,; Count time目 录1 设计课题名称任务、功能要求说明及总体方案介绍等等 41.1 设计课题任务 41.2 功能要求说明 41.3 设计课题总体方案介绍 42 硬件系统的设计 52.1 硬件系统各模块功能简要介绍 62.2 电路原理图、PCB图、元器件布局图 62.3 元器件清单 93 软件系统的设计 113.1 设计课题使用单片机资源的情况 113.2 设计课题软件系统各模块功能简要介绍 113.3 设计课题软件系统程序流程框图 133.4 设计课题软件系统程序清单 154 设计结论、仿真结果、误差分析、教学建议等等214.1 设计课题的设计结论及使用说明 214.2 设计课题的仿真结果 214.3 设计课题的误差分析 224.4 设计体会,谈谈本设计的重点、难点及精妙之处224.5 教学建议 22致谢 23参考文献 24附录 251 设计课题名称任务、功能要求说明及总体方案介绍1.1设计任务:设计一个单片机控制的多功能秒表系统。利用单片机的定时器计数器定时计数的原理,结合显示电路,用8个LED数码管以及按键来设计计时器。将软、硬件有机的结合起来,使得系统能够正确的进行加计时。同时,数码管能够正确的显示时间。功能要求说明:该秒表是基于单片机技术设计的8位数字式秒表。它具有计时的功能,该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该数字式秒表具有开始、暂停、连续、清零和停止功能。设计课题总体方案介绍2.1 各模块功能介绍电子秒表主要应用了单片机最小系统中的“数码管电路”、“CPU”、“下载口”、“独立式键盘”、“晶振电路”、“电源”。其中“数码管电路”主要负责显示功能,“CPU”负责对数据处理、采集、发送的功能,“下载口”负责输入软件程序,“独立式键盘”负责人机沟通进行操作的功能,“晶振电路”负责提供外部震荡信号,“电源”提供单片机最小系统的“+5V”电源。2.3总体电路图,布线图以及说明:电路图部分见附录数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。本设计采用两个四位共阳数码管实现。位控线通过八个PNP接在8951P2口,段控线接至P0口线。本系统采用的是独立键盘结构,每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。他软件是采用查询结构,首先逐位查询每根I/O口线的输入状态,如某根I/O口线输入为低电平,则可确认该口线所对应的按键已按下,然后,在转向该键功能处理程序。时钟信号部分单片机本身是一个复杂的同步时序系统,为了保证同步工作方式的思想,单片机必须有时钟信号,以使其系统在时钟信号的控制下按时序协调工作。本设计采用单片机片内时钟电路结合外部晶振、电容产生。图 所示为时钟电路原理图,在at89s52芯片内部有一个高增益方相刚大器,其输入端为芯片引脚XTAL1,输出端魏应交XTAL2。而在内部,XTAL1和XTAL2之间跨接晶体振荡器。时钟电路产生的震荡脉冲为单片机提供时钟脉冲信号利用变压线圈和稳压管以及极性和无极性电容制作一个带有±5V的直流电压源。这个直流电压源的功率能够驱动带有单片机最小系统、简单的数字功放,以及本次我们做的简易三功能电子秒表。复位是单片机的初始化操作,其主要功能是吧PC初始化为0000H,是单片机从0000H单元开始执行程序,病史复位电路采用的是按键复位,他是通过复位端经电阻与VCC电源接通而实现的,它兼具上电复位功能。PROTEL布线图见附录Protues仿真图见附录2.3元器件选择及说明: 名称规格数量变压器(中心轴头)12V输出 20w1六角开关6mm*6mm1电解质电容25v 2200µF2电解质电容25v 470µF4瓷片电容1044LM78121LM79121LM78051LM79051发光二极管4接口插座12散热片4整流桥2W10 2A/1000V1220V电源插头线1AT89S521底座3晶振12MHZ1单排插40脚1三极管PNP型90129蜂鸣器1小按键9下载口座子十芯118b20温度传感器1六脚开关1USB电源线加接口1电阻2001电阻1电阻1K3电阻47024电解电容220uF1瓷片电容33pF2排阻10K2短路帽3杜邦线8p1PCB板子1KA、KB、KC键分别连接P1.0-P1.2,当有键按下时P1.0-P1.2的某一位为低电平,反之,则为高电平;两个八位数码管位控线分别连接P2口的P2.0-P2.7,从左至右。其段控线分别接至P0.7-P0.0段控线,分别接LED的显示段dp,g,f,e,d,c,b,a,采用共阳数码管,当控制位为低电平时,LED相应段点亮。P2.0-P2.7位控线, (LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0),显示缓冲区设定从左至右依次为78H,79H,7AH,7BH,7CH,7DH,7EH,7FH。本系统的软件系统主要可分为主程序、定时计数中断程序、键扫描程序、键功能程序、延时程序、显示子程序几大大模块。*堆栈栈底80H*LED数码管显示器设定P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,aP2.0-P2.7位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)显示缓冲区设定从左至右依次为78H,79H,7AH,7BH,7CH,7DH,7EH,7FH *独立式键盘设定30H为毫秒寄存器31H为秒寄存器32H为分寄存器*键功能程序KEYA (S2键键功能程序)KEYB (S3键键功能程序)KEYC (S4键键功能程序)TC0 (中断服务程序)*常数表格DISBH(系统提示符P.字型代码序号表)DISBI(00-00字符的代码序号)TAB(共阳数码管字型代码表)* 子程序DL(2毫秒延时子程序)DISP(数码管显示子程序)KEY(键扫描子程序);KEYCHULI(P1口数据处理子程序)图3.3 键扫描程序流程框图;项目名称:秒表;设计者:胡世平;设计日期:2010年12月25日;*;堆栈栈底7FH;*;LED数码管显示器设定;P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a;P2.7-P2.0位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);*;独立式键盘设定;8个按键S2至S9分别依次接在P1.0至P1.7口线; ;* ;子程序;DL(1毫秒延时子程序,晶振频率12MHz);KEY(键扫子程序);KEYCHULI(P1口数据处理子程序);*;常数表格;DISBH(共阳数码管字型代码表);TAB(系统提示符P.字型代码序号表);*;中断服务程序;*;键功能程序;*;数据存储器变量及常量单元定义;*;伪指令定义区;* ORG 0000HSTART: LJMP MAIN ORG 000BH LJMP ZHONG ORG 0030H;*;初始化程序 MAIN: MOV SP, #7FH MOV PSW, #00H MOV R0, #20H MOV R7, #96 KAI: MOV R0, #00H INC R0 DJNZ R7, KAI TSF: MOV DPTR, #DISBH MOV R5, #08H MOV R0, #78H DISPTS: CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTS;* JIAN: LCALL DISP LCALL KEYLUO JB 20H.0, KEY00;是S2键,转KEY00执行 LJMP JIAN LCALL DISP;* KEY00: MOV R4, #100 MOV 78H, #00H MOV 79H, #00H MOV 7AH, #12H MOV 7BH, #00H MOV 7CH, #00H MOV 7DH, #12H MOV 7EH, #00H MOV 7FH, #00H SETB EA SETB ET0 MOV TMOD, #01H MOV TH0, #0D8H MOV TL0, #0F0H SETB TR0 ;启动定时 LCALL DISP PP: LCALL DISP LCALL KEYLUO LCALL DISP JNB 20H.0, DUD ;按下暂停键 LCALL DISP LJMP SDF LCALL DISP DUD: JNB 20H.1, PP ;按下直接清零键(暂停) MOV 78H, #00H MOV 79H, #00H MOV 7AH, #12H MOV 7BH, #00H MOV 7CH, #00H MOV 7DH, #12H MOV 7EH, #00H MOV 7FH, #00H PP22: LCALL DISP LCALL KEYLUO JNB 20H.0, PP22;清零键(暂停)的启动键 LCALL DISP LJMP KEY00 LCALL DISP SDF: CLR TR0 ;关闭定时 LCALL DISP P8: LCALL DISP LCALL KEYLUO LCALL DISP JNB 20H.0, DU ;启动键 LCALL DISP LJMP PP8 LCALL DISP DU: JNB 20H.1, P8 ;暂停时的清零键 LCALL DISP MOV 78H, #00H MOV 79H, #00H MOV 7AH, #12H MOV 7BH, #00H MOV 7CH, #00H MOV 7DH, #12H MOV 7EH, #00H MOV 7FH, #00HPP11: LCALL DISP LCALL KEYLUO LCALL DISP JNB 20H.0, PP11 m ;清零后再次启动键 LCALL DISP LJMP KEY00 LCALL DISP PP8: SETB TR0 LCALL DISP LJMP PP ;*;中断服务程序 ZHONG: MOV TH0, #0D8H MOV TL0, #0F0H MOV R0, #79H LCALL DAAD1 DJNZ R4, OUT MOV R4, #100 MOV R0, #7CH LCALL DAAD1 CJNE A, #6, OUT MOV 7CH, #00H MOV R0, #7FH LCALL DAAD1 CJNE A, #6, OUT MOV 7FH, #00H OUT: RETI;*;加1子程序 DAAD1: MOV A, R0 DEC R0 SWAP A ORL A, R0 ADD A, #01H DA A MOV R2, A ANL A, #0FH MOV R0, A MOV A, R2 INC R0 ANL A, #0F0H SWAP A MOV R0, A RET;* ;数码管显示子程序DISP: PUSH DPH PUSH DPL PUSH ACC PUSH PSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲存储单元首地址 MOV R2, #0FEH ;从右至左显示 DISP1: MOV A, R1 MOV DPTR, #TAB MOVC A, A+DPTR MOV P0, A;送段控 MOV P2, R2 ;送位控 LCALL DL ;延时2毫秒 MOV A, R2 JNB ACC.7, DISP2 RL A INC R1 MOV R2, A LJMP DISP1DISP2: POP PSW ;恢复当前寄存器组的组号 POP ACC POP DPL POP DPH RET;*;延时1毫秒子程序DL: PUSH PSW SETB RS1 SETB RS0 MOV R7, #02H DL1: MOV R6, #0FFH DL2: DJNZ R6, DL2 DJNZ R7, DL1 POP PSW RET;*;键扫描子程序 KEYLUO: LCALL KEY;调P1口数据处理子程序 JZ EXT;没有键按下,转返回 LCALL DISP;调显示子程序去抖动 LCALL DISP LCALL KEY;调P1口数据处理子程序 JZ EXT;没有键按下,转返回 MOV B, 20H;保存取反后的键值 KEY0: LCALL KEY;调P1口数据处理子程序 JZ KEY1;键释放,转恢复键值 LCALL DISP;调显示子程序延时 LCALL DISP LJMP KEY0;等待释放 KEY1: MOV 20H, B;键值送20H保存 EXT: RET;子程序返回;* KEY: MOV P1, #0FFH;先向P1口写1 MOV A, P1;读P1口数据 CPL A;P1口数据取反 MOV 20H, A;保存取反后的键值 RET;* DISBH: DB 10H, 10H,10H,10H,10H,10H,10H,11H TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH;* END4.设计结论、仿真结果、误差分析、教学建议等等 根据仿真结果显示,该秒表上电或按键复位后能自动显示系统提示符“P.”, 进入秒表准备状态;第一次按KA电子钟启动/暂停,秒表从0秒0毫秒开始运行,进入秒表运行状态;再次按KA启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。图4.1 Protues仿真图功能太过单调,只能实现时分秒的显示,设计比较简单。电路图的设计过于单调,用的器件太少,实现调节时间的按钮太少,不能很好的实现时间的调节。在测试过程中,六位数码显示管只显示五位数字,有一位数字不亮,通过多次的修改程序并在PROTEUS软件环境中进行仿真,最终解决了这个问题,同时也透露出本人在单片机电路设计和程序设计方面的不足。4.4收获体会、存在问题认真审题,看懂题目的要求。选择适当的课题,不益太简单或者太难。做到既能把课题完成又能锻炼自己的能力。根据课题要求,复习相关的知识,查询相关的资料。根据实验条件,找到适合的方案,找到需要的元器件及工具,准备实验。根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。 在编写倒计时部分时当倒计时完毕最后一位数码管没有显示,经过多次尝试终于解决问题。这次的单片机课程设计重点是理论与实际的相结合。不再只读书了。该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。这次课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个课题开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。最后,很感激王老师给了我们这次动手实践的机会,让我们学生有了一个共同学习,增长见识,开拓视野的机会。也感谢王老师们对我们无私忘我的指导,我会以这次课程设计作为对自己的激励,继续学习。致谢首先感谢我们的单片机基础课程及课程设计指导老师王韧老师教授,王教授轻松幽默的授课方式以及严谨的学术严谨细致、一丝不苟的作风深深的影响了我们。他循循善诱的教导和不拘一格的思路给予我无尽的启迪。其次我要感谢在我课程设计过程中帮助过我的所有同学,感谢他们的耐心指导与帮助,教会了我很多课本上所学不到的知识最后我要感谢一直陪同我的同寝室的兄弟们,谢谢他们平时对我无微不至的照顾和关心。我很高兴能生活在一个互助友爱和充满活力的集体中,从他们的身上我学到了很多,同时他们给我的大学生活留下了许多美好的回忆。参考文献Li Guangdi,Zhu Yuexiu. Leng Zuqi.MCU based.Beijing: Beijing university of aeronautics and astronautics press,2007.6 (in Chinese)2 阎石.数字电子技术基础(第四版).北京:高等教育出版社,1998.7. Yan Shi. Digital Electronic Technology Basis(4rd edition) .Beijing:Higher Education Press, 1998.7.3 邱光源.电路(第五版).北京:高等教育出版社,2006.5. Qiu Guangyuan. Electrocircuit(5rd edition).Beijing:Higher Education Press, 2006.5.附 录