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