亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么我的TM1640點不亮 附單片機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1090863 發(fā)表于 2025-8-27 10:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "Configure.h"
      

/**********************************************************
;功能介紹:控制HBS650顯示                                                                                                                                                                       
;*********在輸入數(shù)據(jù)時當(dāng)CLK是高電平時,DIO的信號必須保持不
變,只有CLK上的時鐘信號為低電平時,DIO上的信號才能改變。數(shù)據(jù)
輸入的開始條件是CLK為高電平時,DIO由高變低;結(jié)束條件是CLK為高
時,DIO由低電平變?yōu)楦唠娖?br />                   數(shù)據(jù)傳輸帶有應(yīng)答信號ACK,當(dāng)傳輸數(shù)據(jù)正確時,會在第8
個時鐘的下降沿IC內(nèi)部會產(chǎn)生一個應(yīng)答信號ACK將DIO管腳拉低,在
第九個時鐘的上升沿釋放DIO口線
;**********************************************************/

uchar        xdata        gb_disIcData[c_HBS650_dataNum];

/***********************************************************
;函數(shù)名稱:void        HBS650_init(void)
;函數(shù)功能:IO初始化
;輸入?yún)?shù):無
;輸出參數(shù):無
;使用注意:
;--------
;---------
;---------
;**********************************************************/
void HBS650_init(void){
      
        /*p_HBS650_dio_out;
        p_HBS650_dio_l;
        p_HBS650_dio_pull;
      
        p_HBS650_clk_out;
        p_HBS650_clk_l;*/               
}

/**********************************************************
;函數(shù)名稱:void        HBS650_start(void)
;函數(shù)功能:啟動信號
;輸入?yún)?shù):
;輸出參數(shù):
;使用注意:在CLK為高期間DIO由高變低做為啟動信號
;---------
;---------
;---------
;**********************************************************/
void HBS650_start(void){
        p_HBS650_dio_h;
        delay_2us();
        p_HBS650_clk_h;
        delay_2us();
        //
        p_HBS650_dio_l;
        delay_2us();
        p_HBS650_clk_l;
        delay_2us();
}


/**********************************************************
;函數(shù)名稱:void        HBS650_stop(void)
;函數(shù)功能:停止信號
;輸入?yún)?shù):
;輸出參數(shù):
;使用注意:在CLK為高期間DIO由低變高做為停止信號
;---------
;---------
;---------
;**********************************************************/
void HBS650_stop(void){
        p_HBS650_dio_l;
        delay_2us();
        p_HBS650_clk_h;
        delay_2us();
        p_HBS650_dio_h;
        delay_2us();
        p_HBS650_clk_l;
        delay_2us();
}


/**********************************************************
;函數(shù)名稱:void        HBS650_write(uchar j)
;函數(shù)功能:停止信號
;輸入?yún)?shù):j:發(fā)送到HBS650的數(shù)據(jù)
;輸出參數(shù):
;使用注意:在CLK為高期間傳輸數(shù)據(jù)
;---------
;---------
;---------
;**********************************************************/
void HBS650_write(uchar j){
        uchar        i;
        for(i=0x80;i;i>>=1){
        //for(i=0x01;i;i<<=1){
                p_HBS650_clk_l;
                delay_2us();
                if(j&i){
                        p_HBS650_dio_h;
                }else{
                        p_HBS650_dio_l;
                }
                //delay_2us();
                p_HBS650_clk_h;
                //delay_2us();                       
        }
        p_HBS650_clk_l;
        delay_2us();
        p_HBS650_dio_in;
        p_HBS650_dio_h;
        i=10;
        while(p_HBS650_dio_get){
                i--;
                if(i==0)        break;
        }
        //p_HBS650_dio_out;
        p_HBS650_dio_l;
        delay_2us();
        p_HBS650_clk_h;
        delay_2us();
        p_HBS650_clk_l;
        delay_2us();
}


