數碼管動態顯示程序設計 1、數碼管的驅動 數碼管的顯示是靠點亮內部的發光二極管來發光。數碼管內部電路如下圖所示,顯示一個8字需要7個小段,另外還有一個小數點,所以其內部一共有8個小的發光二極管,最后還有一個公共端。公共端又可分為共陽極和共陰極,中間圖為共陰極內部原理圖,右圖為共陽極內部原理圖。 
上圖展出了常用的兩種數碼管的引腳排列和內部結構。眾所周知,點亮發光二極管就是要給予它足夠大的正向壓降。所以點亮數碼管其實也就是給它內部相應的發光二極管正向壓降。 對共陰極數碼來說,其8個發光二極管的陰極在數碼管內部全部連接在一起,所以稱“共陰”,而它們的陽極是獨立的,通常在設計電路時一般把陰極接地。當我們給數碼管的任意一個陽極加一個高電平時,對應的這個發光二極管就點亮了。 共陽極數碼管其內部8個發光二極管的所有陽極全部連接在一起,電路連接時,公共端接高電平,因此我們要點亮的那個發光管二極管就需要給陰極送低電平,此時顯示數字的編碼與共陽極編碼是相反的關系。 2、動態數碼管驅動原理 首先我們來看一下開發板上的電路原理圖: 
本開發板上使用的是,通過P22、P23、P24控制3-8譯碼器來對數碼管進行位選,通過P0口經過573的驅動控制數碼管的段選,通過P13控制573的使能端,為低電平時573才會有輸出。 實驗板連接圖: 
實驗內容:數碼管動態顯示0~7 /****************************************************************************** * 實 驗 名 : 動態數碼管顯示試驗 * 實驗說明 : 8位數碼管顯示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位數的值
-
- //--聲明全局函數--//
- void DigDisplay(); //動態顯示函數
- /******************************************************************************* 函 數 名 : main
- * 函數功能 : 主函數
- * 輸 入 : 無
- * 輸 出 : 無
- *****************************************************************************/
- void main()
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- DisplayData[i]=DIG_CODE[i];
- }
- while(1)
- {
- DigDisplay();
- }
- }
- /******************************************************************************* 函 數 名 : DigDisplay
- * 函數功能 : 使用數碼管顯示
- * 輸 入 : 無
- * 輸 出 : 無
- **************************************************************************/
- void DigDisplay()
- {
- unsigned char i;
- unsigned int j;
- for(i=0;i<8;i++)
- {
- switch(i) //位選,選擇點亮的數碼管,
- {
- 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];//發送段碼
- j=10; //掃描間隔時間設定
- while(j--);
- GPIO_DIG=0x00;//消隱
- }
- }</font></font></font>
復制代碼
完整的Word格式文檔51黑下載地址:
2數碼管動態顯示程序設計.docx
(459.79 KB, 下載次數: 65)
2018-5-28 19:22 上傳
點擊文件名下載附件
|