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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3946|回復: 2
打印 上一主題 下一主題
收起左側

數(shù)碼管同時閃爍的單片機程序問題,請教大家,謝謝

[復制鏈接]
跳轉到指定樓層
樓主
ID:482058 發(fā)表于 2019-12-16 08:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
用定時器實現(xiàn)兩個數(shù)碼管同時點亮的程序:


if(smgtime==10)  
      {
          smg_show(10);
        WE_1=1;
        WE_2=0;
        smg_show(data/10);
      }
      if(smgtime==20)
      {   smg_show(10);
        WE_1=0;
        WE_2=1;
        smg_show(data%10);
        smgtime=0;

      }


現(xiàn)在想讓數(shù)碼管實現(xiàn)閃爍的功能,兩個數(shù)碼管按照一定的頻率閃爍,在同時點亮的基礎上加了一個關閉數(shù)碼管的功能,我是這樣編寫的,
if(smgtime==10)  
      {
          smg_show(10);
        WE_1=1;
        WE_2=0;
        smg_show(data/10);
      }
      if(smgtime==20)
      {   smg_show(10);
        WE_1=0;
        WE_2=1;
        smg_show(data%10);

      }
      if(smgtime==30)
      {
          smg_show(10);
          smgtime=0;
      }


出現(xiàn)的問題是,第二個數(shù)碼管的亮度比第一個數(shù)碼管亮度明顯,第一個數(shù)碼管出現(xiàn)明顯的閃爍,第二個數(shù)碼管閃爍不明顯。硬件電路是這樣設計的,
74HC573驅動段選,數(shù)碼管是共陰極的,單片機通過三極管來控制公共端。
現(xiàn)在問題不知道出現(xiàn)在哪里,請大家?guī)臀曳治鲆幌拢x謝。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:470332 發(fā)表于 2019-12-16 10:25 | 只看該作者
延時太多了
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 2019-12-16 15:28 | 只看該作者
多位數(shù)碼管顯示電路分靜態(tài)顯示和動態(tài)顯示,要實現(xiàn)單個閃爍或多個同時閃爍并不難。只要在正常顯示的基礎上按閃爍頻率的1/2時間給段碼驅動端送消隱碼即可。共陰數(shù)碼管送0x00,共陽數(shù)碼管送0xff。數(shù)碼管亮度不均勻或閃爍有差異是因為顯示電路或顯示代碼本身不正常造成的。給你一個示例,用簡單的4位時鐘改成閃爍顯示以便于理解。注釋掉的部分是原來正常顯示的部分。


  1. #include <AT89X52.H>

  2. #define uint unsigned int               
  3. #define uchar unsigned char   

  4. sbit key1 =P3^4;
  5. sbit key2 =P3^5;

  6. //順序共陰極數(shù)碼管段碼表,段碼a-h順序接PX0-PX7
  7. unsigned char code table[]={//共陰數(shù)碼管段碼"0~f-."
  8.                 0x3f,0x06,0x5b,0x4f,
  9.                 0x66,0x6d,0x7d,0x07,
  10.                 0x7f,0x6f,0x77,0x7c,
  11.                 0x39,0x5e,0x79,0x71,0x40,0x80};
  12. uchar hour=12,min=0,sec=0;
  13. uchar tcnt;
  14. bit flag;

  15. void delayms(uint k)//1T
  16. {
  17.     uint i,j;            
  18.     for(i=k;i>0;i--)   
  19.         for(j=125;j>0;j--);
  20. }

  21. void InitTimer0()//50毫秒@12.000MHz
  22. {

  23.         TMOD= 0x01;                //設置定時器模式
  24.         TL0 = 0xB0;                //設置定時初值
  25.         TH0 = 0x3C;                //設置定時初值
  26.         TF0 = 0;                        //清除TF0標志
  27.         TR0 = 1;                        //定時器0開始計時
  28.         EA  = 1;
  29.         ET0 = 1;
  30. }

  31. void keyscan()       
  32. {
  33.         static uchar count1,count2;
  34.         if(!key1)
  35.         {
  36.                 if(++count1>=100)
  37.                 {
  38.                         count1=0;
  39.                         hour++;
  40.                         if(hour>=24)
  41.                                 hour=0;
  42.                 }
  43.         }
  44.         else count1=0;

  45.         if(!key2)
  46.         {
  47.                 if(++count2>=100)
  48.                 {
  49.                         count2=0;
  50.                         min++;
  51.                         tcnt=0;
  52.                         sec=0;
  53.                         if(min>=60)
  54.                                 min=0;
  55.                 }
  56.         }
  57.         else count2=0;
  58. }


  59. void display()
  60. {
  61.         static uchar i=0;
  62.         P0=0x00;//消隱
  63.         P3&=0xf0;//清P3低4位
  64. /*        switch(i)
  65.         {
  66.                 case 0: P3|=0x0e;P0=table[hour/10];break;
  67.                 case 1: P3|=0x0d;if(flag==1)P0=table[hour%10]|0x80;//加點
  68.                                                  else P0=table[hour%10];break;//不加點                               
  69.                 case 2: P3|=0x0b;P0=table[min/10] ;break;
  70.                 case 3: P3|=0x07;P0=table[min%10] ;break;
  71.         }*/
  72.         switch(i)
  73.         {
  74.                 case 0: P3|=0x0e;if(flag==1)P0=table[hour/10];
  75.                                                           else P0=0x00;break;
  76.                 case 1: P3|=0x0d;if(flag==1)P0=table[hour%10]|0x80;//加點
  77.                                                      else P0=0x00;break;
  78.                 case 2: P3|=0x0b;if(flag==1)P0=table[min/10];
  79.                                                      else P0=0x00;break;
  80.                 case 3: P3|=0x07;if(flag==1)P0=table[min%10];
  81.                                                      else P0=0x00;break;
  82.         }
  83.         delayms(2);
  84.         i++;
  85.         i%=4;
  86. }

  87. void main(void)
  88. {
  89.         InitTimer0();
  90.         while (1)
  91.         {
  92.                 keyscan();
  93.                 display();
  94.         }
  95. }

  96. void Timer0Interrupt(void) interrupt 1
  97. {
  98.         tcnt++;
  99.         if(tcnt<10)
  100.                 flag=1;
  101.         else flag=0;
  102.         if(tcnt>=20)
  103.         {
  104.                 tcnt=0;
  105.                 sec++;
  106.                 if(sec>=60)
  107.                 {
  108.                         sec=0;
  109.                         min++;
  110.                         if(min>=60)
  111.                         {
  112.                                 min=0;
  113.                                 hour++;
  114.                                 if(hour>=24)
  115.                                         hour=0;
  116.                         }
  117.                 }
  118.         }
  119. }
