INT0中断计数.docx
- 文档编号:4267357
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:20
- 大小:917.01KB
INT0中断计数.docx
《INT0中断计数.docx》由会员分享,可在线阅读,更多相关《INT0中断计数.docx(20页珍藏版)》请在冰豆网上搜索。
INT0中断计数
1单片机基础知识
1.1单片机的定义
所谓的单片机是将计算机的基本部件微型化并集成到一块芯片上,具备独特功能的微型计算机,通常片内都含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。
单片机全称为单片微型计算机,又称微控制器或嵌入式控制器。
1.2单片机的基本组成
1单片机与现代微型计算机一样,结构均采用冯诺依曼提出的“存储程序”思想,即程序和数据都被放在内存中,采用二进制代替十进制进行运算和存储程序。
一个最简单的单片机由以下五部分组成:
(1)中央处理器CPU,包括运算器,控制器和寄存器组;
(2)存储器,包括ROM和RAM;
(3)输入输出(I/O)接口,它与外部输入输出设备相连;
(4)电源和时钟电路。
基本结构图如图1.1所示。
图1.1单片机的基本结构
51系列单片机在功能上有基本型和增强型两类。
它具有体积小、功能全、面向控制、开发应用方便等特点,在工业实时控制、智能控制、测控等方面得到广泛应用。
2以8051为例介绍其功能和结构,它的内部结构由8大部分组成:
(1)一个8位中央处理器CPU.CPU的内部结构是由算术逻辑运算单元、累加器、程序状态字寄存器、堆栈指针、寄存器、程序计数器、指令寄存器、暂存器等部件组成,是单片机的核心部件。
(2)128个字节的片内数据存储器RAM
(3)3KB的片内程序存储器ROM或EPROM
(4)18个特殊功能寄存器SFR
(5)4个8位并行输入输出I/O接口:
P0、P1、P2、P3。
(6)1个串行I/O接口,完成单片机与其他微机之间的串行通信。
(7)2个16位定时器/计数器T0、T1。
(8)具有5个中断源,2个可编程优先级的中断系统,它可以接收外部中断申请,定时器/计数器中断申请,串行接口中断申请。
1.3单片机的特点
1单片机与通用微机相比,具有以下优点:
(1)控制功能强
(2)抗干扰性强,可靠性高,工作温度范围宽
(3)开发周期短,性价比高,易于产品化
2微型计算机的出现是电子数字计算机广泛应用到人们日常工作、生活领域中去的一个重大的转折点。
3单片微型计算机简称为单片机。
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
中央处理部件(CPU)、存储器(RAM,ROM)、定时器/计数器、各种输入/输出(I/O)接口(如并行I/O口、串行I/O口和A/D转换器)等,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
4单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中。
他支持汇编和C的混合编程,同时具备强大的软件仿真和硬件仿真功能。
Protues能够很方便的和KEIL、MatlabIDE等编译模拟软件结合。
Proteus提供了大量的元件库有RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件,它可以仿真单片机和周边设备,可以仿真51系列、AVR,PIC等常用的MCU,与keil和MPLAB不同的是它还提供了周边设备的仿真,只要给出电路图就可以仿真。
1.3.1Protues的特点
Proteus软件具有其它EDA工具软件的功能。
这些功能是:
(1)原理布图
(2)PCB自动或人工布线
(3)SPICE电路仿真
具有3大功能模块:
(1)—个易用而又功能强大的ISIS原理布图工具;
(2)PROSPICE混合模型SPICE仿真;
(3)ARESPCB设计.
1.3.2软件内部结构
Proteus提供了丰富的资源:
(1)Proteus可提供的仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
(2)Proteus可提供的仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器可以在一个电路中随意的调用。
(3)除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。
这些都尽可能减少了仪器对测量结果的影响。
(4)Proteus可提供的调试手段Proteus提供了比较丰富的测试信号用于电路的测试这些测试信号包括模拟信号和数字信号。
2Keil软件及Protues软件的应用
2.1Keil软件的应用步骤
1建立工程文件
2汇编,调试系统程序
Keil单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。
在集成开发环境中选择菜单“File→New”、单击对应的工具按钮或者快捷键Ctrl+N将打开一个新的文本编辑窗口,完成汇编语言源文件的输入,并且完成源程序向当前工程的添加。
然后在集成开发环境中选择菜单“File→SaveAs”可以完成文件的第一次存储。
注意,汇编语言源文件的扩展名应该是“ASM”,它应该与工程文件存储在同一文件夹之内。
在完成文件的第一次存储以后,当对汇编语言源文件又进行了修改,再次存储文件则应该选择菜单“File→Save”,单击对应的工具按钮或者快捷键Ctrl+S实现文件的保存。
接着的工作需要把汇编语言源文件加入工程之中。
选择工程管理器窗口的子目“SourceGroup1”,再单击鼠标右键打开快捷菜单。
在快捷菜单中选择“AddFiletoGroup‘SourceGroup1’”,加入文件对话框被打开。
在这个对话框的“查找范围(I)”下拉列表框中选择存储汇编语言源文件的文件夹,在“文件类型(T)”下拉列表框选择“AsmSourcefile(*.a*;*.src)”,这时存储的汇编语言源文件将显示出来。
双击要加入的文件名或者选择要加入的文件名再单击“Add”按钮即可完成把汇编语言源文件加入工程。
文件加入以后,加入文件对话框并不消失,更多的文件也可以利用它加入工程。
如果不需要加入其它文件,单击“Close”按钮可以关闭加入文件对话框。
这时工程管理窗口的文件选项卡中子目录“SourceGroup1”下出现一个汇编语言源文件。
需要注意,当把汇编语言源文件加入工程但还没有关闭加入文件对话框,这时有可能被误认为文件没有成功地加入工程而再次进行加入操作,系统将显示所需的文件已经加入的提示。
在这种情况下,单击提示框中的“确定”按钮,再单击“Close”按钮可以关闭加入文件对话框。
3编译源程序,出现错误时,返回上一级对错误更改后重新编译,直到没有错误为止。
2.2Protues软件的应用步骤
1Protues打开后会出现以下窗口界面,如图2.1所示:
图2.1Protues窗口界面
2各个部分的功能介绍:
(1)原理图编辑窗口(TheEditingWindow):
顾名思义,它是用来绘制原理图的。
蓝色方框内为可编辑区,元件要放到它里面。
注意,这个窗口没有滚动条,可用预览窗口来改变原理图的可视范围。
(2)预览窗口(TheOverviewWindow):
它可显示两个内容,一个是:
当你在元件列表中选择一个元件时,它会显示该元件的预览图;另一个是:
当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图,并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。
(3)模型选择工具栏(ModeSelectorToolbar):
主要模型(MainModes):
①选择元件(components)(默认选择的)
②放置连接点
③放置标签(用总线时会用到)
④放置文本
⑤用于绘制总线
⑥用于放置子电路
⑦用于即时编辑元件参数(先单击该图标再单击要修改的元件)
(4)2D图形(2DGraphics):
①画各种直线
②画各种方框
③画各种圆
④画各种圆弧
⑤画各种多边形
⑥画各种文本
⑦画符号
⑧画原点等
(5)元件列表(TheObjectSelector):
用于挑选元件(components)、终端接口(terminals)、信号发生器(generators)、仿真图表(graph)等。
举例,当你选择“元件(components)”,单击“P”按钮会打开挑选元件对话框,选择了一个元件后(单击了“OK”后),该元件会在元件列表中显示,以后要用到该元件时,只需在元件列表中选择即可。
(6)方向工具栏(OrientationToolbar):
旋转:
旋转角度只能是90的整数倍。
翻转:
完成水平翻转和垂直翻转。
使用方法:
先右键单击元件,再点击(左击)相应的旋转图标。
(7)仿真工具栏
仿真控制按钮
①运行
②单步运行
③暂停
④停止
3添加元件到元件列表中,如图2.2所示:
图2.2元件添加窗口
4添加元件和连线如图2.3
图2.3连线图
2.3用软件仿真
1打开KeiluVision3,新建Keil项目,选择AT89C51单片机作为CPU,新建汇编源文件,编程序,并将其导入到SourceGroup1中。
在OptionsforTargt对话窗口中,选中Output选项卡中的CreatHEXFile选项。
编译汇编源程序,改正程序中的错误。
2在Protues中,选中AT89C51并单击鼠标左键,打开EditCompont对话框,在此窗口中
ProgramFile栏中,选择先前用Keil生成的HEX文件。
如图2.4所示:
图2.4载入HEX文件
3INT0中断计数
3.1设计任务
用AT89C51及电阻、电容、晶闸管、数码管、排阻等实现中断计数。
INTO中断计数,每次按下计数键时触发INTO中断,中断程序累加计数,计数值显示在3只数码管上,按下清零键时数码管清零。
3.2硬件设计
3.2.1设计思路
用单片机的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只数码管上,按下清零键时数码管清零。
3.2.2设计原理图
3.1原理图
3.2.3源程序
#include
#defineucharunsignedchar
#defineuintunsignedint
Ucharcode
DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
ucharDSY_Buffer[]={0,0,0};
ucharCount=0;
sbitClear_Key=P3^6;
voidShow_Count_ON_DSY()
{
DSY_Buffer[2]=Count/100;
DSY_Buffer[1]=Count%100/10;
DSY_Buffer[0]=Count%10;
if(DSY_Buffer[2]==0)
{
DSY_Buffer[2]=0x0a;
if(DSY_Buffer[1]==0)
DSY_Buffer[1]=0x0a;
}
P0=DSY_CODE[DSY_Buffer[0]];
P1=DSY_CODE[DSY_Buffer[1]];
P2=DSY_CODE[DSY_Buffer[2]];
}
voidmain()
{
P0=0x00;
P1=0x00;
P2=0x00;
IE=0x81;
ITO=1;
while
(1)
{
if(Clear_Key==0)Count=0;
Show_Count_ON_DSY();
}
}
voidEX_INT0()interrupt0
{
Count++;
}
表2.1元件清单
3.2.4设计过程
1工程的建立
(1)打开Keil软件,然后点击P工程(Project)出现如图3.3所示的下拉菜单:
图3.3新建工程
(2)点击新建工程后(NewProject)出现如图3.4所示的对话框:
填入新建工程名,然后保存。
图3.4保存新建工程名
(3)选择单片机类型如图3.5所示:
图3.5选择单片机类型
(4)点击Atmel前面的+出现如图3.6所示的对话框,选择单片机的具体类型(AT89C51),然后点击确定。
图3.6选择单片机具体类型
2项目的建立
之前我们的工程已经建立好了,接下来就是向里面填加项目了的,过程如下列图示,单
击F文件(File)→新建(New)如图3.7所示:
图3.7新建项目
3文件的保存与添加
(1)在上述新建的TXT部分填写程序,如图3.8:
图3.8填写程序
(2)把建好的项目添加到工程里,先点击Target前面的“+”然后右击SourceGroup1如图3.9:
图3.9把新建项目添加到工程
(3)选中txt.c,点击添加,确定后点击close,如图3.10所示:
图3.10添加txt.c的文件
(4)右键点击Target1,选中Optionsfor‘Target1’,如图3.11所示:
图3.11载入目标程序
(5)点击上图的Optionsfor‘Target1’后出现如图3.12所示的对话框,点击输出,选中“创建HEX文件”
图3.12创建TEX文件
(6)点击
图标生成如图3.13右下角所示的提示
图3.13程序分析
3.2.5仿真
1打开原理图,双击AT89C51,出现如图3.14所示的对话框,点击图中的文件夹标示,添加之前用Keil生成的HEX文件
图3.14载入HEX文件
2点击原理图右下角的运行符号,然后点击计数键,就开始计数,如图3.15、3.16所示:
图3.15计数8
图3.16计数15
3点击原理图中的清零键则系统清零,如图3.17所示:
图3.17清零图
总结
一周的单片机课程设计转眼即过,在这一周里,我过得忙碌而又充实,其中包含着快乐,也有辛酸。
我们选的设计题目是“INT0中断计数”。
我们认为它真正困难的地方是程序设计,不过在我们小组成员的同心努力下最终完成了。
我们刚选该题目时,真的是一头雾水,因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少。
不过,我们小组成员也没偷下懒,迅速分工去查阅和收集资料。
我们去了图书馆借一些参考书,上网找一些相关资料,并且请教指导老师。
通过一番整理和修改后,终于在电脑上仿真出来了。
当时我们的心情都是无比兴奋和快乐的,因为我们一周的辛苦没有白费。
这次设计使我把理论和实际有机的结合起来,锻炼了分析解决实际问题的本领,真正由知识到智能的转化。
这对我以后的工作和生活有很大的帮助。
虽说我们设计的时间上有些短暂,但我并没有因为这些困难而不认真做,相反我都在利用课余时间做这个设计尽自己最大的努力去完成设计,去查找相关的程序。
通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
在完成单片机课程设计后,我们发现我们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。
但通过学习这一次实践,增强了我们的动手能力,提高和巩固了单片机方面的知识。
从中增强了我们的团队合作精神,并让我们认识到把理论应用到实践中去是多么的重要。
致谢
一周的单片机课程设计已经接近尾声,在这一周的设计过程中老师和同学们给了我很大的帮助和指导,让我顺利的完成了这次课程设计。
在这次课程设计中我学到了很多在上课中学不到的知识,课程设计真正的锻炼了我的单片机编程能力和动手能力。
本论文是在XX老师的亲切关怀和悉心指导下完成的。
他以严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。
从课题的选择到设计的最终完成,杨老师都始终给予我细心的指导和不懈的支持。
在此谨向杨老师致以诚挚的谢意和崇高的敬意。
在此,我还要感谢在一起愉快的度过设计生活的小组成员XXX、XXX,正是由于他们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。
同时我也很感谢学校为我们提供的各种设施,正是由于学校提供的实验仪器和设备,我们才能顺利的完成此次的课程设计。
参考文献
[1]李光飞,楼然苗.51系列单片机设计实例,北京航空航天大学出版社,2003年3月。
[2]朱定华.单片机原理及接口技术,电子工业出版社,2001年4月。
[3]赵茂泰.智能仪器原理及应用,电子工业出版社,2004年2月。
[4]苏家健.单片机原理及应用技术,高等教育出版社,2004年11月。
[5]张毅坤.单片微型计算机原理及应用,西安电子科技大学出版社,1998年。
[6]余锡存,曹国华.单片机原理及接口技术,陕西:
西安电子科技大学出版社,2000年7月。
[7]毕万新.单片机原理及接口技术,大连理工出版社,2002年。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- INT0 中断 计数