INT0中断计数Word格式文档下载.docx
《INT0中断计数Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《INT0中断计数Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
(2)存储器,包括ROM和RAM;
(3)输入输出(I/O)接口,它与外部输入输出设备相连;
(4)电源和时钟电路。
2INT0中断计数
2.1设计任务
用AT89C51及电阻、电容、晶闸管、数码管、排阻等实现中断计数。
INTO中断计数,每次按下计数键时触发INTO中断,中断程序累加计数,计数值显示在3只数码管上,按下清零键时数码管清零。
2.2硬件设计
如下图1-1所示
图1-1
2.3设计思路
用单片机的P2.0/A8-P2.6/AD14端口接其中一组数码管的七个端口,P1.0-P1.6接数码管的P1.0-P1.6的端口,P0.0/AD0-P0.6/AD6接数码管的P0.0-P0.6的端口及RP1的P0.02-P0.68的接口。
每次按下计数键时触发INTO中断,中断程序累加计数,计数值显示在3只数码管上,按下清零键时数码管清零。
本设计利用AT89C51单片机的定时器/计时器定时和计数的原理,使其能精确计时。
设计中包括硬件电路的设计和系统程序的设计,其硬件电路主要有主控制器、计时与显示电路和复位电路等。
主控制器用AT89C52,显示电路采用共阴
极LED数码管显示计时时间。
利用中断系统使其能实现开始暂停的功能。
P2.5,P2.6,P2.7开口接3个按钮,分别实现开始,暂停,清零的功能。
电
路原理图设计最基本得要正确性,其次布局合理,最后在正确性和布局合理的前提下力求完美。
2.4设计原理图
如下图1-2所示
1-2电路原理图
2.5软件设计概述
在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。
把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可能性,使程序的结构层次一目了然。
应用系统的程序由包含多个模块的主程序和各种子程序
组成。
各程序模块都要完成一个明确的任务,实现某个具体的功能,如:
加计数延时,计数和显示等,在具体需要时调用相应的模块即可。
2.6源程序
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x00
};
ucharDisplay_Buffer[3]={0,0,0};
uintCount=0;
sbitClear_Key=P3^6;
voidShow_Count_ON_DSY()
Display_Buffer[2]=Count/100;
Display_Buffer[1]=Count%100/10;
Display_Buffer[0]=Count%10;
if(Display_Buffer[2]==0)
{
Display_Buffer[2]=0x0a;
if(Display_Buffer[1]==0)
{
Display_Buffer[1]=0x0a;
}
}
P0=DSY_CODE[Display_Buffer[0]];
P1=DSY_CODE[Display_Buffer[1]];
P2=DSY_CODE[Display_Buffer[2]];
}
voidmain()
P0=0xff;
P1=0xff;
P2=0xff;
/*IE=0x81;
*/
EA=1;
EX0=1;
IT0=1;
while
(1)
if(Clear_Key==0)
Count=0;
Show_Count_ON_DSY();
voidEX_INT0()interrupt0
Count++;
表2.1元件清单
3单片机的选用
本设计采用ATC89C51,STC89系列单片机是MCS-51系列单片机的派生产品。
它们在指令系统、硬件结构和片资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。
STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。
它提供的功能标准如表1-3
表1-3ATC89C51功能标
兼容MCS51指令系统
8K可反复擦写FlashROM
32个双向I/O口
256x8bit部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
ATC89C51引脚图如图1-4所示
图1-4ATC89C51
(1)主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
(2)外接晶振引脚(2根)
XTAL1(Pin19):
片振荡电路的输入端
XTAL2(Pin20):
片振荡电路的输出端
(3)控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的外部选通,接低电平从外部程序存储器读指令,如果接高电平则从部程序存储器读指令。
(5)可编程输入/输出引脚(32根)
ATC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
P0口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
4仿真
1打开原理图,双击AT89C51,出现如图1-5所示的对话框,点击图中的文件夹标示,添加之前用Keil生成的HEX文件
图1-5载入HEX文件
2点击原理图右下角的运行符号,然后点击计数键,就开始计数,如图1-7
图1-7计数108
总结
一周的单片机课程设计转眼即过,在这一周里,我过得忙碌而又充实,其中包含着快乐,也有辛酸。
我们选的设计题目是“INT0中断计数”。
我们认为它真正困难的地方是程序设计,不过在我们小组成员的同心努力下最终完成了。
我们刚选该题目时,真的是一头雾水,因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少。
不过,我们小组成员也没偷下懒,迅速分工去查阅和收集资料。
我们去了图书馆借一些参考书,上网找一些相关资料,并且请教指导老师。
通过一番整理和修改后,终于在电脑上仿真出来了。
当时我们的心情都是无比兴奋和快乐的,因为我们一周的辛苦没有白费。
这次设计使我把理论和实际有机的结合起来,锻炼了分析解决实际问题的本领,真正由知识到智能的转化。
这对我以后的工作和生活有很大的帮助。
虽说我们设计的时间上有些短暂,但我并没有因为这些困难而不认真做,相反我都在利用课余时间做这个设计尽自己最大的努力去完成设计,去查找相关的程序。
通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
在完成单片机课程设计后,我们发现我们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。
但通过学习这一次实践,增强了我们的动手能力,提高和巩固了单片机方面的知识。
从中增强了我们的团队合作精神,并让我们认识到把理论应用到实践中去是多么的重要。