日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示

發(fā)布時間:2024/3/24 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、理論部分

?????????共陽數(shù)碼管引腳可以分為兩個部分,一是段碼,一個是位碼。段碼指的是一個數(shù)碼管的7個段加dp小數(shù)點,一共8個,通過P0控制其亮滅使得數(shù)碼管顯示出不同效果。譬如亮afedcg表示的是6形狀。位碼指的多個數(shù)碼管顯示的時候,你要讓哪個數(shù)碼管顯示,設(shè)定對應(yīng)的公共端的值,簡單講位碼指的是亮哪個數(shù)碼管,其由P0控制。

?????????通過查詢原理圖,可知Y7CY6C分別控制段碼和位碼,而Y7C和Y6C控制方法和LED燈相似。

?????????由于數(shù)碼管段碼只給出了8個引腳,也就是說,只能同一時讓八個數(shù)碼管通過這8個引腳獲得相同的信號,顯示相同內(nèi)容。那么如何讓數(shù)碼管顯示不同內(nèi)容?這就引進了動態(tài)數(shù)碼管顯示:我們要使用3個數(shù)碼管顯示123,只需要在第一個管顯示完1立刻切換到下一個管讓其顯示2,這樣不停的在三個管中顯示123,又由于人的視覺暫停作用,就可以使人看到多個數(shù)碼管同時顯示不同內(nèi)容的效果。

編寫思路:P2高三位置為110->P0輸出數(shù)碼管位置->P2高三位置為111->P0輸出顯示內(nèi)容

靜態(tài)顯示:直接調(diào)用顯示

動態(tài)顯示:切換不同數(shù)碼管,顯示不同內(nèi)容,封裝成函數(shù)后放進主循環(huán)不斷掃描

二、程序案例

unsigned char code SMG_duanma[18]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};//段碼表,顯示0~F、'-'、'.'。void Delay(unsigned int t) //延時函數(shù) {while (t--);while (t--); } /***************************************************************** *@Function: SelecHC573 // *@Description: 切換鎖存器 // *@Input: channel 切換的鎖存器序號// *@Output: 無// *@Return: 無 // *@Others: 無 // /*****************************************************************/ void SelecHC573(unsigned char channel) {switch(channel){case 4:P2=(P2&0x1f)|0x80;break;case 5:P2=(P2&0x1f)|0xa0;break;case 6:P2=(P2&0x1f)|0xc0;break;case 7:P2=(P2&0x1f)|0xe0;break;} }/***************************************************************** *@Function: DisplaySMG_Bit// *@Description: 數(shù)碼管顯示 // *@Input: dat 數(shù)碼管顯示的數(shù)據(jù)(段碼表)// * pos 數(shù)碼管的位置0-7// *@Output: 無// *@Return: 無 // *@Others: 無 // /*****************************************************************/ void DisplaySMG_Bit(unsigned char dat,unsigned pos) {SelecHC573(6);//數(shù)碼管的位置P0=0x01<<pos; SelecHC573(7);//數(shù)碼管的內(nèi)容P0=dat; }/***************************************************************** *@Function: DelaySMG // *@Description: 延時函數(shù) // *@Input: t 用于延時遞減// *@Output: 無// *@Return: 無// *@Others: 無// /*****************************************************************/ void DelaySMG(unsigned int t) {while(t--); }void Delay(unsigned int t) {while(t--){Display_Dynamic();//延時時放置數(shù)碼管暫停顯示} }/***************************************************************** *@Function: Display_Dynamic // *@Description: 切換數(shù)碼管,使其顯示“2018--月份” // *@Input: 無// *@Output: 無// *@Return: // *@Others: // /*****************************************************************/ void Display_Dynamic() {DisplaySMG_Bit(SMG_duanma[2],0);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[0],1);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[1],2);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[8],3);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[16],4);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[16],5);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[month/10],6);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[month%10],7);DelaySMG(500); }在主函數(shù)將Display_Dynamic放置while循環(huán)不斷掃描即可

通過斷碼表可以便捷輸入內(nèi)容,不用每次都計算。


感謝大家的觀看

歡迎大家提出問題并指正~

總結(jié)

以上是生活随笔為你收集整理的[蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。