#if        (c_HBS650_lightChangeEn)
/**********************************************************
;函數(shù)名稱:void        HBS650_updateData(uchar        grade)
;函數(shù)功能:送顯示數(shù)據(jù)到HBS650并且開顯示
;輸入?yún)?shù):grade:亮度等級
;輸出參數(shù):無
;使用注意:
;---------
;---------
;---------
;**********************************************************/
void HBS650_updateData(uchar        grade){
        uchar        i;
        HBS650_start();
        HBS650_write(c_HBS650_dataWrite);
#if        (c_HBS650_segMode)      
        if(grade){
                HBS650_write(0x09+((grade<<4)&0x70));               
        }else{
                HBS650_write(0x00);               
        }
      
#else
        if(grade){
                HBS650_write(0x01+((grade<<4)&0x70));               
        }else{
                HBS650_write(0x00);               
        }      
#endif      
        HBS650_stop();
        for(i=0;i<c_HBS650_dataNum;i++){
                HBS650_start();
                HBS650_write(c_HBS650_initAddr+i*2);      
                HBS650_write(gb_disIcData[i]);
                HBS650_stop();               
        }                                       
}
#else
/**********************************************************
;函數(shù)名稱:void        HBS650_updateData(void)
;函數(shù)功能:送顯示數(shù)據(jù)到HBS650并且開顯示
;輸入?yún)?shù):無
;輸出參數(shù):無
;使用注意:
;---------
;---------
;---------
;**********************************************************/
void HBS650_updateData(void){
        uchar        i;
        HBS650_start();
        HBS650_write(c_HBS650_dataWrite);
#if        (c_HBS650_segMode)      
        #if        (c_HBS650_lightGrade1)               
                HBS650_write(0x09+((c_HBS650_lightGrade1<<4)&0x70));                              
        #else
                HBS650_write(0x00);               
        #endif
      
#else
        #if        (c_HBS650_lightGrade1)               
                HBS650_write(0x01+((c_HBS650_lightGrade1<<4)&0x70));                              
        #else
                HBS650_write(0x00);               
        #endif      
#endif      
        HBS650_stop();
        for(i=0;i<c_HBS650_dataNum;i++){
                HBS650_start();
                HBS650_write((uchar)(c_HBS650_initAddr+i));      
                //HBS650_write((uchar)(c_HBS650_initAddr+i*2));
                HBS650_write(gb_disIcData[i]);
                HBS650_stop();               
        }      
}
#endif





#ifndef        __HBS650_H__
#define        __HBS650_H__

/*************************************************************
***********************IO口定義*******************************
*************************************************************/
//dio和clk初始化為輸出低電平,dio如果外部接上拉則無需上拉,如果沒有就開上拉
#define p_HBS650_dio_get                              GET_PORT_PIN(B,2)
#define p_HBS650_dio_in                              SET_PORT_IN(B,2,GPIO_In_AN)
#define p_HBS650_dio_h                          SET_PORT_OUT(B,2,GPIO_Out_PP,1)
#define p_HBS650_dio_l                          SET_PORT_OUT(B,2,GPIO_Out_PP,0)

#define p_HBS650_clk_get                              GET_PORT_PIN(B,1)
#define p_HBS650_clk_in                              SET_PORT_IN(B,1,GPIO_In_AN)
#define p_HBS650_clk_h                          SET_PORT_OUT(B,1,GPIO_Out_PP,1)
#define p_HBS650_clk_l                          SET_PORT_OUT(B,1,GPIO_Out_PP,0)

/*************************************************************
***********************常量定義*******************************
*************************************************************/
#define        c_HBS650_dataNum                                    (16)                       
//顯示變量個數(shù),固定值

#define        c_HBS650_segMode                                    (0)                       
//7/8段顯示選擇 1:7段顯示 0:8段顯示


#define        c_HBS650_lightChangeEn                            (0)                       
//亮度是否可變 0:不可變 1:可變

#define        c_HBS650_lightGrade1                            (4)                       
//亮度第一等級范圍0~8,0為關(guān)顯示,亮度不可變時選擇第一等級做為亮度等級

#define        c_HBS650_lightGrade2                            (4)                       
//亮度第二等級范圍0~8,0為關(guān)顯示

#define        c_HBS650_dataWrite                                    (0x40)               
//寫數(shù)據(jù)到HBS650

#define        c_HBS650_dataRead                                    (0x42)               
//讀數(shù)據(jù)從HBS650

#define        c_HBS650_initAddr                                    (0xc0)               
//顯示初始地址


/*************************************************************
***********************外部函數(shù)申明***************************
*************************************************************/      
extern void        HBS650_init(void);
#if        (c_HBS650_lightChangeEn)      
extern void        HBS650_updateData(uchar        grade);
#else      
extern void        HBS650_updateData(void);
#endif      
      
