㈠ 在51單片機上用c語言實現電子琴功能,但同時數碼管可以顯示簡譜,怎麼編程序
1,數據管顯示就沒什麼了,找幾個簡單的數碼管驅動程序改改就可以了,一般都是先選中數碼管,然後設置值,就可以顯示了,不過需要注意刷新,10ms刷新一個應該就可以了,刷新頻率比較低的話會閃閃的,這個你應該明白。
2,蜂鳴器發do音,這個硬體實現我就不知道了,也許有硬體可以 編碼控制自動生成對應頻率的值。我想如果通過軟體實現的話,不妨考慮一下定時器。假設do音是1000Hz的頻率(沒有查,不清楚,假設的),那麼你可以控制定時器的觸發頻率為1000hz,觸發一次,對應的輸出到蜂鳴器的口的電平跳變一下,如果定時器的頻率為1000hz的話,那麼應該有500hz的頻率,一個周期需要一高一低嘛!中斷讀取按鍵信號,分析按鍵,然後設定定時器的頻率,啟動定時器,設置一個響的時間,然後到時間關閉定時器,這樣你按下k1就會發出一聲do的聲音,然後停了。
3,按鍵讀取程序,中斷或者查詢方式,自己選擇吧,別忘了延遲5ms左右再次讀取按鍵,這個是消抖的。
4,建議模塊化編程,先搞定按鍵的,然後搞定數碼管的,然後搞定定時器的,然後再考慮如何把它們組合起來。好了不說了,說得有點多了,再說會我都回到大學時代了,哈哈。總之自己一點一點的做,應該不難,51熟練,c語言熟練,板子焊接的結構比較清晰的話,很快就可以搞定的。
5,還是建議你自己寫一份各個模塊的驅動的代碼,例如按鍵的,數碼管的,led的,溫度感測器的,光敏的,蜂鳴器的,遙控器的,定時器的,中斷的,等等等等模塊(可以借鑒別人寫的,自己一定要會),然後需要的時候,過來,改改就行,快而且bug少。建議keil c語言編程,用匯編編碼太耗時了。