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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7103|回復(fù): 12
打印 上一主題 下一主題
收起左側(cè)

6腳3位數(shù)碼管驅(qū)動程序 求幫助

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:56665 發(fā)表于 2019-5-28 15:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我看到充電器上用的顯示是用6腳3位數(shù)碼管的,誰有這種數(shù)碼管驅(qū)動請傳上來學(xué)習(xí)學(xué)習(xí)。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:56665 發(fā)表于 2019-5-28 15:34 | 只看該作者
這是數(shù)碼管的電路圖

6腳數(shù)碼管電路圖.JPG (33.58 KB, 下載次數(shù): 145)

6腳數(shù)碼管電路圖.JPG
回復(fù)

使用道具 舉報

板凳
ID:56665 發(fā)表于 2019-6-27 14:44 | 只看該作者
已經(jīng)搞好了,方法就是每一位每一段分別掃描,麻煩是有一點,硬件制約,硬件簡單,軟件就麻煩一點。
回復(fù)

使用道具 舉報

地板
ID:193008 發(fā)表于 2019-6-28 18:30 | 只看該作者
可以分享下代碼嗎?謝謝!
回復(fù)

使用道具 舉報

5#
ID:193008 發(fā)表于 2019-6-28 19:11 | 只看該作者
驅(qū)動代碼分享下! 謝謝!
回復(fù)

使用道具 舉報

6#
ID:542764 發(fā)表于 2020-2-10 19:59 | 只看該作者
可以分享下代碼嗎?謝謝!
回復(fù)

使用道具 舉報

7#
ID:363678 發(fā)表于 2020-7-6 10:59 | 只看該作者
原理是知道,就是看軟件怎么處理。
回復(fù)

使用道具 舉報

8#
ID:707500 發(fā)表于 2020-8-28 19:53 | 只看該作者
m182892 發(fā)表于 2019-6-27 14:44
已經(jīng)搞好了,方法就是每一位每一段分別掃描,麻煩是有一點,硬件制約,硬件簡單,軟件就麻煩一點。

老哥上傳代碼學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

9#
ID:280512 發(fā)表于 2020-8-31 09:46 | 只看該作者
也可能有譯碼.6個腳顯示?把那個段去掉了?
回復(fù)

使用道具 舉報

10#
ID:155507 發(fā)表于 2020-8-31 10:14 | 只看該作者
這種被叫做 Charlieplexing的方法可以用N個IO驅(qū)動N*(N-1)個LED。

6 個IO 可以驅(qū)動 30 個LED

這種數(shù)碼管是由單片機(jī)I/O口直接驅(qū)動,I/O口要在工作在3態(tài)(高、低電平和高阻),驅(qū)動程序有點復(fù)雜。直接驅(qū)動每一個IO口吧,,沒法省事了

這個是在內(nèi)部將段引腳連接在一起了。一共8個段引腳,3個位引腳。如果是掃描顯示和單個的用法一樣。

如果使用的是掃描顯示,程序完全都一樣,認(rèn)準(zhǔn)管腳就行了。也可以自己寫一段小程序,測定管腳。
每隔3~5秒顯示一個段,a\b\c\d\e\f\g\h,一目了然。
回復(fù)

使用道具 舉報

