一种简易00-99计数器的设计与仿真

时间:2014-03-11

  摘要:本文通过单片机控制简易计数器的分析与研究,进行了硬件电路的设计及软件程序的设计,通过使用绘制电路图的软件和程序编译软件,不断进行测试和调试,基本完成系统的仿真。

  1 系统描述

  本系统利用AT89C51 单片机来制作一个手动计数器,在AT89C51 单片机的P3.2 管脚和P3.3 管脚各接一个轻触开关K1和K2,作为手动计数的按钮,用单片机的P0.0 - P0.7 接一个两位绿色共阴极数码管(7SEG-COM-CAT-GRN),作为00 - 99 计数的个位数和十位数显示。系统正常运行后显示00,按K1 键,数字加1,当计数到 99 时,再按 K1 键,又从00 开始计数。当计数到 99 时,按K2,计数为98,继续按K2,直到计数为00,由此实现正计数和倒计数的功能。本系统可用于竞技比赛中的计分,或者用于重要事件将要到来的倒计时。

  2 硬件电路设计

  硬件电路的设计是本系统能否实现所需功能的关键环节,在设计过程中须注意电路的整体布局、元器件的摆放、元器件的参数选择及电路的优化,具体电路图如1-1 所示。其中,X1 为12MHZ 的晶体振荡器,RX8 为排阻

  图1-1 计数器电路原理图:

  

  3 软件设计

  根据硬件电路的结构及功能要求,在分析所需算法和功能模块的基础上编写本系统的代码,要求代码尽可能的简洁易懂,并有在必要的地方写明注释。具体代码如下所示:

  #include<reg51.h>// 导入头文件

  unsigned b[10]={0x3f,0×06,0x5b,0x4f,0×66,0x6d,0x7d,0×07,0x7f,0x6f};//0-9 的编码

  void delay(void)// 延时子程序,延时1 秒

  {

  unsigned char i,j,k;for(i=20;i>0;i- )

  for(j=2;j>0;j-)

  for( k=250; k>0; k-);

  }

  void Inc_CNT ( void )// 按K1 键正计数,可从0 计到99

  {

  unsigned char x, y, z;

  for( x=0; x<10; x++){

  for( y=0; y<10; y++){

  if( (P3|0xfb)==0xfb ){

  for( z=0; z<22; z++){

  P2=0xf2;

  P0=b[x];

  delay( );// 调用延时子程序

  P2=0xf1;

  P0=b[y];

  delay( );

  }

  }

  else{

  P0 = 0x3f;

  P2 = 0×00;

  break;}}}}

  void Dec_CNT( void )// 按k2 键倒计数,可从99 计到00

  {

  unsigned char x, y, z;

  for( x=10; x>0; x-){

  for( y=10; y>0; y-){

  if((P3|0xf7)==0xf7){

  for(z=0; z<22;z++){

  P2=0xf2;

  P0=b[x-1];

  delay( );

  P2=0xf1;

  P0=b[y-1];

  delay( );}// 调用延时子程序

  }

  else {

  P0=0x3f;

  P2=0×00;

  break;}}}}

  void main( void )// 主函数

  {

  unsigned char key;

  P2=0×00;

  P0=0x3f;

  for(;;){

  P3|=0xf3;

  key=P3;

  if(key==0xfb)Inc_CNT();// 调用正计数函数

  else if(key==0xf7 )Dec_CNT();// 调用倒计数函数

  else{

  P2=0×00;

  P0=0x3f;}}}

  4 软硬件联调

  单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试过程中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试时基础,如果硬件调试不通过,软件设计则无从谈起。硬件的调试主要是把电路各种参数调整到符合设计要求。先排除硬件电路故障,包括设计性错误和公益性故障。一般原则是先静态后动态。利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。运行正确的仿真电路图如下所示。

  

  5  结语

  本系统利用AT89C51 单片机来制作一个手动计数器,在AT89C51 单片机的P3.2 管脚和P3.3 管脚各接一个轻触开关K1和K2,作为手动计数的按钮, 通过使用绘制电路图的软件和程序编译软件,不断进行测试和调试,从而证明了本系统可用于竞技比赛中的计分,或者用于重要事件将要到来的倒计时。(作者:淡海英)

上一篇:一种Pt100型铂电阻的高温度测量系统的研究
下一篇:基于DSP与ARM的双核系统通信接口设计的研究

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料