1、课 程 设 计 说 明 书课程名称: 单片机技术 设计题目: 倒计时数字秒表设计 院 系: 学生姓名: 张三 学 号: * 专业班级: * 指导老师: 李四 年 月 日课 程 设 计 任 务 书设计题目倒计时计数秒表设计学生姓名所在院系电子信息和电气工程学院专业、年级、班设计要求:一、设计一个可倒计时数字秒表。二、技术参数和要求 1、含有电源开关及指示灯,有复位按键; 2、p2.0-p2.3经过74LS47接2位数码管,p2.4和p2.5分别控制数码管显示个位和十位,显示0-99秒时间; 3、p3.2接按键1,用于统计时间值; 4、P3.3接按键2,用于显示统计时间值; 5、上电时,显示59并
2、倒计时,按键1用于统计目前值和复位59,按键2用于显示统计值。学生应完成工作:1、查阅资料,确定实施方案;2、学会识别多种元器件及掌握它们工作原理;3、熟练画出设计所需原理图和编写出所需汇编语言程序;4、学会用Protues仿真及调试自己单片机课程设计;5、掌握自己动手完成板子焊接及检错维修能力;6、学会编写基础课程设计汇报。参考文件阅读:1李广弟.单片机基础M 北京:航空航天大学出版社 1月2迟荣强.单片机原理及接口技术M 北京:高等教育出版社 9月3张毅刚.单片机原理及应用M 北京:高等教育出版社 5月4阎胜利.Protel DXP电路设计M 北京:电子工业出版社 7月工作计划:5月9日:
3、查阅资料; 5月10日:硬件设计; 5月11日:软件设计;5月16日:领元器件; 5月175月18日烧程序; 5月19日:焊接电路板;5月205月22日调试任务下达日期: 年5月 7 日任务完成日期: 年5月 18 日指导老师(署名): 学生(署名): 倒计时秒表摘 要:此次课程设计以AT89S52单片机为关键设计一个倒计时数字秒表,计数初值为59并开始每秒自动减1,当按键1按下时统计目前时间值,当按键2按下时显示目前统计值,显示过以后再次按下按键1时秒表复位为59。本设计硬件部分包含电源电路、复位电路、按键电路、振荡电路、数码管显示电路五部分电路,软件程序部分有定时中止程序、外部中止程序、显
4、示子程序和延时子程序等。软件Proteus画出原理图并进行仿真,依据仿真成功原理图接线,在万能版上把个个器件焊接好从而实现预期功效。关键词:倒计时 AT89S52 74LS47 数码管目 录1.设计背景51.1、设计课题提出51.2、设计作用及意义52.设计方案62.1、可行方案选择62.2、可行方案比较63.方案实施7 3.1、硬件电路实施7 3.2、软件程序实施114.结果和结论13 4.1、Proteus仿真运行结果13 4.2、结论145.收获和致谢146.参考文件147.附件15 7.1、附件一(整体电路图)15 7.1、附件二(元件清单图)16 7.1、附件三(程序)17 7.1、
5、附件四(运行实物图)221. 设计背景1.1设计课题提出计时器日常生活中随地可见,我们手上电子表,手机上时间显示等,这些利用数字电路实现装置,和机械时钟相比含有更高正确性和直观性,且无机械装置,含有更长使用寿命。其中关键组成部分就是计数器模块,是单片机中常见模块,以计时器为基础还能够设计更多对日常生活亲密相关设备,诸如定时报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、甚至多种定时电器自动启用等,全部是以计时器为基础。为了愈加好学习定时器模块,掌握基础计数器程序设计,实现一个功效基础步骤,提升动手能力,愈加好掌握所学知识,我们在此次课程设计中提出了实现倒计时秒表课题
6、。1.2设计作用及意义经过查阅资料、接口设计、程序设计、安装调试等步骤,完成MCS-51单片机多个资源应用并含有综合功效小系统目标板设计和编程应用。让我不仅能够将课堂上学到理论知识和实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面知识深入加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备使用技能等方面得到较全方面锻炼和提升,促进对单片机感性认识,加深对单片机理论方面了解,掌握单片机内部功效模块应用,如定时器/计数器、中止、片内外存贮器、I/O口、串行口通信等。了解和掌握单片机应用系统软硬件设计过程、方法及实现,强化单片机应用电路设计和分析能力。提升学生在单片机应用方面
7、实践技能和科学作风;培育学生综合利用理论知识处理问题能力,实现理论结合实际,学以至用标准。用所学知识和本身课外拓展学习加深对专业课了解和学习;锻炼综合利用电路设计及相关电子仪器、单片机软硬件结合理论,结合生产实际分析和处理工作工程实际问题能力,加固、加深和扩展相关电子类,汇编语言,相关电子电路和仿真软件方面知识和能力。经过此次课程设计,应加强培养以下能力:(1)加强本身独立动手能力和思索处理问题能力,提升发明能力;(2)学会使用软件Proteus画原理图和仿真调试。2.设计方案2.1可行方案选择以AT89S52单片机为关键元件,利用两位7 段共阳极数码管作为显示器件。在此设计中共接入2个两位一
8、体7段共阳LED 数码管,来显示实时数字,其中1个用于显示十位,1个用于显示个位,经过查表指令分别动态显示个位和十位。2个LED数码管显示范围可达成O-99 。上电时,显示59并开始自动每秒自动减1,当按键1按下时统计目前时间值,当按键2按下时显示目前统计值,显示过以后再次按下按键1时秒表复位为59。方案一利用查询端口实现统计经过不停查询P2.4和P2.5电平来判定是否统计目前时间值,当P2.4按下时统计目前时间但并不显示,当P2.5按下时则显示统计下时间,当P2.5再次按下时则复位为59,等候下次计时。用延时程序来实现1秒延时,经过数据区来统计统计值,经过显示子程序来显示倒计时和统计值。方案
9、二 利用中止实现统计本方案在方案一硬件基础上采取74LS47译码器硬件译码来方便实现显示,同时利用单片机外部中止0和外部中止1来实现统计和显示,把统计处理和显示处理做成份别做成外部中止0和外部中止1中止服务程序,经过中止服务程序处理不一样动作。利用T0做一个1秒中止,从而实现倒计时。另外经过数据区来统计统计值。经过显示子程序来显示目前倒计时和统计值。2.2方案选择假如使用方案一需要不停查询端口电平,单片机还要不停去实施显示程序,另外还要实施延时程序,单片机在同一个时刻只能做一件事情,所以会对统计造成较大误差,所以方案一误差较大假如使用方案二,因为方案二是利用外部中止,所以无须不停查询端口电平,
10、当按键按下时,即使程序处于显示程序中也能够立即中止去实施按键按下所需要处理动作,因为定时1秒是采取定时器来实现,单片机能够边实施程序边实现定时,所以能够实现较正确计时,另外外部中止均处于高级中止,能够较正确统计统计值。综上比较,本设计采取方案二作为此次课程设计首选方案。3. 方案实施3.1硬件电路实施(1)整体设计框图本硬件设计总共包含五部分电路:显示电路、振荡电路、复位电路、电源电路、按键电路。总体设计框图图3.1所表示。AT89S52单片机电源电路振荡电路复位电路显示电路按键电路图3.1 整体框图(2)电源电路 本设计采取整流桥墩2W10进行整流,然后用电解电容进行滤波,用7805进行稳压
11、,最终输出+5V稳压直流电源。其中C1、C4为1000PF电解电容,C2、C3为104瓷片电容,R1为1K电阻。其电路图如3.2所表示。图3.2 电源电路(3)振荡电路本模块用了一个11.0592HZ晶振外加两个33pf电容,电路图用图3.3所表示。图3.3 振荡电路(4)复位电路复位电路图图3.4所表示,其中C3是带极性电解电容,R1、R2是阻值为1K电阻图3.4 复位电路(5)显示电路本设计显示电路采取动态显示,动态显示,是指不管任何时刻只有一个LED数码管处于显示状态。若要各个数码管能同时显示出和本位对应显示字符,就必需采取动态“扫描显示方法”。即在某一时刻,只让某一位位选线处于选通状态
12、,而其它各位位选线处于关闭状态,同时,段码线上输出对应位要有显示字符段码,这么,在同一时刻,2位数码管中只有被选通那一位显示出字符。如此循环下去就能够显示出要显示字符。即使这些字符是不一样时刻显示,但因为LED数码管余辉和人眼“视觉暂留”作用,只要每位显示间隔足够短,则能够造成“多位同时亮假象”,达成同时显示效果。动态显示优点是硬件电路简单,显示器越多,优势越显著。此次设计显示电路有三部分组成:译码电路、驱动电路、LED数码管显示电路。其中译码电路用是芯片74LS47,74LS47是BCD-7段数码管驱动器,它功效用于将BCD码转化成数码块中数字,经过它解码, 能够直接把数字转换为数码管显示数
13、字, 从而简化了程序,节省了单片机I/O开销。74LS47译码器原理: 译码为编码逆过程。它将编码时给予代码含义“翻译”过来。实现译码逻辑电路成为译码器。译码器输出和输入代码有唯一对应关系。74LS47是输出低电平有效七段字形译码器,它在这里和数码管配合使用,其部分真值表如表3.1.1所表示。表 3.11A3A2A1A0a*b*c*d*e*f*g*00000000001000110011110010001001000110000110010010011000101010010001101100000011100011111000000000010010001100 分析表格3.1.1易知74L
14、S47为4-7译码器,而且是等数译码。即当输入为0000即0时,数码管显示也为0,一次类推,当输入为1001即9时,数码管显示也为9。驱动电路很简单,就是用两个9013即NPN型三极管去驱动共阳极数码管。显示电路第三部分数码管显示电路,此次设计用是两位共阳极数码管。显示电路模块用图3.2所表示。图3.5 显示电路(6)按键电路 本试验要求开关BUTTON1和BUTTON2按下时触发两个对应中止,所以两个按键接到外部中止0和外部中止1管脚上。其Proteus仿真电路图图3.6所表示。图3.6 按键电路3.2软件程序实施本程序采取定时器T0产生1秒定时来实现秒表倒计时,采取外部中止0来统计不一样统
15、计值,经过外部中止1来显示已经统计统计值。在主程序中初始化各个数值而且仅仅循环实施显示程序,有中止来时才转去做对应中止服务程序。(1)主程序步骤图开始初始化显示等候中止(2)外部中止0步骤图(3)定时器TI步骤图开始初始化T1清外部中止请求标志开外部中止返回(4)T0定时器1秒中止定时器开中止计数到1S?R0和R1中数值减1Y中止次数到50?NY将R2重新设置为50将标志位F0置1调用显示子程序N中止返回开始(5)显示步骤图DATA1送A10送BDIVYA=0?N高位显示延时低位显示延时返回4. 结果和结论4.1 Proteus仿真运行结果我们设计好系统后,首先在proteus上进行了仿真,仿
16、真结果能够正常运行,当上电时秒表从59开始倒计时,每当按下BUTTON1时,系统会统计目前时间值,按下BUTTON2时系统会显示原来统计时间值。再次按下BUTTON1时系统会复位59等候下次倒计时,而且假如没有统计值,按下BUTTON2并不起作用。硬件结果经过半天焊接,我们把硬件焊好后上电结果表明,我们设计要求全部达成了,硬件结果和proteus仿真结果完全一样。各项功效完整可用。仿真图如附件所表示。4.2结论经过软件仿真和硬件运行,我们系统完全达成了设计要求。5. 收获和致谢经过此次课程设计,我认识和了解了基础单片机设计开发过程。期间,我学会了分析课题要求,查阅资料用怎样元器件来实现,学会用
17、Protues软件来绘制原理图,用汇编来编写源程序,最终仿真成功。在用实际器件实现系统时,还学会了怎样合理布局元器件,学会2位数码管各个管脚分布和接法,熟识了硬件驱动数码管动态显示基础原理和程序编写,提升了将单个电子器件组合到一起组成所需电路系统能力。在课程设计期间也碰到很多问题,在使用74LS47连线时忘记给译码器加电源,在仿真时,程序编写有语法错误,在焊接时电阻弄错,阻值过大结果数码管很暗,引脚焊接犯错。焊接完成通电调试时,按键不灵,经丁老师指导,在程序中添加去抖程序。除此之外,组员之间相互配合,在整个过程中有过争论,有过互助,最终圆满完成任务。在设计过程中,要是碰到问题,一定要有耐心,有
18、错误就耐心查找,程序或实物系统犯错就慢慢调试,要有永不服输精神。在此要尤其感谢学校老师们为我们安排这次课程设计,为我们精心挑选课题,在万忙之中抽出时间指导我们,对于我们问题,老师耐心解答,一遍不行,再讲一遍。还不辞劳苦给我们买需要任何元器件。这次课程设计收获很多,为以后毕业设计打下基础,培养我们实际动手能力,对以后学习、工作中一定会有很大帮助。再次感谢全部老师。6. 参考文件1李广弟.单片机基础M 北京:航空航天大学出版社 1月2迟荣强 .单片机原理及接口技术M 北京:高等教育出版社 9月3张毅刚.单片机原理及应用M 北京:高等教育出版社 5月4阎胜利.Protel DXP电路设计M 北京:电
19、子工业出版社 7月7. 附件7.1整体电路图图7.1 整体电路图7.2元器件清单表7.1 元器件清单元器件名称型号规格数量备注单片机AT89S521晶振11.0592MHz1电解电容1000Uf3瓷片电容1042瓷片电容332桥堆2W10178051发光二极管1红电阻1K12按键3拨动开关174LS471数码管1两位共阳7.3源程序;*;功效:;外部中止0用于统计不一样秒表数值;外部中止1用于显示不一样统计数值;外部中止0用于复位;假如没有统计秒表数值,则外部中止1不起作用;能够判定是否显示到最终一个数,显示是最终一个统计值则保持显示而不再改变;*;变量分配DATA1 EQU 40H ;DAT
20、A1用于储存显示值DATA2 EQU 42H ;DATA2用于储存统计时间个数TCNT EQU 41H ;TCNT用于判定定时是否到1秒MOD1 BIT 00H ;MOD1用于统计计数值是否到0MOD2 BIT 01H ;MOD2用于指示初始化成59标志MOD3 BIT 02H ;MOD3用于统计外部中止1MOD4 BIT 03H ;MOD4用于统计是否储存了统计值;主程序 ORG 0000H ;开始 LJMP START ; ORG 0003H ; LJMP INT_0 ; ORG 000BH ; LJMP INT_T0 ; ORG 0013H LJMP INT_1 ORG 001BH LJ
21、MP INT_T1 ORG 0050H START: MOV SP,#70H ;设置堆栈 CLR MOD1 ;初始化标志位 CLR MOD2 ; CLR MOD3 ; CLR MOD4 ; MOV TCNT,#0 ;定时器初始化,16位定时方法 定时50MS,总定时1S MOV TMOD,#11H ; MOV TH0,3CH ; MOV TL0,#0B0H ; CLR P2.4 ; CLR P2.5 ; SETB PX1 ;中止设置 外部中止1和0为高级中止,跳沿触发 SETB EX1 ;定时器T0为低级中止 SETB PX1 ; SETB PT1 ;定时器1设置为高级中止 SETB ET1
22、;开定时器1 MOV TH1,#0FFH ;赋初值 MOV TL1,#0FFH ; SETB IT1 ; SETB PX0 ; SETB IT0 ; SETB ET0 ; SETB EX0 ; SETB EA ; SETB TR0 ; MOV R1,#50H ;初始化R1为50H MOV DATA1,#59D ;初值是十进制59 LOOP1: LCALL DISPLAY ;循环显示 SJMP LOOP1 ;定时器T0中止 INT_T0: MOV TH0,#3CH ; MOV TL0,#0B0H ; INC TCNT ; MOV A,TCNT ; CJNE A,#20,RETURN ; MOV
23、TCNT,#0 ; JB MOD1,RETURN ;到0秒直接返回不再减1 DEC DATA1 ;减1 MOV A,#0 ;判定DATA1是否到0 CJNE A,DATA1,RETURN ;不到0直接返回 SETB MOD1 ;到0则置位MOD1标志位 RETURN: RETI ;外部中止0 INT_0: CLR EX0 ;关外部中止0 SETB TR1 ;开启定时器T1 H5: JNB MOD2,H0 ;假如不是初始化59则判定是否到0 MOV TH0,#3CH ;是初始化59则初始化T0 MOV TL0,#0B0H ; SETB TR0 ; CLR MOD2 ;清除初始化59标志 SJMP
24、 RETURN4 ; H0: JNB MOD1,H1 ;假如不到0则判定上次是否是储存值显示 H3: MOV DATA1,#59D ;是到0则初始化59 MOV R1,#50H ;数据指针初始化为50 SETB MOD2 ;初始化59标志 CLR MOD1 ;清除其它标志位 CLR MOD3 ; CLR MOD4 ; CLR TR0 ; SJMP RETURN4 ;返回 H1: JNB MOD3,H2 ;上次不是储存值显示则储存目前值 SJMP H3 ;上次是储存值显示则初始化59 H2: MOV R1,DATA1 ;目前值存入统计值数据区 SETB MOD4 ; INC R1 ;指针加1 M
25、OV DATA2,R1 ;储存统计数值个数RETURN4: RETI ;返回T1中止INT_T1: CLR TR1 ;关闭定时器 MOV TH1,#0FFH ;重赋值 MOV TL1,#0FFH ; CLR IE0 ;清除中止请求标志位 CLR IE1 ; SETB EX0 ;开中止0 SETB EX1 ;开中止1 RETURN9:RETI ;返回外部中止1 INT_1: CLR EX1 ;关闭外部中止1 SETB TR1 ;开启定时器T1 X10: JNB MOD4,RETURN6 ;没有储存则直接返回 JB MOD3,X7 ;假如上次也是外部中止1则直接显示下一个,上次不是外部中止1则从第
26、一个显示 X8: SETB MOD3 ;并置位外部中止标志MOD3 MOV R1,#4FH ; X7: CLR TR0 ;关定时器 INC R1 ; MOV A,R1 ;判定是否到最终一个数 CJNE A,DATA2,X9 ;不到则返回显示 DEC R1 ;到最终一个则R1减1,一直显示最终一个数值直到复位成59 SJMP RETURN6 ;返回 X9: MOV DATA1,R1 ; CLR IE1 ; RETURN6:RETI ;显示子程序 DISPLAY:MOV A,DATA1 ; MOV B,#10D ;取十位 DIV AB ; MOV P2,A ; CJNE A,#0,D_PLAY1
27、;假如十位为0则不显示 SJMP SKIP1 ; D_PLAY1: SETB P2.4 ;十位不为0则显示 CLR P2.5 ; SKIP1: LCALL DELAY ; CLR P2.4 ; MOV A,B ;取个位 MOV P2,A ; SETB P2.5 ; CLR P2.4 ; LCALL DELAY ; CLR P2.5 ; RET ;延时程序 DELAY:MOV R6,#5 ; DE: MOV R7,#250 ; DJNZ R7,$ ; DJNZ R6,DE ; RET ; END ;结束7.4运行实物图图7.4 运行实物图指导老师评语:课程设计汇报成绩: ,占总成绩百分比: 课程设计其它步骤成绩:步骤名称: ,成绩: ,占总成绩百分比: 步骤名称: ,成绩: ,占总成绩百分比: 总 成 绩: 指导老师签字:年 月 日此次课程设计责任人意见:责任人签字:年 月 日