用微控制器控制LED燈實現二進位制加法(程式沒搞懂,請大神幫忙)

時間 2021-09-10 12:13:00

1樓:墨汁諾

去掉void delay(unsigned int c) 這句話是不能編譯的,因為 delay() 在主函式 main() 裡面呼叫,但是 delay() 的函式實體是在 main() 函式之後的,編譯器在編譯 main() 函式的時候找不到 delay() 的函式實體,

所以就無法通過編譯,解決方法是在檔案頭「宣告」 一下,讓編譯器知道在本檔案中搜尋 delay() 這個函式,從而成功呼叫。

八段led數碼管顯示器由8個發光二極體組成。基中7個長條形的發光管排列成「日」字形,另一個賀點形的發光管在數碼管顯示器的右下角作為顯示小數點用,它能顯示各種數字及部份英文字母。

led數碼管顯示器有兩種不一樣的形式:一種是8個發光二極體的陽極都連在一起的,稱之為共陽極led數碼管顯示器;另一種是8個發光二極體的陰極都連在一起的,稱之為共陰極led數碼管顯示器。

2樓:做而論道

由電路所決定,是低電平發光。

開始,p1 = 0xff 時,就都不亮。

減一,就亮一個。

3樓:alexgz玉麒麟

解釋如下:

1. 去掉void delay(unsigned int c) 這句話是不能編譯的,因為 delay() 在主函式 main() 裡面呼叫,但是 delay() 的函式實體是在 main() 函式之後的,編譯器在編譯 main() 函式的時候找不到 delay() 的函式實體,所以就無法通過編譯,解決方法是在檔案頭「宣告」 一下,讓編譯器知道在本檔案中搜尋 delay() 這個函式,從而成功呼叫。

2. 「p2 = 0xff」,這是一個簡單的程式,去掉不影響結果。但是作為程式設計者,應該養成良好的習慣,在程式開始執行的時候,把變數/引數/配置 做好初始化,不要隨意的任由它自己分配一個隨機值。

假設換另外一種mcu,初始化的時候p2口是低電平,那你的燈就變成全亮了。

3. 「p2 -= 0x01」 這句要聯絡題目來看,這句可轉換成 p2 = p2 - 0x01。題目是用小燈標示二進位制數,這一句的作用就是從0xff 開始,按照對應的二進位制數點亮小燈。

可以設想一下,前面有個for迴圈,p2的值從0xff開始(全滅)-> 0xfe(p0 口燈亮,其他滅) -> 0xfd(p1口燈亮,其他滅) ... -> 0x01(p0口燈滅,其他全亮),這樣用燈來表示二進位制數從0加到255 的過程。

微控制器怎麼用簡單按鍵控制LED,51微控制器用兩個按鈕控制一個LED燈的亮滅(不是那麼簡單請看我要求)

易水嚴寒風蕭蕭 include reg52.h define uchar unsigned char define uint unsigned intsbit led p1 0 假設燈在p1.0sbit key1 p2 0 假設按鍵在p2.0和p2.1sbit key2 p2 1 void dela...

用VHDL實現十進位制到二進位制的轉換

library ieee 此程式是個人所編,還未經驗證 use ieee.std logic 1164.all use ieee.std logic unsigned use ieee.std logic arith entity ss is port st in std logic shuru i...

如何把c51微控制器中的二進位制數在數碼管(共陰極)中用十進位制顯示出來?謝謝

做而論道 display 顯示 子程式.mov a,r0 取來二進位制數字.mov b,10 換成10進位制.div ab a b商存a,餘數存bmovc a,a dptr 取.mov p0,a clr p2.1 開十位顯示.acall dly10ms 調延時10ms程式 十位.setb p2.1 ...