单片机30秒倒计时1Word格式.doc

上传人:b****9 文档编号:13044949 上传时间:2022-10-03 格式:DOC 页数:9 大小:144.50KB
下载 相关 举报
单片机30秒倒计时1Word格式.doc_第1页
第1页 / 共9页
单片机30秒倒计时1Word格式.doc_第2页
第2页 / 共9页
单片机30秒倒计时1Word格式.doc_第3页
第3页 / 共9页
单片机30秒倒计时1Word格式.doc_第4页
第4页 / 共9页
单片机30秒倒计时1Word格式.doc_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

单片机30秒倒计时1Word格式.doc

《单片机30秒倒计时1Word格式.doc》由会员分享,可在线阅读,更多相关《单片机30秒倒计时1Word格式.doc(9页珍藏版)》请在冰豆网上搜索。

单片机30秒倒计时1Word格式.doc

Keywords:

chipcrystaloscillatorpowerinterfacecapacitanceexclusionresistanceofelectrolyticcapacitorbuzzerLEDdigitaltube

目录

引言 2

1基本硬件电路 2

1.1AT89C51的芯片概述 2

1.2AT89C51主要特性 2

1.3LED数码管显示器概述 2

2软件设计方法 3

2.1定时/计数器初值计算 3

3软件调试过程 4

3.1系统调试工具keilC51 4

3.2系统调试工具PROTEUS 4

4元器件清单 5

附录1 6

附录2 6

引言

数字显示30秒定时器是一个简单的数字电路,然而它可以扩展到很多实际应用当中来,比如篮球倒计时器,交通灯倒计时器等。

随着数字技术的发展,定时器产品不断推陈出新,适应不断发展的市场需求。

现今的产品因质量优良、使用方便、功能齐全、样式美观、实用性强、经久耐用等优点,而满足了如今市场的各种需求。

1基本硬件电路

1.1AT89C51的芯片概述

AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

其工作电压在4.5-5V,一般我们选用+5V电压。

外形及引脚排列如图1所示:

1.2AT89C51主要特性

图1:

AT89C51的核心电路框图

1.3LED数码管显示器概述

本设计中采用的是7SEG–MPX2–CA型号7段共阳数码管,它是一种半导体发光器件,其基本单元是发光二极管。

实物如图2所示:

图27SEG–MPX2–CA型号数码管

程序框图

2软件设计方法

2.1定时/计数器初值计算

(1)本电路应用TIMER0MODE16位计数器的计时中断法。

(2)12M的晶振每秒可以产生1M个机器周期,1秒等于1000000微秒,而每一计时脉冲是1微秒,因此需输入100000个计时脉冲,方可达到1秒的时间。

本设计中,设定中断每次溢出时间50ms。

(3)由上式得知,循环20次即可达到1秒定时,即:

N=t/Tcy=0.05s/0.000001=5000

X=65536-5000=15536=3CB0H

(4)由上式得知5000个脉冲,首先需设定TL0=3CH,TH0=0B0H,此时第1次只要输入5000个脉冲输入,就会溢出;

第2次至第20次,则需每1000000个计时脉冲,定时1秒。

(5)上电时,显示30,开始倒数计时按下开关实现复位。

3软件调试过程

3.1系统调试工具keilC51

KeilC51仿真器是一款利用KEILC51的IDE集成开发环境作为仿真环境的廉价仿真器,是利用SST公司具有IAP功能的单片机SST89C58制作而成,主要是利用了SST89C58的IAP功能,所谓IAP功能是Inapplicationprogram的英文缩写,是在应用编程的意思,通俗一点讲就是:

它可以通过串口将用户的程序下载到单片机中,可以通过串口对单片机进行编程。

它之所以具有这种功能,实际上它有两块程序flash区,其中一块flash中运行的程序可以更改另外的一块程序flash区中的程序,正是利用这一特性才用它作成了仿真器,我们把仿真器的监控程序事先烧入SST89C58,监控程序通过SST89C58的串口和PC通讯,当使用KEILC51的IDE环境仿真时,用户的程序通过串口被监控程序写入flash程序区中,当用户设置断点等操作仿真程序时,flash程序中的用户程序也在相应的更改,从而实现了仿真功能。

调试的主要方法:

