找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 47181|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機數(shù)碼管動態(tài)顯示程序設(shè)計實驗

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:180782 發(fā)表于 2018-5-28 19:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

數(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

* 連接方式       : 見連接圖

*******************************************************************************

  1. <font color="rgb(0, 0, 0)"><font face="Calibri"><font style="font-size: 14px">#include<reg52.h>

  2. #define GPIO_DIG P0

  3. sbit LSA=P2^2;

  4. sbit LSB=P2^3;

  5. sbit LSC=P2^4;



  6. //定義全局變量//

  7. unsigned char code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

  8. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  9. //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼

  10. unsigned char DisplayData[8];   //用來存放要顯示的8位數(shù)的值



  11. //--聲明全局函數(shù)--//

  12. void DigDisplay(); //動態(tài)顯示函數(shù)

  13. /******************************************************************************* 函 數(shù) 名         : main

  14. * 函數(shù)功能                               : 主函數(shù)

  15. * 輸    入         : 無

  16. * 輸    出         : 無

  17. *****************************************************************************/

  18. void main()

  19. {

  20.               unsigned char i;

  21.               for(i=0;i<8;i++)

  22.               {

  23.                             DisplayData[i]=DIG_CODE[i];            

  24.               }

  25.               while(1)

  26.               {

  27.                             DigDisplay();

  28.               }                                                      

  29. }

  30. /******************************************************************************* 函 數(shù) 名         : DigDisplay

  31. * 函數(shù)功能                               : 使用數(shù)碼管顯示

  32. * 輸    入         : 無

  33. * 輸    出         : 無

  34. **************************************************************************/

  35. void DigDisplay()

  36. {

  37.               unsigned char i;

  38.               unsigned int j;

  39.               for(i=0;i<8;i++)

  40.               {

  41.                             switch(i)              //位選,選擇點亮的數(shù)碼管,

  42.                             {

  43.                                           case(0):

  44.                                                         LSA=0;LSB=0;LSC=0; break;//顯示第0位

  45.                                           case(1):

  46.                                                         LSA=1;LSB=0;LSC=0; break;//顯示第1位

  47.                                           case(2):

  48.                                                         LSA=0;LSB=1;LSC=0; break;//顯示第2位

  49.                                           case(3):

  50.                                                         LSA=1;LSB=1;LSC=0; break;//顯示第3位

  51.                                           case(4):

  52.                                                         LSA=0;LSB=0;LSC=1; break;//顯示第4位

  53.                                           case(5):

  54.                                                         LSA=1;LSB=0;LSC=1; break;//顯示第5位

  55.                                           case(6):

  56.                                                         LSA=0;LSB=1;LSC=1; break;//顯示第6位

  57.                                           case(7):

  58.                                                         LSA=1;LSB=1;LSC=1; break;//顯示第7位            

  59.                             }

  60.                             GPIO_DIG=DisplayData[i];//發(fā)送段碼

  61.                             j=10;                                                           //掃描間隔時間設(shè)定

  62.                             while(j--);            

  63.                             GPIO_DIG=0x00;//消隱

  64.               }

  65. }</font></font></font>
復(fù)制代碼


完整的Word格式文檔51黑下載地址:

2數(shù)碼管動態(tài)顯示程序設(shè)計.docx (459.79 KB, 下載次數(shù): 65)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表