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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2058|回復(fù): 16
收起左側(cè)

STC8G1K單片機(jī)芯片和TM1640怎么顯示123?

[復(fù)制鏈接]
ID:991042 發(fā)表于 2023-11-7 18:04 | 顯示全部樓層 |閱讀模式
#include <stc8.h>
sbit CLK = P1^0;  // 連接到TM1640的CLK引腳
sbit DIO = P1^1;   // 定義DIO引腳,連接到TM1640的DIO引腳

void delay_us(unsigned int us)
{
    while(us--);  // 延時函數(shù),延時us微秒
}

void TM1640_Start(void)
{
    CLK = 1;  // CLK引腳置高電平
    DIO = 1;  // DIO引腳置高電平
    delay_us(2);  // 延時2微秒
    DIO = 0;  // DIO引腳置低電平
}

void TM1640_Stop(void)
{
    CLK = 0;  // CLK引腳置低電平
    delay_us(2);  // 延時2微秒
    DIO = 0;  // DIO引腳置低電平
    delay_us(2);  // 延時2微秒
    CLK = 1;  // CLK引腳置高電平
    delay_us(2);  // 延時2微秒
    DIO = 1;  // DIO引腳置高電平
}

void TM1640_WriteByte(unsigned char data1)
{
    unsigned char i;
    for(i=0; i<8; i++)  // 循環(huán)8次,寫入8位數(shù)據(jù)
    {
        CLK = 0;  // CLK引腳置低電平
        DIO = data1 & 0x01;  // 將data1的最低位寫入DIO引腳
        data1 >>= 1;  // data1右移1位,準(zhǔn)備寫入下一位
        delay_us(2);  // 延時2微秒
        CLK = 1;  // CLK引腳置高電平
        delay_us(2);  // 延時2微秒
    }
    CLK = 0;  // CLK引腳置低電平
    DIO = 1;  // DIO引腳置高電平
    delay_us(2);  // 延時2微秒
    CLK = 1;  // CLK引腳置高電平
    delay_us(2);  // 延時2微秒
    CLK = 0;  // CLK引腳置低電平
}

void TM1640_Display(unsigned char data2)
{
    TM1640_Start();  // 發(fā)送起始信號
    TM1640_WriteByte(0x44);  // 發(fā)送命令,設(shè)置TM1640為固定地址模式
    TM1640_Stop();  // 發(fā)送結(jié)束信號
    TM1640_Start();  // 發(fā)送起始信號
    TM1640_WriteByte(0x8C);  // 發(fā)送命令,設(shè)置TM1640的顯示亮度
    TM1640_WriteByte(data2);  // 發(fā)送數(shù)據(jù),顯示指定的數(shù)字
    TM1640_Stop();  // 發(fā)送結(jié)束信號
}

void main()
{
    P1M0 = 0xff;  // 將P1設(shè)置為推挽輸出模式
    P1M1 = 0x00;
    while(1)
                {
                        TM1640_Display(0x03);  // 顯示數(shù)字6        
                }
}
我該怎么寫,才能顯示123?不知道怎么控制數(shù)碼管哪個亮。
IMG_2441.JPG

STC8G系列單片機(jī)介紹.pdf

867.77 KB, 下載次數(shù): 3

TM1640B.pdf

669.68 KB, 下載次數(shù): 4

回復(fù)

使用道具 舉報

ID:69038 發(fā)表于 2023-11-7 21:05 | 顯示全部樓層
你沒有做段碼表啊?
回復(fù)

使用道具 舉報

ID:748788 發(fā)表于 2023-11-7 21:57 | 顯示全部樓層
回復(fù)

使用道具 舉報

ID:991042 發(fā)表于 2023-11-8 09:49 | 顯示全部樓層
zhuls 發(fā)表于 2023-11-7 21:05
你沒有做段碼表啊?

想做的,但是寫常規(guī)的共陰段碼顯示不出數(shù)字的。
回復(fù)

使用道具 舉報

ID:272612 發(fā)表于 2023-11-8 10:00 | 顯示全部樓層
你這個問題,首先需要搞清楚如何像你的代碼寫的一樣顯示一個單純的一個數(shù)字,然后再將123,拆解為1,2,3然后像下面一樣顯示出來。
TM1640_Display(0x01);  // 顯示數(shù)字1  
TM1640_Display(0x02);  // 顯示數(shù)字2  
TM1640_Display(0x03);  // 顯示數(shù)字3  

