久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22850|回復: 9
打印 上一主題 下一主題
收起左側

LED8x8點陣顯示屏設計報告+PCB原理圖與單片機程序源碼

  [復制鏈接]
跳轉到指定樓層
樓主
ID:312160 發表于 2018-4-20 08:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
資料包:


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


1 緒論
1.1 前言
LED點陣顯示屏是集微電子技術、計算機技術、信息處理技術于一體的大型顯示屏系統。它以其色彩鮮艷,動態范圍廣,亮度高,壽命長,工作穩定可靠等優點而成為眾多顯示媒體以及戶外作業顯示的理想選擇。同時也可廣泛應用到軍事、車站、賓館、體育、新聞、金融、證券、廣告以及交通運輸等許多行業。目前大多數的LED點陣顯示系統自帶字庫。其顯示和動態效果(主要是顯示內容的滾動)的實現主要依靠硬件掃描驅動,該方法雖然比較方便,但顯示只能按照預先的設計進行。而實際上經常會遇到一些特殊要求的動態顯示,比如電梯運行中指示箭頭的上下移動、某些智能儀表幅值的條形顯示、廣告中廠家的商標顯示等。這時一般的顯示系統就很難達到要求。另外,由于受到存儲器本身的局限,其特殊字符往往難以顯示,同時顯示內容也不能隨意更改。    因此就提出了一種利用PC機和單片機控制的LED顯示系統通信方法。該方法可以對顯示內容進行實時控制,從而實現諸如動態顯示效果。同時用戶也可以在PC機上進行顯示效果的預覽,顯示內容亦可以即時修改。同時它具有發光率高、使用壽命長、組態靈活、色彩豐富以及對室內外環境適應能力強等優點。并廣泛的用于公交汽車、商店、體育場館、車站、學校、銀行、高速公路等公共場所的信息發布和廣告宣傳。LED 顯示屏發展較快,本文講述了基于89C51單片機8×8 LED漢字點陣滾動顯示的基本原理、硬件組成與設計、程序編寫與調試、Proteus軟件仿真等基本環節和相關技術。
1.2 選題背景
LED電子顯示屏是隨著計算機及相關的微電子﹑光電子技術的迅猛發展而形成的一種新型信息顯示媒體。它利用發光二極管構成的點陣模塊或像素單元組成可變面積的顯示屏幕,以可靠性高、使用壽命長、環境適應能力強、性能價格比高、使用成本低等特點,在短短的十來年中,迅速成長為平板顯示的主流產品,在信息顯示領域得到了廣泛的應用。LED 點陣電子顯示屏是集微電子技術、計算機技術、信息處理技術于一體的大型顯示屏系統。它以其色彩鮮艷,動態范圍廣,亮度高,壽命長,工作穩定可靠等優點而成 為眾多顯示媒體以及戶外作業顯示的理想選擇。同時也可廣泛應用到軍事、車站、賓館、體育、新聞、金融、證券、廣告以及交通運輸等許多行業。
1.3設計要求
利用一塊點陣數碼板,按編程者要求實現任意符號的顯示。
1.4 國內外的研究概況
目前大多數的LED點陣顯示系統自帶字庫。其顯示和動態效果(主要是顯示內容的滾動)的實現主要依靠硬件掃描驅動,該方法雖然比較方便,但顯示只能按照預先的設計進行。而實際上經常會遇到一些特殊要求的動態顯示,比如電梯運行中指示箭頭的上下移動、某些智能儀表幅值的條形顯示、廣告中廠家的商標顯示等。這時一般的顯示系統就很難達到要求。另外,由于受到存儲器本身的局限,其特殊字符或圖案也往往難以顯示,同時顯示內容也不能隨意更改。本文提出一種利用PC機和單片機控制的LED顯示系統通訊方法。該方法可以對顯示內容(包括漢字和特殊圖符)進行實時控制,從而實現諸如閃動、滾動、打字等多種動態顯示效果。該方法同時還可以調節動態顯示的速度,同時用戶也可以在PC機上進行顯示效果的預覽,顯示內容亦可以即時修改。在我國改革開放之后,特別是進入90年代國民經濟高速增長,對公眾場合發布信息的需求日益強烈,LED顯示屏的出現正好適應了這一市場形勢,因而在LED顯示屏的設計制造技術與應用水平上都得到了迅速的提高,生產也得到了迅速的發展,并逐步形成產業,成為光電子行業的新興產業領域。
1.5此次設計研究的主要內容應解決的問題
此次設計研究的主要內容是設計一個符號顯示牌:通過程序控制符號顯示牌,使符號顯示牌,在無按鍵按下時,顯示數字“0-9”,當第一次按下按鍵時,顯示字母“μ”,當第二次按下按鍵時顯示漢字“公”。
應解決的問題:單片機P1口的輸出電流不足以驅動二極管,需要加驅動,本次研究中以S8050作為驅動,同時在S8050NPN晶體管基極加4.7K的電阻。實驗前要弄清晶體管三個引腳代表的極性,以免符號顯示牌不亮導致而設計失敗。


