![]() |
發布時間: 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) { whil ... |
謝謝你wulin,你給的答案很有啟發,我參考你的代碼搞懂了原理。也謝謝大家的回答,非常感謝。 我的問題最主要在對Command1、Command2、Command3的理解不清,導致寫void TM1640_Write_Byte(unsigned char data1)這個的時候邏輯混亂,也搞不清對錯,參考了正確的答案之后豁然開朗。真的超開心! |
jade-lluo 發表于 2023-11-15 16:18
|
TM1640_Display(0x01); // 顯示數字1 TM1640_Display(0x02); // 顯示數字2 TM1640_Display(0x03); // 顯示數字3 |
wulin 發表于 2023-11-15 11:10 TM1640是單獨的模塊。封裝出來有4的腳,一個D(數據)和S(時鐘),正極負極。STC8G1KO8的芯片,20個引腳。STC8G1K的P11連了TM1640的D口(數據),P10連了TM1640的S(時鐘)口。STC8G1K的下載端口是沒有問題的,可以燒錄。我是接了51普中科技的下載端口。 |
jade-lluo 發表于 2023-11-15 09:23 詳細介紹你的硬件連接關系。小板子接的是串口,TM1640在數碼管模塊上還是在開發板上? |
![]() void TM1640_Display(unsigned char Digi,unsigned char Seg) { TM1640_Start(); // 發送起始信號 TM1640_WriteByte(0x44); // 發送設置數據,設置TM1640為固定地址模式 TM1640_Stop(); // 發送結束信號 TM1640_Start(); // 發送起始信號 TM1640_WriteByte(0xC0 + Digi); // 發送設置地址,顯示指定的位置 TM1640_WriteByte(Seg); // 發送顯示數據,顯示指定的數字取模 TM1640_Stop(); // 發送結束信號 TM1640_Start(); // 發送起始信號 TM1640_WriteByte(0x8C); // 發送命令,設置TM1640的顯示亮度 TM1640_Stop(); // 發送結束信號 } |
zhuls 發表于 2023-11-8 20:11 我認真看了又看,還是不行。能說細一點嗎?大佬 |
jade-lluo 發表于 2023-11-8 18:07 參考板凳的貼子。 認真讀一下,并按原貼的代碼,改一下IO運行一下 |
zhuls 發表于 2023-11-8 10:17 改了你說的這段代碼,可是沒有用。還是3個LED都亮 |
jade-lluo 發表于 2023-11-8 09:49 參考板凳的貼子。很詳細很好的! |
jade-lluo 發表于 2023-11-8 09:49 又看了一下你的代碼和圖片。發現你離成功僅一行代碼:你少發了個顯示地址! 你發數據,能顯示出來,說明電路什么的都正常了, 你改寫一下TM1640_Display(unsigned char data2這個函數,把地址帶入: void TM1640_Display(unsigned char addr,unsigned char data2) { TM1640_Start(); // 發送起始信號 TM1640_WriteByte(0x44); // 發送命令,設置TM1640為固定地址模式 TM1640_Stop(); // 發送結束信號 TM1640_Start(); // 發送起始信號 TM1640_WriteByte(0x8C); // 發送命令,設置TM1640的顯示亮度 TM1640_WriteByte(0xc0+addr); // 發送顯示地址,指定位 TM1640_WriteByte(data2); // 發送數據,顯示指定的數字 TM1640_Stop(); // 發送結束信號 } 調用時: TM1640_Display(0,0x1);//第一個數碼管顯示“a”段 TM1640_Display(2,0xEF);//第三個數碼管顯示“8”字形 == |
jade-lluo 發表于 2023-11-8 09:49 TM系列的LED驅動IC有個特性:不管共陰共陽數碼管,LED的正極一定要接SEG端,而負極一定要接GRID端否則會出錯不亮。 所以你這個硬件電路連接關系對得上了嗎? |
你這個問題,首先需要搞清楚如何像你的代碼寫的一樣顯示一個單純的一個數字,然后再將123,拆解為1,2,3然后像下面一樣顯示出來。 TM1640_Display(0x01); // 顯示數字1 TM1640_Display(0x02); // 顯示數字2 TM1640_Display(0x03); // 顯示數字3 TM1640這個芯片好像用的還是蠻多的,應該很容易找到驅動數碼管的程序的 |
zhuls 發表于 2023-11-7 21:05 想做的,但是寫常規的共陰段碼顯示不出數字的。 |
你沒有做段碼表啊? |