单片机实验3 中断定时器计数器实验_第1页
单片机实验3 中断定时器计数器实验_第2页
单片机实验3 中断定时器计数器实验_第3页
单片机实验3 中断定时器计数器实验_第4页
单片机实验3 中断定时器计数器实验_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西南科技大学实验报告课程名称: 单片机原理及应用A 实验名称: 中断、定时器/计数器实验 姓 名: 学 号: 班 级: 生医1401 指导教师: 雷华军 西南科技大学信息工程学院制实验题目数码管动态扫描显示驱动、键盘动态扫描驱动一、 实验目的1、 熟练巩固单片机开发环境KEIL界面的相关操作和PROTUES仿真软件的操 作,会使用HEX文件进行单片机的仿真。2、 了解定时器的原理和四种工作方式的使用方法,学习定时器的相关应用,包括产生信号和计数,利用定时器进行延时等。3、 进一步掌握熟练单个数码管以及多位数码管的显示原理,学会将01000的数字进行显示。4、 掌握利用单片机产生矩形方脉冲的相关

2、原理。二、 实验原理1、 定时器结构和原理 图 上图 为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。反相器,或门,与门共同构成启/停控制信号。TH和TL为加1计数器,TF为中断标志。每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。2、定时器工作方式 定时器共有四种工作方式分别为方式0方式3。 方式0:13位计数器,最大计数值为213个脉冲。 方式1:16位计数器,最大计数值为216个脉冲

3、。 方式2:8位自动重装计数器。该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。 方式3:仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。3、 定时器间隔1ms产生一个脉冲利用单片机1 P3.0口进行脉冲的输出,通过定时器进行端口定时控制,实现每1ms高低电平变换。就可以实现一个占空比为50%的矩形脉冲输出。对于定时器的定时功能实现,需要进行定时器模式选择,定时器初值设定。4、 利用中断进行脉冲的计数将单片机1 P3.0口输出的脉冲连接到单片机2的中断INT0口P3

4、.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数。 三、 实验步骤(一)实验详细步骤1、启动KEIL建立一个空白工程,然后命名文件。 2、新建源程序文件,输入程序代码并保存,然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。 3、通过设置生成HEX文件,保存。 4、启动Protues建立一个空白工程,然后命名文件5、进行电路的原理图连接并输入HEX文件进行仿真。(二)实验仿真原理图 图 图如图 为单片机1的脉冲产生系统,通过定时的定时控制,让P3.0口输出脉宽为1ms的方脉冲,对于定时器程序的初始化。TMOD = (TMOD&

5、amp;0XF0)|0X00; / 定时器模式0的选择s = 8192-11059.2/12;TH0 = s/32;TL0 = s%32; / 定时器的初值的设定如图 为单片机2的电路连接原理,单片机通过接受单片机1的方脉冲信号触发中断进行计数,没来一个脉冲记一次数,再通过数码管显示出来。四、 实验结果及分析图通过按下按键开始进行脉冲的产生和计数,如图左边为单片机1产生脉冲并通过数码管显示脉冲产生数,右边为单片机2接受脉冲同时也通过数码管显示脉冲接受数字。当按下按键时开始产生并传送脉冲,通过一个VSM counter timer进行计数验证的准确与否。按下按键后发现两个多位数码管同时显示并跳转

6、同样的数字,并且计数器也显示同样的数字。如图所示。 图最后通过示波器验证观察所产生的脉冲是否正确,通过调节示波器上的时间和幅度旋钮可以观察到矩形方波的产生。如图所示图问题一:运行电路时,数码管乱码 解决的方法:检查电路,发现程序中扫描信号端口错误,将扫描信号的端口顺序调换,重新运行。 问题二:定时器的时间设置问题 解决的方法:检查程序,发现是是定时器的初始化设置问题,在改动后,重新编译后在次运行电路,电路正常显示,符合要求。通过本次实验,通过实验我切身实际的进行代码的编写以及电路的仿真连接从中发现问题,解决问题,再而收获知识,获取经验。五、 体会通过本次的实验,在