/*************************************************************
***********************外部變量申明***************************
*************************************************************/
extern        uchar        xdata        gb_disIcData[c_HBS650_dataNum];      
#endif
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1064915 發(fā)表于 2025-8-27 11:42 | 只看該作者
惠博升顯示驅(qū)動芯片介紹:

  1、LED顯示驅(qū)動芯片主要型號:

  HBS635 7段4位,28點陣, 7個按鍵,共陽-SOP16

  HBS650 8段4位,32點陣, 28個按鍵,共陰-SOP16

  HBS652 8段×5位,7段×6位, 不帶按鍵,單線通訊,共陰-SOP16

  HBS658 7段5位,35點陣, 不帶按鍵,共陽-SOP16

  TA1820 8段6位,48點陣,16個按鍵, DIP20/SOP20

  HBS288 8段8位,64點陣,不帶個按鍵,SOP20

  HBS688 8段6位,48點陣,16個按鍵, SOP20

  HBS117 11段7位,77點陣,10個按鍵,QSOP24 三線

  HBS1668 10段7位,70點陣,20按鍵,SOP24

  HBS1628 10段7位,70點陣,20個按鍵,SOP28

  HBS388 8段12位, 96點陣,16個按鍵,SOP28

  HBS188 8段10位, 80點陣,32個按鍵,SOP28

  HBS640 8段16位,128點陣,不帶按鍵,SOP28/QSOP28

  HBS1629A 16段8位,128點陣,不帶按鍵,SOP32

  HBS1632D 24段16位,384點陣 不帶按鍵,SSOP48 (HT1632)

  HBS1632 32段8位,256點陣, 不帶按鍵, SSOP48(HT1632)

  2、LCD液晶屏顯示驅(qū)動芯片主要型號:

  HBS1621 SSOP48 /LQFP44 /LQFP48 32Seg*4com, 128點陣,

  HBS1622 SSOP48 / QFP44 /QFP52/QFP64 32Seg*8com,256點陣,四線串行

  HBS1622F SOP28 14seg*8com 112點陣,2個VDD.

  HBS1721 SSOP48 32seg*4com ,128點陣 ,4*6按鍵,4路背光,2路SW

  HBS1722 SOP24/SSOP24 15seg*4com, 60點陣 , 3路背光,1路SW

  HBS1723 SOP32 20seg*4com, 80點陣, 4*3按鍵,4路背光,

  HBS1621A SSOP48 32seg*4com ,128點陣,4*6按鍵,4路LED驅(qū)動,1個VDD, 三線通訊

  HBS1621C SOP28 18seg*4com,72點陣,線通訊, 2個VDD,通過加電阻調(diào)整偏壓

  HBS1621D SOP24/QSOP24 14seg*4com,56點陣,三線通訊,2個VDD,通過加電阻調(diào)整偏壓

  HBS1621E SOP16 6sep*4com,24點陣,三線通訊,

  HBS1621F SOP28 19seg*4com,76點陣,4路背光,2通用輸入口,1個VDD, 三線通訊

  HBS1621K SOP28 16seg*4com, 64點陣 ,4*3按鍵,4路背光,1個VDD, 三線通訊

  HBS1621L SOP28 20seg*4com, 80點陣, I方C協(xié)議, 1個VDD,通過軟件調(diào)整偏壓

  

  3、音頻處理芯片:

  TM2313 三對輸入四聲道輸出數(shù)字控制音頻處理 SOP28

  TM2314 四對輸入兩聲道輸出數(shù)字控制音頻處理 SOP28
回復(fù)

使用道具 舉報

板凳
ID:314651 發(fā)表于 2025-8-27 11:48 | 只看該作者
1、看下數(shù)碼管共陰共陽有沒有買錯
2、看下數(shù)碼管引腳有沒有接對,不同尺寸的數(shù)碼管公共端不一樣
3、檢查供電是否正常
4、如果上述都沒問題可以在網(wǎng)上找個開源的程序,估計程序有問題
回復(fù)

使用道具 舉報

地板
ID:1090863 發(fā)表于 2025-8-27 14:19 | 只看該作者
花少廣 發(fā)表于 2025-8-27 11:48
1、看下數(shù)碼管共陰共陽有沒有買錯
2、看下數(shù)碼管引腳有沒有接對,不同尺寸的數(shù)碼管公共端不一樣
3、檢查 ...

好的謝謝大佬,意思是這個驅(qū)動程序沒問題嘛。可能是我掃描或者硬件連接的問題嗎,
回復(fù)

使用道具 舉報

