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

標(biāo)題: 單片機(jī)6個(gè)IO口掃描數(shù)碼管驅(qū)動(dòng),我單燈可以點(diǎn)亮,0-9跳轉(zhuǎn)不成麻煩大神指教思路 [打印本頁(yè)]

作者: declansang    時(shí)間: 2022-11-30 21:55
標(biāo)題: 單片機(jī)6個(gè)IO口掃描數(shù)碼管驅(qū)動(dòng),我單燈可以點(diǎn)亮,0-9跳轉(zhuǎn)不成麻煩大神指教思路


各位大神,用IO口驅(qū)動(dòng)數(shù)碼管,單燈給值掃描正常,0~9數(shù)字跳轉(zhuǎn)實(shí)現(xiàn)不了,是哪里邏輯錯(cuò)誤了。。

單片機(jī)源程序如下:
  1. void LED_Init(void)
  2. {
  3.    PORTA = 0;
  4.    TRISA0 = 1;
  5.    TRISA1 = 1;
  6.    TRISA2 = 1;
  7.    TRISA3 = 1;
  8.    TRISA4 = 1;
  9.    TRISA5 = 1;
  10. }
  11. #define LED_NOP()       NOP();NOP();NOP();NOP();NOP()//;NOP();NOP();NOP();NOP();NOP();NOP();NOP()
  12. void LED_SHOW(void)//矩陣掃描
  13. {
  14.    LED_Init();
  15.    switch (LED_Num)   
  16.    {
  17.       case 0x00:  
  18.                   TRISA0 = 0;PA0 = 0;                 //PIN1=L
  19.                   if(K1_ON)   {TRISA3 = 0;PA3 = 1;LED_NOP();PA3 = 0;TRISA3 = 1;}   //1L 4H
  20.                   if(K2_ON)   {TRISA2 = 0;PA2 = 1;LED_NOP();PA2 = 0;TRISA2 = 1;}   //1L 3H
  21.                   if(G3_ON)   {TRISA4 = 0;PA4 = 1;LED_NOP();PA4 = 0;TRISA4 = 1;}   //1L 5H
  22.                   if(A3_ON)   {TRISA5 = 0;PA5 = 1;LED_NOP();PA5 = 0;TRISA5 = 1;}   //1L 6H
  23.                   LED_Num = 0x01;
  24.                   break;                                    
  25.       case 0x01:  
  26.                   TRISA1 = 0;PA1 = 0;  
  27.                   if(B1_ON)   {TRISA3 = 0;PA3 = 1;LED_NOP();PA3 = 0;TRISA3 = 1;}
  28.                   if(A1_ON)   {TRISA2 = 0;PA2 = 1;LED_NOP();PA2 = 0;TRISA2 = 1;}
  29.                   if(E1_ON)   {TRISA4 = 0;PA4 = 1;LED_NOP();PA4 = 0;TRISA4 = 1;}
  30.                   if(D1_ON)   {TRISA5 = 0;PA5 = 1;LED_NOP();PA5 = 0;TRISA5 = 1;}
  31.                   if(P1_ON)   {TRISA0 = 0;PA0 = 1;LED_NOP();PA0 = 0;TRISA0 = 1;}           
  32.                   LED_Num = 0x02;
  33.                   break;   
  34.       case 0x02:  
  35.                   TRISA2 = 0;PA2 = 0;  
  36.                   if(D2_ON)   {TRISA3 = 0;PA3 = 1;LED_NOP();PA3 = 0;TRISA3 = 1;}
  37.                   if(B2_ON)   {TRISA4 = 0;PA4 = 1;LED_NOP();PA4 = 0;TRISA4 = 1;}
  38.                   if(B2_ON)   {TRISA5 = 0;PA5 = 1;LED_NOP();PA5 = 0;TRISA5 = 1;}
  39.                   if(P2_ON)   {TRISA0 = 0;PA0 = 1;LED_NOP();PA0 = 0;TRISA0 = 1;}
  40.                   if(F1_ON)   {TRISA1 = 0;PA1 = 1;LED_NOP();PA1 = 0;TRISA1 = 1;}
  41.                   LED_Num = 0x03;
  42.                   break;   
  43.       case 0x03:  
  44.                   TRISA3= 0;PA3 = 0;  
  45.                   if(F2_ON)   {TRISA2 = 0;PA2 = 1;LED_NOP();PA2 = 0;TRISA2 = 1;}
  46.                   if(C2_ON)   {TRISA4 = 0;PA4 = 1;LED_NOP();PA4 = 0;TRISA4 = 1;}
  47.                   if(E3_ON)   {TRISA5 = 0;PA5 = 1;LED_NOP();PA5 = 0;TRISA5 = 1;}
  48.                   if(G1_ON)   {TRISA1 = 0;PA1 = 1;LED_NOP();PA1 = 0;TRISA1 = 1;}
  49.                   LED_Num = 0x04;
  50.                   break;   
  51.       case 0x04:
  52.                   TRISA4 = 0;PA4 = 0;  
  53.                   if(A2_ON)   {TRISA3 = 0;PA3 = 1;LED_NOP();PA3 = 0;TRISA3 = 1;}
  54.                   if(G2_ON)   {TRISA2 = 0;PA2 = 1;LED_NOP();PA2 = 0;TRISA2 = 1;}
  55.                   if(C3_ON)   {TRISA5 = 0;PA5 = 1;LED_NOP();PA5 = 0;TRISA5 = 1;}
  56.                   if(C1_ON)   {TRISA1 = 0;PA1 = 1;LED_NOP();PA1 = 0;TRISA1 = 1;}

  57.                   LED_Num = 0x05;
  58.                   break;   
  59.       case 0x05:  
  60.                   TRISA5 = 0;PA5 = 0;  
  61.                   if(D3_ON)   {TRISA3=0;PA3 = 1;LED_NOP();PA3 = 0;TRISA3 = 1;}
  62.                   if(E3_ON)   {TRISA2=0;PA2 = 1;LED_NOP();PA2 = 0;TRISA2 = 1;}
  63.                   if(F3_ON)   {TRISA4=0;PA4 = 1;LED_NOP();PA4 = 0;TRISA4 = 1;}

  64.                   LED_Num = 0;
  65.                   break;   
  66.         default:LED_Num = 0x00;
  67.       break;
  68.    }
  69. }


  70. void Dis_value (void)
  71. {
  72.    // PORTA = 0;
  73.    // TRISA=0xff;
  74.     if(temp >2 )
  75.     {
  76.         temp = 0;
  77.         Dis_value_B++;
  78.     }
  79.    switch (Dis_value_B)//百位
  80.    {
  81.       case 0x00 :A1_ON = 1;B1_ON = 1;C1_ON = 1; D1_ON= 1;E1_ON = 1;F1_ON = 1;          break;
  82.       case 0x01 :B1_ON = 1;C1_ON = 1;                                                  break;
  83.       case 0x02 :A1_ON = 1;B1_ON = 1;D1_ON = 1;E1_ON= 1;G1_ON = 1;                     break;
  84.       case 0x03 :A1_ON = 1;B1_ON = 1;C1_ON = 1;D1_ON= 1;G1_ON = 1;                     break;
  85.       case 0x04 :B1_ON = 1;C1_ON = 1;F1_ON = 1;G1_ON = 1;                              break;
  86.       case 0x05 :A1_ON = 1;C1_ON = 1;D1_ON = 1;F1_ON= 1;G1_ON = 1;                     break;
  87.       case 0x06 :A1_ON = 1;C1_ON = 1;D1_ON = 1;E1_ON= 1;F1_ON = 1;G1_ON = 1;           break;
  88.       case 0x07 :A1_ON = 1;B1_ON = 1;C1_ON = 1;                                        break;
  89.       case 0x08 :A1_ON = 1;B1_ON = 1;C1_ON = 1;D1_ON = 1;E1_ON= 1;F1_ON = 1;G1_ON = 1; break;
  90.       case 0x09 :A1_ON = 1;B1_ON = 1;C1_ON = 1;D1_ON = 1;F1_ON= 1;G1_ON = 1;           break;

  91.      default:{}
  92. }

  93.    switch (Dis_value_S)//十位
  94.    {
  95.       case 0x00 :A2_ON = 1;B2_ON = 1;C2_ON = 1; D2_ON= 1;E2_ON = 1;F2_ON = 1;           break;
  96.       case 0x01 :B2_ON = 1;C2_ON = 1;                                                   break;
  97.       case 0x02 :A2_ON = 1;B2_ON = 1;D2_ON = 1;E2_ON= 1;G2_ON = 1;                      break;
  98.       case 0x03 :A2_ON = 1;B2_ON = 1;C2_ON = 1;D2_ON= 1;G2_ON = 1;                      break;
  99.       case 0x04 :B2_ON = 1;C2_ON = 1;F2_ON = 1;G2_ON = 1;                               break;
  100.       case 0x05 :A2_ON = 1;C2_ON = 1;D2_ON = 1;F2_ON= 1;G2_ON = 1;                      break;
  101.       case 0x06 :A2_ON = 1;C2_ON = 1;D2_ON = 1;E2_ON= 1;F2_ON = 1;G2_ON = 1;            break;
  102.       case 0x07 :A2_ON = 1;B2_ON = 1;C2_ON = 1;                                         break;
  103.       case 0x08 :A2_ON = 1;B2_ON = 1;C2_ON = 1;D2_ON = 1;E2_ON= 1;F2_ON = 1;G2_ON = 1;  break;
  104.       case 0x09 :A2_ON = 1;B2_ON = 1;C2_ON = 1;D2_ON = 1;F2_ON= 1;G2_ON = 1;            break;

  105.      default:{}
  106.      break;
  107.    }

  108.    switch (Dis_value_G)//個(gè)位
  109.    {
  110.       case 0x00 :A3_ON = 1;B3_ON = 1;C3_ON = 1; D3_ON= 1;E3_ON = 1;F3_ON = 1;           break;
  111.       case 0x01 :B3_ON = 1;C3_ON = 1;                                                   break;
  112.       case 0x02 :A3_ON = 1;B3_ON = 1;D3_ON = 1;E3_ON= 1;G3_ON = 1;                      break;
  113.       case 0x03 :A3_ON = 1;B3_ON = 1;C3_ON = 1;D3_ON= 1;G3_ON = 1;                      break;
  114.       case 0x04 :B3_ON = 1;C3_ON = 1;F3_ON = 1;G3_ON = 1;                               break;
  115.       case 0x05 :A3_ON = 1;C3_ON = 1;D3_ON = 1;F3_ON= 1;G3_ON = 1;                      break;
  116.       case 0x06 :A3_ON = 1;C3_ON = 1;D3_ON = 1;E3_ON= 1;F3_ON = 1;G3_ON = 1;            break;
  117.       case 0x07 :A3_ON = 1;B3_ON = 1;C3_ON = 1;                                         break;
  118.       case 0x08 :A3_ON = 1;B3_ON = 1;C3_ON = 1;D3_ON = 1;E3_ON= 1;F3_ON = 1;G3_ON = 1;  break;
  119.       case 0x09 :A3_ON = 1;B3_ON = 1;C3_ON = 1;D3_ON = 1;F3_ON= 1;G3_ON = 1;            break;
  120.      default:{}
  121.     // break;
  122.    }
  123.    P2_ON = 1;//顯示小數(shù)點(diǎn)

  124. //    if((Sys_Status == Mode_Vin)||(Sys_Status == Mode_Va)||(Sys_Status == Mode_Vc))
  125. //    {
  126.       K1_ON = 1;
  127. //    }  
  128. //    else if((Sys_Status == MODE_Wa)||(Sys_Status == MODE_Wc))
  129. //    {
  130. //       K2_ON = 1;
  131. //    }
  132.     PORTA = 0;   
  133.     TRISA = 0xFF;

  134. }
