电 子 科 技 大 学
单片机最小应用系统
设
计
报
告
指导老师:
学 生:
学 号:
机电工程学院 20xx年5月
单片机最小应用系统设计报告
一、设计题目 .................................................. 1
二、设计内容与要求 ............................................ 1
三、设计的目的与意义 .......................................... 1
四、系统硬件图 ................................................ 1
4.1系统的硬件电路原理图 .................................. 2
4.2 各主要芯片及相应组成电路 .............................. 3
五、程序流程图 ................................................ 4
六、系统程序 .................................................. 5
七、系统说明与分析 ........................................... 12
7.1设计步骤 ............................................. 12
7.2设计内容 ............................................. 13
八、总结 ..................................................... 13
九、参考文献 ................................................. 16
一、 设计题目
多点定是数字钟的设计
二、设计内容与要求
以AT89S51单片机为核心器件,组成一个定时数字钟系统,系统显示器由四位数字型数码管组成,分别显示小时和分钟,能够随时对当前时间进行调整,并能构随时输入定时时间,在定时时间到时会有提示音提示时间已到。
三、设计的目的意义
1. 通过本课程设计的学习,掌握数码管显示电路的动态显示原理;
2. 了解到CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,如下特点:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流,可直接驱动LED显示器;
3. 掌握单片机定时器、中断的工作原理以及动态显示的编程方法,可以设计可以调整的数字闹钟。
4. 完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
5. 进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
6. 用AT89C51,CD4511设计出题目所要求的波形实现循环显示,并针对实际设计过程中软、硬件设计方面出现的问题提出相应解决办法。
四、系统的硬件电路图
4.1系统的硬件电路原理图
系统的硬件电路图如图1所示,从图中可以看到该电路主要有时钟电路、复位电路等组成。电源电路有设备提供,在原理图上不在说明,本文简单介绍电源电路的组成原理。
该图为多点定时数字钟的硬件电路图
4.2 各主要芯片及相应组成电路 1)8051单片机:
2) 时钟电路
该电路主要有电容C1、C2和晶振Y1组成。其组成原理图如图2所示,图中XTAL1为芯片内部振荡电路的输入端,XTAL2为芯片内部振荡电路的输出端。
图为时钟电路
3)复位电路
单片机通常采用的复位方式有上电复位和按钮复位两种。本次设计用的复位方式是按钮电平复位。其原理图如图3所示。当按下按钮SW时,电容对R6迅速放电,RESET端变为高电平,RESET松开后,电容通过电阻R6进行充电,RESET端恢复为低电平。
图为复位电路
五、程序流程图
该图为主程序框图
该图为中断数码管动态显示框图
六、系统的程序
SW1 EQU P3.0 ; 定义校分按钮
SW2 EQU P3.1 ;定义校时按钮
SW3 EQU P3.2 ;定义设定按钮
SW4 EQU P3.3 ;定义设定结束按钮
BUZZER EQU P3.4 ;定义蜂鸣器输出按钮 DIS EQU P2 ;定义显示器控制口
MS EQU 10H ;定义50ms计数器
SECS EQU 11H ;定义秒计数器
MINUTE EQU 12H ;定义分钟计数器
HOUR EQU 13H ;定义时计数器
DM EQU 14H ;定义显存地址
TMINUTE EQU 18H ;定义定时分单元 THOUR EQU 19H ;定义定时时单元 TTAB EQU 1AH ;时间表指针
ORG 0000H
AJMP Main ;转主程序
ORG 000BH
AJMP T0INT ;转T0定时程序
Main:MOV SP ,#60H
MOV P3,#0FFH ;将p3.0~p3.3设置为输入口 LCALL CLEAR
SETB EA ;允许中断
SETB ET0
CLR F0
MOV TMOD ,#01H ;清数码管闪亮控制标志 MOV TL0,#0B0H ;预装50ms初值
MOV TH0,#3CH
MOV B ,#50
MOV MS,#0
MOV SECS ,#0 ;预装秒初值 MOV MINUTE ,#01h ;预装分初值 MOV HOUR ,#0CH ;预装时初值 MOV TMINUTE ,#0 ;预置定时分 MOV THOUR,#6H ;预装定时时 SETB TR0 ;启动T0
LOOP1:SETB BUZZER
MOV R0,#MINUTE
LCALL SPLIT ;调用子程序 LCALL DISP ;调用显示程序 MOV A,SECS
LCALL COMP
MOV R0,#MINUTE
LCALL SPLIT
LCALL DISP
SCAN:JB SW3,LOOP1
LCALL tSet ;调用设定时间设置程序 SJMP LOOP1
tSET:LCALL CLEAR ;调用时间表清除程序
LCALL BB
SET0:MOV R0,#MINUTE
LCALL SPLIT
LCALL DISP ;调用显示子程序 JNB SW3,SET0
setb F0
MOV TTAB,#20H
SET1:MOV R0,#TMINUTE
LCALL SPLIT
LCALL DISP
JNB SW1,SETM ;判断设置分按钮是否有效 JNB SW2,SETH ;判断设置时按钮是否有效 JNB SW3,SAVE
JNB SW4,SET1
SJMP SEXIT
SETM:MOV R0,#TMINUTE
LCALL SPLIT
LCALL DISP
JNB SW1,SETM
MOV A,TMINUTE ;取定时分
ADD A,#1 ;定时分加1
DA A ; 十进制调整
MOV TMINUTE ,A ;保存定时分 CJNE A ,#60H ,SET1
MOV TMINUTE ,#0
SJMP SET1
SETH:MOV R0,#TMINUTE
LCALL SPLIT
LCALL DISP
JNB SW2,SETH ;等待SW2释放
MOV A,THOUR ;取定时时
ADD A,#1 ;定时时加1
DA A
MOV THOUR ,A
CJNE A ,#24 ,SET1
MOV THOUR ,#0
SJMP SET1
SAVE:MOV R0,#TMINUTE
LCALL SPLIT
LCALL DISP ;调用显示子程序 JNB SW3,SAVE
LCALL BB
MOV R0,TTAB ;取时间表指针 MOV @R0,THOUR
INC R0
MOV @R0,TMINUTE
INC R0
MOV TTAB,R0
CJNE R0,#60H,SET1 ;判断时间表是否存满 SEXIT:LCALL BB
CLR F0
RET
BB:MOV R5,#40H
LOOP3:MOV R6,#80H
DJNZ R6,$
CPL BUZZER
DJNZ R5,LOOP3
SETB BUZZER
RET
SPLIT:MOV R1,#DM ;显存首地址
MOV A,@R0 ;取分钟
ANL A,#0F0H ;取分钟的个位 MOV @R1,A ;送显存
INC R1 ;
MOV A,@R0
ANL A,#0F0H ;取分钟的个位 SWAP A
MOV @R1,A ;送显存 INC R1
INC R0
MOV A,@R0 ;取小时 ANL A,#0F0H ;取小时个位 MOV @R1,A
INC R1
MOV A,@R0
ANL A,#0F0H
SWAP A
MOV @R1,A ;送显存
RET
DISP: PUSH 00 ;保护现场
PUSH 01
PUSH 02
PUSH 03
PUSH ACC
MOV R0,#DM ;显示缓冲区首地址 MOV R2,#0EFH
JNB F0,DISP0
DJNZ B,DISP1
CPL F0
MOV B,#50
SJMP DISP1
DISP0:CLR F0
DISP1:ORL DIS ,#0F0H ;关显示器
MOV R3,#100
DJNZ R3,$
JB F0,HIDE
MOV A,R2 ;取位控码
ANL A,#0F0H ;屏蔽无关位
ORL A,@R0
MOV DIS ,A
HIDE:MOV R3,#200
DJNZ R3,$
INC R0 ;指向下一位显存
MOV A,R2 ;取字位码
RL A
MOV R2,A
JB ACC.0,DISP1 ;判断显示器是否扫描一遍 DEEIT:POP ACC
POP 03
POP 02
POP 01
POP 00
RET
COMP:MOV R1,#20H ;时间表首地址 COMP1:MOV A,@R1 ;取时间表的小时
CJNE A,HOUR,COMP5
INC R1
MOV A,@R1
CJNE A,MINUTE,COMP6
MOV R5,#40
MOV R4,#10
MOV R6,#30
MOV R7,#40
COMP2:MOV R0,#MINUTE
LCALL SPLIT
LCALL DISP ;调用显示程序 DJNZ R6,COMP2
MOV R6,#30
CPL BUZZER
DJNZ R5,COMP2
MOV R5,#40 ;响铃
COMP3:MOV R0,#MINUTE
LCALL SPLIT
LCALL DISP
DJNZ R4,COMP3
MOV R4,#20
CPL BUZZER
DJNZ R7,COMP3
MOV R7,#40
COMP4:LCALL DISP
MOV A,SECS
JZ COMP4
COMP5:INC R1
COMP6:INC R1
CJNE R1,#60H,COMP1
RET
CLEAR:MOV R0,#20H ;定时时间表首地址
MOV A,#0FFH
LOOP2:MOV @R0,A ;清除定时时间表
INC R0
CJNE R0,#60H,LOOP2
RET
T0INT:PUSH ACC ;保护现场
MOV TL0 ,#0B0H ;50ms定时 MOV TH0,#3CH
JB F0,LP2
JNB SW1,VERM ;判断校分按钮是否有效 JNB SW2,VERH ;判断校时按钮是否有效 LP2:INC MS
MOV A,MS
CJNE A,#3,LP3
CLR LED
LP3:CJNE A,#20,T0EXIT ;判断一秒是否到
SETB LED
MOV MS ,#0
INC SECS
MOV A,SECS
CJNE A,#60,T0EXIT ;判断秒是否等于60 MOV SECS,#0 ;秒清零
MOV A,MINUTE ;分加1
ADD A,#1 ;十进制调整
DA A
MOV MINUTE ,A
CJNE A,#60,T0EXIT ;判断分是否等于60 MOV MINUTE ,#0 ;分清零
MOV A,HOUR ;时加1
ADD A,#1 ;十进制调整
DA A
MOV HOUR,A
CJNE A,#24H ,T0EXIT
MOV HOUR ,#0
T0EXIT:POP ACC
RETi ;中断返回
VERM:MOV A,MINUTE ;取分
ADD A,#1 ;分加1
DA A
MOV MINUTE,A ;保存分
CJNE A ,#60,VERM1
MOV MINUTE,#0
VERM1:MOV SECS ,#0
POP ACC
RETi ;中断返回
VERH:MOV A,HOUR ;取时
ADD A,#1
DA A
MOV HOUR,A ;保存时
CJNE A ,#24,VERH1
MOV HOUR ,#0
VERH1:MOV SECS ,#0
POP ACC
RETi ;中断返回
END
七、系统的功能分析与说明
7.1设计步骤
1. 理解设计任务要求(通过阅读有关资料及调查研究);
2. 对总体方案进行分析、论证;
3. 系统硬件电路的设计;
4. 系统控制软件的设计;
1) 以功能明确、相互界面能清晰分割的软件程序为基础,确定主程序流程框图;
2) 以主程序流程框图为基础,确定各模块程序算法及实现的功能,进一步
确定各模块程序流程框图;
3) 根据软件流程框图,用AT89C51汇编语言编写主程序和延时子程序;
4) 系统软、硬件的调试;
5) 编写课程设计说明书;
6) 答辩验收
7.2设计内容
1.该系统控制器有四位LED数码显示器,具有基本时钟及多点报时功能,可用于作为时间指示及多点时间提醒。
2.时间校对
在任何时候均可通过按压校时和校分按钮进行显示时间调整。每按动一下校时按钮,小时自动加1;当小时指示为24时,再加1将自动清零。每按动一下校分按钮,分自动加1,当分钟指示59时,再按动校分按钮,分钟将变为00.
3.设定定时时间
需要设定报时时间的点时,应首先按设定按钮,然后再按动校时和校分按钮,是指示的时间与要求的时间一致,再按设定按钮保存。设定完毕,最后按结束按钮退出设定状态,返回正常的计时状态。
八、总结
1、在设计系统过程中,学会用Protel 画原理图和PCB图。通过查阅相关的书籍,设计了电路原理图,经过仿真和反复的修改电路中元器件的参数得到了可行的电路图。
2、接下来是最关键的步骤——电路板的调试,软硬件相结合,开始将程序烧到硬件电路中,刚开始工作比较正常,达到了题目的要求,当程序运行几个循环后,发现开始出现错误。输出的波形比较紊乱,然后进行故障的排查,检查硬件和软件都没有问题,再进行一次调试还是不行,通过查阅CDD4511译码芯片的资料,发现问题的所在,自己将片选信号接到地上可能导致一直工作状态,出现程序紊乱的现象。
3、经过学习单片机接口实验这门课,使自己对单片机有了更深入的了解,提高了自己的动手能力。很感谢在整个课程学习中老师和师兄们的指导,以及同班同学的热心帮助。
九、参考文献
[1] 肖玲妮,袁增贵.Protel99SE.北京:清华大学出版社,2003.
[2] 江太辉.MCS-51系列单片机原理与应用[M].广州:华南理工大学出版社,2002.
[3] 何立民.单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天
大学出版社,1999.
[4] Protel 99SE电子工程实践基础与典型范例 谈世哲 宋一兵.电子工业出版社,2008
[5] 房小翠.单片机实用系统设计技术[M].北京:国防工业出版社,1993
[6] 刘守义.单片机应用技术[M].西安:西安电子科技大学出版社,2002.
[7]蔡明文 冯先成.单片机课程设计[M].华中科技大学出版社.2007
[8]胡建等 单片机原理及接口技术实践教程[M].机械工业出版社.2004
[9] 李光飞等.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,
2004
[10] 潘永雄.新编单片机原理与应用[M].西安:西安电子科技大学出版社,2003.