用计数器中断实现100以内的按键计数1.docVIP

  • 50
  • 0
  • 约1.84千字
  • 约 5页
  • 2017-09-02 发布于浙江
  • 举报

用计数器中断实现100以内的按键计数1.doc

用计数器中断实现100以内的按键计数1

3.33 用计数器中断实现100以内的按键计数 一. 单片机系统功能简介: 本例利用计数器中断实现按键计数,这与此前的按键计数程序看起来比较相似,但是用方法完全不同。 本例用T0计数器中断实现按键计数,由于计数寄存器初值为1,因此P3.4引脚的每次负跳变都会触发T0中断,实现计数值累加。 二. 单片机系统硬件电路设计: 2.1 proteus原理图: 2.2 原件清单: 器件名: 数量 芯片 STC89C51 1个 电阻10K 1个 电容 22PF 2个 排阻RESPACK-8 1个 数码管 2个 按钮开关 2个 线路板 1块 晶振 12MHZ 1个 电容 10UF 1个 三. 软件设计: 3.1 主程序流程图: 3.2 程序清单: #include reg51.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; uchar Count=100; void main() { P0=0x00; P2=0x00; TMOD=0X06; TH0=TL0=256-1; ET0=1; EX0=1; EA=1; IP=0X02; IT0=1; TR0=1; while (1) { P0=DSY_CODE[Count/10]; P2=DSY_CODE[Count%10]; } } void Clear_Counter()interrupt 0 { Count=0; } void Key_Counter() interrupt 1 { Count=(Count-1)%100; } 四.系统调试 4.1 在PROTEUS7.5仿真步骤 将程序在KEIL中编译,直到达到要求的功能为止; 在PROTEUS中绘制硬件图(在PROTEUS仿真时可以不添加最小系统电路;实际电路中需要); 将KEIL C中编译好的HEX文档加载到PROTEUS中; 按下K1开始计数,按下K2可以清零。 仿真效果:按下K1可以看到数码管开始计数,按一次记一次,从0-99,按下K2按键,可以看到数码管变0。 4.2硬件电路调试步骤 1 按照原理图焊接好线路板,布线规范; 2 利用单片机开发工具将程序的HEX文档,烧写入芯片当中; 3 将芯片插入在芯片的底座当中; 4 将电路的VCC端接到电池盒的正极,将接地端接到电池盒的负极; 5 分别调试按键K1 ,K2观察效果; 6 如果没有效果或者效果不对插错; 实物图: 效果图: 运行结果:按下K1数码管开始计数,按一次计数1次,从0可以最大计数到99,再按下K2,数码管显示为0,可以重新计数。 五.单片机设计感受: 这是我第一次做单片机实验,说起来有一些紧张和新奇。在此之前我并没有接触过单片机,我本以为与之前的光学实验及其它实验差不多,可我做完设计之后,我就改变了这个看法。 单片机实验要求的是一种思维的创新,而不是简单的重复老师所说的实验步骤。因此第一次实验,实验老师向我们讲解了KEILC的情况及使用方法和技巧。编完程序之后,知道我们如何使用PROTEUS达到将编好的程序输入到单片机中来使其运行。 经过我的不断努力,我终于实现了简单的用计数器中断实现100以内的按键计数的仿真运行。我感到兴奋极了,我得到莫大成就感和自信。但在做实物的时候,由于焊接技术的欠缺,有几个地方接线接的很不好,不能正常运行。虽然很努力了,但是依旧不能运行。 在这次实验中,我体会到了合作的重要性。一个人在实现这一系列的过程,要花费很多精力和时间。群策群力,可以使我更好、更快地完成我的工作。在此期间,我可以更好知道自己的不足和缺陷,来得到改正。还可以知道自己的优势所在,把握好自己的优势。 以上便是我做这次实验的心得体会。

文档评论(0)

1亿VIP精品文档

相关文档