11#
ID:155507 發(fā)表于 2020-8-31 10:41 | 只看該作者
這個帖子有答案
求助:可有認(rèn)識這個小數(shù)碼管的朋友?求資料或驅(qū)動方式 http://www.zg4o1577.cn/bbs/dpj-185110-1.html


  1. /*--------------------------------------------------------------------------*/
  2. /***@file  led_7c7s.c
  3.     @brief  7*7數(shù)據(jù)管顯示屏蔽驅(qū)動
  4.     @details
  5.     @author wjq
  6.     @date
  7.     @note
  8. */
  9. /*----------------------------------------------------------------------------*/
  10. /**********************************************************************************************************************
  11.    --------------------------------------------
  12.    |  K1  K3   ----  ----    ----  ----   K6  |
  13.    |           |   | |   | . |   | |   |      |
  14.    |           ----  ----    ----  ----       |
  15.    |           |   | |   | . |   | |   |      |
  16.    |  K2  K4   ----  ----    ----  ----   K7  |
  17.    --------------------------------------------

  18.     7線LED屏陣列如下,其中A,B,C...為LED屏的段,0,1,2.... 表示對應(yīng)的連接IO

  19. 參考下圖表,當(dāng)需要點亮某個段時,左邊的拉高,右邊的拉低點亮相應(yīng)位置,
  20. 如要點亮1A段,則將0號IO拉高,1號IO拉低 ,如果我們要顯示一個數(shù)據(jù),則要依次掃描7個IO

  21.         0   1   2   3   4   5   6
  22.     0   X   1A  1B  1E  K4  K1  -
  23.     1   1F  X   2A  2B  2E  2D  -
  24.     2   1G  2F  X   K5  3B  K2  K7
  25.     3   1C  2G  3F  X   3C  4E  -
  26.     4   1D  2C  3G  3A  X   4C  4G
  27.     5   3D  K3  3E  4D  4F  X   4B
  28.     6   K6  K8  4A  X   -   -   X
  29. ************************************************************************************************************************/
  30. #include "include.h"
  31. #include "task_music.h"
  32. #include "user_fm.h"
  33. #include "task_clock.h"
  34. #include "task.h"


  35. u8 __idata batchargecout;
  36. #if LED_7P7S_EN
  37. //定義COM口是否是同一排P口的。比如都是P2口
  38. #define SAME_COM_P  0

  39. #if SAME_COM_P
  40. #define LED_COM       P2
  41. #define LED_COM_DIR   P2DIR
  42. #else
  43. #define LED_COM_0_ON  P2 |= BIT(2);
  44. #define LED_COM_1_ON  P2 |= BIT(3);
  45. #define LED_COM_2_ON  P2 |= BIT(4);
  46. #define LED_COM_3_ON  P2 |= BIT(5);
  47. #define LED_COM_4_ON  P2 |= BIT(6);
  48. #define LED_COM_5_ON  P3 |= BIT(0);
  49. #define LED_COM_6_ON  P3 |= BIT(1);

  50. #define LED_COM_0_OFF  P2 &= ~BIT(2);
  51. #define LED_COM_1_OFF  P2 &= ~BIT(3);
  52. #define LED_COM_2_OFF  P2 &= ~BIT(4);
  53. #define LED_COM_3_OFF  P2 &= ~BIT(5);
  54. #define LED_COM_4_OFF  P2 &= ~BIT(6);
  55. #define LED_COM_5_OFF  P3 &= ~BIT(0);
  56. #define LED_COM_6_OFF  P3 &= ~BIT(1);

  57. #define COM_DIR0_IN    P2DIR |= BIT(2);
  58. #define COM_DIR1_IN    P2DIR |= BIT(3);
  59. #define COM_DIR2_IN    P2DIR |= BIT(4);
  60. #define COM_DIR3_IN    P2DIR |= BIT(5);
  61. #define COM_DIR4_IN    P2DIR |= BIT(6);
  62. #define COM_DIR5_IN    P3DIR |= BIT(0);
  63. #define COM_DIR6_IN    P3DIR |= BIT(1);

  64. #define COM_DIR0_OUT    P2DIR &= ~BIT(2);
  65. #define COM_DIR1_OUT    P2DIR &= ~BIT(3);
  66. #define COM_DIR2_OUT    P2DIR &= ~BIT(4);
  67. #define COM_DIR3_OUT    P2DIR &= ~BIT(5);
  68. #define COM_DIR4_OUT    P2DIR &= ~BIT(6);
  69. #define COM_DIR5_OUT    P3DIR &= ~BIT(0);
  70. #define COM_DIR6_OUT    P3DIR &= ~BIT(1);

  71. #define ALL_COM_DIRIN  {P2DIR |= 0x7c;P3DIR |= 0x03;}
  72. #define ALL_COM_OFF    {P2 &= ~0x7c;   P3 &= ~0x03;}

  73. u8 LED_COM;
  74. u8 LED_COM_DIR;

  75. #endif

  76. extern u8 __idata bVoiceOn;

  77. static u8 __idata syslastbatval= 0xff;
  78. u8  __idata curMenu;
  79. u8 __idata LED_5com7seg_dispBuf[5];
  80. u8 p_disp_buff2_value[7];

  81. u8 __idata COM_T;
  82. u8 returnCount;

  83. bool __bdata HalfsecFlash;
  84. bool __bdata ftimeflag = false;

  85. u16 __idata inputNum;

  86. typedef void(*H)(void);

  87. //extern val

  88. extern type_task_music_ctl t_msc;
  89. extern type_task_fm_ctl t_fm;
  90. extern type_t_clock t_clock;
  91. extern u8 clockset_count;



  92. #pragma constseg=LED_TBL
  93. const u8 LED_7p7seg_Table[10] =
  94. {
  95.     LED_7p7seg_0,
  96.     LED_7p7seg_1,
  97.     LED_7p7seg_2,
  98.     LED_7p7seg_3,
  99.     LED_7p7seg_4,
  100.     LED_7p7seg_5,
  101.     LED_7p7seg_6,
  102.     LED_7p7seg_7,
  103.     LED_7p7seg_8,
  104.     LED_7p7seg_9
  105. };

  106. const u8 LED_7p7seg_repeatTable[4][3] =
  107. {
  108.     {LED_7p7seg_A,LED_7p7seg_L,LED_7p7seg_L},
  109.     {LED_7p7seg_F,LED_7p7seg_0,LED_7p7seg_L},
  110.     {LED_7p7seg_S,LED_7p7seg_I,LED_7p7seg_N},
  111.     {LED_7p7seg_R,LED_7p7seg_A,LED_7p7seg_N}
  112. };

  113. const u8 LED_7p7seg_eqTable[6][3] =
  114. {
  115.     {LED_7p7seg_N,LED_7p7seg_0,LED_7p7seg_R},
  116.     {LED_7p7seg_P,LED_7p7seg_0,LED_7p7seg_P},
  117.     {LED_7p7seg_R,LED_7p7seg_0,LED_7p7seg_C},
  118.     {LED_7p7seg_J,LED_7p7seg_A,LED_7p7seg_Z},
  119.     {LED_7p7seg_C,LED_7p7seg_L,LED_7p7seg_A},
  120.     {LED_7p7seg_C,LED_7p7seg_0,LED_7p7seg_U}
  121. };
  122. #pragma constseg=default

  123. /*----------------------------------------------------------------------------*/
  124. /**@brief LED顯示函數(shù),顯示四位數(shù)字
  125.    @param num 需要顯示的數(shù)字
  126.    @return 無
  127.    @note
  128. */
  129. /*----------------------------------------------------------------------------*/
  130. void DispNum_7p7seg(u16 num)@"LED_7COM_API"
  131. {
  132.     u16 numtmp;
  133.    
  134.     numtmp = num;
  135.    
  136.     u8 ii;
  137.     for(ii = 4; ii > 0; ii--)
  138.     {
  139.         LED_5com7seg_dispBuf[ii-1] = LED_7p7seg_Table[num % 10];
  140.         num /= 10;
  141.         /*  //如果是加快了掃屏頻率或者是FM下面降頻,調(diào)用DispNum_5com7seg時,有可能
  142.             //出現(xiàn)還在執(zhí)行這個函數(shù)的時候,掃描以及把前面的“0”顯示出來的效果
  143.         */
  144.         if((curMenu == MENU_FRE))
  145.         {
  146.           if(numtmp < 1000)
  147.           {
  148.             LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
  149.           }   
  150.           else if(numtmp < 100)
  151.           {
  152.             LED_5com7seg_dispBuf[1] = LED_7p7seg_BLANK;
  153.           }   
  154.           else if(numtmp < 10)
  155.           {
  156.             LED_5com7seg_dispBuf[2] = LED_7p7seg_BLANK;
  157.           }
  158.         }
  159.     }
  160. }

  161. /*----------------------------------------------------------------------------*/
  162. /**@brief LED顯示函數(shù),顯示播放時間
  163.    @param 無
  164.    @return 無
  165.    @note
  166. */
  167. /*----------------------------------------------------------------------------*/
  168. void LED_playtime_display_7p7seg(void)@"LED_7COM_API"
  169. {
  170.     u8 a,b;

  171.     a = t_msc.cur_time.min / 10;
  172.     b = t_msc.cur_time.min - 10*a;
  173.     LED_5com7seg_dispBuf[0] = LED_7p7seg_Table[a];
  174.     LED_5com7seg_dispBuf[1] = LED_7p7seg_Table[b];

  175.     a = t_msc.cur_time.sec / 10;
  176.     b = t_msc.cur_time.sec - 10*a;
  177.     LED_5com7seg_dispBuf[2] = LED_7p7seg_Table[a];
  178.     LED_5com7seg_dispBuf[3] = LED_7p7seg_Table[b];
  179. }

  180. /*----------------------------------------------------------------------------*/
  181. /**@brief LED顯示函數(shù),顯示音量
  182.    @param 無
  183.    @return 無
  184.    @note
  185. */
  186. /*----------------------------------------------------------------------------*/
  187. void Menu_VOL_7p7seg(void)@"LED_7COM_API"
  188. {
  189.     DispNum_7p7seg(sys_ctl.volume);
  190.     LED_5com7seg_dispBuf[1] =  LED_7p7seg_V;
  191.     LED_5com7seg_dispBuf[0] =  LED_7p7seg_BLANK;
  192. }

  193. /*----------------------------------------------------------------------------*/
  194. /**@brief LED顯示函數(shù),顯示音量
  195.    @param 無
  196.    @return 無
  197.    @note
  198. */
  199. /*----------------------------------------------------------------------------*/
  200. void Menu_Voice_Switch(void)@"LED_7COM_API"
  201. {
  202.     LED_5com7seg_dispBuf[1] =  LED_7p7seg_V;
  203.    
  204.     LED_5com7seg_dispBuf[2] =  LED_7p7seg_0;
  205.     if(bVoiceOn)
  206.     {
  207.       LED_5com7seg_dispBuf[3] =  LED_7p7seg_N;
  208.     }
  209.     else
  210.     {
  211.       LED_5com7seg_dispBuf[3] =  LED_7p7seg_F;
  212.     }
  213. }



  214. /*----------------------------------------------------------------------------*/
  215. /**@brief LED顯示函數(shù),顯示音量的‘V’和'P'
  216.    @param 無
  217.    @return 無
  218.    @note
  219. */
  220. /*----------------------------------------------------------------------------*/
  221. void Menu_VOLUP_7p7seg(void)@"LED_7COM_API"
  222. {
  223.     LED_5com7seg_dispBuf[1] =  LED_7p7seg_V;
  224.     LED_5com7seg_dispBuf[2] =  LED_7p7seg_P;
  225. }


  226. /*----------------------------------------------------------------------------*/
  227. /**@brief LED顯示函數(shù),顯示音量的‘D’和'N'
  228.    @param 無
  229.    @return 無
  230.    @note
  231. */
  232. /*----------------------------------------------------------------------------*/
  233. void Menu_VOLDOWN_7p7seg(void)@"LED_7COM_API"
  234. {
  235.     LED_5com7seg_dispBuf[1] =  LED_7p7seg_D;
  236.     LED_5com7seg_dispBuf[2] =  LED_7p7seg_N;
  237. }

  238. /*----------------------------------------------------------------------------*/
  239. /**@brief LED顯示函數(shù),顯示RTC
  240.    @param 無
  241.    @return 無
  242.    @note
  243. */
  244. /*----------------------------------------------------------------------------*/
  245. void Menu_RTC_7p7seg(void)@"LED_7COM_API"
  246. {
  247. #if TASK_RTC_EN
  248.    
  249.     u16 disptmp;
  250.   
  251.     disptmp = t_time.hour*100+ t_time.minute;

  252.     DispNum_7p7seg(disptmp);

  253.     LED_5com7seg_dispBuf[4] |= LED_DDOT;
  254.       
  255.     if((HalfsecFlash))
  256.     {
  257.       if(t_clock.sub_sta == STA_SHOW_CLOCK)//&&(!Alarm_Rtc_Flag))
  258.         LED_5com7seg_dispBuf[4] &= ~LED_DDOT;
  259.     }
  260.    
  261.     if((HalfsecFlash)&&(clockset_count >= (RETURN_TIME -1))&&(clockset_count < RETURN_TIME_RTCSET))
  262.     {  
  263.       if(t_clock.set_sta == STA_SET_TIME_HOUR)
  264.       {
  265.         LED_5com7seg_dispBuf[0] = 0;
  266.         LED_5com7seg_dispBuf[1] = 0;
  267.       }
  268.       else if(t_clock.set_sta == STA_SET_TIME_MIN)
  269.       {
  270.         LED_5com7seg_dispBuf[2] = 0;
  271.         LED_5com7seg_dispBuf[3] = 0;
  272.       }
  273.   }
  274. #endif   
  275.   
  276. }


  277. /*----------------------------------------------------------------------------*/
  278. /**@brief LED顯示函數(shù),顯示FM模式下的頻率
  279.    @param 無
  280.    @return 無
  281.    @note
  282. */
  283. /*----------------------------------------------------------------------------*/
  284. void Menu_FRE_7p7seg(void)@"LED_7COM_API"
  285. {
  286.     u16 fmfrq;
  287.    
  288.     fmfrq = t_fm.freq / 10;
  289.    
  290.     DispNum_7p7seg(fmfrq);

  291.     if(LED_5com7seg_dispBuf[0] == LED_7p7seg_0)
  292.         LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;

  293.     LED_5com7seg_dispBuf[4] |= LED_FM;
  294.     LED_5com7seg_dispBuf[4] |= LED_FM_DOT;
  295. }


  296. /*----------------------------------------------------------------------------*/
  297. /**@brief LED顯示函數(shù),顯示輸入的數(shù)字
  298.    @param 無
  299.    @return 無
  300.    @note
  301. */
  302. /*----------------------------------------------------------------------------*/
  303. void Menu_Input_Number_7p7seg(void)@"LED_7COM_API"
  304. {
  305.     DispNum_7p7seg(inputNum);
  306. }

  307. /*----------------------------------------------------------------------------*/
  308. /**@brief LED顯示函數(shù),顯示MP3模式下的播放時間和當(dāng)前在線媒體:SD或者USB
  309.    @param 無
  310.    @return 無
  311.    @note
  312. */
  313. /*----------------------------------------------------------------------------*/
  314. void MENU_Play_7p7seg(void)@"LED_7COM_API"
  315. {
  316.     LED_playtime_display_7p7seg();

  317.     LED_5com7seg_dispBuf[4] |= /*LED_PLAY | */LED_DDOT;

  318.     if (fs_cur_dev() != DEVICE_UDISK)
  319.         LED_5com7seg_dispBuf[4] |= LED_SD;
  320.     else
  321.         LED_5com7seg_dispBuf[4] |= LED_USB;
  322. }

  323. /*----------------------------------------------------------------------------*/
  324. /**@brief LED顯示函數(shù),顯示播放模式
  325.    @param 無
  326.    @return 無
  327.    @note
  328. */
  329. /*----------------------------------------------------------------------------*/
  330. void Menu_Play_Mode_7p7seg(void)@"LED_7COM_API"
  331. {
  332.     LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
  333.     LED_5com7seg_dispBuf[1] = LED_7p7seg_repeatTable[(u8)sys_ctl.mode_play][0];
  334.     LED_5com7seg_dispBuf[2] = LED_7p7seg_repeatTable[(u8)sys_ctl.mode_play][1];
  335.     LED_5com7seg_dispBuf[3] = LED_7p7seg_repeatTable[(u8)sys_ctl.mode_play][2];
  336. }

  337. /*----------------------------------------------------------------------------*/
  338. /**@brief LED顯示函數(shù),顯示文件序號和當(dāng)前在線媒體:SD或者USB
  339.    @param 無
  340.    @return 無
  341.    @note
  342. */
  343. /*----------------------------------------------------------------------------*/
  344. void Menu_Next_7p7seg(void)@"LED_7COM_API"
  345. {
  346.     DispNum_7p7seg(t_msc.music_num);

  347.     //LED_5com7seg_dispBuf[4] |= LED_PLAY;
  348.      
  349.     if (fs_cur_dev() != DEVICE_UDISK)
  350.         LED_5com7seg_dispBuf[4] |= LED_SD;
  351.     else
  352.         LED_5com7seg_dispBuf[4] |= LED_USB;
  353. }

  354. /*----------------------------------------------------------------------------*/
  355. /**@brief LED顯示函數(shù),顯示文件序號和當(dāng)前在線媒體:SD或者USB
  356.    @param 無
  357.    @return 無
  358.    @note
  359. */
  360. /*----------------------------------------------------------------------------*/
  361. void Menu_ALLNUM_7p7seg(void)@"LED_7COM_API"
  362. {
  363.     DispNum_7p7seg(t_msc.music_total);

  364.     //LED_5com7seg_dispBuf[4] |= LED_PLAY;
  365.      
  366.     if (fs_cur_dev() != DEVICE_UDISK)
  367.         LED_5com7seg_dispBuf[4] |= LED_SD;
  368.     else
  369.         LED_5com7seg_dispBuf[4] |= LED_USB;
  370. }


  371. /*----------------------------------------------------------------------------*/
  372. /**@brief LED顯示函數(shù),顯示當(dāng)前電臺序號
  373.    @param 無
  374.    @return 無
  375.    @note
  376. */
  377. /*----------------------------------------------------------------------------*/
  378. void Menu_FMNext_7p7seg(void)@"LED_7COM_API"
  379. {
  380.     DispNum_7p7seg(t_fm.ch_sel);
  381.     LED_5com7seg_dispBuf[1] =  LED_7p7seg_P;
  382.     LED_5com7seg_dispBuf[0] =  LED_7p7seg_BLANK;
  383.     LED_5com7seg_dispBuf[4] |= LED_FM;
  384. }

  385. /*----------------------------------------------------------------------------*/
  386. /**@brief LED顯示函數(shù),顯示REC 錄音
  387.    @param 無
  388.    @return 無
  389.    @note
  390. */
  391. /*----------------------------------------------------------------------------*/
  392. void Menu_Rec(void)@"LED_7COM_API"
  393. {
  394.     LED_5com7seg_dispBuf[1] =  LED_7p7seg_R;
  395.     LED_5com7seg_dispBuf[2] =  LED_7p7seg_E;
  396.     LED_5com7seg_dispBuf[3] =  LED_7p7seg_C;
  397.     if (fs_cur_dev() == DEVICE_UDISK)
  398.         LED_5com7seg_dispBuf[4] |= LED_USB;
  399.     else if (fs_cur_dev() == DEVICE_SDMMC)
  400.         LED_5com7seg_dispBuf[4] |= LED_SD;
  401. }

  402. /*----------------------------------------------------------------------------*/
  403. /**@brief LED顯示函數(shù),顯示-sp-擴(kuò)音器用
  404.    @param 無
  405.    @return 無
  406.    @note
  407. */
  408. /*----------------------------------------------------------------------------*/
  409. void Menu_Spear(void)@"LED_7COM_API"
  410. {
  411.     LED_5com7seg_dispBuf[0] =  LED_7p7seg__;
  412.     LED_5com7seg_dispBuf[1] =  LED_7p7seg_S;
  413.     LED_5com7seg_dispBuf[2] =  LED_7p7seg_P;
  414.     LED_5com7seg_dispBuf[3] =  LED_7p7seg__;
  415. }


  416. /*----------------------------------------------------------------------------*/
  417. /**@brief LED顯示函數(shù),顯示”PC“
  418.    @param 無
  419.    @return 無
  420.    @note
  421. */
  422. /*----------------------------------------------------------------------------*/
  423. void Menu_PCconnect_7p7seg(void)@"LED_7COM_API"
  424. {
  425.     LED_5com7seg_dispBuf[1] = LED_7p7seg_P;
  426.     LED_5com7seg_dispBuf[2] = LED_7p7seg_C;

  427.     //LED_5com7seg_dispBuf[4] |= LED_USB;
  428. }

  429. /*----------------------------------------------------------------------------*/
  430. /**@brief LED關(guān)閉
  431.    @param 無
  432.    @return 無
  433.    @note 空函數(shù),留待擴(kuò)展
  434. */
  435. /*----------------------------------------------------------------------------*/
  436. void Menu_OFF_7p7seg(void)@"LED_7COM_API"
  437. {
  438.     LED_5com7seg_dispBuf[1] = LED_7p7seg_0;
  439.     LED_5com7seg_dispBuf[2] = LED_7p7seg_F;
  440.     LED_5com7seg_dispBuf[3] = LED_7p7seg_F;
  441. }

  442. /*----------------------------------------------------------------------------*/
  443. /**@brief LED顯示函數(shù),顯示”NO“
  444.    @param 無
  445.    @return 無
  446.    @note
  447. */
  448. /*----------------------------------------------------------------------------*/
  449. void Menu_NULL_7p7seg(void)@"LED_7COM_API"
  450. {
  451.   
  452. }

  453. /*----------------------------------------------------------------------------*/
  454. /**@brief LED顯示函數(shù),顯示”NO“
  455.    @param 無
  456.    @return 無
  457.    @note
  458. */
  459. /*----------------------------------------------------------------------------*/
  460. void Menu_NO_Device_7p7seg(void)@"LED_7COM_API"
  461. {
  462.     LED_5com7seg_dispBuf[1] = LED_7p7seg_N;
  463.     LED_5com7seg_dispBuf[2] = LED_7p7seg_0;
  464. }

  465. /*----------------------------------------------------------------------------*/
  466. /**@brief LED顯示函數(shù),顯示”NO“
  467.    @param 無
  468.    @return 無
  469.    @note
  470. */
  471. /*----------------------------------------------------------------------------*/
  472. void Menu_NO_Music_7p7seg(void)@"LED_7COM_API"
  473. {
  474.     Menu_NO_Device_7p7seg();
  475. }

  476. /*----------------------------------------------------------------------------*/
  477. /**@brief LED顯示函數(shù),暫停時的菜單顯示
  478.    @param 無
  479.    @return 無
  480.    @note
  481. */
  482. /*----------------------------------------------------------------------------*/
  483. void Menu_Pause_7p7seg(void)@"LED_7COM_API"
  484. {
  485.   LED_5com7seg_dispBuf[0] = LED_7p7seg_P;
  486.   LED_5com7seg_dispBuf[1] = LED_7p7seg_A;
  487.   LED_5com7seg_dispBuf[2] = LED_7p7seg_U;
  488.   LED_5com7seg_dispBuf[3] = LED_7p7seg_S;
  489. }

  490. /*----------------------------------------------------------------------------*/
  491. /**@brief LED顯示函數(shù),顯示當(dāng)前使用的EQ
  492.    @param 無
  493.    @return 無
  494.    @note
  495. */
  496. /*----------------------------------------------------------------------------*/
  497. void Menu_EQ_7p7seg(void)@"LED_7COM_API"
  498. {
  499.   LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
  500.   LED_5com7seg_dispBuf[1] = LED_7p7seg_eqTable[sys_ctl.eq_num][0];
  501.   LED_5com7seg_dispBuf[2] = LED_7p7seg_eqTable[sys_ctl.eq_num][1];
  502.   LED_5com7seg_dispBuf[3] = LED_7p7seg_eqTable[sys_ctl.eq_num][2];
  503. }

  504. /*----------------------------------------------------------------------------*/
  505. /**@brief LED顯示函數(shù),顯示”LINE“
  506.    @param 無
  507.    @return 無
  508.    @note
  509. */
  510. /*----------------------------------------------------------------------------*/
  511. void MENU_linein_7p7seg(void)@"LED_7COM_API"
  512. {
  513.     LED_5com7seg_dispBuf[0] = LED_7p7seg_L;
  514.     LED_5com7seg_dispBuf[1] = LED_7p7seg_I;
  515.     LED_5com7seg_dispBuf[2] = LED_7p7seg_N;
  516.     LED_5com7seg_dispBuf[3] = LED_7p7seg_E;
  517.     LED_5com7seg_dispBuf[4] |= LED_AUX;
  518. }

  519. /*----------------------------------------------------------------------------*/
  520. /**@brief LED顯示函數(shù),顯示”----“
  521.    @param 無
  522.    @return 無
  523.    @note
  524. */
  525. /*----------------------------------------------------------------------------*/
  526. void MENU_Waiting_7p7seg(void)@"LED_7COM_API"
  527. {
  528.     LED_5com7seg_dispBuf[0] = LED_7p7seg_L;
  529.     LED_5com7seg_dispBuf[1] = LED_7p7seg_0;
  530.     LED_5com7seg_dispBuf[2] = LED_7p7seg_A;
  531.     LED_5com7seg_dispBuf[3] = LED_7p7seg_d;
  532. }

  533. /*----------------------------------------------------------------------------*/
  534. /**@brief LED顯示函數(shù),顯示”HI“
  535.    @param 無
  536.    @return 無
  537.    @note
  538. */
  539. /*----------------------------------------------------------------------------*/
  540. void MENU_Power_on_7p7seg(void)@"LED_7COM_API"
  541. {
  542.     LED_5com7seg_dispBuf[0] = LED_7p7seg_H;
  543.     LED_5com7seg_dispBuf[1] = LED_7p7seg_I;
  544.     LED_5com7seg_dispBuf[2] = LED_7p7seg_F;
  545.     LED_5com7seg_dispBuf[3] = LED_7p7seg_I;
  546.    
  547. }

  548. /*----------------------------------------------------------------------------*/
  549. /**@brief LED初始化函數(shù),不顯示
  550.    @param 無
  551.    @return 無
  552.    @note
  553. */
  554. /*----------------------------------------------------------------------------*/
  555. void LED_7p7seg_Init(void)@"TASK_RECORD_SEG_1"
  556. {
  557. #if (!SAME_COM_P)
  558.   p_disp_buff2_value[0] = 0;
  559.   p_disp_buff2_value[1] = 0;
  560.   p_disp_buff2_value[2] = 0;
  561.   p_disp_buff2_value[3] = 0;
  562.   p_disp_buff2_value[4] = 0;
  563.   p_disp_buff2_value[5] = 0;
  564.   p_disp_buff2_value[6] = 0;
  565.   ALL_COM_DIRIN;
  566.   ALL_COM_OFF;
  567. #endif
  568.   
  569.   LED_COM_DIR |= 0xFE;                          //P20保持不變
  570.   COM_T = 0;
  571. }

  572. #pragma constseg=LED_7p7s_CONST
  573. const H menu_LED_7p7seg[] =
  574. {
  575.     Menu_NULL_7p7seg,
  576.     Menu_EQ_7p7seg,
  577.     Menu_VOL_7p7seg,
  578.     Menu_FRE_7p7seg,
  579.     Menu_Input_Number_7p7seg,
  580.     Menu_NO_Music_7p7seg,
  581.     MENU_Play_7p7seg,
  582.     Menu_Play_Mode_7p7seg,
  583.     Menu_Next_7p7seg,
  584.     Menu_Pause_7p7seg,
  585.     Menu_NO_Device_7p7seg,
  586.     MENU_Power_on_7p7seg,
  587.     MENU_Waiting_7p7seg,
  588.     MENU_linein_7p7seg,
  589.     Menu_FMNext_7p7seg,
  590.     Menu_PCconnect_7p7seg,
  591.     Menu_OFF_7p7seg,
  592.     Menu_VOLUP_7p7seg,
  593.     Menu_VOLDOWN_7p7seg,
  594.     Menu_RTC_7p7seg,
  595.     Menu_Rec,
  596.     Menu_Spear,
  597.     Menu_ALLNUM_7p7seg,
  598.     Menu_Voice_Switch,
  599. };
  600. #pragma constseg=default
  601. /*----------------------------------------------------------------------------*/
  602. /**@brief 7p7s LED 顯示函數(shù)
  603.    @param menu_number,需要顯示的菜單號碼
  604.    @return 無
  605.    @note
  606. */
  607. /*----------------------------------------------------------------------------*/
  608. void DispMenu_LED_7p7seg(u8 menu_number)@"LED_7P7S_API"
  609. {
  610.     u8 i;
  611.     void (*p)(void);

  612.     p = menu_LED_7p7seg[menu_number];
  613.     returnCount = 0;

  614.     for(i=0;i<5;i++)
  615.       LED_5com7seg_dispBuf[i] = LED_7p7seg_BLANK;

  616.     (*p)();
  617.    
  618.     IE_EA = 0;
  619.     led_value_set();
  620.     IE_EA = 1;
  621. }


  622. /*----------------------------------------------------------------------------*/
  623. /**@brief 顯示函數(shù),根據(jù)指定的菜單號顯示相應(yīng)的菜單
  624.    @param menu_number 需要顯示的菜單號碼
  625.    @return 無
  626.    @note
  627. */
  628. /*----------------------------------------------------------------------------*/
  629. void DispMenu(u8 menu_number)@"LED_7P7S_API"//@"DealMsg"
  630. {
  631.     if(menu_number != MENU_INPUT_NUM)
  632.         inputNum = 0;
  633.    
  634. #ifdef LED_7P7S_EN
  635.      syslastbatval= 0xff;//更新電池顯示
  636.      DispMenu_LED_7p7seg(menu_number);
  637. #endif  
  638. }



  639. __near_func void DispBat(void)
  640. {   
  641.   u8 static __idata count;
  642.   
  643.   //if(sys_ctl.disp_bat_val != syslastbatval)
  644.   {
  645.     LED_5com7seg_dispBuf[4] &= ~LED_FULL;
  646.     LED_5com7seg_dispBuf[4] &= ~LED_HALF;
  647.    
  648.     if((curMenu != MENU_OFF)&&(curMenu != MENU_POWER_ON))
  649.     {
  650.       if(sys_ctl.disp_bat_val == 2)
  651.       {
  652.         LED_5com7seg_dispBuf[4] |= LED_FULL;
  653.       }  
  654.       else if(sys_ctl.disp_bat_val == 1)
  655.       {
  656.         LED_5com7seg_dispBuf[4] |= LED_HALF;
  657.       }
  658.       else if(sys_ctl.disp_bat_val == 0)
  659.       {
  660.         if(HalfsecFlash)
  661.         {
  662.           LED_5com7seg_dispBuf[4] |= LED_HALF;
  663.         }
  664.       }
  665.       else
  666.       {
  667.         if(batchargecout == 1)
  668.         {
  669.          
  670.         }
  671.         else if(batchargecout == 2)
  672.         {
  673.           LED_5com7seg_dispBuf[4] |= LED_HALF;
  674.         }
  675.         else
  676.         {
  677.           LED_5com7seg_dispBuf[4] |= LED_FULL;
  678.           LED_5com7seg_dispBuf[4] |= LED_HALF;
  679.         }
  680.       }
  681.     }
  682.    
  683.     if(LED_5com7seg_dispBuf[4]&LED_HALF)   
  684.       p_disp_buff2_value[0] |= BIT(4);
  685.     else
  686.       p_disp_buff2_value[0] &= ~BIT(4);
  687.    
  688.     if(LED_5com7seg_dispBuf[4]&LED_FULL)
  689.       p_disp_buff2_value[2] |= BIT(6);
  690.     else
  691.       p_disp_buff2_value[2] &= ~BIT(6);
  692.   }
  693.   //syslastbatval = sys_ctl.disp_bat_val;
  694. }


  695. #define     BitCHK_0(REG,POS)   ((REG & (1 << POS)) == 0x00)
  696. /*----------------------------------------------------------------------------*/
  697. /**@brief 7腳LED掃描函數(shù),逐次點燈每個LED的每一段(P21 ~ P27)
  698.    @param 無
  699.    @return 無
  700.    @note
  701. */
  702. /*----------------------------------------------------------------------------*/
  703. __near_func void LED_7p7seg_Scan(void)
  704. {
  705.   static u8 __idata count = 0;
  706.   
  707.   u8 com_seg_first_off;
  708.   
  709.   u8 dis_seg = 0,dir_temp = 0,out_temp = 0;
  710.    
  711.     DispBat();
  712.     /*if (COM_T == 8)
  713.     {
  714.     count = 8;
  715.     LineInCheck();                           //復(fù)用檢測
  716.     EarphoneCheck();
  717.     DCINCheck();
  718.   }  */
  719.    
  720.   if(sys_ctl.backlight_sta == 0)
  721.   {
  722.     ALL_COM_OFF;
  723.     ALL_COM_DIRIN;
  724.     return;
  725.   }
  726.   
  727.   if (count > 6)
  728.   {
  729.     count = 0;
  730.     COM_T++;
  731.   }
  732.   
  733.   if(COM_T > 6)                                //復(fù)用檢測時注意修改此處                             
  734.     COM_T = 0;
  735.   
  736.    dis_seg = p_disp_buff2_value[COM_T];
  737.   
  738.    //if(count == COM_T)                          //SEG及COM同一IO情況不存在   
  739.    //{
  740.    //  count += 1;
  741.    //}
  742.    
  743.    
  744.    while(count<7)
  745.    {
  746.      if(count == COM_T)                          //SEG及COM同一IO情況不存在   
  747.      {
  748.        count ++;
  749.      }
  750.      
  751.      if(BitCHK_0(dis_seg,count))
  752.      {
  753.        count++;
  754.        // break;
  755.      }
  756.      else
  757.      {
  758.        break;
  759.      }
  760.    }
  761.    
  762.    dis_seg = dis_seg & BIT(count);  
  763.    count++;
  764.   
  765.   //同一個P口的時候  
  766.   //out_temp = LED_COM;
  767.   
  768.   dir_temp = LED_COM_DIR;
  769.   
  770.   dir_temp  = 0xff;           
  771.   dir_temp &= ~((1 << COM_T) | dis_seg);
  772.   
  773.   out_temp |= (1 << COM_T);   
  774.   
  775.   LED_COM = out_temp;
  776.   LED_COM_DIR = dir_temp;                     //點亮一段
  777.   
  778. #if (!SAME_COM_P) //數(shù)碼管的口,不在同一個P口上
  779.   
  780.   ALL_COM_OFF;
  781.   ALL_COM_DIRIN;
  782.   
  783.   if(LED_COM&BIT(0))
  784.   {
  785.     LED_COM_0_ON;
  786.   }
  787.   
  788.   if(LED_COM&BIT(1))
  789.   {
  790.     LED_COM_1_ON;
  791.   }  
  792.   
  793.   if(LED_COM&BIT(2))
  794.   {
  795.     LED_COM_2_ON;
  796.   }  
  797.   
  798.   if(LED_COM&BIT(3))
  799.   {
  800.     LED_COM_3_ON;
  801.   }
  802.   
  803.   if(LED_COM&BIT(4))
  804.   {
  805.     LED_COM_4_ON;
  806.   }  
  807.   
  808.   if(LED_COM&BIT(5))
  809.   {
  810.     LED_COM_5_ON;
  811.   }
  812.   
  813.   if(LED_COM&BIT(6))
  814.   {
  815.     LED_COM_6_ON;
  816.   }   
  817.   
  818.   if((dir_temp&BIT(0)) == 0)
  819.   {
  820.     COM_DIR0_OUT;
  821.   }
  822.    
  823.   if((dir_temp&BIT(1)) == 0)
  824.   {
  825.     COM_DIR1_OUT;
  826.   }  
  827.   
  828.   if((dir_temp&BIT(2)) == 0)
  829.   {
  830.     COM_DIR2_OUT;
  831.   }
  832.   
  833.   if((dir_temp&BIT(3)) == 0)
  834.   {
  835.     COM_DIR3_OUT;
  836.   }  
  837.   
  838.   if((dir_temp&BIT(4)) == 0)
  839.   {
  840.     COM_DIR4_OUT;
  841.   }  
  842.   
  843.   if((dir_temp&BIT(5)) == 0)
  844.   {
  845.     COM_DIR5_OUT;
  846.   }
  847.   
  848.   if((dir_temp&BIT(6)) == 0)
  849.   {
  850.     COM_DIR6_OUT;
  851.   }
  852.   
  853. #endif
  854.   
  855. // count++;
  856. }

  857. /*------------------------------------------------------3--------------------------*/
  858. /**@brief 根據(jù)7腳LED的真值表進(jìn)行映射(每段輸出高的IO記為COM端 7*7)COM:0~6  SEG:1~7
  859.    @param 無
  860.    @return 無
  861.    @note
  862. */
  863. /*------------------------------------------------------------------------------*/
  864. void led_value_set(void)@"LED_7COM_API"
  865. {
  866.     u8 tmpbuf[7];
  867.    
  868.     memset(tmpbuf, 0, 7);

  869.     if(LED_5com7seg_dispBuf[0]&BIT_A)     tmpbuf[0] |= BIT(1);
  870.     if(LED_5com7seg_dispBuf[0]&BIT_B)     tmpbuf[0] |= BIT(2);
  871.     if(LED_5com7seg_dispBuf[0]&BIT_C)     tmpbuf[3] |= BIT(0);
  872.     if(LED_5com7seg_dispBuf[0]&BIT_D)     tmpbuf[4] |= BIT(0);
  873.     if(LED_5com7seg_dispBuf[0]&BIT_E)     tmpbuf[0] |= BIT(3);
  874.     if(LED_5com7seg_dispBuf[0]&BIT_F)     tmpbuf[1] |= BIT(0);
  875.     if(LED_5com7seg_dispBuf[0]&BIT_G)     tmpbuf[2] |= BIT(0);

  876.     if(LED_5com7seg_dispBuf[1]&BIT_A)     tmpbuf[1] |= BIT(2);
  877.     if(LED_5com7seg_dispBuf[1]&BIT_B)     tmpbuf[1] |= BIT(3);
  878.     if(LED_5com7seg_dispBuf[1]&BIT_C)     tmpbuf[4] |= BIT(1);
  879.     if(LED_5com7seg_dispBuf[1]&BIT_D)     tmpbuf[1] |= BIT(5);
  880.     if(LED_5com7seg_dispBuf[1]&BIT_E)     tmpbuf[1] |= BIT(4);
  881.     if(LED_5com7seg_dispBuf[1]&BIT_F)     tmpbuf[2] |= BIT(1);
  882.     if(LED_5com7seg_dispBuf[1]&BIT_G)     tmpbuf[3] |= BIT(1);

  883.     if(LED_5com7seg_dispBuf[2]&BIT_A)     tmpbuf[4] |= BIT(3);
  884.     if(LED_5com7seg_dispBuf[2]&BIT_B)     tmpbuf[2] |= BIT(4);
  885.     if(LED_5com7seg_dispBuf[2]&BIT_C)     tmpbuf[3] |= BIT(4);
  886.     if(LED_5com7seg_dispBuf[2]&BIT_D)     tmpbuf[5] |= BIT(0);
  887.     if(LED_5com7seg_dispBuf[2]&BIT_E)     tmpbuf[5] |= BIT(2);
  888.     if(LED_5com7seg_dispBuf[2]&BIT_F)     tmpbuf[3] |= BIT(2);
  889.     if(LED_5com7seg_dispBuf[2]&BIT_G)     tmpbuf[4] |= BIT(2);

  890.     if(LED_5com7seg_dispBuf[3]&BIT_A)     tmpbuf[6] |= BIT(5);
  891.     if(LED_5com7seg_dispBuf[3]&BIT_B)     tmpbuf[5] |= BIT(6);
  892.     if(LED_5com7seg_dispBuf[3]&BIT_C)     tmpbuf[4] |= BIT(5);
  893.     if(LED_5com7seg_dispBuf[3]&BIT_D)     tmpbuf[5] |= BIT(3);
  894.     if(LED_5com7seg_dispBuf[3]&BIT_E)     tmpbuf[3] |= BIT(5);
  895.     if(LED_5com7seg_dispBuf[3]&BIT_F)     tmpbuf[5] |= BIT(4);
  896.     if(LED_5com7seg_dispBuf[3]&BIT_G)     tmpbuf[4] |= BIT(6);
  897.    
  898.     if(LED_5com7seg_dispBuf[4]&LED_DDOT)   tmpbuf[2] |= BIT(3);
  899.     if(LED_5com7seg_dispBuf[4]&LED_USB)    tmpbuf[5] |= BIT(1);
  900.     if(LED_5com7seg_dispBuf[4]&LED_SD)     tmpbuf[0] |= BIT(5);
  901.     if(LED_5com7seg_dispBuf[4]&LED_FM)     tmpbuf[2] |= BIT(5);
  902.     if(LED_5com7seg_dispBuf[4]&LED_FM_DOT) tmpbuf[6] |= BIT(4);   
  903.     if(LED_5com7seg_dispBuf[4]&LED_HALF)   tmpbuf[0] |= BIT(4);
  904.     if(LED_5com7seg_dispBuf[4]&LED_FULL)   tmpbuf[2] |= BIT(6);
  905.    
  906.     memcpy(p_disp_buff2_value, tmpbuf, 7);   
  907. }
  908. #endif

