网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
搜索关键字: 所有资讯 行业动态 市场趋势 政策法规 新品发布 技术资讯 价格快报 展会资讯
  • 达普IC芯片交易网 > 新闻中心 > 设计应用 > 正文
  • RSS
  • 用AT89S51单片机来制作的手动计数器
    http://www.ic72.com 发布时间:2008/8/14 9:28:16

      1. 实验任务

      利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示。

      2。 系统板上硬件连线

      1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

      2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;

      3.把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;

      4. 程序设计内容

      1.单片机对按键的识别的过程处理

      2.单片机对正确识别的按键进行计数,计数满时,又从零开始计数;

      3.单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。

      4.通过查表方式,分别显示出个位和十位数字。

      5. 汇编源程序


      Count EQU 30H


      SP1 BIT P3.7


      ORG 0


      START: MOV Count,#00H


      NEXT: MOV A,Count


      MOV B,#10


      DIV AB


      MOV DPTR,#TABLE


      MOVC A,@A+DPTR


      MOV P0,A


      MOV A,B


      MOVC A,@A+DPTR


      MOV P2,A


      WT: JNB SP1,WT


      WAIT: JB SP1,WAIT


      LCALL DELY10MS


      JB SP1,WAIT


      INC Count


      MOV A,Count


      CJNE A,#100,NEXT


      LJMP START


      DELY10MS: MOV R6,#20


      D1: MOV R7,#248


      DJNZ R7,$


      DJNZ R6,D1


      RET


      TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH


      END


      7. C语言源程序


      #include <AT89X51.H>


      unsigned CHAR code table[]={0x3f,0x06,0x5b,0x4f,0x66,


      0x6d,0x7d,0x07,0x7f,0x6f};


      unsigned CHAR Count;

      void delay10ms(void)


      {


      unsigned CHAR i,j;


      for(i=20;i>0;i--)


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


      }

      void main(void)

      {

      Count=0;

      P0=table[Count/10];


      P2=table[Count%10];


      while(1)


      {


      if(P3_7==0)


      {


      delay10ms();


      if(P3_7==0)


      {


      Count++;


      if(Count==100)


      {


      Count=0;


      }


      P0=table[Count/10];


      P2=table[Count%10];


      while(P3_7==0);


      }


      }


      }


      }




    www.ic72.com 达普IC芯片交易网
  • 行业动态
  • 市场趋势
  • 政策法规
  • 新品发布
  • Baidu

    IC快速检索:abcdefghijklmnopqrstuvwxyz0123456789
    COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
    客户服务:service@IC72.com 库存上载:IC72@IC72.com
    (北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
    京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质