數(shù)碼管動態(tài)顯示程序設(shè)計 1、數(shù)碼管的驅(qū)動 數(shù)碼管的顯示是靠點亮內(nèi)部的發(fā)光二極管來發(fā)光。數(shù)碼管內(nèi)部電路如下圖所示,顯示一個8字需要7個小段,另外還有一個小數(shù)點,所以其內(nèi)部一共有8個小的發(fā)光二極管,最后還有一個公共端。公共端又可分為共陽極和共陰極,中間圖為共陰極內(nèi)部原理圖,右圖為共陽極內(nèi)部原理圖。 
上圖展出了常用的兩種數(shù)碼管的引腳排列和內(nèi)部結(jié)構(gòu)。眾所周知,點亮發(fā)光二極管就是要給予它足夠大的正向壓降。所以點亮數(shù)碼管其實也就是給它內(nèi)部相應(yīng)的發(fā)光二極管正向壓降。 對共陰極數(shù)碼來說,其8個發(fā)光二極管的陰極在數(shù)碼管內(nèi)部全部連接在一起,所以稱“共陰”,而它們的陽極是獨立的,通常在設(shè)計電路時一般把陰極接地。當我們給數(shù)碼管的任意一個陽極加一個高電平時,對應(yīng)的這個發(fā)光二極管就點亮了。 共陽極數(shù)碼管其內(nèi)部8個發(fā)光二極管的所有陽極全部連接在一起,電路連接時,公共端接高電平,因此我們要點亮的那個發(fā)光管二極管就需要給陰極送低電平,此時顯示數(shù)字的編碼與共陽極編碼是相反的關(guān)系。 2、動態(tài)數(shù)碼管驅(qū)動原理 首先我們來看一下開發(fā)板上的電路原理圖: 
本開發(fā)板上使用的是,通過P22、P23、P24控制3-8譯碼器來對數(shù)碼管進行位選,通過P0口經(jīng)過573的驅(qū)動控制數(shù)碼管的段選,通過P13控制573的使能端,為低電平時573才會有輸出。 實驗板連接圖: 
實驗內(nèi)容:數(shù)碼管動態(tài)顯示0~7 /****************************************************************************** * 實 驗 名 : 動態(tài)數(shù)碼管顯示試驗 * 實驗說明 : 8位數(shù)碼管顯示0~7 * 連接方式 : 見連接圖 ******************************************************************************* - <font color="rgb(0, 0, 0)"><font face="Calibri"><font style="font-size: 14px">#include<reg52.h>
- #define GPIO_DIG P0
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
-
- //定義全局變量//
- unsigned char code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
- unsigned char DisplayData[8]; //用來存放要顯示的8位數(shù)的值
-
- //--聲明全局函數(shù)--//
- void DigDisplay(); //動態(tài)顯示函數(shù)
- /******************************************************************************* 函 數(shù) 名 : main
- * 函數(shù)功能 : 主函數(shù)
- * 輸 入 : 無
- * 輸 出 : 無
- *****************************************************************************/
- void main()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- DisplayData[i]=DIG_CODE[i];
- }
- while(1)
- {
- DigDisplay();
- }
- }
- /******************************************************************************* 函 數(shù) 名 : DigDisplay
- * 函數(shù)功能 : 使用數(shù)碼管顯示
- * 輸 入 : 無
- * 輸 出 : 無
- **************************************************************************/
- void DigDisplay()
- {
- unsigned char i;
- unsigned int j;
- for(i=0;i<8;i++)
- {
- switch(i) //位選,選擇點亮的數(shù)碼管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//顯示第0位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//顯示第1位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//顯示第2位
- case(3):
- LSA=1;LSB=1;LSC=0; break;//顯示第3位
- case(4):
- LSA=0;LSB=0;LSC=1; break;//顯示第4位
- case(5):
- LSA=1;LSB=0;LSC=1; break;//顯示第5位
- case(6):
- LSA=0;LSB=1;LSC=1; break;//顯示第6位
- case(7):
- LSA=1;LSB=1;LSC=1; break;//顯示第7位
- }
- GPIO_DIG=DisplayData[i];//發(fā)送段碼
- j=10; //掃描間隔時間設(shè)定
- while(j--);
- GPIO_DIG=0x00;//消隱
- }
- }</font></font></font>
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
2數(shù)碼管動態(tài)顯示程序設(shè)計.docx
(459.79 KB, 下載次數(shù): 65)
2018-5-28 19:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|