TM1640這個芯片好像用的還是蠻多的,應(yīng)該很容易找到驅(qū)動數(shù)碼管的程序的
回復(fù)

使用道具 舉報

ID:69038 發(fā)表于 2023-11-8 10:02 | 顯示全部樓層
jade-lluo 發(fā)表于 2023-11-8 09:49
想做的,但是寫常規(guī)的共陰段碼顯示不出數(shù)字的。

TM系列的LED驅(qū)動IC有個特性:不管共陰共陽數(shù)碼管,LED的正極一定要接SEG端,而負(fù)極一定要接GRID端否則會出錯不亮。
所以你這個硬件電路連接關(guān)系對得上了嗎?
回復(fù)

使用道具 舉報

ID:69038 發(fā)表于 2023-11-8 10:17 | 顯示全部樓層
jade-lluo 發(fā)表于 2023-11-8 09:49
想做的,但是寫常規(guī)的共陰段碼顯示不出數(shù)字的。

又看了一下你的代碼和圖片。發(fā)現(xiàn)你離成功僅一行代碼:你少發(fā)了個顯示地址!
你發(fā)數(shù)據(jù),能顯示出來,說明電路什么的都正常了,
你改寫一下TM1640_Display(unsigned char data2這個函數(shù),把地址帶入:

void TM1640_Display(unsigned char addr,unsigned char data2)
{
    TM1640_Start();  // 發(fā)送起始信號
    TM1640_WriteByte(0x44);  // 發(fā)送命令,設(shè)置TM1640為固定地址模式
    TM1640_Stop();  // 發(fā)送結(jié)束信號
    TM1640_Start();  // 發(fā)送起始信號
    TM1640_WriteByte(0x8C);  // 發(fā)送命令,設(shè)置TM1640的顯示亮度
    TM1640_WriteByte(0xc0+addr);  // 發(fā)送顯示地址,指定位
    TM1640_WriteByte(data2);  // 發(fā)送數(shù)據(jù),顯示指定的數(shù)字
    TM1640_Stop();  // 發(fā)送結(jié)束信號
}
調(diào)用時:
TM1640_Display(0,0x1);//第一個數(shù)碼管顯示“a”段
TM1640_Display(2,0xEF);//第三個數(shù)碼管顯示“8”字形
==
回復(fù)

使用道具 舉報

ID:69038 發(fā)表于 2023-11-8 10:20 | 顯示全部樓層
jade-lluo 發(fā)表于 2023-11-8 09:49
想做的,但是寫常規(guī)的共陰段碼顯示不出數(shù)字的。

參考板凳的貼子。很詳細(xì)很好的!
回復(fù)

使用道具 舉報

ID:991042 發(fā)表于 2023-11-8 18:07 | 顯示全部樓層
zhuls 發(fā)表于 2023-11-8 10:17
又看了一下你的代碼和圖片。發(fā)現(xiàn)你離成功僅一行代碼:你少發(fā)了個顯示地址!
你發(fā)數(shù)據(jù),能顯示出來,說明 ...

改了你說的這段代碼,可是沒有用。還是3個LED都亮
回復(fù)

使用道具 舉報

ID:69038 發(fā)表于 2023-11-8 20:11 | 顯示全部樓層
jade-lluo 發(fā)表于 2023-11-8 18:07
改了你說的這段代碼,可是沒有用。還是3個LED都亮

參考板凳的貼子。
認(rèn)真讀一下,并按原貼的代碼,改一下IO運行一下
回復(fù)

使用道具 舉報

ID:991042 發(fā)表于 2023-11-15 09:23 | 顯示全部樓層
zhuls 發(fā)表于 2023-11-8 20:11
參考板凳的貼子。
認(rèn)真讀一下,并按原貼的代碼,改一下IO運行一下

我認(rèn)真看了又看,還是不行。能說細(xì)一點嗎?大佬
回復(fù)

使用道具 舉報

ID:161164 發(fā)表于 2023-11-15 11:09 | 顯示全部樓層
2023-11-15_110018.png

void TM1640_Display(unsigned char Digi,unsigned char Seg)
{
    TM1640_Start();  // 發(fā)送起始信號
    TM1640_WriteByte(0x44);  // 發(fā)送設(shè)置數(shù)據(jù),設(shè)置TM1640為固定地址模式
    TM1640_Stop();  // 發(fā)送結(jié)束信號
    TM1640_Start();  // 發(fā)送起始信號
    TM1640_WriteByte(0xC0 + Digi);  // 發(fā)送設(shè)置地址,顯示指定的位置
    TM1640_WriteByte(Seg);  // 發(fā)送顯示數(shù)據(jù),顯示指定的數(shù)字取模
    TM1640_Stop();  // 發(fā)送結(jié)束信號
    TM1640_Start();  // 發(fā)送起始信號
    TM1640_WriteByte(0x8C);  // 發(fā)送命令,設(shè)置TM1640的顯示亮度
    TM1640_Stop();  // 發(fā)送結(jié)束信號
}
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2023-11-15 11:10 | 顯示全部樓層
jade-lluo 發(fā)表于 2023-11-15 09:23
我認(rèn)真看了又看,還是不行。能說細(xì)一點嗎?大佬

詳細(xì)介紹你的硬件連接關(guān)系。小板子接的是串口,TM1640在數(shù)碼管模塊上還是在開發(fā)板上?
回復(fù)

使用道具 舉報

ID:991042 發(fā)表于 2023-11-15 16:18 | 顯示全部樓層
wulin 發(fā)表于 2023-11-15 11:10
詳細(xì)介紹你的硬件連接關(guān)系。小板子接的是串口,TM1640在數(shù)碼管模塊上還是在開發(fā)板上?

TM1640是單獨的模塊。封裝出來有4的腳,一個D(數(shù)據(jù))和S(時鐘),正極負(fù)極。STC8G1KO8的芯片,20個引腳。STC8G1K的P11連了TM1640的D口(數(shù)據(jù)),P10連了TM1640的S(時鐘)口。STC8G1K的下載端口是沒有問題的,可以燒錄。我是接了51普中科技的下載端口。
回復(fù)

使用道具 舉報

ID:1099849 發(fā)表于 2023-11-15 16:47 | 顯示全部樓層
TM1640_Display(0x01);  // 顯示數(shù)字1  
TM1640_Display(0x02);  // 顯示數(shù)字2  
TM1640_Display(0x03);  // 顯示數(shù)字3
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2023-11-15 21:55 | 顯示全部樓層
jade-lluo 發(fā)表于 2023-11-15 16:18
TM1640是單獨的模塊。封裝出來有4的腳,一個D(數(shù)據(jù))和S(時鐘),正極負(fù)極。STC8G1KO8的芯片,20個引腳 ...
  1. #include <stc8.h>
  2. #include <intrins.h>

  3. sbit CLK = P1^0;  // 連接到TM1640的CLK引腳
  4. sbit DIO = P1^1;   // 定義DIO引腳,連接到TM1640的DIO引腳
  5. //本地常量聲明       
  6. unsigned char code table[]={     //標(biāo)準(zhǔn)字庫
  7. //   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
  8.     0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
  9. //black          -    H    J    K          L           N    o    P          U    t    G    Q    r    M    y
  10.     0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e};

  11. void TM1640_Start(void)
  12. {
  13.         CLK = 1;  // CLK引腳置高電平
  14.         DIO = 1;  // DIO引腳置高電平
  15.         _nop_();_nop_();//延時2個時鐘
  16.         DIO = 0;  // DIO引腳置低電平
  17.         CLK = 0;
  18. }

  19. void TM1640_Stop(void)
  20. {
  21.         DIO = 0;  // DIO引腳置低電平
  22.         _nop_();_nop_();//延時2個時鐘
  23.         CLK = 1;  // CLK引腳置高電平
  24.         _nop_();_nop_();//延時2個時鐘
  25.         DIO = 1;  // DIO引腳置高電平
  26. }

  27. void TM1640_Write_Byte(unsigned char data1)
  28. {
  29.     unsigned char i;
  30.     CLK = 0;
  31.     DIO = 0;
  32.     for(i=0; i<8; i++)  // 循環(huán)8次,寫入8位數(shù)據(jù)
  33.     {
  34.                 CLK = 0;  // CLK引腳置低電平
  35.                 if(data1 & 0x01)
  36.                         DIO = 1;  // 將data1的最低位寫入DIO引腳
  37.                 else
  38.                         DIO = 0;
  39.                 CLK = 1;
  40.                 data1 >>= 1;  // data1右移1位,準(zhǔn)備寫入下一位
  41.     }
  42.     CLK = 0;  // CLK引腳置低電平
  43.     DIO = 0;  // DIO引腳置低電平
  44. }

  45. void TM1640_Write_Com(unsigned char date)//發(fā)送命令字
  46. {
  47.         TM1640_Start();
  48.         TM1640_Write_Byte(date);
  49.         TM1640_Stop();
  50. }

  51. void TM1640_Display()
  52. {
  53.         unsigned char i;
  54.         TM1640_Write_Com(0x40);//44固定地址 40連續(xù)地址
  55.         TM1640_Start();  // 發(fā)送起始信號
  56.         TM1640_Write_Byte(0xc0);//從第一個地址開始
  57.         for(i=0;i<3;i++)
  58.                 TM1640_Write_Byte(table[i+1]);  // 連續(xù)發(fā)3個數(shù)字。最多16個數(shù)字
  59.         TM1640_Stop();  // 發(fā)送結(jié)束信號
  60. }
  61. void TM1640_Cls()//清屏函數(shù)
  62. {
  63.         unsigned char i;
  64.         TM1640_Write_Com(0x40);//地址自動加1模式
  65.         TM1640_Start();
  66.         TM1640_Write_Byte(0xc0);
  67.         for(i=0;i<16;i++)
  68.                 TM1640_Write_Byte(0x00);
  69.         TM1640_Stop();
  70. }
  71. void TM1640_Init()
  72. {
  73.         TM1640_Cls();
  74.         TM1640_Write_Com(0x8c);//亮度0x88~0x8F
  75. }
  76. void main()
  77. {
  78.         P0M0 = 0x00;
  79.         P0M1 = 0x00;
  80.         P1M0 = 0x00;
  81.         P1M1 = 0x00;
  82.         P2M0 = 0x00;
  83.         P2M1 = 0x00;
  84.         P3M0 = 0x00;
  85.         P3M1 = 0x00;
  86.         P4M0 = 0x00;
  87.         P4M1 = 0x00;
  88.         P5M0 = 0x00;
  89.         P5M1 = 0x00;
  90.         P6M0 = 0x00;
  91.         P6M1 = 0x00;
  92.         P7M0 = 0x00;
  93.         P7M1 = 0x00;
  94.         TM1640_Init();
  95.         TM1640_Display();//連續(xù)發(fā)1、2、3。
  96.         while(1);
  97. }
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:991042 發(fā)表于 2023-11-27 18:26 | 顯示全部樓層

謝謝你wulin,你給的答案很有啟發(fā),我參考你的代碼搞懂了原理。也謝謝大家的回答,非常感謝。
我的問題最主要在對Command1、Command2、Command3的理解不清,導(dǎo)致寫void TM1640_Write_Byte(unsigned char data1)這個的時候邏輯混亂,也搞不清對錯,參考了正確的答案之后豁然開朗。真的超開心!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品a级 | 欧美成人精品一区二区男人看 | 久久久免费观看视频 | 91影院| 中文字幕爱爱视频 | 射久久 | 欧美精品欧美精品系列 | 国产在线一区二区三区 | 一区二区免费视频 | 久久久高清 | 欧美在线激情 | 国产一区二区日韩 | 国产一区二区精品在线观看 | 中文字幕在线观看一区二区 | 在线观看成人小视频 | 国产精品夜间视频香蕉 | 成人在线黄色 | 久久久久国产 | 青青草一区 | 亚洲在线 | 夜夜爽99久久国产综合精品女不卡 | 亚洲色欧美另类 | 四虎影视在线 | 国产精品自在线 | 成人精品一区二区 | 国产美女一区二区 | 久久精品亚洲精品国产欧美 | 九九久久国产精品 | 一区二区三区免费看 | 成人免费在线网 | 成人欧美一区二区三区在线播放 | 国产视频久久久 | 老司机成人在线 | 亚洲一二三区精品 | 久久久这里都是精品 | 欧美在线日韩 | 国产精品久久久久久一区二区三区 | 国产一二三区电影 | 国产激情综合五月久久 | 色婷婷综合久久久中字幕精品久久 | 亚洲网视频 |