2 總體設計方案
2.1 硬件電路組成
本產品采用以89C51單片機為核心芯片的電路來實現,主要由89C51芯片、晶振電路、三極管驅動電路、按鍵控制電路、8×8 LED點陣5部分組成,電路框圖如圖1所示。其中,89C51是一種帶4kB閃爍可編程可擦除只讀存儲器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低電壓、高性能CMOS型8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,工業標準的MCS一51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,能夠進行1 000次寫/擦循環,數據保留時間為10年。他是一種高效微控制器,為很多嵌人式控制系統提供了一種靈活性高且價廉的方案。因此,在智能化電子設計與制作過程中經常用到89C51芯片。時鐘電路由89C51的18,19腳的時鐘端(XTAI 1及XTAL2)以及12 MHz晶振X 、電容C2、C3組成,采用片內振蕩方式。復位電路采用簡易的上電復位電路,主要由電阻R ,R2,電容C ,開關K 組成,分別接至89C51的RST復位輸人端。LED點陣顯示屏采用8x8共64個象素的點陣,可通過萬用表檢測發光二極管的方法測試判斷出該點陣的引腳分布。
我們把行列總線接在單片機的I/O口,然后把上面分析到的掃描代碼送入總線,就可以得到顯示的字符了。我們在實際應用中是將LED點陣的8條列線通過驅動電路接在P1口,8條行線通過限流電阻接在P0口。單片機89C51按照設定的程序在P1和P0接口輸出與內部字符對應的代碼電平送至LED點陣的行列線(高電平驅動),從而選中相應的象素LED發光,并利用人眼的視覺暫留特性合成整個字符的顯示。再改變取表地址實現字符的滾動顯示。硬件電路組成框圖如圖5所示。
圖2-1 硬件電路組成框圖
2.2 系統各單元電路設計
2.2.1 89C51單片機最小系統
最小系統包括晶體振蕩電路、復位開關和電源部分。圖2-2為89C51單片機的最小系統。

圖2-2 單片機最小系統

2.2.2 按鍵控制電路
單片機開始工作時,P2.0是高電平。當按鍵按下時,檢測到一個低電平信號,改變P0口輸出信號,控制8×8 LED點陣顯示屏顯示不同字符。








圖2-3 按鍵控制電路
2.2.3 三極管驅動電路
掃描驅動電路的功能主要是有P1口輸出高電平使三極管發射結導通,發射結輸出足夠大的電流使二極管導通。
圖2-4 三極管驅動電路
2.2.4 8×8 LED點陣介紹
圖(4)為8×8點陣LED外觀及引腳圖,,只要其對應的X、Y軸順向偏壓,即可使LED發亮。例如如果想使左上角LED點亮,則電子模塊中的0口為1,A口為0即可。應用時限流電阻可以放在橫軸或列軸。
圖2-5 8×8點陣LED外觀及引腳
(1)把“單片機系統”區域中的P0端口用8芯排芯連接到“點陣模塊”區域中的“A~H”端口上;
(2)把“單片機系統”區域中的P1端口用8芯排芯連接到“點陣模塊”區域中的“0~7”端口上;
為了方便于單片機連接,我們在焊接的過程中特意將0~7接口排列出來作為列,將A~H接口作為行,這樣我們就可以直接將P89C51單片機的P0口與0~7接口一次連接,將P89C51單片機的P1口與A~H接口一次連接。要使LED發亮即使給予數字端高電平,字母端給予低電平,就能使二極管發亮。
2.3 字符的點陣顯示原理及字庫代碼獲取方法
    我們以UCDOS中文宋體字庫為例,每一個字由8行8列的點陣組成顯示。我們可以把每一個點理解為一個象素,而把每一個字的字形理解為一幅圖像。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在64象素范圍內的任何圖形。如查用8位的P89C51單片機控制,如圖所示

