之后進行需要將電壓值轉換成應在應該顯示在屏幕上的坐標(其中我將128*64的OLED顯示屏的取107*47作為波形顯示部分,因此右側和下側顯示區域只留有不到16像素點,而正常的OLED顯示程序里面字體是遠大于此,所以我們需要使用0806字體,否則會造成字體顯示錯位),如果是固定量程則是由測量值與量程之間的比值得到示波器縱向坐標的比值,從而達到計算出點坐標。如果是動態范圍則是測量值與數組范圍內值與最小值的差之間的比值得到,此外還需要根據值和最小值更新網格線旁邊的數值,這里就使用sprintf函數來達到不斷更新字符串的目的,在通過OLED的字符串顯示函數顯示到OLED屏幕的位置上。之后波形的繪制則是通過ADC不斷的采樣,寫入數組,讀取數組,進行畫點,更新數組,從而達到連續不斷的顯示輸入波形的效果。
而按鍵功能的實現可以通過按鍵中斷回調函數(本人使用過程中會出現中斷不了的現象,可能是中斷優先級配置的問題)或者自行編寫按鍵判斷函數,放入while函數中不斷循環運行從而達到不斷掃描按鍵的效果。按鍵觸發的邏輯也需要自己仔細的考慮,否則會造成連擊,無法觸發,循環觸發等出乎意料的現象。此外而按鍵功能的設計一定要有嚴密的執行邏輯,否則容易造成按鍵沖突,或者程序卡死。此外需要設立按鍵標志位,來判斷按鍵觸發的次數,從而達到按鍵多用的功能。
項目的一些細節部分:
波形的顯示函數中加入插值函數,這樣才能使得示波器有能夠輕易看出的連續波形,而不是一個個離散的點。
按鍵的讀取需要進行延時消顫處理,并加上觸發判斷,不然按鍵會多次激發,或者不激發,影響操作。
按鍵多次觸發功能是通過按鍵中斷中簡單的計數函數來判斷按鍵被按下幾次,判斷按鍵是否進行長按與短按則是通過延時判斷來的。
波形顯示時,需要將超出量程的值限制為值,否則會導致顯示在其他區域。
自動量程,通過測量值與最小值的差與數組內值與最小值差的比來算得測量值應該在OLED屏幕上的坐標,并且將示波器旁的數值改變為值與最小值,從而達到動態量程的效果。
示波器的背景網格線不要使用圖片顯示,而使用間隔畫點功能,從而達到繪制背景網格線的效果。否則容易造成OLED顯示錯亂和頻閃等情況。
在進行單片機數值計算時候,一定要注意運算完成后,數據類型已經精度問題,否則容易造成數據不準確,甚至錯誤數據的出現。
實現功能注意事項:
注意OLED屏幕顯示函數的位置坐標,有的代碼是以默認的OLED最下方一排為0,有的進行了反相。
OLED Clear()函數不能夠完全清屏,會有殘留。
使用OLED直接操縱點顯示的函數時,一定要注意運行頻率,否則會造成閃屏。
NB3Q-TW00B 6FC5298-6AF00-0DP3
6FC5298-6AF00-0EP3
6FC5298-6AF00-0FP0
6FC5298-6AF00-0PP2
6FC5298-6AF00-3RP3
6FC5298-6AF20-0AP0
6FC5298-6AF20-0BP0
6FC5298-6AF20-0CP0
6FC5298-6AF20-0DP0
6FC5298-6AF20-0EP0
6FC5298-6AF20-0FP0
6FC5298-6CA00-0AG3
6FC5298-6CA00-0BG3
6FC5298-6CA00-0YG1
6FC5298-7AA20-0AP0
6FC5298-7AA20-0BP0
6FC5298-7AA20-0CP0
6FC5298-7AA20-0DP0
6FC5298-7AA20-0EP0
6FC5298-7AA20-3RP0
6FC5298-7AA70-0AP0
6FC5298-7AA70-0BP0
6FC5298-7AA70-0CP0
6FC5298-7AA70-0DP0
6FC5298-7AA70-0EP0
6FC5298-7AA70-3RP0
6FC5298-7AB00-0AP0
6FC5298-7AB00-0BP0
6FC5298-7AB00-0CP0
6FC5298-7AB00-0DP0
6FC5298-7AB00-0EP0
6FC5298-7AB00-3RP0
6FC5298-7AB10-0AP0
6FC5298-7AB10-0BP0
6FC5298-7AB10-0CP0
6FC5298-7AB10-0DP0
6FC5298-7AB10-0EP0
6FC5298-7AB10-3RP0
6FC5298-7AB40-0AP0
6FC5298-7AB40-0BP0
6FC5298-7AB40-0CP0
6FC5298-7AB40-0DP0
6FC5298-7AB40-0EP0
6FC5298-7AB40-3RP0
6FC5298-7AE10-0AP0
6FC5298-7AE10-0BP0
6FC5298-7CA00-0AG0
6FC5298-7CA00-0BG0
6FC5298-7CA00-0YG0
6FC5312-0DA00-0AA0
6FC5313-1AG00-0AA0
6FC5313-2AG00-0AA0
6FC5348-0AA01-0AA0
6FC5348-0AA07-0AA0
6FC5356-0BB11-0AE1
6FC5356-0BB12-0AE0
6FC5356-0BB13-0AA0
6FC5356-0BB15-0AA0
6FC5357-0BB11-0AE1
6FC5357-0BB12-0AE0
6FC5357-0BB13-0AA0
6FC5357-0BB22-0AE0
6FC5357-0BB23-0AA0
6FC5357-0BB23-0AE0
6FC5357-0BB25-0AA0
6FC5357-0BB31-0AE0
6FC5357-0BB33-0AA0
6FC5357-0BB33-0AE3
6FC5357-0BB34-0AE0
6FC5357-0BB34-0AE1
6FC5357-0BB35-0AA0
6FC5357-0BB35-0AE0
6FC5403-0AA10-0AA0
6FC5410-0AY03-0AA1
6FC5411-0AA00-0AA0
6FC5411-0AA80-0AA0
6FC5412-0FA10-0AA0
6FC5412-0FA12-0AA0
6FC5412-0FA80-0AA0
6FC5447-0AA00-0AA1
6FC5447-0AA01-0AA0
6FC5447-0AA10-0AA0
6FC5448-0AA10-0AA0
6FC5450-0AX00-0AH1
6FC5450-0AX00-0AH2
6FC5450-0AX02-0AH1
6FC5450-0AX02-0AH2
6FC5450-0AX03-0AH0
6FC5450-0AX03-0AH1
6FC5450-0AX03-0AH2
6FC5450-0AY01-0AH1
6FC5450-0AY01-0AH2
6FC5450-0AY03-0AH0
6FC5450-0AY03-0AH1
6FC5450-0AY03-0AH2
6FC5450-1AX00-2AH0
6FC5450-1AX00-6AH0
6FC5450-1AX00-6AH3
6FC5450-1AX00-7AH0
6FC5450-1AX00-7AH3
6FC5450-2AX02-3AH3
6FC5450-2AX02-4AH0
6FC5450-2AX02-4AH3
6FC5450-2AY01-3AH3
6FC5450-2AY01-4AH0
6FC5450-2AY01-4AH3
6FC5450-3AX01-3AH3
6FC5450-3AX02-1AH0
6FC5450-3AX02-1AH3
6FC5450-3AX02-2AH0
6FC5450-3AX02-2AH3
6FC5450-3AX02-3AH0
6FC5450-3AX02-3AH3
6FC5450-3AY01-1AH0
6FC5450-3AY01-1AH3
6FC5450-3AY01-2AH0
6FC5450-3AY01-2AH3
6FC5450-3AY01-3AH0
6FC5450-3AY01-3AH3
6FC5450-6AX03-3AH0
6FC5450-6AX03-3AH3
6FC5450-6AX03-4AH0
6FC5450-6AX03-4AH3
6FC5450-6AX03-5AH0
6FC5450-6AX03-5AH3
6FC5450-6AY03-3AH3
6FC5450-6AY03-4AH3
6FC5450-6AY03-5AH0
6FC5450-6AY03-5AH3
6FC5451-0AF01-0AA0
6FC5451-0AF02-0AA0
6FC5451-0AF03-0AA0
6FC5452-0AX00-0AB0
6FC5452-0AX00-0AB1
6FC5452-0AX00-0AB2
6FC5452-1AX00-1AB0
6FC5452-1AX00-6AB0
6FC5452-1AX00-6AB3
6FC5452-1AX00-7AB0
6FC5452-1AX00-7AB3
6FC5453-0AX00-0AB0
6FC5453-0AX10-0AG2
6FC5453-0AX11-0AG0
6FC5453-0AX11-0AG1
6FC5453-0AX11-0AG2
6FC5453-4AX00-3AB0
6FC5453-4AX00-5AB0
6FC5453-4AX01-5AB0
6FC5453-5AX00-1AB0
6FC5453-5AX00-1AB3
6FC5453-5AX00-1AG3
6FC5453-5AX01-1AB0
6FC5453-6AX10-1AG3
6FC5453-6AX10-4AG3
6FC5453-6AX11-1AG0
6FC5453-6AX11-1AG3
6FC5453-6AX11-4AG0
6FC5453-6AX11-4AG3
6FC5463-0FA00-0AB0
6FC5463-0FA00-0AB1
6FC5463-0FA00-0AB2
6FC5463-0FA00-0AG0
6FC5463-0FA01-0AA0
6FC5463-0FA02-0AA0
6FC5463-0FA03-0AA0
6FC5463-0FA04-0AA0
6FC5463-0FA20-0AB1
6FC5463-0FA20-0AB2
6FC5463-0FA20-0AG0
6FC5463-0FA21-0AA0
6FC5463-0FA40-0AG0
6FC5463-0FA40-0AG1
6FC5463-0GA00-0AA0
6FC5463-0GA00-0AB0
6FC5463-0GA00-0AB1
6FC5463-0GA00-0AB2
6FC5463-0GA00-0AG0
6FC5463-0GA01-0AA0