![]() |
發(fā)布時間: 2021-11-18 11:08
正文摘要:51單片機與數(shù)碼管相連時原理圖設計出錯,導致硬件電路的段選和位選I/O口位置錯亂 硬件的段選:(a~dp)P2.5,P0.6,P0.3,P0.1,P0.0,P2.6,P0.4,P0.2 位選:P2.4,P2.7,P0.7,P0.5 正確設計: 硬件已來不及更改 ... |
硬件要求和給出的電路圖也沒完全對上,這個不能只改程序還得改電路用飛線方法最好 |
必須得改電路了,測試還是可以的,就是不能用來做產(chǎn)品,這樣的產(chǎn)品是次品 |
電路不改,真的很難。。 原因是,有的段碼接電阻了,有的沒接,有的位碼接電阻了,有的也沒接,只是調(diào)IO的話: 當串電阻的段碼遇上串了電阻的位碼,數(shù)碼管亮度明顯不夠。 當沒串電阻的段碼遇上同樣沒串電阻的位碼,可能會把LED燒焦! 難,不改板真的難。 ![]() |
不動硬件是無法實現(xiàn)的,不能重做PCB就只能動手改PCB,把R6R8電阻去掉短接,P2.5P2.6串接電阻,其他的就交給軟件了。當然還要看你選的什么單片機 |
你們是組團拼多多打板的么? 感覺這禮拜,這問題答了4~5次了。 sbit duana = P2^5; sbit duanb = P0^6; sbit duanc = P0^3; sbit duand = P0^1; sbit duane = P0^0; sbit duanf = P2^6; sbit duang = P0^4; sbit duandp = P0^2; sbit wei0 = P2^4; sbit wei1 = P2^7; sbit wei2 = P0^7; sbit wei3 = P0^5; u8 LED_Buff[4]; void Show_Led(u8 LED_Num) { u8 Temp; wei0 = 1; wei1 = 1; wei2 = 1; wei3 = 1; //如果是共陽極的話全 = 0; Temp = LED_Buff[LED_Num]; Temp <<= 1; duandp = CY; Temp <<= 1; duang = CY; Temp <<= 1; duanf = CY; Temp <<= 1; duane = CY; Temp <<= 1; duand = CY; Temp <<= 1; duanc = CY; Temp <<= 1; duanb = CY; Temp <<= 1; duana = CY; switch(LED_Num) { case 0: wei0 = 0; break; case 1: wei1 = 0; break; case 2: wei2 = 0; break; case 3: wei3 = 0; break; //共陽的話,這里 = 1; default: break; } } |
如果原先的軟硬件都沒問題,直接調(diào)整軟件就好,無需動硬件的。 |
void Re_IO(char dat) { P25 = dat & 0x01; P06 = dat & 0x02; P03 = dat & 0x04; P01 = dat & 0x08; P00 = dat & 0x10; P26 = dat & 0x20; P04 = dat & 0x40; P02 = dat & 0x80; } |
當然可以了。 |
把電阻調(diào)換,可以在程序可以隨需要而更換不同的IO的。 |
Powered by 單片機教程網(wǎng)