圖2-6  8×8點陣等效電路

為了弄清楚漢字的點陣組成規律,首先通過列掃描方法獲取漢字的代碼。首先將8行分成4位的上、下兩部分,把發光的象素位編為0不發光的象素位為1的十六進制代碼。這樣就把要顯示的“公”字編為如下代碼:
0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf
由這個原理可以看出,無論顯示何種字體或圖像,都可以用這個方法來分析出他的掃描代碼從而顯示在屏幕上。上述方法雖然能夠讓我們弄清楚字符點陣代碼的獲取過程。字符點陣顯示一般有點掃描、行掃描和列掃描3種。為了符合視覺暫留要求,點掃描方法的掃描頻率必須大于16×64—1024 Hz,周期小于1 ms即可。行掃描和列掃描方法的掃描頻率必須大于16×8—128 Hz,周期小于7.8 ms即可。

3 程序設計
3.1程序流程圖
  
圖3-1  主程序流程圖
3.2程序設計
根據上述所說的程序流程圖,設計程序如附錄3。

4 調試及性能分析
4.1系統調試
4.1.1軟件調試
首先根據各單元電路模塊,利用Proteus軟件將總的硬件原理圖繪制好,設計好各模塊要使用的I/O口,如:8×8點陣LED顯示屏時候插反,先檢測下,無硬件錯誤后,再進行程序編程。
利用C語言的編程方式,將系統要求的基本功能,以及創新功能根據程序流程圖編寫出來,用Keil軟件調試無誤后,生成Hex文件。
雙擊Proteus中的P89C51芯片,將Keil生成的Hex加載到芯片內,進行仿真,經調試后所編寫的程序能夠完美實現系統所需的各種功能。
4.1.2硬件調試
硬件調試主要是檢測硬件電路是否有短路、斷路、虛焊等。具體步驟及測試結果如下:
(1) 檢查電源與地線是否全部連接上,用萬用表對照電路原理圖測試各導線是否完全連接,對未連接的進行修復。
(2) 參照原理圖,檢查各個器件之間的連接是否連接正確,是否存在虛焊,經測試,各連接不存在問題。
(3) 以上兩項檢查并修復完后,給該硬件電路上電,電源指示燈點亮。
(4) 將燒錄好程序的最小單片機系統接入各模塊后,各模塊能過正常工作,如:數碼管正常發光。
4.2設計分析
將燒錄好程序的最小單片機系統與各模塊連接好后,8×8點陣LED顯示屏顯示初始值。按鍵一次之后,顯示屏顯示滾動字符μ,再按鍵一次,顯示屏顯示漢字“公”。
經軟件調試和硬件調試后,所設計的系統完美實現了所需的控制要求和創新要求。