復(fù)制代碼


回復(fù)

使用道具 舉報

12#
ID:808485 發(fā)表于 2020-8-31 14:09 | 只看該作者
頂10樓,關(guān)鍵I/O要3態(tài)。
回復(fù)

使用道具 舉報

13#
ID:820555 發(fā)表于 2020-11-3 17:45 | 只看該作者
哥,你這個數(shù)碼管程序有嗎,可以借鑒下不
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本三级在线网站 | 一区二区三区四区在线 | 黄色一级大片在线免费看产 | 国户精品久久久久久久久久久不卡 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品久久久久久久久久久久久 | 国产激情免费视频 | 欧美精品一区在线发布 | 99精品在线免费观看 | 亚洲精品成人网 | 中文在线视频观看 | a免费视频 | 美女一级黄 | 九色www| 国内精品视频在线 | 国产高潮好爽受不了了夜夜做 | 成人亚洲 | 欧美日韩视频网站 | 一区二区三区国产精品 | 亚洲精品黑人 | 人人干人人干人人干 | 国精日本亚洲欧州国产中文久久 | 激情久久av一区av二区av三区 | 久久成人精品一区二区三区 | 美国av毛片 | 国产成人免费视频 | 欧美日韩一区二区三区四区 | 精品久久国产老人久久综合 | 在线视频亚洲 | 国产精品久久久久久久久久久久 | 91精品国产一二三 | 午夜影院在线观看 | 久久激情网 | 亚洲精品视频在线播放 | 国产1区| 日本成年免费网站 | 99国内精品久久久久久久 | 在线黄色网| 日日夜夜免费精品视频 | 欧美一卡二卡在线 | 黄色国产在线视频 |