欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+74HC138+74HC595的16×16LED點陣滾動顯示屏課程設計報告

  [復制鏈接]
跳轉到指定樓層
樓主
ID:267736 發表于 2018-1-21 22:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

目錄
1 選題背景1
2 方案論證1
2.1 課程設計的內容和要求1
2.2 設計方案2
3 設計過程3
3.1 系統框圖3
3.2 控制單元設計3
3.3 行驅動單元設計3
    3.4 列驅動單元設計4
3.5 元器件清單5
    3.6系統軟件設計5
3.6.1程序框圖簡介5
3.6.2 程序分析5
4 結果分析13
4.1程序調試與仿真13
4.2仿真結果13
5 設計總結14
參考文獻15
4 結果分析
4.1 程序調試與仿真
    軟件程序編寫后,將KEIL軟件中輸出文件載入PROTEUS軟件進行仿真。按照顯示的結果進行程序調試。多次調試后,不再出現錯誤顯示,并且顯示穩定清晰。說明此方案可行。
4.2 仿真結果
運行程序,在16×16點陣顯示屏上依次顯示0-9十個字符,并且循環顯示。運行結果如圖4-1、圖4-2所示。

     

圖4-1 仿真圖1                               圖4-2  仿真圖2


5 設計總結
經過一段時間的工作,終于完成了基于51單片機的LED顯示系統的設計,項目所要求的功能全部達到。通過這次設計收獲頗多,不僅是所作題目涉及到的軟硬件知識還有更為重要的實際經驗和過程中所發現的問題。
接手題目之后從互聯網上對LED進行了詳細的資料收集,從技術和產業的兩方面對LED進行了了解。通過了解我認識到LED是一門當今應用非常廣泛的技術,整個產業每年都會有巨大的產值而且技術還在不斷發展和創新。
從設計之初就確定了參照大屏幕顯示屏的實現方法和實際情況設計一款小屏幕的LED點陣顯示屏。在查閱了大量的大屏幕顯示屏資料后確定了題目的設計方案。整個設計采用AT89C51做核心控制器,74HC138和74HC595組成譯碼電路。在實現這一設計的過程中所遇到的問題和困難給我留下了寶貴的經驗和深刻教訓。
隨著課程設計的進行,對LED的了解也越來越深入。認為LED技術也會進一步發展,LED應用將會更加廣泛。
設計結束了,但學習還在繼續。我相信通過此次設計所得到的知識、心得、經驗乃至感受都會讓我在以后的日子里受益匪淺。


1選題背景
LED顯示屏是一種通過控制半導體發光二極管的顯示方式, 用來顯示文字、 圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的顯示屏幕。圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計算機進行控制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動畫、錄像、電視、 VCD節目以及現場實況。
LED顯示屏顯示畫面色彩鮮艷,立體感強,靜如油畫,動如電影,廣泛應用于車站、碼頭、機場、商場、醫院、賓館、銀行、證券市場、建筑市場、拍賣行、工業企業管理和其它公共場所。在實際應用中的顯示屏由于成本和可靠性的因素常采用一種稱為動態掃描的顯示方法[1]。
2 方案論證
2.1 課題要求
了解點陣LED顯示器結構及字符字模(字符代碼),熟悉點陣LED顯示器驅動的基本原理。設計16×16點陣LED顯示器的驅動電路,并編寫程序實現在16×16點陣LED顯示器上的字符滾動顯示。16×16點陣LED顯示器可由4塊8×8點陣LED顯示器構成。      
電路方面主要包括以下3部分。設計單片機的最小系統(包括復位電路和外接的晶振電路),并確定相關元器件參數。采用動態驅動的方式,設計單片機并行端口、移位寄存器、譯碼器或鎖存器等與16×16點陣LED顯示器的驅動電路,主要包括控制點陣LED行和列的連線。采用移位寄存器、譯碼器或鎖存器驅動點陣LED顯示器時,設計單片機與移位寄存器、譯碼器或鎖存器間的控制連線。                                                                     
編寫16×16點陣LED顯示器字符(串)滾動顯示程序,實現數字(0—9)或英文字符的滾動顯示。
2.2 設計方案
2.2.1硬件設計方案
以PC機作為上位機存儲和處理顯示內容用串行通信的方式將顯示內容和控制指令傳輸到單片機系統,單片機根據上位機傳輸來的內容和指令通過端口譯碼擴展后驅動4塊8×8LED點陣模塊構成的16×16的LED點陣顯示屏。題目將以此方案為指導思想展開具體的硬件電路設計。