1.启动Keilc51

2.新建一个工程。

Project菜单—〉Newproject,选择好我们要保存的文件夹后,键入Frist保存。

接着弹出CPU类型选择框,我们选择最常用的AT89C51,按确定。

3.在工程中加入文件。

新建一个文件,文件菜单File—〉New,我们再选择:

文件菜单File—〉SaveAs?

(另存为)弹出对话框后,我们文件名框中键入First.c(注意文件后缀名是.ASM)保存.ASM文件建好啦。

现在我们把文件加入到工程中去。

点击Target1前面的+号,右键单击SourceGroup1—〉选择AddFilestoGroup,SourceGroup1,选择添加Add。

编译运行,检查程序是否有错误。

3.2系统调试工具PROTEUS

Proteus是一款EDA软件,该软件具有模拟电路仿真,数字电路仿真,单片机以及外围电路组成的系统的仿真,RS-232动态仿真,I2C调试器,SPI调试器,键盘和LCD系统的仿真,以及各种虚拟仪器,如示波器,逻辑分析仪,信号发生器等。

该软件目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、ARM以及各种外围芯片。

该软件还支持大量的存储器和外围芯片,所以,该软件是一款集单片机和SPICE分析于一身的仿真软件。

调试方法:

首先用Keil软件将C编译成HEX文件,打开Keil软件,新建一个文档,输入C程序,保存成C格式文件,然后新建工程,连接单片机为AT89C51,选择Optionsfortarget,选择OUTPUT子菜单,在CreateHEXFi前打钩,DeBug子菜单中,Settings选择ProteusVSMSimulator,USE前打钩,再次运行文件,成功后在目录下会生成HEX文件,打开Proteus软件,或直接点击DSN文件,双击单片机模板,点击文件夹式样的图标选择对应的HEX驱动文件,然后点击开始,进行调试。

启动图示

4元器件清单

序号

元件类型

元件参数

元件个数

备注

1

芯片

AT89C51

2

晶振

12M

3

电源接口

5V

4

电容

100PF

5

排阻

10K

6

电阻

300

7

8

9

数码管

7SEG–MPX2–CA

共阳

10

电解电容

2200u

11

10u

12

蜂鸣器

Buzzer

13

发光二极管

D1、D2

致谢

本次设计是在宋卫星老师的细心指导和关怀下顺利完成的。

在此期间,宋卫星老师定期召集同组人员开会指导工作,在整个设计中不断给予我们良好的建议,使我们的设计更加顺利。

同时,这次设计业也离不开其他同学和老师的帮助,在硬件软件设计方面给我提供了不少建议和帮助,让我在设计过程中少走了不少弯路,更好得完成了设计。

在此谨向他们表示衷心的感谢。

参考文献

[1]李华.MCS-51系列单片机实用接口技术[M].北京航空航天大学出版社,1993.8.

[2]曹建树,夏云生,曾林春.51单片机实用教程[M].中国石化出版社,2008.8.

[3]韩颖.Proteus在单片机技术实训中的应用[J];

中国科教创新导刊,2008,31期 

.

[4]通用1602液晶资料.

[5]江思敏,姚鹏翼,胡荣.proteus电路设计教程[M].清华大学出版社,2002.

[6]童诗白.模拟电子技术基础(第四版)[M].高等教育出版社,2006.

[7]戴仙金.51单片机及其C语言程序开发实例[M].清华大学出版社,2008.2.

[8]阎石.数字电子技术基础[M].北京:

高等教育出版社,2003.

[9]余孟尝.数字电路技术基础简明教程(第二版)[M].北京:

高等教育出版社,1999:

268-341,371-390

附录1

程序图示

附录2

#include<

reg52.h>

#defineuintunsignedint

#defineucharunsignedchar

uchartemp,aa,bai,shi,ge;

sbitdula=P2^6;

sbitwela=P2^7;

ucharcodetable[]=

{0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

};

voiddisplay(ucharshi,ucharge);

voiddelay(uintz);

voidinit();

voidmain()

{

init();

//初始化子程序

while

(1)

{

if(aa==20)

{

aa=0;

temp--;

shi=temp/10;

ge=te

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

当前位置:首页 > 求职职场 > 简历

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

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