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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
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 (2.04 MB, 下載次數(shù): 105)

IMG_2441.JPG

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

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

TM1640B.pdf

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(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ù)

使用道具 舉報

5#
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ù)

使用道具 舉報

6#
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ù)

使用道具 舉報

7#
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ù)

使用道具 舉報

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

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

使用道具 舉報

9#
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ù)

使用道具 舉報

10#
ID:69038 發(fā)表于 2023-11-8 20:11 | 只看該作者
jade-lluo 發(fā)表于 2023-11-8 18:07
改了你說的這段代碼,可是沒有用。還是3個LED都亮

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

使用道具 舉報

11#
ID:991042 發(fā)表于 2023-11-15 09:23 | 只看該作者
zhuls 發(fā)表于 2023-11-8 20:11
參考板凳的貼子。
認(rèn)真讀一下,并按原貼的代碼,改一下IO運(yùn)行一下

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

使用道具 舉報

12#
ID:161164 發(fā)表于 2023-11-15 11:09 | 只看該作者


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ù)

使用道具 舉報

13#
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ù)

使用道具 舉報

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

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

使用道具 舉報

15#
ID:1099849 發(fā)表于 2023-11-15 16:47 | 只看該作者
TM1640_Display(0x01);  // 顯示數(shù)字1  
TM1640_Display(0x02);  // 顯示數(shù)字2  
TM1640_Display(0x03);  // 顯示數(shù)字3
回復(fù)

使用道具 舉報

16#
ID:213173 發(fā)表于 2023-11-15 21:55 | 只看該作者
jade-lluo 發(fā)表于 2023-11-15 16:18
TM1640是單獨(dú)的模塊。封裝出來有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ù)

使用道具 舉報

17#
ID:991042 發(fā)表于 2023-11-27 18:26 | 只看該作者

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜影院免费 | 免费毛片在线播放免费 | 黄色片网站免费 | 国产在线观看免费 | 最新日韩在线 | 天天干夜夜欢 | 懂色av一区二区夜夜嗨 | 成人黄色一级片 | 久久精品视频一区二区 | 国内自拍xxxx18 | 国产一区二区在线视频 | 九月丁香婷婷 | 日韩久久综合 | 秋霞午夜鲁丝一区二区老狼 | 中文字幕在线观看免费视频 | 国产免费视频 | 亚洲第一黄网 | 黄色片www| 亚洲人天堂 | 中文字幕伊人 | av基地网| 亚洲资源站| 性生活毛片 | 日韩一区二区三区在线 | 成人高清 | 国产成人在线视频 | 欧美日本国产 | 日韩精品视频免费在线观看 | 免费网站www | 日韩免费精品 | 亚洲一级片 | 国产小视频在线 | 中文字幕www | 五月激情网站 | www.日本高清 | 亚洲欧洲在线观看 | 色视频www在线播放国产人成 | 日韩欧美三区 | 中文字幕在线观看一区二区三区 | 成人亚洲精品 | 久久免费看视频 |