復(fù)制代碼



作者: wulin    時(shí)間: 2022-12-1 09:19
這類數(shù)碼管的驅(qū)動(dòng)碼編寫有點(diǎn)麻煩,首先要選擇有高阻輸出模式的MCU,采用查理復(fù)用的方法編寫驅(qū)動(dòng)碼,共有25個(gè)筆段。小數(shù)點(diǎn)DP1、DP2只需2選1就能滿足運(yùn)用。空出的碼位讓給k2。這就得到24個(gè)實(shí)際使用筆段。最簡(jiǎn)單的應(yīng)用是單管逐一顯示,由于每個(gè)筆段只能顯示1/25時(shí)間,可能視覺(jué)亮度不夠。要減小限流電阻阻值。 查理復(fù)用IO驅(qū)動(dòng)數(shù)碼管.docx (92.31 KB, 下載次數(shù): 15)



作者: declansang    時(shí)間: 2022-12-1 09:49
wulin 發(fā)表于 2022-12-1 09:19
這類數(shù)碼管的驅(qū)動(dòng)碼編寫有點(diǎn)麻煩,首先要選擇有高阻輸出模式的MCU,采用查理復(fù)用的方法編寫驅(qū)動(dòng)碼,共有25 ...

感謝指點(diǎn),我目前是按查理復(fù)用設(shè)定的掃描方式去處理的,就是亮下一個(gè)燈的時(shí)候,上一個(gè)不論怎么配置不知道為什么滅不掉。

