基于单片机的秒表课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的秒表课程设计
基于单片机的秒表课程设计
姓名:
班级:
学号:
专业:
指导老师:
年月日
目录1、总体设计方案简介
1.1设计课程任务
1.2系统分析
1.3系统方案
1.4方案论证
2、硬件设计
2.1控制芯片的介绍
2.2硬件接线
2.2.1硬件接线接口
2.2.2硬件接线图
3、软件设计
3.1程序设计思路
3.2流程图
3.3源程序
3.4仿真结果
4、元件清单
5、心得体会
基于单片机的秒表课程设计
摘要
本设计的成品是在单片机最小系统的基础上增加显示电路和控制电路来完成数字式秒表的硬件电路的。电子秒表电路主要由AT89S51单片机最小系统电路、七段数码管动态显示电路和控制电路组成,它能实现八段数码显示和计时,能通过控制电路控制时间的暂停和开始。
关键字:AT89S51 数码管最小系统
1总体设计方案简介
1.1设计课题任务
设计一个具有特定功能的数字式秒表。用AT89C52设计一个2位LED 数码显示“秒表”,显示时间为00-59,另设计一个“开始”按钮和一个“复位”按钮。按键说明:按“开始”按键,开始计数,数码管从00开始每秒自动加一;按“复位”按键,系统清零,数码管显示00。
1.2系统分析
设计的电路主要是能多次计时,计时的多少通过显示电路出来,设计框图如图所示;
控制部
分技术和
存储部显示部分
1.3系统方案
利用AT89C52单片机设计数显定时器。此方案采用AT89C52单片机系统来实现。AT89C52芯片内含8KB 的EEPROM ,不需要外扩展存储器,可是系统整体结构更为简单。设计框图如图所示;
1.4方案论证
此方案是以AT89C52芯片为中心控制系统,可实现计时、清零等功能,大大提高了系统的智能化,也是的系统所测结果精度大大提高。所以此方案可行。
2硬件设计
2.1控制芯片的介绍
AT89S52是一种低功耗、高性能的片内含有4KB 快闪可编程/擦除只读存储器,的8位CMOS 微控制器,使用高密度、非易失存储技术制造,
外部控制开关
AT89C52
单 片 机
七段数码显示
并与80S52引脚和指令系统完全兼容。
主要性能:
与MCS-51微控制器产品系列兼容。
片内有4KB可在线重复编程的快闪擦写存储器
存储数据保存时间为10年
宽工作电压范围:VCC可为2.7V到6V
全静态工作:可从0Hz至16MHz
程序存储器具有3级加密保护
128*8位内部RAB
32条可编程I/O线
两个16位定时器/计数器
中断结构具有5个中断源和2个优先级
可编程全双串行通道
空闲状态维持低功耗和掉电状态保存存储内容
2.2硬件接线
2.2.1硬件接线端口
时钟引脚:XTAL1和XTAL2与内部的反相放大器构成一个振荡器,它提供单片机的时钟控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
P2口:P2.6和P2.7端口分别控制数码管的十位和个位供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过三极管给数码
管相应的位供电,这是只要PO口送出数字的显示代码,数码管就能正常显示数字。
PO口:PO.O-PO.6端口用排线连接到数码管显示模块区域中的A-G端口上;PO.O对应着A,......,PO.6对应着G。P0.7接高电平。
P1.0接“开始”按键
2.2.2硬件接线图(见附录图)
3软件设计
3.1程序设计思路
在硬件的基础上,可以通过软件完成数字式秒表的设计。我先用了矩阵键盘上的任意两个独立按键作为控制键。用一个键去控制计时的开始;用一个键做计时的清零按键。用按键扫描的方式判断按键是否按下。
用动态显示的方法扫描秒表的计数,显示所记下的数。用中断的方法来进行计时加1,每10ms中断一次进行重新赋值并加1,当10ms单元达到10,就令该单元赋0,并让100ms单元加1,以此类推。
3.2流程图
1主程序流程图
程序开
程序初
开个中
P1.0
关定时器
调用显示
P1.0=
开定时器
3.3源程序
FIRST EQU P2.7 ;第一位数码管的位控制
SECOND EQU P2.6 ;第二位数码管的位控制
SEC EQU 00H ;1S到的标记
UALUE EQU 21H ;秒计数器
COUNT EQU 22H ;软件计数器
DISPBUF1 EQU 5EH ;5EH是显示缓冲区
DISPBUF2 EQU 5FH ;5EF是显示缓冲区
HIDDEN EQU 10 ;消隐码在字型码表的第10位
ORG 0000H
LJMP START1
ORG 000BH
LJMP INT_T0
ORG 0100H
START1:JB P1.0,START1
LJMP START
START:MOV SP,#5FH ;设置堆栈指针初值
MOV VALUE,#0 ;秒计数器
MOV COUNT,#0 ;软件计数器
MOV DISPBUF1,#0 ;显示缓冲区填充0
MOV DISPBUF2,#0 ; 显示缓冲区填充0
MOV TMOD,#01H
MOV TH0,#0ECH ;取60536的高8位,60536=65536-10000*6/12定时器初值,定时时间10ms
MOV TL0,#98H ; 取60536的高8位,60536=65536-10000*6/12定时器初值,定时时间10ms
SETB ET0 ;开T0中断
SETB TR0 ;定时器T0开始运行
CLR SEC