单片机课程设计之数字秒表精品.docx
- 文档编号:23378912
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:14
- 大小:123.40KB
单片机课程设计之数字秒表精品.docx
《单片机课程设计之数字秒表精品.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之数字秒表精品.docx(14页珍藏版)》请在冰豆网上搜索。
单片机课程设计之数字秒表精品
天津工业大学机电学院
电子技术课程设计报告
题目:
数字秒表
机电一体化
081
专业:
__________________________
李国兴
班级:
_________________________
张会访
指导教师:
_________________________
姓名:
_________________________
2010年1月14日
目录
1、设计任务2
2、设计题目2
3、功能分析2
4、总体设计2
4.1设计硬件2
4.1.180C51单片机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、设计任务
以单片机为核心,设计一个数字秒表,有开始、暂停、复位等键,需显示百分秒
2、设计题目
数字秒表
3、功能分析
采用2个LED数码管显示时间,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计数;按“暂停”按键,系统暂停计数,数码管显示当时计数;按“复位”按键,系统清零;可用按键设计时间,如20S,并启动倒计时功能
4、总体设计
4.1设计硬件
4.1.180C51单片机
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的引脚如下图:
80C51单片机引脚图
4.1.2晶体振荡电路
80C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。
这里选用51单片机12MHZ的内部振荡方式,电路如下:
C2、C3起稳定振荡频率、快速起振的作用
晶振电路
4.1.3复位电路
采用上电加按键复位电路,上电后,由于电容充电,使RST持续一段时间的高电平。
当单片机在运行之中时按下复位键也能使RST持续一段时间的高电平,从而实现上电加开关复位操作。
这不仅能是单片机复位,还能是单片机的外围设备同时复位,当程序出现错误时,可以随时使电路复位。
电路图如下:
复位电路
4.1.4按键电路
当按键被按下时,相应的引脚被拉低,经扫描后,获得键值,并执行键功能程序,因此按下不同的按键,将执行不同的功能程序。
电路图如下:
按键电路
4.1.5显示电路
采用2个LED数码管,LED是七段显示器,内部有7个条形发光二极管和1个小圆点发光二极管,根据各管的亮暗组成字符。
在用数码管显示时,有静态和动态两种选择,这里采用LED动态显示,用P0口驱动显示,且需要外接上拉电阻才能输出高电平。
电路图如下:
显示电路
4.2引脚控制
P0.0—P0.7对应两个数码管的A、B、C、D、E、F、G和小数点位;P2.5控制数码管个位的显示,P2.6控制数码管十位;P3.6、P3.7分别接按键
5、电原理图
6、PCB图
7、程序流程图及程序代码
7.1程序流程图
7.2程序代码
A_BITEQU20H
B_BITEQU21H
TEMPEQU22H
MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输入
MOVP0,#0FFH;使显示时间数码管熄灭
CLRF0
MOVDPTR,#NUMTAB;指定查表启始地址
;等待按键输入
;根据按键的输入判断执行什么功能
;按键1按下则执行功能1
MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输入
MOVP0,#0FFH;使显示时间数码管熄灭
START:
JBP3.6,START1;循环判断开始按钮是否按下?
ACALLDELAY10;延时10毫秒触点消抖
JBP3.6,START;如果是干扰就返回
JNBP3.6,$;等待按键松开
LJMPGN1
;按键2按下则执行功能2
START1:
JBP3.7,START;循环判断开始按钮是否按下?
ACALLDELAY10;延时10毫秒触点消抖
JBP3.7,START1;如果是干扰就返回
JNBP3.7,$
LJMPGN2
;数码管显示秒表时间的程序
GN1:
;先初始化
S1:
MOVA,#0
MOVTEMP,A
GOON1:
MOVR2,#2
JS1:
MOVR3,#250
TIME1:
MOVA,TEMP;将TEMP中的十六进制数转换成10进制
MOVB,#10
DIVAB
MOVB_BIT,A;十位在A
MOVA_BIT,B;个位在B
LCALLDPLOP1
;一段判断定时过程中是否有按键输入的程序段
C1:
JBP3.6,B1
ACALLDELAY10;延时10毫秒消抖
JBP3.6,C1
JNBP3.6,$;等待按键松开
CPLF0
ZT1:
MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输入
JBP3.6,$;循环判断开始按钮是否按下
ACALLDELAY10;延时10毫秒触点消抖
JBP3.6,ZT1;如果是干扰就返回
JNBP3.6,$;等待按键松开
LCALLDPLOP1
B1:
JBP3.7,LOOP1
ACALLDELAY10;延时10毫秒消抖
JBP3.7,B1
JNBP3.7,$;等待按键松开
AJMPOVER
LOOP1:
DJNZR3,TIME1;2毫秒循环执行250次,时间约0.5秒
DJNZR2,JS1;循环执行2次,时间为1秒钟
INCTEMP;满一秒钟对时间加1
MOVA,TEMP
CLRC
SUBBA,#60
JNZGOON1;判断TEMP的数值是否为60?
不为60循环
ACALLOVER
RET
GN2:
MOVA,#14H;设定倒计时的时间20S
MOVTEMP,A
;数码管显示倒计时时间的程序
;初始化
MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输入
MOVP0,#14H;使显示时间为设定的倒计时时间
GOON2:
MOVR,#2
JS2:
MOVR3,#250
TIME2:
MOVA,TEMP;将TEMP中的十六进制数转换成10进制
MOVB,#10
DIVAB
MOVB_BIT,A;十位在A
MOVA_BIT,B;个位在B
MOVDPTR,#NUMTAB;指定查表启始地
DPLOP2:
MOVA,A_BIT;取个位数
MOVCA,@A+DPTR;查个位数的7段代码
MOVP0,A;送出个位的7段代码
CLRP2.5;开个位显示
ACALLDELY1;显示1毫秒
SETBP2.5;关闭个位显示,防止鬼影
MOVA,B_BIT;取十位数
MOVCA,@A+DPTR;查十位数的7段代码
MOVP0,A;送出十位的7段代码
CLRP2.6;开十位显示
ACALLDELY1;显示1毫秒
SETBP2.6;关闭十位显示,防止鬼影
;一段判断定时过程中是否有按键输入的程序段
C2:
JBP3.6,B2
ACALLDELAY10;延时10毫秒消抖
JBP3.6,C2
JNBP3.6,$;等待按键松开
ZT2:
MOVP3,#0FFH;对P3口初始化,设置为高电平,用于按键输入
JBP3.6,$;循环判断开始按钮是否按下
ACALLDELAY10;延时10毫秒触点消抖
JBP3.6,ZT2;如果是干扰就返回
JNBP3.6,$;等待按键松开
B2:
JBP3.7,LOOP2
ACALLDELAY10;延时10毫秒消抖
JBP3.7,B1
JNBP3.7,$;等待按键松开
AJMPOVER
LOOP2:
DJNZR3,TIME2;2毫秒循环执行250次,时间约0.5秒
DJNZR2,JS2;循环执行2次,时间为1秒钟
DECTEMP;满一秒钟对时间减1
MOVA,TEMP
JNZGOON2;判断TEMP的数值是否为0?
不为0循环
ACALLOVER
RET
;结束定时
OVER:
AJMPSTART;退到开机初始化状态
;1毫秒延时子程序
DELY1:
MOVR4,#2
D1:
MOVR5,#248
D2:
DJNZR5,D2
DJNZR4,D1
RET
;10毫秒延时子程
DELAY10:
MOVR4,#20
D3:
MOVR5,#248
D4:
DJNZR5,D4
DJNZR4,D2
RET
;数码管0~9各数字的显示代码
NUMTAB:
DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
DPLOP1:
MOVA,A_BIT;取个位数
MOVCA,@A+DPTR;查个位数的7段代码
MOVP0,A;送出个位的7段代码
CLRP2.5;开个位显示
ACALLDELY1;显示1毫秒
SETBP2.5;关闭个位显示
MOVA,B_BIT;取十位数
MOVCA,@A+DPTR;查十位数的7段代码
MOVP0,A;送出十位的7段代码
CLRP2.6;开十位显示
ACALLDELY1;显示1毫秒
SETBP2.6;关闭十位显示
RET
END
8、参考文献
单片机开发应用技术北京大学出版社李国兴
Protel99SE电路设计与制版北京:
电子工业出版社赵广林
51系列单片机设计实例[M].北京:
航空航天大学出版社
单片机实验与实践教程[M].北京:
北京航空航天大学出版社夏继强
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 数字 秒表 精品