7、前三个实验的基础上让我复习了知识点,也让我在次掌握了新的知识。在完成这次实验后,让我更加熟悉数码管的显示功能代码的实现。并且还学会了定时器中断的运用,学会了用更加精确的方式去进行定时延时操作。我觉得这次的课程实验让我知道,一次次的失败,并不会让我放弃去追求,相反它会引领着我去发现问题,从而解决问题,完成更深入的探索。也让我明白理论知识的重要性,并且与实际相结合,多动手,在实践中成长。所以我会很重视每一次的实验。我坚信:每次实验都会给我自身很大帮助。慢慢的积累点滴的知识,到最后就会多的。六、 附录1、 单片机1脉冲产生代码#include<STC12C5A60S2.h>unsigne

8、d char code ET10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned int AT,s;unsigned int a,b,c,d;void delay(int counter)int i,j;for(i = 0;i < 10;i+)for(j =0;j < counter;j+);void anjian(void) interrupt 0 /按键进行控制开始产生脉冲P30=1;TR0 =TR0;void Timer(void) interrupt 1/中断函数unsigned int count;s

9、= 8192-11059.2/12;TH0 = s/32;TL0 = s%32;if(+count >10)count = 0;P30=P30;/高低电平取反if(P30 = 0)AT+;if(AT > 9999)AT = 0; void main ()TMOD = (TMOD&0XF0)|0X00;/模式0选择s = 8192-11059.2/12;TH0 = s/32;TL0 = s%32; /初值设定TR0 = 0;ET0 = 1;IT0 = 1;EX0 = 1;EA = 1;/定时器的初始化while (1)if(AT<10) a=AT;P2 = 0xff;

10、/消除鬼影P1 = 0xf7;P2 = ETa; else if(AT<100)a=AT%10;P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT/10;P2 = 0xff; /消除鬼影P1 = 0xfb;P2 = ETb;delay(2); else if(AT<1000)a=AT%100%10; P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT%100/10;P2 = 0xff;/消除鬼影P1 = 0xfb;P2 = ETb;delay(2);c=AT/100; P2 = 0xff;

11、/消除鬼影P1 = 0xfd;P2 = ETc;delay(2);else if(AT<10000)a=AT%1000%100%10; P2 = 0xff;/消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT%1000%100/10;P2 = 0xff; /消除鬼影P1 = 0xfb;P2 = ETb;delay(2);c=AT%1000/100;P2 = 0xff;/消除鬼影P1 = 0xfd;P2 = ETc;delay(2);d=AT/1000;P2 = 0xff; /消除鬼影P1 = 0xfe;P2 = ETd;delay(2); / 数码管进行数字显示部分

12、 2、 单片机2接受脉冲代码#include<STC12C5A60S2.h>unsigned char code ET10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned int AT;unsigned int a,b,c,d;void delay(int counter)int i,j;for(i = 0;i < 10;i+)for(j =0;j < counter;j+);void anjian(void) interrupt 0/中断函数,触发一次计数一次AT+;void main ()IT0

13、= 1;EX0 = 1;EA = 1; /中断0初始化while (1)if(AT<10) a=AT;P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa; else if(AT<100)a=AT%10;P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT/10;P2 = 0xff; /消除鬼影P1 = 0xfb;P2 = ETb;delay(2); else if(AT<1000)a=AT%100%10; P2 = 0xff; /消除鬼影P1 = 0xf7;P2 = ETa;delay(2);b=AT%100/10;P2 = 0xff;/消除鬼影P1 = 0xfb;P2 = ETb;delay(2);c=AT/100; P2 = 0xff; /消除鬼影P1 = 0xfd;P2 = ETc;delay(2);else if(AT<10000)a=AT%1000%100%10; P2 =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论