找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

我寫了個(gè)程序是LED直驅(qū)共陽極數(shù)碼管的可是共陰極的點(diǎn)陣居然和他顯示一樣的數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這是為啥啊,給共陽數(shù)碼管輸入數(shù)字,共陰極點(diǎn)陣居然可以點(diǎn)亮相應(yīng)的燈
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:584814 發(fā)表于 2023-4-26 17:48 | 只看該作者
人非圣賢,總會(huì)有人出錯(cuò)的
回復(fù)

使用道具 舉報(bào)

板凳
ID:43720 發(fā)表于 2023-4-26 17:55 | 只看該作者
兩個(gè)顯示的硬件是連接在一起的嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:155507 發(fā)表于 2023-4-26 18:41 | 只看該作者
兩個(gè)顯示的硬件是連接在一起的接對(duì)嗎?

程序改對(duì)嗎?
  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU International Limited -------------------------------*/
  3. /* --- STC 1T Series MCU RC Demo -----------------------------------*/
  4. /* If you want to use the program or the program referenced in the  */
  5. /* article, please specify in which data and procedures from STC    */
  6. /*------------------------------------------------------------------*/


  7. /*********************************************************/

  8. #define MAIN_Fosc        11059200L        //定義主時(shí)鐘

  9. #include        "..\..\STC8Hxxx.h"

  10. /*************        功能說明        *************

  11. 同時(shí)驅(qū)動(dòng)8段16個(gè)共陰數(shù)碼管和8段16個(gè)共陽數(shù)碼管自動(dòng)掃描顯示.

  12. P4.0~P4.7: 接SEG0~SEG7,  這8根SEG線跟LED連接要串聯(lián)限流電阻(建議300歐姆以上).
  13. P0.0~P0.3: 接SEG8~SEG11, 這4根SEG線跟LED連接要串聯(lián)限流電阻(建議300歐姆以上).
  14. P3.4~P3.7: 接SEG12~SEG15,這4根SEG線跟LED連接要串聯(lián)限流電阻(建議300歐姆以上).
  15. P2.0~P2.7: 接COM0~COM7

  16.           P4.0 P4.1 P4.2 P4.3 P4.4 P4.5 P4.6 P4.7    P0.0 P0.1 P0.2  P0.3  P3.4  P3.5  P3.6  P3.7
  17.           SEG0 SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7    SEG8 SEG9 SEG10 SEG11 SEG12 SEG13 SEG14 SEG15
  18.            A    B    C    D    E    F    G    H       A    B     C     D     E     F     G     H     
  19. P2.0-COM0
  20. P21.-COM1
  21. P22.-COM2
  22. P23.-COM3
  23. P24.-COM4
  24. P25.-COM5
  25. P26.-COM6
  26. P27.-COM7


  27. ******************************************/


  28. /*************        本地常量聲明        **************/

  29. /*************        本地變量聲明        **************/



  30. /*************        本地函數(shù)聲明        **************/
  31. void  delay_ms(u8 ms);

  32. /****************  外部函數(shù)聲明和外部變量聲明 *****************/


  33. u8 code T_LED_CODE[]={                                                //標(biāo)準(zhǔn)字庫
  34. //代碼            0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
  35. //顯示字符   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
  36.             0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,

  37. //代碼            0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F
  38. //顯示字符   0.   1.   2.   3.   4.   5.   6.   7.   8.   9.   空
  39.             0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x00};
  40.         


  41. //共陰數(shù)碼管字庫導(dǎo)入, i為LED位置0~15, dis為要顯示的代碼 0~9, A~F, 1.~9., 空
  42. void        LoadLED_A(u8 i, u8 dis)
  43. {
  44.         u8        xdata *px;
  45.         
  46.         px = &COM0_DCL + 15 - i;                //PCB布局低位數(shù)碼管在右邊, 所以用(15-i)反一下
  47.         *px = T_LED_CODE[dis & 0x0f];
  48. }

  49. //共陽數(shù)碼管字庫導(dǎo)入, i為LED位置0~15, dis為要顯示的代碼 0~9, A~F, 1.~9., 空
  50. void        LoadLED_B(u8 i, u8 dis)
  51. {
  52.         u8        xdata *px;
  53.         
  54.         px = &COM0_DAL + 15 - i;                //PCB布局低位數(shù)碼管在右邊, 所以用(15-i)反一下
  55.         *px = T_LED_CODE[dis & 0x0f];
  56. }


  57. /**********************************************/
  58. void main(void)
  59. {
  60.         u8        i;

  61.         P_SW2 |= 0x80;        //允許訪問XSFR(擴(kuò)展特殊功能寄存器)
  62. //        XOSCCR = 0xc0;           //啟動(dòng)外部晶振
  63. //        while (!(XOSCCR & 1));   //等待時(shí)鐘穩(wěn)定
  64. //        CLKDIV = 0x00;           //時(shí)鐘不分頻
  65. //        CKSEL = 0x01;            //選擇外部晶振


  66.         P2n_push_pull(0xff);        //COM0~COM7線設(shè)置為推挽輸出
  67.         P4n_push_pull(0xff);        //SEG0~SEG7(P4.0~P4.7)線設(shè)置為推挽輸出
  68.         P0n_push_pull(0x0f);        //SEG8~SEG11(P0.0~P0.3)線設(shè)置為推挽輸出
  69.         P3n_push_pull(0xf0);        //SEG12~SEG15(P3.4~P3.7)線設(shè)置為推挽輸出

  70.         P2DR = 0x00;        //COM0~COM7線設(shè)置為強(qiáng)電流驅(qū)動(dòng)
  71.         P4DR = 0x00;        //SEG0~SEG7線設(shè)置為強(qiáng)電流驅(qū)動(dòng)
  72.         P0DR = 0xf0;        //SEG8~SEG11線設(shè)置為強(qiáng)電流驅(qū)動(dòng)
  73.         P3DR = 0x0f;        //SEG12~SEG15線設(shè)置為強(qiáng)電流驅(qū)動(dòng)

  74.         COMEN  = 0xff;        //允許8個(gè)COM
  75.         SEGENL = 0xff;        //允許8個(gè)SEG 低字節(jié)
  76.         SEGENH = 0xff;        //允許8個(gè)SEG 高字節(jié)
  77.         LEDCTRL = 0x80 + (2<<4) + 0;        //B7=1: ON,  B5 B4: 0共陰, 1共陽, 2共陰共陽, 3保留, B2 B1 B0: 0占空比100%, 1~7占空比7/8~1/8
  78.         LEDCKS = 4;                //數(shù)碼管COM掃描顯示的主頻時(shí)鐘數(shù) = 160*9*LEDCKS, 每個(gè)COM顯示時(shí)間=1440*LEDCKS/fosc(MHz) us, COM掃描頻率=fosc/(1440*LEDCKS *COM數(shù)).
  79.                                         //例如 fosc = 11.0592MHz, 共陰共陽一共16個(gè)COM, LEDCKS = 4, 則每個(gè)COM顯示時(shí)間=1440*4/11.0592 = 521 us, COM掃描頻率=11059200/(1440*4*16)=120Hz.
  80.                                         //已知掃描時(shí)間t(us)計(jì)算 LEDCKS = t*fosc(MHz)/1440, 比如fosc = 24MHz, 要求1個(gè)COM掃描1ms, 則 LEDCKS = 1000*24/1440 = 16.7, 取整數(shù)17.

  81.         for(i=0; i<16; i++)        LoadLED_A(i,i);                //共陰,顯示0123456789ABCDEF
  82.         for(i=0; i<16; i++)        LoadLED_B(i,15-i);        //共陽,顯示FEDCBA9876543210
  83.         
  84.         
  85.         while (1)
  86.         {
  87.                 //刷新COM0_DCL~COM7_DCL, COM0_DCH~COM7_DCH,即可刷新共陰顯示內(nèi)容.
  88.                 //刷新COM0_DAL~COM0_DAL, COM0_DAH~COM0_DAH,即可刷新共陽顯示內(nèi)容.
  89.                
  90.         }
  91. }
  92. /**********************************************/
  93.   
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表