天津工业大学机电学院
电子技术课程设计报告
题目:数字秒表
机电一体化
专 业:__________________________
081
班 级:_________________________ 李国兴 指导教师:_________________________ 张会访
姓 名:_________________________
2010年 1月 14日
I
目录
1、设计任务 ....................................................................................................................... 2 2、设计题目 ....................................................................................................................... 2 3、功能分析 ....................................................................................................................... 2 4、总体设计 ....................................................................................................................... 2 4.1设计硬件 ................................................................................................................ 2
4.1.1 80C51单片机 ............................................................................................ 2 4.1.2晶体振荡电路 ............................................................................................. 3 4.1.3复位电路 ..................................................................................................... 4 4.1.4按键电路 ..................................................................................................... 4 4.1.5显示电路 ..................................................................................................... 5 4.2引脚控制 ................................................................................................................ 5 5、电原理图 ....................................................................................................................... 6 6、 PCB图 ......................................................................................................................... 6 7、程序流程图及程序代码 .............................................................................................. 7 7.1程序流程图 .......................................................................................................... 7 7.2 程序代码 .............................................................................................................. 7 8、参考文献 ..................................................................................................................... 12
1
1、设计任务
以单片机为核心,设计一个数字秒表,有开始、暂停、复位等键,需显示百分秒
2、设计题目
数字秒表
3、功能分析
采用2个LED数码管显示时间,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计数;按“暂停”按键,系统暂停计数,数码管显示当时计数;按“复位”按键,系统清零;可用按键设计时间,如20S,并启动倒计时功能
4、总体设计
4.1设计硬件
4.1.1 80C51单片机
MCS-51系列单片机是8位单片机产品,80C51是其中的典型代表,基本模块包括以下几个部分:
(1) CPU:80C51的CPU是8位的,另外80C51内部有1个位处理器 (2) R0M:4KB的片内程序存储器,存放开发调试完成的应用程序 (3) RAM:256B的片内数据存储器,容量小,但作用大
(4) I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线 (5) 中断系统:共5个中断源,3个内部中断,2个外部中断 (6) 定时器/计数器:2个16位的可编程定时器/计数器 (7) 通用串行口:全双工通用异步接收器/发送器
(8) 振荡器:80C51的外接晶振与内部时钟振荡器为CPU提供时钟信号 (9) 总线控制:80C51对外提供若干控制总线,便于系统扩展
80C51的引脚如下图:
2
P06R8R9R1复位模块P0710KVCCRSTP101P112P123P134P145P156P167P178RST9RXD10111213T014T115WR1617XTAL218XTAL119201U1P10P11P12P13P14P15P16P17RESETRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7X2X1GND8051VCCP00P01P02P03P04P05P06P07EA/VPALE/PPSENP27P26P25P24P23P22P21P204039383736353433323130292827262524232221P00P01P02P03P04P05P06P072S1SW-PBC110uVCC晶振模块C3XTAL230PFY112MHZC2XTAL130PFSW-PBSW-PBS3DS2P27P26P25P24P23P22P21P2080C51单片机引脚图 4.1.2晶体振荡电路 80C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。 C这里选用51单片机12MHZ的内部振荡方式,电路如下:C2、C3起稳定振荡频率、快速起振的作用 晶振模块C323R1复位模块10KRSTUP101P112P123P134P145P156P167P178RST9RXD101112413T014T115WR1617XTAL218XTAL119208S1SW-PBC110uVCCXTAL2S2SW-PBS3SW-PB30PFY112MHZC2XTAL130PFB 晶振电路 3 12D4.1.3复位电路 采用上电加按键复位电路,上电后,由于电容充电,使RST持续一段时间的高电平。当单片机在运行之中时按下复位键也能使RST持续一段时间的高电平,从而实现上电加开关复位操作。这不仅能是单片机复位,还能是单片机的外围设备同时复位,当程序出现错误时,可以随时使电路复位。 电路图如下: R110KCRSTP00P01P02P03R2R3R4R5R6R7P00P01P02P03P04P05P061复位模块P04P05P07P06P10R81P07VCCP112P123P134P145P156P167P178RST9RXD10111213T014T115WR1617XTAL218XTAL11920U1P10P11P12P13P14P15P16P17RESETRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7X2X1GNDR110K复位模块S1SW-PBC110uR9 晶振模块C3复位电路 XTAL2VCCRST30PF Y112MHZS2U1S3P10140 P10VCCC2S1P11L1239P00XTAP11SW-PBP00C1 SW4.1.4-PB按键电路P12338P0130PFP12P0110uP13437P02BP13P028051当按键被按下时,相应的引脚被拉低,经扫描后,获得键值,并执行键功能P14536P03P14P03P15635P04程序,因此按下不同的按键,将执行不同的功能程序。VCCP15 P04P16734P05P16P05P17833P06电路图如下: P17P06RST932P07RESETP07 晶振模块RXD1031RXD/P3.0EA/VPC31130 TXD/P3.1ALE/PXTAL21229INT0/P3.2PSENS21328P27INT1/P3.3P2730PFT01427P26T0/P3.4P26Y1T11526P25SW-PBT1/P3.5P2512MHZS3WR1625P24WR/P3.6P24C21724P23RD/P3.7P23XTAL1XTAL21823P22ASW-PBX2P22 XTAL11922P21X1P2130PF21P20按键电路 20GNDP20SW-PBVCCP0P0P0P0P0P0P0P0EA/VALE/PSENP2P2P2P2P2P2P2P2 8051214
4.1.5显示电路
采用2个LED数码管,LED是七段显示器,内部有7个条形发光二极管和1个小圆点发光二极管,根据各管的亮暗组成字符。
在用数码管显示时,有静态和动态两种选择,这里采用LED动态显示,用P0
2口驱动显示,且需要外接上拉电阻才能输出高电平。 电路图如下: R2R3R4R5R6R7R8R9DY1764219105DPYaabcfbgdeecdfdpgdp345DY2764219105DPYaabcfbgdeecdfdpgdpP00P01P02P03P04P05P06P07383VCCU1P101P112P123P134P145P156P167P178RST9RXD10111213T014T115WR1617XTAL218XTAL11920P10P11P12P13P14P15P16P17RESETRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7X2X1GND8051VCCP00P01P02P03P04P05P06P07EA/VPALE/PPSENP27P26P25P24P23P22P21P204039383736353433323130292827262524232221P00P01P02P03P04P05P06P07VCCL2S2SW-PBS3SW-PBL1P27P26P25P24P23P22P21P208 显示电路 4.2引脚控制 P0.0—P0.7对应两个数码管的A、B、C、D、E、F、G和小数点位;P2.5控制数码管个位的显示,P2.6控制数码管十位;P3.6、P3.7分别接按键 Title5 2345SizeBDate:File:Number3-Jan-201C:\\Users\\f 5、电原理图 123456DP00P01P02P03P04P05P06R110KCRSTU1S1SW-PBP101P112P123P134P145P156P167P178RST9RXD10111213T014T115WR1617XTAL218XTAL11920P10P11P12P13P14P15P16P17RESETRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7X2X1GND8051R2R3R4R5R6R7R8R9DY1764219105DPYaabcfbgdeecdfdpgdp764219105DY2DPYaabcfbgdeecdfdpgdp383复位模块P07VCCC110uVCC晶振模块C3XTAL2S230PFY112MHZC2XTAL130PFBSW-PBSW-PBS3VCCP00P01P02P03P04P05P06P07EA/VPALE/PPSENP27P26P25P24P23P22P21P204039383736353433323130292827262524232221P00P01P02P03P04P05P06P07P27P26P25P24P23P22P21P2086、 PCB图 A TitleSizeBDate:File:123453-Jan-2011 C:\\Users\\fang\\Desktop\\zhf.ddbSheet of Drawn By:6NumberRevision
6
7、程序流程图及程序代码
7.1程序流程图
7.2 程序代码
7
A_BIT EQU 20H B_BIT EQU 21H TEMP EQU 22H
MOV P3,#0FFH ;对P3口初始化,设置为高电平,用于按键输入 MOV P0,#0FFH ;使显示时间数码管熄灭 CLR F0
MOV DPTR,#NUMTAB ;指定查表启始地址
;等待按键输入
;根据按键的输入判断执行什么功能
;按键1按下则执行功能1
MOV P3,#0FFH ;对P3口初始化,设置为高电平,用于按键输入 MOV P0,#0FFH ;使显示时间数码管熄灭
START:JB P3.6,START1 ;循环判断开始按钮是否按下?
ACALL DELAY10 ;延时10毫秒触点消抖 JB P3.6,START ;如果是干扰就返回 JNB P3.6,$ ;等待按键松开 LJMP GN1
;按键2按下则执行功能2
START1:JB P3.7,START ;循环判断开始按钮是否按下?
ACALL DELAY10 ;延时10毫秒触点消抖 JB P3.7,START1 ;如果是干扰就返回 JNB P3.7, $ LJMP GN2
;数码管显示秒表时间的程序
GN1: ;先初始化
S1: MOV A, #0 MOV TEMP, A GOON1: MOV R2, #2 JS1: MOV R3, #250
TIME1: MOV A,TEMP ;将TEMP中的十六进制数转换成10进制
MOV B,#10 DIV AB
MOV B_BIT,A ;十位在A MOV A_BIT,B ;个位在B LCALL DPLOP1
;一段判断定时过程中是否有按键输入的程序段 C1: JB P3.6, B1
8
ACALL DELAY10 ;延时10毫秒消抖 JB P3.6, C1
JNB P3.6,$ ;等待按键松开 CPL F0
ZT1:MOV P3,#0FFH ;对P3口初始化,设置为高电平,用于按键输入
JB P3.6,$ ;循环判断开始按钮是否按下 ACALL DELAY10 ;延时10毫秒触点消抖 JB P3.6,ZT1 JNB P3.6,$ LCALL DPLOP1
B1: JB P3.7, LOOP1
ACALL DELAY10 JB P3.7, B1
JNB P3.7,$ AJMP OVER
LOOP1: DJNZ R3,TIME1 ;2DJNZ R2,JS1 INC TEMP MOV A, TEMP CLR C
SUBB A, #60
JNZ GOON1 ;ACALL OVER RET
GN2: MOV A,#14H ;MOV TEMP, A
MOV P3,#0FFH MOV P0,#14H GOON2: MOV R, #2 JS2: MOV R3, #250
TIME2: MOV A,TEMP ;MOV B,#10 DIV AB
MOV B_BIT,A MOV A_BIT,B MOV DPTR,#NUMTAB ; ;如果是干扰就返回 ;等待按键松开 ;延时10毫秒消抖 ;等待按键松开 毫秒循环执行250次,时间约0.5秒
;循环执行2次,时间为1 秒钟 ;满一秒钟对时间加1 判断TEMP的数值是否为60?不为60循环 设定倒计时的时间20S
;数码管显示倒计时时间的程序 ;初始化
;对P3口初始化,设置为高电平,用于按键输入 ;使显示时间为设定的倒计时时间
将TEMP中的十六进制数转换成10进制
;十位在A ;个位在B
指定查表启始地
9
DPLOP2:MOV A,A_BIT ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码
CLR P2.5 ;开个位显示 ACALL DELY1 ;显示1毫秒
SETB P2.5 ;关闭个位显示,防止鬼影 MOV A,B_BIT ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.6 ;开十位显示 ACALL DELY1 ;显示1毫秒
SETB P2.6 ;关闭十位显示,防止鬼影
;一段判断定时过程中是否有按键输入的程序段 C2: JB P3.6, B2
ACALL DELAY10 ;延时10毫秒消抖 JB P3.6, C2
JNB P3.6,$ ;等待按键松开
ZT2: MOV P3,#0FFH ;对P3口初始化,设置为高电平,用于按键输入
JB P3.6,$ ;循环判断开始按钮是否按下 ACALL DELAY10 ;延时10毫秒触点消抖 JB P3.6,ZT2 ;如果是干扰就返回 JNB P3.6,$ ;等待按键松开
B2: JB P3.7, LOOP2
ACALL DELAY10 ;延时10毫秒消抖 JB P3.7, B1
JNB P3.7,$ ;等待按键松开 AJMP OVER
LOOP2: DJNZ R3,TIME2 ;2毫秒循环执行250次,时间约0.5秒
DJNZ R2,JS2 ;循环执行2次,时间为1 秒钟 DEC TEMP ;满一秒钟对时间减1 MOV A, TEMP
JNZ GOON2 ;判断TEMP的数值是否为0?不为0循环 ACALL OVER RET
;结束定时
OVER: AJMP START ;退到开机初始化状态
;1毫秒延时子程序 DELY1: MOV R4, #2
10
D1: MOV R5,#248 D2: DJNZ R5, D2
DJNZ R4, D1 RET
;10毫秒延时子程 DELAY10: MOV R4, #20
D3: MOV R5, #248 D4: DJNZ R5, D4
DJNZ R4, D2 RET
;数码管0~9各数字的显示代码NUMTAB: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H DPLOP1: MOV A,A_BIT ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码
CLR P2.5 ;开个位显示 ACALL DELY1 ;显示1毫秒 SETB P2.5 ;关闭个位显示 MOV A,B_BIT ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.6 ;开十位显示 ACALL DELY1 ;显示1毫秒 SETB P2.6 ;关闭十位显示 RET END
11
8、参考文献
单片机开发应用技术 北京大学出版社 李国兴 Protel99SE电路设计与制版 北京:电子工业出版社 赵广林 51系列单片机设计实例[M]. 北京:航空航天大学出版社
单片机实验与实践教程[M]. 北京:北京航空航天大学出版社 夏继强
12
因篇幅问题不能全部显示,请点此查看更多更全内容