總結
本文設計一個8×8點陣LED圖文顯示屏。經過測試,LED各點亮度均勻,可顯示圖形和文字,且穩定清晰無串擾。本系統具有硬件少、結構簡單、容易實現,性能穩定可靠等特點。通過查閱資料,了解了LED發光原理和LED顯示技術的原理和現狀。在 LED點陣顯示屏的設計過程中,學到了很多東西,復習了Protel、Proteus、Keil等軟件的基礎應用。基本了解了整個嵌入式開發的流程。例如,在進行整個設計之前,應該先根據需求分析,對單片機進行選型,然后對各個硬件模塊進行搭試。在畫PCB電路板的時候,要注意基本的布板原則。在焊接電路板的時候,應該從最基本的最小系統開始,分模塊,逐個進行焊接測試。在對各個硬件模塊進行測試時,要保證軟件正確的情況下去測試硬件,要不然發生錯誤時,不知道到底是哪一方出錯了。總之,這次設計開發,本人受益非淺,在以后的開發過程中一定總結經驗,吸取教訓,為以后的學習工作打好基礎。
附錄1 原件清單
器件名稱
數量
三極管NPN(8050)
8
8*8點陣屏/LED紅色
1
電阻470歐
8
電阻4.7K
8
電阻10K
2
按鍵
1
萬能板7*9cm
1
電解電容10UF
1
USB母口
1
連線
12cm
單片機
1
單片機插槽
1
12M晶振
1
30p電容
2
自鎖開關
1
銅柱+螺母
4
USB數據線
1

附錄2硬件原理圖
附錄3系統PCB圖
附錄4點陣的放置與接線方法:

