久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3318|回復: 7
收起左側

我寫的這個單片機程序,為什么數碼管顯示一樣的,還是亂碼 顯示函數怎么寫?

[復制鏈接]
ID:158886 發表于 2019-7-9 23:44 | 顯示全部樓層 |閱讀模式
這張是顯示的圖紙!
   QQ圖片20190709234230.jpg

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit led1=P3^3;
  6. sbit led=P1^5;
  7. sbit led2=P3^6;
  8. sbit fan=P1^6;
  9. sbit ptc=P3^4;
  10. sbit we1=P2^6;
  11. sbit we2=P2^7;
  12. sbit we3=P2^1;
  13. sbit we4=P2^0;
  14. sbit we5=P2^2;
  15. sbit fm=P2^5;
  16. sbit sw1=P1^0;
  17. sbit sw2=P1^4;
  18. sbit sw3=P3^5;
  19. sbit sw4=P3^7;
  20. uchar code duma[]={0x3f,0x06,0x5b,0x4f,
  21.                                    0x66,0x6d,0x7d,0x07,
  22.                                    0x7f,0x6f,0x77,0x7c,
  23.                                    0x39,0x5e,0x79,0x71
  24.                                    };
  25.                               
  26.                                  
  27. uchar  counter,   time,time_counter, h;                              
  28.                               
  29.                               
  30.                               
  31. uchar i ;

  32. void delay(uint z);
  33. void delay(uint z)
  34. {
  35.   while (z--);

  36. }
  37. void display(uchar mshi,mge,sge,sshi,hge,hshi )
  38. {      
  39.   mge=time_counter%10;
  40.   mshi=time_counter/10;
  41.   sge=time/10;
  42.   sshi=time%10;
  43.   hge=h/10;
  44.   hshi=h%10;

  45.    P0=0XFF;
  46.    we2=0;
  47.   P0=duma[mshi];
  48.   delay(100);


  49.    P0=0XFF;
  50.    we1=0;
  51.    P0=duma[mge];
  52.   delay(100);

  53.     P0=0XFF;
  54.            we4=0;
  55.   P0=duma[sshi];
  56.   delay(100);

  57.    P0=0XFF;
  58.    we3=0;
  59.   P0=duma[sge];
  60.   delay(100);

  61. /*  P0=0XFF;
  62. wea=0;
  63. web=0;
  64. wec=1;
  65.   P0=duma[hge];
  66.   delay(100);

  67.    P0=0XFF;
  68. wea=1;
  69. web=0;
  70. wec=1;
  71.   P0=duma[hshi];
  72.   delay(100);*/
  73. }

  74. void keypros()
  75. {
  76.         if(sw1==0)
  77.         {
  78.            delay(10);
  79.            if(sw1==0&&time!=60)
  80.            {
  81.                    time+=1;
  82.                            
  83.                   while(!sw1);
  84.            }
  85.         }      
  86.          if(sw2==0)
  87.          {
  88.           delay(10);
  89.           if(sw2==0&&time!=0)
  90.           {
  91.                   time-=1;
  92.                  
  93.                    while(!sw2);
  94.           }
  95.          }
  96.          if(sw3==0)
  97.          {
  98.            delay(10);
  99.            if(sw3==0)
  100.            {
  101.                      TR1=0;
  102.                   led=1;
  103.                   time=0;
  104.                   time_counter=0;
  105.                   
  106.                   
  107.                   fan=1;
  108.                   ptc=1;
  109.                 while(!sw3);
  110.                
  111.            }
  112.          
  113.          
  114.          
  115.          }
  116.           if(sw4==0)
  117.           {
  118.            delay(10);
  119.          
  120.            if(sw4==0)
  121.            {
  122.                    TR1=~TR1;
  123.                 led=~led;
  124.                  
  125.                  
  126.                 ptc=~ptc;
  127.                 fan=~fan;
  128.                 while(!sw4);
  129.            }
  130.          
  131.           }
  132. }

  133. void init()
  134. {
  135.   TMOD=0x10;
  136.   TH1=0x4b;
  137.   TL1=0x00;
  138.   TR1=0;



  139. }


  140. void main()
  141. {      

  142.             
  143.                          init();
  144.                         led2=0;
  145.                         
  146.     while(1)
  147.         {      
  148.         keypros();
  149.                  
  150.    if(TF1==1)
  151.    { TF1=0;
  152.             TH1=0x4b;
  153.      TL1=0x00;
  154.             counter++;


  155.    }
  156.          if(counter==20)
  157.         {
  158.          counter=0;
  159.          time_counter++;
  160.           led1=~led1;
  161.         }
  162.         if(time_counter==60)
  163.           {
  164.                 time--;
  165.                  time_counter=0;
  166.                
  167.         }         
  168.         if(time==0)
  169.            {   
  170.            TR1=0;
  171.                 led=1;
  172.                    led1=1;
  173.                 ptc=1;
  174.                 fan=1;      
  175.                time=60;
  176.                   
  177.            }

  178.                   display();
  179.      }               
  180.          
  181.          
  182. }   
