最近遇到乙個比較特別的數碼管,6個引腳控制二十多個燈,和平常推的共陰共陽數碼掛不同,經過分析,需要採用位掃瞄的方式,對每個燈進行等時長的掃瞄。例:第乙個時間片點亮a1,1 輸出高 2輸出低 其他io高阻態(輸入懸空),這樣只有a1會被點亮,其他不亮,依次迴圈點亮所有燈
第一步,先在visual studio 上實現控制邏輯,把所有燈io按順序點亮,即com 和 seg
typedef
unsigned
char u8;
#define first_pin 1
#define last_pin 6
void
display
(void
)/* 點亮一bit之後準備下一bit,陰極先右移一位,如果引腳號等於陽極再移動一位 */
negative++;if
(negative == positive)
if(negative <= last_pin)
/* 掃瞄下一位 */
negative = first_pin;if(
++positive <= last_pin)
/* 所有位掃完,數碼管段位也要清除0 */
positive = first_pin;
negative++
;}
控制台輸出的資訊就和原理圖對上了,處理好io之後就要把顯示的數碼管處理出來
2輸出數碼管段位
void
display
(void
)printf
("\r\n ------------next msg number:%d --------- \r\n"
, sl_seg);}
/* 數碼管5-6之後只有6-5,所以這裡要直接跳過去 */if(
(6== negative)&&(
5== positive)
)/* 點亮一bit之後準備下一bit,陰極先右移一位,如果引腳號等於陽極再移動一位 */
negative++;if
(negative == positive)
if(negative <= last_pin)
/* 掃瞄下一位 */
negative = first_pin;if(
++positive <= last_pin)
/* 所有位掃完,數碼管段位也要清除0 */
positive = first_pin;
sl_bit =0;
sl_seg =0;
negative++
;}
此時控制台輸出的數碼管段位符合預期,仔細檢視會發現最後幾個單獨的led多了一位,因為原理圖中沒有5-3,但是掃瞄已經時沒有排除。
這時候驅動主體已經大功告成了。只需要將其當成共陽數碼管一樣處理buff,加上io控制,led輸出。這裡前提是io操作是連續的,如果使用的io不是連續的,可以自己使用乙個陣列來轉換,放在定時器中斷中掃瞄,頻率500us。移位操作原始碼處,貼原始碼
//共陰碼,1代表數碼管對應bit點亮.0熄滅
const u8 msg_table=
;u8 g_dsiplay_buff[4]
=;u8 g_dsiplay_times =0;
void
display
(void
)else
/* 數碼管段和位掃瞄,數碼管7段 3位,還有幾個單獨的點 */if(
(++sl_bit)
>=7)
}/* 數碼管5-6之後只有6-5,沒有5-3,所以這裡要直接跳過去 */if(
(negative ==6)
&&(positive ==5)
)elseif(
(negative ==2)
&&(positive ==5)
)/* 點亮一bit之後準備下一bit,陰極先右移一位,如果引腳號等於陽極再移動一位 */
negative++;if
(negative == positive)
if(negative <= last_pin)
/* 掃瞄下一位 */
negative = first_pin;if(
(++positive)
<= last_pin)
/* 所有位掃完,數碼管段位也要清除0 */
positive = first_pin;
sl_bit =0;
sl_seg =0;
negative++;}
void
display_buff_process
(void
)}
微信營銷三位一體
一種奇特的方法 移動網際網路的最大商機,人人都必須知道。運用網際網路思維 本地 線上 除此之外,您將了解近百家成功運 營 平台的 秘 密 法 則,lai三位一體運營法則。總結幾百家成功運營平台總結的運營模式,lai三位一體運營法則.微 營 銷 時 代,獻給所有對現有收入不滿的人,獻給苦苦尋找 賺 錢...
架構 專案 產品三位一體
寫 寫的久了考慮問題就不單純從 本身去考慮了,今天梳理一些語言基礎時突然想到這個話題,展開寫點自己的經驗和想法。對公司來說真正關心的是提供的產品和服務是否有足夠的競爭力,以給公司帶來可觀的收益,這個時候產品層面的重要性就體現出來了。一般來說,公司提供的產品都有相應的產品規劃,聚焦在哪些產品上怎麼體現...
業務架構 資訊架構 技術架構三位一體
客戶天天打 要修改產品功能,簡單的乙個需求可能要做乙個月。產品越改越笨重,為了趕工期bug越來越多。頭疼!產品從初級版到現在已經四個年頭,相關的程式設計師來去換了三批,在補丁上打補丁是常有的事,很多功能只是開了個頭,換個專案經理就被遺忘。我們總是害怕客戶在這個產品上提出新的需求,只要客戶還用得過去,...