圖2-1  硬件設計方案
2.2.1軟件設計方案
(1)單片機編程語言選擇
現在主要運用的單片機編程語言為匯編語言和C語言。
兩種語言相比較各有優點。匯編語言是面向機器的程序設計語言,是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。其具有執行速度快,占內存空間少等優點,但在編寫復雜程序時具有明顯的局限性,匯編語言依賴于具體的機型,不能通用,也不能在不同機型之間移植。
C語言是一種源于編寫UNIX操作系統的語言,它是一種結構化語言,可產生壓縮代碼。C語言結構是以括號{ }而不是子和特殊符號的語言。C可以進行許多機器級函數控制而不用匯編語言。與匯編相比,有如下優點:對單片機的指令系統不要求了解,僅要求對51的存儲器結構有初步了解;寄存器分配、不同存儲器的尋址及數據類型等細節可由編譯器管理;程序有規范的結構,可分為不同的函數。這種方式可使程序結構化;將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性;編程及程序調試時間顯著縮短,從而提高效率;提供的庫包含許多標準子程序,具有較強的數據處理能力;寄存器分配、不同存儲器的尋址及數據類型等細節可由編譯器管理;已編好程序可容易的植入新程序,因為它具有方便的模塊化編程技術。C語言作為一種非常方便的語言而得到廣泛的支持,C語言程序本身并不依賴于機器硬件系統,基本上不做修改就可根據單片機的不同較快地移植過來。
基于以上理由決定采用C語言為該顯示系統的編程語言。
2系統軟件編譯工具選擇
C語言編寫的程序并不能被單片機直接執行還需要編譯為單片機可執行的機器語言。因此在系統軟件設計中,編譯器必不可少。支持MCS-51用C語言編程的編譯器主要有兩種:Franklin C51編譯器和KEILC51編譯器。目前在單片機開發中普遍都是使用KEIL C51來進行編譯。
因此軟件設計最終方案為采用C語言為程序語言,KELC為編譯工具按照控制、通信、顯示等幾個功能模塊來編寫程序。
3 設計過程
3.1 系統框圖

圖3-1  硬件原理圖

3.2  控制單元設計
控制電路設計中采用的是單片機系統,該系統必須要是工作在一個最小系統(指單片機的可以的最小配置系統)。根據功能選擇一定的單片機端口添加外圍的器件。在該系統中,P1各口主要用作LED顯示數據的列控制輸出。具體接法為:P1.0,P1.1,P1.2,P1.3分別接74HC138的A端,B端,C端,D端。C端向74HC138送入串行數據經過其轉換后并行輸出;P2各口主要用作LED顯示數據的行控制輸出,P2.1,P2.2接595的SH_CP端,ST_CP端,P2.0接DS端控件系統的行輸入。

圖3-2  控制部分電路圖
3.3  行驅動單元設計
行驅動電路由74HC595構成,它可以實現在顯示本列各行數據的同時,傳送下一列的行數據。數據在SH_CP的上升沿輸入,在ST_CP的上升沿進入的存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(DS),和一個串行輸出(Q7),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。

圖3-3  行驅動部分電路圖
3.4. 列驅動單元設計
譯碼電路的功能是為了解決單片機I/O端口不足。列譯碼所用器件為串并轉換器74HC138。如果不采用譯碼電路完全依靠單片機的端口輸出來控制16×16的LED點陣屏顯示,需要32個端口。而采用了譯碼電路后僅僅需要7~9個端口便可實現控制顯示。大大減少了I/O口的占用數目,為單片機擴展其他功能預留下來了空間。兩個74HC138聯成4線-16線譯碼器,三級管接顯示屏可以解決顯示屏供電不足的問題。鎖存器74HC595接74HC138的使能端,實現對74HC138的使能控制,達到鎖存功能,A,B,C為138譯碼器的三個地址輸入。

圖3-4  列驅動部分電路圖
3.5  元器件清單
電路設計需要的元器件包括電阻、電容、單片機、8×8點陣LED、74HC138、74HC595等,具體元器件數量及規格如下表所示。

表3-1 元器件清單

元器件型號
規格參數
數量
電阻
電容
電容
單片機
8×8點陣LED
74HC138
74HC595
10KΩ
30uf
30pf
AT89C51
1個
1個
2個
1個
4個
2個
2個