復制代碼



回復

使用道具 舉報

ID:158886 發表于 2019-7-10 15:58 | 顯示全部樓層
顯示亂碼我知道了,是數碼管是共陽極的,我用的共陰極的表,才導致顯示亂碼,但這個顯示函數怎么寫,進位顯示數碼管,
回復

使用道具 舉報

ID:205483 發表于 2019-7-10 23:41 | 顯示全部樓層

RE: 我寫的這個單片機程序,為什么數碼管顯示一樣的,還是亂碼 顯示函數怎么寫?

你這個太亂了,一個注澤都沒,wea、web、wec也不知道是什么
  •    P0=0XFF;
  • wea=1;
  • web=0;
  • wec=1;
  •   P0=duma[hshi];
  •   delay(100);*/



  •    P0=0XFF;
  •    we1=1;  //位1開顯示
  •    P0=duma[mge];
  •    delay(100);
  •    we1=0;  //位1關顯示

你顯示完一個數碼管,要把位清0,不然一輪下來所有位都在顯示,會亂碼。
進位不知道你指的什么,counter,   time,time_counter, h; 看不出來你這幾個變量的具體作用


  •    if(TF1==1)
  •    {
  •        TF1=0;
  •        TH1=0x4b;
  •        TL1=0x00;
  •        counter++;
  •    }
  •                   //這個計數的值太小了,8M的話才5ms,1秒得counter得加200次,
  •   if(counter==20) //0.1秒進一次,改成counter==200,就是1S進一次 ,如果你是設計秒表就不用改
  •    {
  •        counter=0;
  •        time_counter++;
  •        led1=~led1; /
  •    }





回復

使用道具 舉報

ID:462827 發表于 2019-7-11 10:11 | 顯示全部樓層
多只數碼管的顯示,一是要動態掃描,二是要消影。
回復

使用道具 舉報

ID:158886 發表于 2019-7-12 14:45 | 顯示全部樓層
謝謝,知道了,謝謝
回復

使用道具 舉報

ID:158886 發表于 2019-7-12 14:46 | 顯示全部樓層
hantu 發表于 2019-7-11 10:11
多只數碼管的顯示,一是要動態掃描,二是要消影。

謝謝,上面的顯示函數寫成了靜態顯示了,改了動態就可以了,
回復

使用道具 舉報

