藍橋之第九屆省賽試題重做
阿新 • • 發佈:2018-12-24
比賽有點多,人是隻有一個,感覺有點不太能忙過來了。
但是,事在人為!!!
相信自己可以的!!!
程式碼及題目下載可到 Github
題目之要點提煉
注意圈黃的字型,那個要求講真,考場都沒細讀到,然後當時做的時候是按一個流轉間隔做的。
當然,這次寫的是四個流轉間隔然後有一個總的流轉間隔可被那四個更新!
哦對了,流轉間隔的儲存,因為E2PROM儲存單位是u8型別,然後流轉間隔因為最大可到1200ms,所以搞成了u16,這個時候就存在一個儲存的問題了,兩種解決思路。
一種,把u16拆分高低位元組,分別進行儲存!
當然這種拆分的方式較繁瑣,有沒有更簡潔的方式呢?當然有了,仔細讀一讀題目我們會發現流轉間隔都是100的倍數,於是乎就想到了用100把它進行縮放,然後再儲存!
然後另一個較不好想到的地方就是PWM控制亮度!
自己也寫了一篇關於PWM更深入的文章,可以看這裡。
具體實現呢,就是得有一種暫存的思想了,把當前指示燈對應的P0口狀態給存下來,然後再定時器裡面進行開和關就行實現亮度控制了。
自己剛開始的思路被限制在了流動上面,其實不要那麼想,容易陷入思維的誤區。
只需要及時的儲存埠狀態,然後進行更新儲存即可!
再寫題目過程中發現有些知識點都遺忘了,再來及時總結下:
1、數碼管的溫度重新整理或者是時間的重新整理顯示,可以放到while(1)裡面,但是時間得有200ms以上,不然刷太快會閃屏!
2、LED點亮(低電平點亮)的時候,寫P0=0x7F是對應 L8點亮,注意順序
3、同樣數碼管的順序從左往右一次時Ledbuff[7,6,5,////
4、注意了,直接從STC裡面複製的定時器定時是沒有ET×=1這一句的,需要加上!!