作者: lkc8210    時(shí)間: 2022-12-1 09:49
本帖最后由 lkc8210 于 2022-12-1 10:57 編輯

代碼不全

可以用Excel 算出段值用來(lái)比較,就可以簡(jiǎn)化代碼



以下的Disp()函數(shù)放到1ms中斷里運(yùn)行
Dat1/Dat2/Dat3的值是共陰數(shù)碼管的碼,k1k2對(duì)應(yīng)bit0,bit1

作者: fj51hei    時(shí)間: 2022-12-1 10:17
declansang 發(fā)表于 2022-12-1 09:49
感謝指點(diǎn),我目前是按查理復(fù)用設(shè)定的掃描方式去處理的,就是亮下一個(gè)燈的時(shí)候,上一個(gè)不論怎么配置不知道 ...

這個(gè)復(fù)用模式,需要單片機(jī)的高阻模式不漏電,因?yàn)楝F(xiàn)在LED很小的驅(qū)動(dòng)電流就會(huì)發(fā)亮1mA以下都可以,你要單獨(dú)試個(gè)點(diǎn),一IO高電平一次  低電平一次 另一IO一直高阻開(kāi)漏模式  測(cè)試所處的點(diǎn)是否發(fā)亮,如發(fā)亮你怎么弄也不能有效關(guān)閉LED了
作者: zjjhtony    時(shí)間: 2022-12-1 11:39
這個(gè)燈需要一個(gè)定時(shí)器對(duì)他IO口進(jìn)行定時(shí)循環(huán)掃描,在數(shù)據(jù)的處理上要化點(diǎn)時(shí)間。
處理過(guò)2個(gè)這樣的LED程序。
作者: wulin    時(shí)間: 2022-12-1 12:28
declansang 發(fā)表于 2022-12-1 09:49
感謝指點(diǎn),我目前是按查理復(fù)用設(shè)定的掃描方式去處理的,就是亮下一個(gè)燈的時(shí)候,上一個(gè)不論怎么配置不知道 ...

