zoukankan      html  css  js  c++  java
  • 51数码管动态显示程序调试经验

      今儿学习了动态数码管显示的知识,其实很简单,只要是首先让数码管逐个显示1,2,3,4...间隔1秒钟,用定时器0控制时间,未选也用一个table数组表示出来,然后减小间隔时间,我这用的是5ms显示效果不错,利用人眼的视觉暂留(<20ms),将东西完全显示在数码管上。

      注意:如果在设计硬件电路时候,有雨动态显示数码管时候,亮度较静态显示时候低,所以,限流电阻应取小一些。(具体电路网上应该找得到)

      调试经验如下:

      1.若keil调试出现乱码,还有出现invalid ...path原因:(1)工程文件名是否存在中文,最好修改为英文;(2)程序文件中是否出现中文状态下的字符,建议自己编写,或者直接在自己存放的子函数中(.c文件)直接复制粘贴过来

      2.中断服务程序中莫忘aa++;否则定时器不起作用

    /*
    ####################################################
    数码管(共阴)
      段选位 P2口
      片选位 P1.2  P1.1  P1.0
      格式         dp g f e d c b a

    P1口(片选位):
    0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07
     位1  位2  位3  位4  位5  位6  位7  位8
    P2口(数据位):
    0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f
      0    1    2    3    4    5    6    7    8    9
    0x77 0x7c 0x39 0x5e 0x79 0x71
      A    B    C    D    E    F
    ####################################################
    */
    #include<reg52.h>
    #define uchar unsigned char
    #define uint unsigned int

    uchar code duan[]={0x3f,0x06,0x5b,0x4f,
           0x66,0x6d,0x7d,0x07,
           0x7f,0x6f,0x77,0x7c,
           0x39,0x5e,0x79,0x71};
    uchar code wei[]={0x00,0x01,0x02,0x03,
          0x04,0x05,0x06,0x07};

    uchar numwe,numdu,aa;

    void main ()
    {
     /*# 定时器0初始化 #*/
     TMOD=0x01;            //1.选择定时器0,工作方式1(16位定时器,最大值65536)
     TH0=(65536-10000)/256; //2.对寄存器赋初值
     TL0=(65536-10000)%256;
     EA=1;
     ET0=1;
     TR0=1; 

     numwe=0;              //段位赋初值
     numdu=1;

     while(1)
     {  
      P1=wei[numwe];   //第1位数码管显示1
      P2=duan[numdu];
      if(aa==1)
      {
       aa=0;
       if(numwe==8)
        numwe=0;
       numwe++;
       P1=wei[numwe];
       if(numdu==8)
        numdu=0;
       numdu++;   
       P2=duan[numdu];
      } 
     } 
    }

    void timer0() interrupt 1
    {
     TH0=(65536-5000)/256; //中断服务程序中记得要对寄存器重装初值哦!
     TL0=(65536-5000)%256;
     aa++; 
    }

  • 相关阅读:
    ELK搭建
    php 高效日志记录扩展seaslog 的使用
    linux批量修改文件中包含字符串的查找替换
    goaccess
    mysql启动错误,提示crash 错误
    laravel config 配置无效
    地址重写 No input file specified的解决方法
    redis 一些操作命令
    RNN与LSTM
    最大熵推导LR
  • 原文地址:https://www.cnblogs.com/steararre/p/2393501.html
Copyright © 2011-2022 走看看