ID:158886 發表于 2019-7-12 14:47 | 顯示全部樓層
素還真.____ 發表于 2019-7-10 23:41
你這個太亂了,一個注澤都沒,wea、web、wec也不知道是什么
  •    P0=0XFF;
  • wea=1;

  • WE,就是位選信號。
    回復

    使用道具 舉報

    ID:158886 發表于 2019-7-12 14:54 | 顯示全部樓層
      #include<reg52.h>
    #include<intrins.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit led1=P3^3;
    sbit led=P1^5;
    sbit led2=P3^6;
    sbit fan=P1^6;
    sbit ptc=P3^4;
    sbit we1=P2^6;
    sbit we2=P2^7;
    sbit we3=P2^1;
    sbit we4=P2^0;
    sbit we5=P2^2;
    sbit fm=P2^5;
    sbit sw1=P1^0;
    sbit sw2=P1^4;
    sbit sw3=P3^5;
    sbit sw4=P3^7;
    uchar code duma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
    0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
                                       };
                                   
                                     
    uchar  counter,   time,time_counter, h;                               
                                   
                                   
                                   
    uchar i ;

    void delay(uint z);
    void delay(uint z)
    {
      while (z--);

    }
    void display(uchar mshi,uchar mge,uchar sge,uchar sshi,uchar hge,uchar hshi )
    {       
      mge=time_counter%10;
      mshi=time_counter/10;
      sge=time/10;
      sshi=time%10;
      hge=h/10;
      hshi=h%10;

      
       P0=0XFF;
       we1=0;
       we2=1;
       we3=1;
       we4=1;
        P0=duma[mge];
            delay(100);
       
       

      P0=0XFF;
      we1=1;
       we2=0;
       we3=1;
       we4=1;
       P0=duma[mshi];
       delay(100);
      
      

       P0=0XFF;
       we1=1;
       we2=1;
       we3=0;
       we4=1;
       P0=duma[sshi];
       delay(100);
       
      


       

      P0=0XFF;
      we1=1;
       we2=1;
       we3=1;
       we4=0;
      P0=duma[sge];
       delay(100);
       
      
    }

    void keypros()
    {
          

    if(sw1==0)
            { delay(10);
             
               if(sw1==0&&time!=60)
               {
                       time+=1;
                     fm=0;
                     delay(10000);
                     fm=1;
                     delay(10000);          
                      while(!sw1);
               }
         }       
    if(sw2==0)
    {
              delay(10);
              if(sw2==0&&time!=0)
              {
                      time-=1;
                    fm=0;
                     delay(10000);
                     fm=1;
                     delay(10000);
                       while(!sw2);
              }
    }
    if(sw3==0)
             {       
               delay(10);
               if(sw3==0)
               { fm=0;
                     delay(10000);
                     fm=1;
                     delay(10000);
                         TR1=0;
                      led=1;
                      time=0;
                      time_counter=0;
                      fan=1;
                      ptc=1;
                    while(!sw3);
               }       
              
    }
    if(sw4==0)
    {                
               delay(10);
              
               if(sw4==0)
               {
                       TR1=~TR1;
                    led=~led;
                    fm=0;
                     delay(10000);
                     fm=1;
                     delay(10000);
             ptc=~ptc;
                    fan=~fan;
                    while(!sw4);
               }
    }
    }
    void init()
    {
      TMOD=0x10;
      TH1=0x4b;
      TL1=0x00;
      TR1=0;
    }


    void main()
    {       

                 
                             init();
                            led2=0;
                            
        while(1)
            {       
            keypros();
                     
       if(TF1==1)
       { TF1=0;
                TH1=0x4b;
         TL1=0x00;
                counter++;

       
       }
             if(counter==20)
            {
             counter=0;
             time_counter++;
              led1=~led1;
            }
            if(time_counter==60)
              {
                    time--;
                   
                     time_counter=0;
                   
            }          
            if(time==0)
               {   
               TR1=0;
                    led=1;
                       led1=1;
                    ptc=1;
                    fan=1;       
                   time=60;
                      
               }

                      display();
         }               
             
              
    }        現
      這個是正常顯示,,這個程序是60分鐘,倒計時,時間可以調,時間到停止輸出   
    LED1,FAN風扇,PTC加熱,都停止輸出,這個程序是用在艾灸上,謝謝大家指點!有你們真好!
    回復

    使用道具 舉報

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

    Powered by 單片機教程網

    快速回復 返回頂部 返回列表
    主站蜘蛛池模板: 日本午夜精品一区二区三区 | 久久久美女| 精品国产一区二区三区久久久久久 | 国产欧美一区二区三区久久手机版 | 中文字幕在线视频一区二区三区 | 夜夜操天天艹 | 亚洲aⅴ | 亚洲欧美在线一区 | 自拍第一页 | 日韩一区二区三区在线看 | 久久人人爽人人爽 | 欧美色欧美亚洲另类七区 | 电影91久久久 | 成人免费精品视频 | 99精品久久 | 久久精品久久综合 | 久久久久久国产精品免费免费狐狸 | 精品国产乱码一区二区三区 | 五月婷婷丁香婷婷 | 欧美色欧美亚洲另类七区 | 狠狠插天天干 | aaaa一级毛片 | 国产精品日韩欧美一区二区 | 日本成人久久 | 亚洲国产成人av | 成人精品视频免费 | 亚洲在线视频 | 日韩中文字幕在线观看 | 久久久www成人免费精品 | 在线一区二区三区 | 欧美精品在线免费观看 | 麻豆av在线免费观看 | 黄色a视频 | 日韩一及片 | 青青草av网站| 欧美一区二区三区视频 | 超碰免费在 | 欧美一区二区三区四区五区无卡码 | www.日韩系列 | 国产日韩欧美在线播放 | 亚洲影音先锋 |