查理復(fù)用是需要軟件、硬件配合。不能有效關(guān)閉LED多數(shù)是代碼不對(duì)。
作者: yzwzfyz    時(shí)間: 2022-12-1 17:22
不急:
弄懂顯示的原理。
建議先畫(huà)個(gè)顯示0-9的真值表。按表寫驅(qū)動(dòng)程序就可以了。
作者: declansang    時(shí)間: 2022-12-1 19:57
zjjhtony 發(fā)表于 2022-12-1 11:39
這個(gè)燈需要一個(gè)定時(shí)器對(duì)他IO口進(jìn)行定時(shí)循環(huán)掃描,在數(shù)據(jù)的處理上要化點(diǎn)時(shí)間。
處理過(guò)2個(gè)這樣的LED程序。

好的,是這樣的思路,謝謝~
作者: declansang    時(shí)間: 2022-12-1 19:58
yzwzfyz 發(fā)表于 2022-12-1 17:22
不急:
弄懂顯示的原理。
建議先畫(huà)個(gè)顯示0-9的真值表。按表寫驅(qū)動(dòng)程序就可以了。

好的,按照上面兩位的思路整理了下程序,基本可以了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 97caoporn国产免费人人 | 日本小视频网站 | 欧美国产亚洲一区二区 | 成人欧美一区二区 | 日本三级在线视频 | xxx国产精品视频 | 精品一区二区在线看 | 中文字幕第一页在线 | 黄视频免费观看 | 日韩高清在线 | 国产日批 | www.嫩草| 日韩精品在线视频免费观看 | 亚洲精品综合 | 91精品国产乱码久久久久久久久 | 欧美成人一区二区 | 91视频国产一区 | 亚洲国产成人精品一区二区 | 久久久久久www | 日韩欧美国产一区二区三区 | 欧美中文字幕 | 日韩精品一区二区三区中文在线 | 亚洲一区二区三区观看 | 久草久草久草 | 国产在线一区二区三区 | 精品国产精品三级精品av网址 | 岛国精品| 99在线国产 | 亚洲精品黄色 | 国产精品1区 | 瑞克和莫蒂第五季在线观看 | 激情六月丁香 | 日本天天操 | 午夜看电影在线观看 | 日本在线视频一区二区 | 激情91| 99精品欧美一区二区蜜桃免费 | 亚洲国产精品久久久久秋霞不卡 | 在线播放国产一区二区三区 | 国产一区2区 | 毛片一区 |