復制代碼



回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天射影院 | 91久久国产综合久久 | 欧洲在线视频 | 久久久精品 | 在线看亚洲 | 国产精品视频一二三区 | 亚洲色图综合 | 亚洲一区免费在线 | 亚洲国产精品一区二区www | 黑人巨大精品欧美一区二区免费 | 成人在线播放网站 | 欧美激情在线精品一区二区三区 | 91夜色在线观看 | 日韩电影免费在线观看中文字幕 | av网站在线免费观看 | 国产三级国产精品 | 久久精品国内 | 国产在线视频一区二区董小宛性色 | 欧美成人精品 | 国产亚洲精品久久久久动 | 中文天堂在线一区 | 一级黄色日本片 | 成人免费在线视频 | 蜜臀久久99精品久久久久久宅男 | 午夜天堂精品久久久久 | 午夜99 | 粉嫩av在线 | 亚洲精品中文字幕av | 一级a爱片性色毛片免费 | 亚洲精品一区二 | 欧美精品一区在线 | 日韩人体视频 | 亚洲国产精品久久人人爱 | 日韩精品久久久久 | 欧美aⅴ | 欧美性猛交一区二区三区精品 | 精品视频在线免费观看 | 久久精品欧美一区二区三区不卡 | 久久国产区 | 久久精品国产一区 | 综合精品|