附錄5程序清單


  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar i,j,k,scan,num,count;
  5. sbit key=P2^0;
  6. uchar code table1[]=
  7. {0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf};           //μ
  8. uchar code table2[]=
  9. {0xf7,0xdb,0xad,0xb7,0xbe,0xdd,0xbb,0xf7};           //公
  10. uchar code table[][8]=
  11. {{0xff,0xff,0xc3,0xbd,0xbd,0xc3,0xff,0xff},           //0
  12. {0xff,0xbf,0xbb,0x81,0x80,0xbf,0xbf,0xff},           //1
  13. {0xff,0xff,0xbb,0x9d,0xad,0xb3,0xff,0xff},              //2
  14. {0xff,0xff,0xdd,0xbe,0xb6,0xc9,0xff,0xff},              //3
  15. {0xff,0xef,0xe7,0xeb,0x81,0xef,0xef,0xff},              //4
  16. {0xff,0xff,0xd1,0xb5,0xb5,0xcd,0xff,0xff},              //5
  17. {0xff,0xff,0xc1,0xb6,0xb6,0xcd,0xff,0xff},              //6
  18. {0xff,0xff,0xfd,0xfd,0x8d,0xf5,0xf9,0xff},              //7
  19. {0xff,0xff,0xc9,0xb6,0xb6,0xc9,0xff,0xff},              //8
  20. {0xff,0xff,0xd9,0xb6,0xb6,0xc1,0xff,0xff},     //9


  21. {0xff,0x83,0xed,0xee,0xed,0x83,0xff,0xff},           //A
  22. {0xff,0xff,0x80,0xb6,0xb6,0xc9,0xff,0xff},           //B
  23. {0xff,0xc3,0xbd,0xbd,0xbd,0xdb,0xff,0xff},              //C
  24. {0xff,0xff,0x81,0xbd,0xbd,0xc3,0xff,0xff},              //D
  25. {0xff,0xff,0x80,0xb6,0xb6,0xb6,0xff,0xff},              //E
  26. {0xff,0xff,0x80,0xf6,0xf6,0xf6,0xff,0xff}              //F
  27. };
  28. void delay(uint z)
  29. {
  30.         uint x,y;
  31.         for(x=z;x>0;x--)
  32.                 for(y=110;y>0;y--);
  33. }
  34. void main()
  35. {
  36.         key=1;
  37.         num=0;
  38.         while(1)
  39.         {
  40.                 if(num==0)
  41.                 {
  42.                         for(j=0;j<16;j++)
  43.                         {
  44.                                 if(key==0)
  45.                                 {
  46.                                         delay(10);
  47.                                         if(key==0)
  48.                                         {
  49.                                                 num=1;
  50.                                                 while(!key);
  51.                                         }
  52.                                 }
  53.                                 if(num!=0)
  54.                                 break;
  55.                                 for(k=0;k<30;k++)
  56.                                 {
  57.                                         scan=0x01;
  58.                                         for(i=0;i<8;i++)
  59.                                         {
  60.                                                 P0=table[j][i];
  61.                                                 P1=scan;
  62.                                                 delay(2);
  63.                                                 scan<<=1;               
  64.                                         }
  65.                                 }
  66.                         }
  67.                 }
  68.                 if(num==1)
  69.                 {         
  70.                         for(j=0;j<8;j++)                                              //8組數據
  71.                         {
  72.                                 if(key==0)
  73.                                 {
  74.                                         delay(10);
  75.                                         if(key==0)
  76.                                         {
  77.                                                 num=2;
  78.                                                 while(!key);
  79.                                         }
  80.                                 }
  81.                                 if(num!=1)
  82.                                 break;
  83.                                 for(k=0;k<10;k++)
  84.                                 {                        
  85.                                         scan=0x01;                                         //初始掃描信號
  86.                                         for(i=8;i>0;i--)                            //掃描周期
  87.                                         {
  88.                                                 if(i>j)P0=table1[8+(j-i)];
  89.                                                 else P0=table1[j-i];
  90.                                                 P1=scan;
  91.                                                 delay(2);
  92.                                                 scan<<=1;
  93.                                         }
  94.                                 }        
  95.                         }
  96.                 }
  97.                 if(num==2)
  98.                 {
  99.                         if(key==0)
  100.                         {
  101.                                 delay(10);
  102.                                 if(key==0)
  103.                                 {
  104.                                         num=0;
  105. ……………………

  106. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

全部資料51hei下載地址(含word格式的設計報告)
14.點陣8x8.rar (889.47 KB, 下載次數: 285)


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

使用道具 舉報

沙發
ID:311674 發表于 2018-4-23 20:07 | 只看該作者
好啊 很不錯的設計
回復

使用道具 舉報

板凳
ID:311674 發表于 2018-4-23 20:12 | 只看該作者
很好的設計了
回復

使用道具 舉報

地板
ID:522398 發表于 2019-4-26 16:54 | 只看該作者
感覺很有用啊
回復

使用道具 舉報

5#
ID:641976 發表于 2019-11-14 15:27 | 只看該作者
謝謝啦,正好我最近在做這個
回復

使用道具 舉報

6#
ID:672408 發表于 2019-12-24 15:03 | 只看該作者
厲害,要是后續解釋能詳細就好了!
回復

使用道具 舉報

7#
ID:751681 發表于 2020-5-14 14:25 | 只看該作者
謝謝,感覺很有用啊
回復

使用道具 舉報

8#
ID:758800 發表于 2020-5-22 23:21 | 只看該作者
不錯,可以的
回復

使用道具 舉報

9#
ID:758214 發表于 2020-9-25 16:13 來自手機 | 只看該作者
這個pcb怎么做成實物呀?
回復

使用道具 舉報

10#
ID:846054 發表于 2020-11-20 11:22 | 只看該作者
謝謝,很棒的設計,參考一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色橹橹欧美在线观看视频高清 | 亚洲免费网 | 91xxx在线观看 | 日韩一二区 | 美女视频网站久久 | 国产探花在线观看视频 | 亚洲小视频在线观看 | 午夜精品一区二区三区在线视 | 91精品午夜窝窝看片 | 久久99久久99 | 久久人人网 | 亚洲成av人片在线观看无码 | 精品国产精品三级精品av网址 | 亚洲成人免费 | 成人在线精品 | 五月婷婷婷 | 亚洲在线免费观看 | 免费特黄视频 | 久久成人av| 91网站在线看 | 国产高清在线精品 | 日本特黄a级高清免费大片 成年人黄色小视频 | 国产免费a视频 | 精品视频免费 | 久久免费精品视频 | 免费在线播放黄色 | 亚洲91 | 亚洲精品乱码 | 99热播放| 欧美激情精品久久久久久变态 | 婷婷一级片| 日韩中文一区二区三区 | 久久久久久久久久久久一区二区 | 久久精品亚洲精品国产欧美 | 一区2区 | 亚洲福利 | 欧美日韩综合视频 | 国产在线视频一区二区 | 国产最新精品视频 | 欧美久久久久 | 99这里只有精品视频 |