3.6 系統軟件設計
3.6.1 程序框圖簡介
程序主要由頭文件、端口定義、字模定義、函數等組成。根據程序的設計原理,主函數流程如圖3-5所示。
圖3-5  流程圖(見附件)
3.6.2 程序分析
程序主要由頭文件、端口定義、字模定義、函數、循環等組成,實現數字0到9的左移循環顯示。

單片機源程序如下:
  1. #include <reg51.h>                              //頭文件//
  2. #define  u8                unsigned char  //定義無符號字符型變量//
  3. #define  u16  unsigned int     //定義無符號整數型變量//
  4. #define  SPEED   10      
  5. //端口定義//
  6. sbit DS=P2^0;
  7. sbit SH=P2^1;
  8. sbit ST=P2^2;

  9. u8 code table1[]={                        //定義高八位數組//            

  10. //字模定義//
  11. /*--  文字:     --*/
  12. /*--  宋體12;  此字體下對應的點陣為:寬x高=8x16   --*/
  13. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  14. …………
  15. …………限于本文篇幅 余下代碼請從51黑下載附件…………

  16. /*--  文字:     --*/
  17. /*--  宋體12;  此字體下對應的點陣為:寬x高=8x16   --*/
  18. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };

  19. void senddata(u8,u8);        //定義函數//
  20. void delay(u8);

  21. void main()
  22. {
  23.               u8              i,j,k,m,n=0;          //定義無符號字符型變量//
  24.               while(1)
  25.               {
  26.                             for(i=0;i<168;i++)        //i確定16列的起點,一共2323*8-16=168//
  27.                             {
  28.                                           for(j=0;j<SPEED;j++)  //控制顯示速度,每一幅循環顯示幾次,達到穩定作用//
  29.                                           {
  30.                                                         for(k=0;k<16;k++)       //K確定列,控制每個屏幕//
  31.                                                         {
  32.                                                                       m=i+k;
  33.                                                                       P1=k;                                                                      //控制ABCD端口//
  34.                                                                       senddata(table1[m],table2[m]);   //發送數據,第一行高8 位,低8位全部移入595//
  35.                                                                       delay(70);
  36.                                                                         senddata(0,0);     //清屏//
  37.                                                         }
  38.                                           }
  39.                             }
  40.               }
  41. }

  42. //* 將每行數據送至74HC595            
  43. * m為高8位,n為低8位
  44. * SH為移位時鐘,ST為鎖存時鐘 *//
  45. void senddata(u8 m,u8 n)
  46. {
  47.               u8 i;
  48.               ST=0;
  49.               for(i=0;i<16;i++)       // i=0到15,循環16次,16位數據全部移入芯片//
  50.               {
  51.                             SH=0;
  52.                             if(i<8)
  53.                               {
  54.                                             DS=0X80&(m<<i);                 //16進制10000000進行位與運算//
  55.                               }
  56.                             else
  57.                                             DS=0X80&(n<<(i-8));     //16進制10000000進行位與運算//
  58. ……………………

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

所有資料51hei提供下載:
http://www.raoushi.com/bbs/dpj-105745-1.html



評分

參與人數 2黑幣 +10 收起 理由
123..321.. + 5 共享資料的黑幣獎勵!
任媛 + 5 很給力!

查看全部評分

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

使用道具 舉報

沙發
ID:25213 發表于 2018-4-8 21:18 | 只看該作者
謝謝分享!
回復

使用道具 舉報

板凳
ID:553414 發表于 2019-6-3 09:39
小菜鳥一只,黑幣不夠,源碼下載不了,誰有資源可以發我一份嗎,感激不盡    QQ:1308600216

無效樓層,該帖已經被刪除
5#
無效樓層,該帖已經被刪除
6#
ID:364968 發表于 2020-5-25 21:41 來自觸屏版 | 只看該作者
你是用的什么字模軟件啊
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
8#
ID:949603 發表于 2021-7-5 22:08 | 只看該作者
請問用這個電路怎么達到顯示字不滾動的效果
回復

使用道具 舉報

9#
ID:951007 發表于 2021-7-9 10:57 | 只看該作者
少坤 發表于 2021-7-5 22:08
請問用這個電路怎么達到顯示字不滾動的效果

同問,希望得到解答
回復

使用道具 舉報

10#
無效樓層,該帖已經被刪除
11#
無效樓層,該帖已經被刪除
12#
無效樓層,該帖已經被刪除
13#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表