00~99秒表设计说明书

更新时间:2023-12-29 18:15:01 阅读量:2 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机课程设计说明书

电子秒表的设计

0

目 录

一、设计的任务与要求 二、硬件电路设计 三、软件设计流程 四、设计调试过程 五、源程序代码 六、收获体会 七、参考文献

1

一、 设计的任务与要求

用AT89C51设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。按键说明:按“开始”按键,开始计数,数码管显示从00开始每秒自动加一,再按“开始”键,停止计数;按“复位”按键,系统清零,数码管显示00。

二、 硬件电路设计

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

AT89C52引脚图

主要功能特性:

1、兼容MCS51指令系统

2、8k可反复擦写(大于1000次)Flash ROM; 3、32个双向I/O口; 4、256x8bit内部RAM;

5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz;

7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密位;

10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;

2

11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。

本设计利用AT89C52单片机的定时器/计时器定时和计数的原理,使其能精确计时。设计中包括硬件电路的设计和系统程序的设计,其硬件电路主要有主控制器、计时与显示电路和复位电路等。主控制器用AT89C52,显示电路采用共阴极LED数码管显示计时时间。利用中断系统使其能实现开始暂停的功能。P3.0,P3.1,RST开口接四个按钮,分别实现开始,暂停,复位的功能。电路原理图设计最基本得要求是正确性,其次布局合理,最后在正确性和布局合理的前提下力求完美。

由于条件限制本系统采用软件模拟硬件系统,采用proteus软件进行模拟设计及调试工作。

图3 七段数码管引脚图

三、 软件设计流程

电源电路复位电路AT89S52单片机晶振电路数码管控制按键3

手动开关 程序开始 对定时器/计数器初始化始化 开中断并 启动定时器 定时器溢出中断 对定时器重新赋值 进行加一操作后重新计算时间 往P0口和P2口送显示时间 数码管显示 判断P0^4口是否有低电平信号 否 否 判断P0^7口是否有低电平信号 是 开始、暂停或者继续 是 计数置零 中断返回主函数

4

四、设计调试过程

利用51单片机设计一个秒表,最大能显示99秒,具有启停、复位等功能,数码管显示!

1、确立总体设计方案; 2、系统整体框图设计;

3、各个单元电路设计与分析; 4、应用软件设计与调试; 5、系统仿真与调试;

6、分析结果,得出结论以及展望。

Proteus调试效果图

五、源程序代码

======================================================== #include

#define uchar unsigned char //把 unsigned char 宏定义为 uchar sbit P20=P2^0; //定义p20为P2.0口 sbit P21=P2^1; sbit KS=P2^5;

5

sbit KP=P2^6; int ge,shi; uchar code tab[]={0x3F, 0x06,0x5B, 0x4F, 0x66,0x6D, 0x7D,0x07,0x7F, 0x6F}; //0-9定义 void delay_ms(unsigned int ms) //1ms延时 { uchar a; while(ms--) for(a=123;a>0;a--); } void tointinit() //定时器T0初始化 { TMOD=0x01; //设置定时器T0工作方式为1 TH0=0x3c; //50ms定时(M=65536,没50ms溢出一次,计算周期1us。X=65536-50000=15536=3CB0H) TL0=0xb0; EA=1; 中断允许总控制为1 ET0=1; 允许定时器中断 } void display() {

P20=0; P0=tab[ge]; delay_ms(1); P20=1; P21=0;

P0=tab[shi]; delay_ms(1); P21=1; }

void Timer0Interrut(void) interrupt 1 //定时器T0中断 方式1 {

uchar time;

TH0=0x3c; TL0=0xb0; time++;

if(time==20) //20*50ms=1s {

time=0; ge++;

6

} }

void main() {

tointinit(); while(1) {

display(); while(!KS) {

display(); if(KS) TR0=1; }

while(!KP) {

display(); if(KP) TR0=0; } while(!KC) { display(); if(KC) TR0=0; shi=0; ge=0; } if(ge==10) { ge=0; shi++; } if(shi==10) { shi=0; } } }

===========================================================

7

六、收获体会

在设计过程中我深感自己在培养动手能力这方面还需很大的努力。单片机课程设计不仅给我提供了一个很好的展现应用自己所掌握的知识的平台,又是检验自己所学知识的一次考核。在设计的过程中我也不可避免的遇到了很多的问题。尤其是在调试过程中,会因为某些原因出不来结果,但通过老师对我的帮助最后还是成功的完成了这次的设计。经过过这次的系统设计,我也发现了不少自己不会的知识,通过查询各方面资料,我也进步了很多,也学会了很多上课时没掌握的东西, 最后在调试结果出来后,我更是无比的兴奋,无比的自豪。总之,通过这次电子课程设计,我对自己的知识有了更好的掌握和应用,这使我在以后的学习和生活中受用终身。

七、参考文献

《单片机原理与应用》,黄友锐编著,合肥工业大学出版社

8

本文来源:https://www.bwwdw.com/article/xhex.html

《00~99秒表设计说明书.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top