5#
ID:1133081 發(fā)表于 2025-8-27 16:47 | 只看該作者
這個TM1640驅(qū)動程序經(jīng)驗證能夠正常使用。適用51內(nèi)核MCU。
  1. #include <STC8G.H>       
  2. #include <intrins.H>

  3. sbit CLK = P3^5;                        //TM1640時鐘端口
  4. sbit DIN = P3^6;                        //TM1640數(shù)據(jù)端口

  5. unsigned char code table[]={//共陰數(shù)碼管段碼"0~f-."
  6.         0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
  7.         0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x80};
  8. unsigned char data dis_buf[16];//顯示緩存

  9. /************TM1640開始函數(shù)*************/
  10. void TM1640_Start()
  11. {
  12.         CLK=1;
  13.         DIN=1;
  14.         DIN=0;
  15.         CLK=0;
  16. }
  17. /************TM1640停止函數(shù)*************/
  18. void TM1640_Stop()
  19. {
  20.         DIN=0;
  21.         CLK=1;
  22.         DIN=1;
  23. }
  24. /************TM1640寫字節(jié)*************/
  25. void TM1640_Write_Byte(unsigned char date)
  26. {
  27.         unsigned char i;
  28.         CLK=0;
  29.         DIN=0;
  30.         for(i=0;i<8;i++)
  31.         {
  32.                 CLK=0;
  33.                 if(date&0x01)DIN=1;
  34.                 else DIN=0;
  35.                 CLK=1;
  36.                 date>>=1;
  37.         }
  38.         CLK=0;
  39.         DIN=0;
  40. }
  41. /****************TM1640發(fā)送命令字*******************/
  42. void TM1640_Write_Com(unsigned char date)
  43. {
  44.         TM1640_Start();
  45.         TM1640_Write_Byte(date);
  46.         TM1640_Stop();
  47. }
  48. /************TM1640指定起始地址連續(xù)寫入若干數(shù)據(jù)*************/
  49. void TM1640_Write_DATA()
  50. {
  51.         unsigned char i;               
  52.         TM1640_Write_Com(0x40);         //44固定地址 40連續(xù)地址
  53.         TM1640_Start();
  54.         TM1640_Write_Byte(0xc0);        //從第一個地址開始
  55.         for(i=0;i<16;i++)                                //連續(xù)寫多個數(shù)據(jù)
  56.                 TM1640_Write_Byte(dis_buf[i]);//最多寫16字節(jié)數(shù)據(jù)
  57.         TM1640_Stop();
  58. }
  59. /************TM1640指定地址寫入1個數(shù)據(jù)*************/
  60. /*
  61. void TM1640_Write_DATA(unsigned date)
  62. {
  63.         TM1640_Write_Com(0x44);         //44固定地址 40連續(xù)地址
  64.         TM1640_Write_Byte(0xc0);        //第一個地址
  65.         TM1640_Write_Byte(date);        //寫一個數(shù)據(jù)
  66.         TM1640_Stop();
  67. }*/
  68. /************TM1640清屏函數(shù)*************/
  69. void TM1640_Cls()
  70. {
  71.         unsigned char i;       
  72.         TM1640_Write_Com(0x40);                //地址自動加1模式
  73.         TM1640_Start();
  74.         TM1640_Write_Byte(0xc0);
  75.         for(i=0;i<16;i++)
  76.                 TM1640_Write_Byte(0x00);
  77.         TM1640_Stop();
  78. }
  79. /************TM1640初始化函數(shù)*************/
  80. void TM1640_Init()
  81. {
  82.         TM1640_Cls();                                //TM1640清屏
  83.         TM1640_Write_Com(0x8c);                //亮度0x88~0x8F
  84. }
  85. /**********主函數(shù)**********/
  86. void main()
  87. {
  88.         unsigned char j;
  89.         TM1640_Init();       //初始化TM1640
  90.         for(j=0;j<16;j++)
  91.         {
  92.                 dis_buf[j]=table[j];//顯示數(shù)據(jù)加入緩存
  93.         }
  94.         TM1640_Write_DATA();//連續(xù)寫入若干數(shù)據(jù)
  95.         while(1);
  96. }
復(fù)制代碼



回復(fù)

使用道具 舉報

6#
ID:584814 發(fā)表于 2025-8-27 18:13 | 只看該作者
無非硬件軟件。
建議先查接線。再查編程,再查器件....
最好是線下找老師或同學(xué)面對面解決。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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