精品单片机课程设计之数字秒表定.docx

上传人:b****6 文档编号:5888218 上传时间:2023-01-01 格式:DOCX 页数:12 大小:123.47KB
下载 相关 举报
精品单片机课程设计之数字秒表定.docx_第1页
第1页 / 共12页
精品单片机课程设计之数字秒表定.docx_第2页
第2页 / 共12页
精品单片机课程设计之数字秒表定.docx_第3页
第3页 / 共12页
精品单片机课程设计之数字秒表定.docx_第4页
第4页 / 共12页
精品单片机课程设计之数字秒表定.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

精品单片机课程设计之数字秒表定.docx

《精品单片机课程设计之数字秒表定.docx》由会员分享,可在线阅读,更多相关《精品单片机课程设计之数字秒表定.docx(12页珍藏版)》请在冰豆网上搜索。

精品单片机课程设计之数字秒表定.docx

精品单片机课程设计之数字秒表定

 

天津工业大学机电学院

电子技术课程设计报告

题目:

数字秒表

 

机电一体化

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].北京:

北京航空航天大学出版社夏继强

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1