熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2018-12-14 10:19
正文摘要:我的開發(fā)板上的數(shù)碼管是通過38譯碼器控制的,但我不會(huì)點(diǎn)亮,有沒有大佬寫個(gè)把他們?nèi)c(diǎn)亮的程序,講解一下這個(gè)原理?(這個(gè)網(wǎng)上很少見,找了半天找不到) |
編一個(gè)數(shù)碼管動(dòng)態(tài)顯示程序即可 |
針對(duì)你的電路,剛好我也是這樣的板子,程序就有了嘛,看我的: /******************************************************************************* * 實(shí) 驗(yàn) 名 : 動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn) * 使用的IO : 數(shù)碼管使用P0,P2.2,P2.3,P2.4 * 實(shí)驗(yàn)效果 : 數(shù)碼管顯示76543210。 * 注 意 : *******************************************************************************/ #include<reg51.h> #define GPIO_DIG P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char code DIG_CODE[17]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼 unsigned char DisplayData[8]; //用來存放要顯示的8位數(shù)的值 void DigDisplay(); //動(dòng)態(tài)顯示函數(shù) /******************************************************************************* * 函 數(shù) 名 : main * 函數(shù)功能 : 主函數(shù) * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void main(void) { unsigned char i; for(i=0;i<8;i++) { DisplayData[i]=DIG_CODE[i]; } while(1) { DigDisplay(); } } /******************************************************************************* * 函 數(shù) 名 : DigDisplay * 函數(shù)功能 : 使用數(shù)碼管顯示 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void DigDisplay() { unsigned char i; unsigned int j; for(i=0;i<8;i++) { switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管, { case(0): LSA=0;LSB=0;LSC=0; break;//顯示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//顯示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//顯示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//顯示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//顯示第4位 case(5): LSA=1;LSB=0;LSC=1; break;//顯示第5位 case(6): LSA=0;LSB=1;LSC=1; break;//顯示第6位 case(7): LSA=1;LSB=1;LSC=1; break;//顯示第7位 } GPIO_DIG=DisplayData[i];//發(fā)送段碼 j=10; //掃描間隔時(shí)間設(shè)定 while(j--); GPIO_DIG=0x00;//消隱 } } |
本帖最后由 zl2168 于 2018-12-15 20:37 編輯 實(shí)例58 74LS138選通8位LED數(shù)碼管動(dòng)態(tài)顯示 先Proteus仿真一下,確認(rèn)有效。 ![]() ![]() 以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。 |
138叫譯碼器,不同的 A,B,C高低電平組合輸出口有不同狀態(tài),哪位輸出是低電平,哪位數(shù)碼管點(diǎn)亮。看懂下面這個(gè)圖,你就明白138是怎樣工作的。
![]() |
xuyaqi 發(fā)表于 2018-12-14 22:16 這個(gè)我知道,我不理解上面那個(gè)38譯碼器的工作原理 |
記住,573-LE高電平把總線P0數(shù)據(jù)傳往Q方向,低電平保持?jǐn)?shù)據(jù),LE用地址及讀寫譯碼選通,一般用在數(shù)據(jù)總線掛有多個(gè)器件,用地址分別送數(shù)據(jù),138用作數(shù)碼管位選通。 |
Powered by 單片機(jī)教程網(wǎng)