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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機16*16點陣顯示屏的設計及論文

[復制鏈接]
跳轉到指定樓層
樓主
ID:121362 發表于 2016-5-17 09:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
摘  要
        伴隨著科技的進步,LED點陣顯示屏作為一種新興的顯示器件走進我們的視野,它是由多個獨立的LED發光二極管封裝而成。通過LED點陣顯示屏可以顯示數字、符號以及文字,通常用在廣告,指示牌,公告牌上。
本設計利是一種基于STC89C52單片機的16*16點陣顯示屏的設計,其中STC89C52單片機負責對整個系統進行總體控制,設計中使用48*8單紅色點陣屏來組成16*16點陣屏,通過三極管來控制點陣的行方向的控制,而列方向的控制采用兩片串行輸入八位并行輸出的74LS595級聯來控制,通過快速的動態刷新來顯示我們需要的內容,已達到動態顯示的目的。
關鍵詞:點陣 單片機 譯碼器 動態掃描

Abstract
With advances in technology, LED dot matrix display as a display device into our new vision, it is more independent of the LED light emitting diode packages. LED dot matrix display can show by numbers, symbols and text, often used in advertising, signs, bulletin boards.
The design is based on STC89C52 Lee microcontroller 16 * 16 dot matrix display design, which is responsible for the entire chip STC89C52 overall control system design using four 8 * 8 to form a single red dot-matrix screen 16 * 16 points front panel, through the decoder to control the direction of the control line dot matrix, and the column direction is controlled by two serial input parallel output of the 74LS595 eight cascaded to control, through a fast dynamic refresh to show that we need content, has reached the dynamic display purposes.
Keywords: dot matrix single-chip decoder dynamic scan



目 錄
摘  要        2
第1章  緒  論        4
1.1  課題的研究背景        4
1.1.1 LED電子顯示屏概述        4
1.1.2  LED電子顯示屏的分類        4
1.1.3  設計任務        5
1.2  MCS-51系統單片機簡介        6
第2章 總體設計        7
2.1  系統概述        7
2.1.1  顯示單元的選擇        7
2.1.2  滾屏方式選擇        7
2.1.3  關于屏幕的可擴展性        7
2.1.4  單片機控制器的考慮        8
2.1.5  關于點陣數據的存儲方式        8
第3章 硬件電路設計        9
3.1 整體設計框圖        9
3.2 主控電路        9
3.2.1 STC89C52 單片機簡介        9
3.3 LED點陣顯示電路        18
3.3.1 74LS595的總體特點和工作原理        19
3.4整體電路        21
3.5實物圖        21
第4章 軟件實現        22
4.1 概述        22
4.2系統程序方案設計        22
4.2.1主程序設計        23
4.2.2子程序設計        24
4.2.3延時函數        25
4.2.4行選控制        25
總    結        27
參考文獻        28
附錄1:  電路原理圖        29
附錄2:  LED點陣顯示源程序        30
致   謝        38
元件清單        39

1章  緒  論1.1  課題的研究背景
本文主要圍繞點陣的特點開展的點陣設計,設計中的難度諸多如限流電阻的計算,掃描時間的控制等,下面我們就介紹下點陣的概況。
1.1.1 LED電子顯示屏概述
LED電子顯示屏(Light Emitting Diode Panel)是由幾百--幾十萬個半導體發光二極管構成的像素點,按矩陣均勻排列組成。利用不同的半導體材料可以制造不同色彩的LED像素點。目前應用最廣的是紅色、綠色、黃色。而藍色和純綠色LED的開發已經達到了實用階段。 LED顯示屏是一種通過控制半導體發光二極管的亮度的方式,來顯示文字、圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的顯示屏幕。
LED顯示屏分為圖文顯示屏和條幅顯示屏,均由LED矩陣塊組成。圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;而條幅顯示屏則適用于小容量的字符信息顯示。LED顯示屏因為其像素單元是主動發光的,具有亮度高,視角廣、工作電壓低、功耗小、壽命長、耐沖擊和性能穩定等優點。因而被廣泛應用于車站、碼頭、機場、商場、醫院、賓館、銀行、證券市場、建筑市場、拍賣行、工業企業管理和其它公共場所。
LED顯示屏的發展前景極為廣闊,目前正朝著更高亮度、更高氣候耐受性、更高的發光密度、更高的發光均勻性,可靠性、全色化方向發展。
1.1.2  LED電子顯示屏的分類
按顏色分類
單基色顯示屏:單一顏色(紅色或綠色)。
雙基色顯示屏:紅和綠雙基色,256級灰度、可以顯示65536種顏色。
全彩色顯示屏:紅、綠、藍三基色,256級灰度的全彩色顯示屏可以顯示一千六百多萬種顏色。
按顯示器件分類
LED數碼顯示屏:顯示器件為7段碼數碼管,適于制作時鐘屏、利率屏等,顯示數字的電子顯示屏。
LED點陣圖文顯示屏:顯示器件是由許多均勻排列的發光二極管組成的點陣顯示模塊,適于播放文字、圖像信息。
按使用場合分類
室內顯示屏:發光點較小,一般Φ3mm--Φ8mm,顯示面積一般零點幾至十幾平方米。
室外顯示屏:面積一般幾十平方米至幾百平方米,亮度高,可在陽光下工作,具有防風、防雨、防水功能。
按發光點直徑分類
室內屏:Φ3mm、Φ3.75mm、Φ5mm、
室外屏:Φ10mm、Φ12mm、Φ16mm、Φ19mm、Φ21mm、Φ26mm
室外屏發光的基本單元為發光筒,發光筒的原理是將一組紅、綠、藍發光二極管封在一個塑料筒內共同發光增強亮度。
1.1.3  設計任務
本設計的任務就是完成一個16*16的點陣設計,并能滾動顯示“你好!我是陸敏杰”內容。
任務要求:
(1)        能同時流動顯示漢字
(2)        能實現顯示漢字無閃爍
(3)        能實屏幕亮度較高

1.2  MCS-51系統單片機簡介
MCS-51系類單片機就有:
1.可靠性高:因為芯片是按工業測控環境要求設計的,故抗干擾的能力優于PC機。系統軟件(如:程序指令,常數,表格)固化在ROM中,不易受病毒破壞。許多信號的通道均在一個芯片內,故運行時系統穩定可靠。
2.便于擴展:片內具有計算機正常運行所必需的部件,片外有很多工擴展用的(總線,并行和串行的輸入/輸出)管腳,很容易組成一定規模的就算計機應用系統。
3.控制功能強:具有豐富的控制指令:如:條件分支轉移指令,I/O的邏輯操作指令,位處理指令。
4.實用性好:體積小,功耗低,價格便宜,易于產品化。
單片機的發展歷史簡介:
(1) 第1階段(1971年—1978年),以MCS-48系列為代表,稱4位單片機。在片內:CPU有4位或8位;ROM有1KB或2KB;RAM有64B或128B;只有并行接口,無串行接口;只有1個8位的定時/計時器;中斷源只有2個。在片外:尋址范圍只有4KB;芯片引腳有40個。
(2) 第2階段(1978年—1983年)以MCS-51系列為代表,稱8位單片機。在片內:CPU有8位;ROM有4KB或8KB;RAM有128B或256B;有串/并行接口;有2個或者3個16位的定時/計時器;中斷源有5至7個。在片外:尋址范圍有64KB;芯片引腳有40個。
(3) 第3階段(1983年以后),以MCS-96系列為代表,稱16位單片機。在片內:CPU有16位;ROM有8KB;RAM有232B;有串/并行接口;有4個16位的定時/計時器;中斷源有8個;增加了D/A和A/D轉換電路。在片外:尋址范圍有64KB;芯片引腳有48個或者68個。
以上是對MCS-51系列以其優良的性價比,在我國得到了廣泛的應用。

2章 總體設計2.1  系統概述
        一個完備的系統要考慮到多種問題的實現,點陣的設計也是如此,下面我詳細說明我的設計過程。
2.1.1  顯示單元的選擇
顯示一個簡體漢字,至少需要16×16點陣來描述。為了在較遠距離處獲得清晰的視覺效果,本設計采用48×8點陣,像素直徑5mm的紅色LED模塊拼接成16×16點陣的LED陣列。這樣每個16×16漢字能夠獲得12×12cm的顯示尺寸,因此在50米處仍能清晰閱讀。本設計要求整個屏幕能顯示“你好!我是陸敏杰”一系列漢字,則需要用使用16*16紅色點陣滾動顯示。
2.1.2  滾屏方式選擇
字符的位置在屏幕上實現移動,即術語“滾屏”。可以用硬件實現,但無疑增加了額外的硬件成本及設計難度。因此本設計采用軟件算法實現左滾屏顯示的常見滾屏方式。用軟件來完成滾屏算法,其最大的優點在于成本低廉,而且可維護性、可升級性大大增強。
2.1.3  關于屏幕的可擴展性
除了基本要求外,本設計還要實現顯示單元數目的隨意擴展。在傳統的并行傳輸方式中,因受到列數據鎖存器地址線數目的制約,不能隨意的增添顯示單元,且每個顯示單元的電路結構不同,PCB結構也不同,完全不符合模塊化設計的要求。因此摒棄了傳統的并行傳輸方式,而采用獨特的串行鎖存技術,通過控制五根總線就能實現各顯示單元之間的列數據鎖存。不僅板間連接簡單,更是降低了PCB布局及布線的難度。每個顯示單元的PCB都是完全一樣的,便于量產。
2.1.4  單片機控制器的考慮
因本設計采用軟件來實現滾屏,且傳輸方式為串行方式。所以對微控制器單元的處理速度要求較高,可供選擇的有ARM7和高速8位單片機。ARM的處理速度極快,但對于條屏的應用,ARM內部的資源浪費嚴重,且成本較高。因此選擇高速8位單片機作為控制器,常見的高速8位單片機有AVR系列單片機,C8051F系列單片機,STC89C52單片機。這幾種單片機的處理速度均能達到1MIPS/MHz(在時鐘頻率為1MHz時處理能力為每秒100萬條指令),但AVR系列單片機的極限時鐘頻率只能到16MHz,而C8051F系列SOC類似于ARM7,時鐘速度可到100MHz,但會浪費其內部豐富的資源,而且價格昂貴,用在單色條屏的控制中頗感浪費。于是最佳選擇為STC89C52系列單片機,其最高時鐘能到40MHz,且有較豐富的接口及存儲器資源,價格極其低廉,零售價僅為9/片。大幅降低了產品成本。
2.1.5  關于點陣數據的存儲方式
目前使用最廣泛的技術是,通過上位機軟件將待顯示的字符串轉換為對應的點陣字模數據,通過燒寫的方式將這些字模數據按一定的順序編址后存儲在E2PROM中。在條屏顯示的過程中按規定的方式取出E2PROM中的字模數據進行處理。對于一個16×16點陣的漢字字模數據,需要連續32字節的E2PROM空間來存儲。照此計算,若有256個需要顯示的字符,則至少需要32B×256=8192字節(8KB)的E2PROM存儲空間。通常的單片機內部沒有集成這么大容量的E2PROM。因此這種方案,需要在單片機外部擴展大容量的E2PROM,增加硬件成本。上位機程序設計由于涉及到漢字取模,取模算法的難度較大。在多字下載的時候傳輸時間也較長。諸多弊端使本設計放棄了傳統方案。因為本設計只需要很少的顯示內容所以直接保存在STC89C52中是足夠的,因此沒有使用外部設備。
3章 硬件電路設計3.1 整體設計框圖
        經過對此設計的分析,為了能夠實現要求,利用單片機STC89C52作為本系統的主控模塊。LED點陣顯示屏作為顯示模塊,把單片機傳來的數據顯示出來,并且可以實現滾動顯示。硬件整體設計框圖如圖1所示:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps3FB.tmp.jpg
                                                      圖1 整體設計框圖
下面對硬件電路進行說明:
3.2 主控電路
        此方案通過主控電路控制完成LED點陣顯示屏的字符滾動顯示,主控制器使用STC公司生產的單片機STC89C52
3.2.1 STC89C52 單片機簡介
STC89C52 STC公司推出的一款超強抗干擾,加密性強,在線可編程,高速,低功耗CMOS 8位單片機。片內含 8k bytes 的可反復擦寫Flash只讀程序存儲器和256 bytes 的隨機數據存儲器(RAM),器件采用STC公司的高密度、非易失性存儲技術生產,與標準MCS51指令系統及8052產品引腳兼容, 片內置通用8位中央處理器 (CPU)和Flash存儲單元, 功能強大的STC89C52單片機適合于許多較為復雜控制應用場合。
1STC89C52 外部結構及特性
其外形封裝有兩種方式:雙列直插式40腳封裝(DIP)和方形44腳封裝 (PLCC),直插式40 腳封裝(DIP)和外部總線結構如圖2和圖3所示:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps3FC.tmp.jpg
       圖2 STC89C52引腳排列              圖3外部總線
STC89C524 8 I/O口的功能說明如下:
1P0口:P0 口是一個 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅動8TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。 當訪問外部程序和數據存儲器時,P0口也被作為低 8 位地址/數據復用。在這種模式下,P0具有內部上拉電阻。在flash 編程時,P0口也用來接收指令字節;在程序校驗時,輸出指令字節。程序校驗時,需要外部上拉電阻。
2P1口:P1口是一個具有內部上拉電阻的8位雙向 I/O口,p1輸出緩沖器能驅動4TTL 邏輯電平。對P1端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。此外,P1.0 P1.2 分別作定時器/計數器 2 的外部計數輸入(P1.0/T2)和定時器/計數器 2 的觸發輸入(P1.1/T2EX)。在 flash 編程和校驗時,P1口接收低8位地址字節。
3P2口:P2口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動 4 TTL 邏輯電平。對 P2端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用 16 位地址讀取外部數據存儲器(例如執行MOVX @DPTR)時,P2口送出高八位地址。在這種應用中,P2口使用很強的內部上拉發送 1。在使用8 位地址(如 MOVX @RI)訪問外部數據存儲器時,P2 口輸出 P2 鎖存器的內容。在 flash 編程和校驗時,P2 口也接收高 8 位地址字節和一些控制信號。
4P3口:P3口是一個具有內部上拉電阻的8位雙向I/O口,p2 輸出緩沖器能驅動4TTL邏輯電平。對P3端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在 flash 編程和校驗時,P3 口也接收一些控制信號。P3 口亦作為AT89C52特殊功能(第二功能)使用,如下所示:
l  P3.0  RXD(串行輸入口)
l  P3.1  TXD(串行輸出口)
l  P3.2  INTO(外部中斷0 輸入口)
l  P3.3  INT1(外部中斷 1 輸入口)
l  P3.4  TO(定時器 0 外部輸入)
l  P3.5  TI(定時器 1 外部輸入)
l  P3.6  WR(外部數據存儲器寫選通信號)
l  P3.7(外部數據存儲器讀選通信號)
2)功耗特性
        (1)掉電模式:
                典型功耗 <0.1uA,可由外部中斷喚醒,中斷返回后,繼續執行原程序
        (2)空閑模式:
                典型功耗 2mA
        (3)正常工作模式:
                典型功耗 4mA-7mA
         (4)掉電模式可由外部中斷喚醒,適用于水表,氣表等電池供電系統及便攜設備
3STC單片機的命名規則
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41C.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41D.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41E.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41F.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps420.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps421.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps422.tmp.png                        STC89 xx xx xx—40 x-xxxx
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps423.tmp.png

file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps424.tmp.png

file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps434.tmp.png



file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps435.tmp.png


file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps436.tmp.png


file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps437.tmp.png

file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps438.tmp.png

4STC89C52的內部組成
STC89C52單片機在一塊芯片中集成了 CPURAMROM、定時器/計數器、看門狗和多種功能的 I/O 口設備的等,相當于一臺計算機所需要的基本功能部件。
STC89C52單片機內包含的具體部分如下:
l  一個8 位 CPU。
l  一個片內振蕩器及時鐘電路。
l  8KB Flash 程序存儲器。
l  256 B RAM 數據存儲器。
l  三個16 位定時器/計數器。
l  可尋址 64KB 的外部數據存儲器和 64KB 的外部程序存儲器空間的控制電路。 32 條可編程的 I/O線(4組8 位并行 I/O端口)。
l  一個可編程全雙工串口通信。
l  8 個中斷源、兩個優先級嵌套中斷結構。
STC89C52單片機的框圖如圖4所示,各功能部件由內部總線連接在一起。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps439.tmp.jpg
                           圖4 STC89C52單片機框圖
5)特殊功能寄存器SFR
1)單片機內核特殊功能寄存器
Mnemonic
Add
Name
7
6
5
4
3
2
1
0
RestValue
ACC
E0h
Accumulator
















0000,0000
B
F0h
B Register
















0000,0000
PSW
D0h
ProgramStatusWord
CY
AC
F0
RS1
RS0
OV
F1
P
0000,0001
SP
81h
StackPoint
















0000,0111
DPL
82h
DataPointerLowByte
















0000,0000
DPH
83h
DataPointerHighByte
















0000,0000
2)系統管理特殊功能寄存器
Mnemonic
Add
Name
7
6
5
4
3
2
1
0
RestValue
PCON
87h
PowerControl
SMOD
SMOD0
-
P0F
GF1
GF0
PD
IDL
00x1,0000
AUXR
8Eh
AuxiliaryRegister0
-
-
-
-
-
-
EXTRAM
ALE0FF
xxxx,xx00
AUXR1
A2h
AuxiliaryRegister1
-
-
-
-
GF2
-
-
DPS
xxxx,0xx0
(3)中斷特殊功能寄存器
Mnemonic
Add
Name
7
6
5
4
3
2
1
0
RestValue
IE
A8h
InterruptEnable
EA
-
ET2
ES
ET1
EX1
ET0
EX0
0000,0000
IP
B8h
InterruptPriorityLow
-
-
PT2
PS
PT1
PX1
PT0
PX0
xx00,0000
IPH
B7h
InterruptPriorityHigh
PX3H
PX2H
PT2H
PSH
PT1H
PX1H
PT0H
PX0H
0000,0000
TCON
88h
Timer/Counter0and1Contrl
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
0000,0000
SCON
98h
SerialContrl
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
0000,0000
T2CON
C8h
Timer/Counter2Control
TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/T2#
CP/RL2#
0000,0000
XICON
C0h
AuxiliaryInterrupControl
PX3
EX3
IE3
IT3
PX2
EX2
IE2
IT2
0000,0000
6STC89C52單片機定時器的使用
        定時和計數功能由特殊功能寄存器TMOD的控制位C/`T進行選擇,TMOD寄存器的各位信息如下表所列。可以看出,2個定時/計數器有4中操作模式,通過TMOD的M1和M0選擇。2個定時/計數器的模式0、1和2都相同,模式3不同,各模式下的功能如圖5所述:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps44A.tmp.jpg
                                                                圖5 定時/計數器各模式功能
符號
功能
TMOD.7
GATE
TMOD.7控制定時器1,置1時只有在INIT0腳為高及TR1控制位置1時才可打開定時器/計數器1
TMOD.3
GATE
TMOD.3控制定時器0,置1時只有在`INIT1腳為高及TR0控制位置1才可打開定時器/計數器1
TMOD.6
C/`T
TMOD.6控制定時器1用作定時器或計數器,清零則用作定時器(從內部系統時鐘輸入),置1用作計數器(從T1/P3.5腳輸入)
TMOD.2
C/`T
TMOD.2控制定時器0用作定時器或計數器,清零則用作定時器(從內部系統時鐘輸入),置1用作計數器(從T0/P3.4腳輸入)
TMOD.5/ TMOD.4
M1 M0
定時器/計數器1模式選擇


0  0
13位定時器/計數器,兼容8048定時器模式,TL1只用低5位參與分頻,TH1整個8位全用
0  1
16位定時器/計數器,TL1TH1全用
1  0
8位自動重裝載定時器,當溢出時將TH1存放的值自動重裝入TL1
1  1
定時器/計數器1此時無效(停止計數)
TMOD.1/ TMOD.0
M1 M0
定時器/計數器0模式選擇


0  0
13位定時器/計數器,兼容8048定時器模式,TL0只用低5位參與分頻,TH1整個8位全用
0  1
16位定時器/計數器,TL0TH0全用
1  0
8位自動重裝載定時器,當溢出時將TH1存放的值自動重裝入TL0
1  1
定時器0此時作為雙8位定時器/計數器。TL0作為一個8位定時器/計數器,通過標準定時器0的控制位控制。TH0僅作為一個8位定時器,由定時器1的控制位控制。
1)模式0
將定時器設置成模式0時,類似8048定時器,即8位計數器帶32分頻的預分頻器。下圖所示為模式0工作方式。此模式下,定時器配置為13位的計數器,由TLn的低5位和THn8位所構成。TLn5位溢出向THn進位,THn計數溢出置為TCON中的溢出標志位TFnn=0,1)。GATE=0時,如TRn=1,則定時器計數。GATE=1時,允許由外部輸入INIT1控制定時器1INIT0控制定時器0,這樣可實現脈寬測量。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps45B.tmp.jpg
                                        圖6 定時器/計數器0和定時器/計數器1的模式0
2)模式1
        模式1除了使用THnTLn全部16位外,其他與模式0完全相同、
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps45C.tmp.jpg
                                        圖7定時器/計數器0和定時器/計數器1的模式1
3)模式2
此模式下定時器/計數器01作為可自動重裝載的8位計數器(TLn),如下圖所示,TLn的溢出不僅置位TFn,而且將THn內容重新裝入TLnTHn內容由軟件預置,重裝時THn內容不變,模式2的操作對于定時器0及定時器1是相同的。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46C.tmp.jpg
                                        圖8 定時器/計數器01的模式2
4)模式3
對定時器1,在模式3時,,定時器1停止計數,效果與將TR1設置為0相同。
對定時器0,此模式下定時器0TL0TH0作為2個獨立的8位計數器。下圖為模式3時的定時器0邏輯圖。TL0占用定時器0的控制位:C/`TGATETR0INT0及TF0TH0限定為定時器功能(計數器周期),占用定時器1TR1TF1。此時,TH0控制定時器1中斷。
模式3是為了增加一個附加的8位定時器/計數器而提供的,使單片機具有三個定時器/計數器。模式3只使用與定時器/計數器0,定時器T1處于模式3時相當于TR1=0,停止計數(此時T1可用來作串行口波特率發生器),而T0可作為兩個定時器用。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46D.tmp.jpg
                                        圖9 定時器/計數器0的模式3
3.3 LED點陣顯示電路
本設計使用的是48*8單色點陣屏設計16*16點陣屏,采用單色顯示,進行顯示所要顯示的字符,通過三極管來控制點陣的行方向的顯示,而列方向的16條線則由74LS595的八位并行輸出端控制。
3.3.1 74LS595的總體特點和工作原理
1)總體特點:74LS5958位串行輸入轉并行輸出移位寄存器,三態輸出功能,具有數據存儲寄存器,移位寄存器和存儲器是分別的時鐘。數據在SHcp的上升沿輸入,在STcp的上升沿進入的存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。在移位的過程中,輸出端的數據可以保持不變。這在串行速度慢的場合很有用處,數碼管沒有閃爍感。其DIP封裝引腳圖如圖7所示:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46E.tmp.jpg
7  74LS595引腳圖

各引腳及其功能:
Q0~Q7
八位并行輸出端
Ds
串行數據輸入端
/OE
輸出使能端
STcp
存儲寄存器的時鐘脈沖輸入口
SHcp
移位寄存器的時鐘脈沖輸入口
/MR
芯片復位端
Q7'
并行數據輸出口,即儲寄存器的數據輸出口

2)工作原理
        每當SHcp上升沿到來時, Ds引腳當前電平值在移位寄存器中左移一位,在下一個上升沿到來時移位寄存器中的所有位都會向左移一位,同時Q7'也會串行輸出移位寄存器中高位的值,這樣連續進行8次,就可以把數組中每一個數(8位的數)送到移位寄存器;然后當STcp上升沿到來時,移位寄存器的值將會被鎖存到鎖存器里,并從Q1~7引腳輸出。74LS595的主要優點是具有數據存儲寄存器,在移位的過程中,輸出端的數據可以保持不變。這在串行速度慢的場合很有用處,點陣沒有閃爍感。
74HC5955V供電的時候能夠達到30MHz的時鐘速度,每個并行輸出端口均能承受20mA的灌電流和拉電流。這個特點保證了不用增加額外的擴流電路即可輕松的驅動LED。它輸入端允許500nS的上升(下降)時間,對嚴重畸形的時鐘脈沖仍能檢測。這樣就可以容納較大的傳輸線對地電容,使本設計的抗干擾能力增強。
74HC595并行輸出端與LED模塊列線之間通過20Ω的電阻連接,這里電阻起到分壓,去除紅色LED的并聯嵌位作用。使紅綠兩組LED均能正常發光。
由于LED顯示屏的工作電流時刻在變化,造成了系統電壓的波動。這種電壓波動有高頻成分,也有低頻成分。輕則對周圍無線電環境造成電磁污染,重則使系統時鐘紊亂,邏輯錯誤。為避免此,在每個74HC595的電源VCCGND旁邊都并聯了兩個電容,用于濾波和退耦。穩定系統電壓,旁路掉電源中的高頻脈動成份。消除自激,減小對外雜散電磁輻射,提高EMI電磁兼容性。
3.4整體電路
見附錄1(電路原理圖)
3.5實物圖
        下面為我制作的16*16點陣實物圖,正面圖與背面圖。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46F.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps480.tmp.png
                        16*16正面點陣圖                                                        16*16背面點陣圖


4章 軟件實現4.1 概述
整個系統的功能是由硬件電路配合軟件來實現的,當硬件基本定型后,軟件的功能也就基本定下來了。 從軟件的功能不同可分為兩大類: 一是監控軟件 (主程序) ,它是整個控制系統的核心,專門用來協調各執行模塊和操作者的關系。二是執行軟件(子程序),它是用來完成各種實質性的功能。每一個執行軟件也就是一個小的功能執行模塊。這里將各執行模塊一一列出,并為每一個執行模塊進行功能定義和接口定義。各執行模塊規劃好后,就可以規劃監控程序了。 首先要根據系統的總體功能選擇一種最合適的監控程序結構,然后根據實時性的要求,合理地安排監控軟件和各執行模塊之間地調度關系。
4.2系統程序方案設計
系統程序主要包括了:主程序、點陣顯示驅動程序。
主程序:主要控制整個顯示部分的初始化,使系統在目測條件下LED顯示屏各點亮度均勻、充足,可顯示文字和數字,顯示的文字和數字應穩定、清晰無串擾。文字顯示可以移入移出。本設計的顯示內容為“你好!我是陸敏杰”實現向右移動功能。
下面是主程序部分:
程序中首先對各個變量進行初始化,并對74HC595進行初始化,當時初始化過程完成后,開始顯示處理。
//主函數
void main()
{
        uchar i=1,j=0;
        uchar X=0;
        //595c初始化
        Init595();
        //循環演示
        下面的程序是對顯示的處理主要是對漢字的移動和顯示的處理
        while(1)
        {
                for(j=0;j<10;j++)//循環顯示10
                {
                        //送入16個位數據
                        for(i=1;i<17;i++)
                        {
                                WriteS(0xff,0xff);//消影
                                Wei_154(i);
                                WriteS(HanZi[i*2-2+2*X],HanZi[i*2-1+2*X]);//顯示內容
                                Wei_154(i);
                                delay(7);//顯示
                                G2=0;//關閉
                        }
                }
                X++;
                if(X==17*16)
                        X=0;
        }
}
在主函數中完成函數的調用及字體的移動處理,所以使人們能看見可以移動字體顯示。
點陣顯示驅動程序:
主要實現對74ls595,已實現畫面的動態刷新。



//74ls595初始化
void Init595()
{
        SI=1;
        SCK=0;
        RCK=0;
}
//595中寫一個字節
void Write_byte595(uchar temp)
{
        uchar i,data_=temp;
        G2=1;
        for(i=0;i<8;i++)//傳值8
        {
                if(data_&0x01==0x01)//低位為1
                {
                        SI=1;
                }
                else                                         //低位為0
                {
                        SI=0;
                }
                //產生一個上升沿
                SCK=0;
                SCK=1;
                SCK=0;
                data_>>=1;
        }
        RCK=0;//顯示數據
        RCK=1;
        RCK=0;
}
//595寫入一行的字節
void WriteS(uchar data1,uchar data2)
{
        Write_byte595(data2);
        Write_byte595(data1);
}







4.2.1主程序設計
        通過主程序對74ls595的初始化和對子程序的調用完成單片屏幕的動態刷新以達到點陣的動態顯示目的。
4.2.2子程序設計
        將各個功能程序以子程序的形式寫好, 當寫主程序的時候, 只需要調用子程序,然后在寄存器的分配上作一下調整,消除寄存器沖突和 I/O 沖突即可。程序應該盡可能多的使用調用指令代替跳轉指令。因為跳轉指令使得程序難以看懂各程序段之間的結構關系。而調用指令則不同,調用指令使得程序結構清晰,無論是修改還是維護都比較方便。將功能程序段寫成子程序的形式,除了方便調用之外,還有一個好處那就是以后寫程序的時候如果要用到,就可以直接調用這個單元功能模塊。下面對LED點陣顯示屏的顯示部分流程圖做介紹:

4.2.3延時函數
        因為顯示原理是視覺暫留原理需要有延時控制顯示。延時函數如下:
//等待函數
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=7;y>0;y--);
}
4.2.4行選控制
        通過單片機IO口控制三極管,可以實現5線控制16線的過程,如程序所示:



//154位選驅動
void Wei_154(uchar W)
{
        G2=0;//使能
        switch(W)
        {
                case 16:
                {
                        A_=1;
                        B_=1;
                        C_=1;
                        D_=1;        
                        break;               
                }
                case 15:
                {
                        A_=0;
                        B_=1;
                        C_=1;
                        D_=1;        
                        break;               
                }
                case 14:
                {
                        A_=1;
                        B_=0;
                        C_=1;
                        D_=1;        
                        break;               
                }
                case 13:
                {
                        A_=0;
                        B_=0;
                        C_=1;
                        D_=1;        
                        break;               
                }
                case 12:
                {
                        A_=1;
                        B_=1;
                        C_=0;
                        D_=1;        
                        break;               
                }
                case 11:
                {
                        A_=0;
                        B_=1;
                        C_=0;
                        D_=1;        
                        break;               
                }
                case 10:
                {
                        A_=1;
                        B_=0;
                        C_=0;
                        D_=1;        
                        break;               
                }
                case 9:
                {
                        A_=0;
                        B_=0;
                        C_=0;
                        D_=1;        
                        break;               
                }
                case 8:
                {
                        A_=1;
                        B_=1;
                        C_=1;
                        D_=0;        
                        break;               
                }
                case 7:
                {
                        A_=0;
                        B_=1;
                        C_=1;
                        D_=0;        
                        break;               
                }
                case 6:
                {
                        A_=1;
                        B_=0;
                        C_=1;
                        D_=0;        
                        break;               
                }
                case 5:
                {
                        A_=0;
                        B_=0;
                        C_=1;
                        D_=0;        
                        break;               
                }
                case 4:
                {
                        A_=1;
                        B_=1;
                        C_=0;
                        D_=0;        
                        break;               
                }
                case 3:
                {
                        A_=0;
                        B_=1;
                        C_=0;
                        D_=0;        
                        break;               
                }
                case 2:
                {
                        A_=1;
                        B_=0;
                        C_=0;
                        D_=0;        
                        break;               
                }
                case 1:
                {
                        A_=0;
                        B_=0;
                        C_=0;
                        D_=0;        
                        break;               
                }




總    結
經過近兩個月的努力,終于順利完成了畢業設計。在此LED點陣顯示系統中,由于我采用了STC89C5單片機,并且采用串行移位寄存器74HC595作列線驅動,使本設計的硬件成本大幅下降,而又提高了顯示單元的可擴展性。因為使用了高速單片機,使本系統的動態刷新率,移動速度等得到保障。本設計充分利用了單片機的E2PROM等片上資源,節約成本的同時使外圍電路簡潔美觀,故障率降低。總體的性能指標均達到或超過了題目的要求。
畢業設計是每個大學生必須面臨的一項綜合素質的考驗,如果說在過去四年里,我們的學習是一個知識的積累過程,那么現在的畢業設計就是對過去所學知識的綜合運用,是對理論進行深化和重新認識的時間活動。在這近兩個月的畢業設計中,我們有艱辛的付出,當然更多的是豐收的喜悅。知識固然得到了鞏固和提高,但我相信在實踐中的切身體會將會使我在以后的工作和學習中終身受用。
首先,學習能力得到了提高。在畢業設計中,自始至終獨立完成硬件電路的設計、單片機軟件編寫等。在這些過程中,遇到許多困難,但通過書籍或網絡查閱了很多相關文章和向導師請教后終于解決了。通過這次畢業設計,我不僅對理論有了更深一步的認識,增強了和外界技術的溝通,還培養了自學能力和分析解決問題的能力,更重要的是,培養了克服困難的勇氣和信心。
其次,培養了自己的市場觀念。一個商品是否能夠搶占市場,除了必須的功能和質量要求外,其價格是最大的競爭優勢。如何在保證質量和完成同等功能的情況下,把產品的成本降到最低。是每個設計人員在作出方案時首要考慮的因素。
再次,則是人際交流能力得到鍛煉。人非生而知之者!人的學識總是不能面面俱到的,這就要求我們必須善于借鑒別人的成功經驗或失敗教訓,使自己少走彎路。
總之,畢業設計完成了,但又面臨著工作。我相信我會把自己的熱情和所學奉獻到自己的工作中,不斷努力,不斷進取!
參考文獻
[1] 譚浩強. C程序設計(第二版)[M]. 北京:清華大學出版社,1999.12.
[2] 彭為.單片機典型系統設計實例精講[M].北京:電子工業出版社,2006.5.
[3] 李良榮.現代電子設計技術-基于Multisim7[M].北京:機械工業出版社,2005.4.
[4] 姜承昊. 最新LED驅動電路設計、應用與制造新技術新工藝實用手冊[M].北京:中國科學技術文獻出版社,2008.3.
[5] 魏洪興.嵌入式系統設計與實例開發實驗教材I[M].北京:清華大學出版社,2005.9.
[6] 童詩白.模擬電子技術基礎(第三版)[M].北京:高等教育出版社,2001.1.
[7] 閻石.數字電子技術基礎(第四版)[M].北京:高等教育出版社,1998.11.
[8] 中國集成電路大全編委會編.《中國集成電路大全——CMOS集成電路》[M].   北京:國防工業出版社,1985.

附錄1:  電路原理圖
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps491.tmp.jpg

附錄2:  LED點陣顯示源程序
#include <reg52.h>                 //調用單片機頭文件
#define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
#define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535

//                         //           1    2     3     4        5     6        7    8
uint code we[16]={0xfffb,0xffdf,0xff7f,0xffef,0xfffe,0xfffd,0xffbf,0xfff7,
                  0xdfff,0xfbff,0xfdff,0x7fff,0xf7ff,0xbfff,0xfeff,0xefff};         //


/***********************1ms延時函數*****************************/
void delay_1ms(uint q)
{
        uint i,j;
        for(i=0;i<q;i++)
                for(j=0;j<50;j++);
}



uchar code table[][32] = {//   

{0xFB,0x7F,0xFB,0xBF,0xFB,0xDF,0xFB,0xE7,0xFB,0xF9,0x03,0xFE,0xBB,0xFF,0xBB,0xFF,0xBB,0xBF,0xBB,0x7F,0xBB,0xBF,0x3B,0xC0,0xFB,0xFF,0xFB,0xFF,0xFB,0xFF,0xFF,0xFF},/* ,0*/

{0xF7,0xFF,0xF7,0x7F,0xF7,0xBF,0xF7,0xDF,0xF7,0xE7,0x07,0xF8,0x76,0xFF,0x71,0xFF,0x77,0xBF,0x77,0x7F,0x77,0xBF,0x77,0xC0,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF},/* ,1*/


{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",8*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",9*/
};


uchar hanzi[32] ;
uchar i;

sbit SI=P3^6;        
sbit SCK=P3^3;   //上升沿有效
sbit RCK=P3^4;     //上升沿有效

/**********發送一個數據************/
void send_byte(uchar a)
{
        uchar i,nn;
        nn=a;
        for(i=0;i<8;i++)
        {
                SCK=0;
                nn<<=1;
                SI=CY;        
                SCK=1;
        }
}

/**********595輸出************/
void out()
{
        RCK=0;
        RCK=1;
}


uint flag_value = 0;
uchar you = 0 ;

/**********主函數************/
void main()
{
        static uchar value,value1,j;
        for(i=0;i<32;i++ )
                hanzi = 0xff;         
        flag_value = 0;
        while(1)
        {

                value ++;
                if(value >= 10)         //延時進來處理
                {
                        value = 0;
                        value1 ++;
                        if(value1 <= 16)
                        {
                                value1 = 0;        
                                for(j=0;j<15;j++)
                                {
                                        hanzi[j*2+1] = hanzi[j*2+3] ;                                                                                
                                        hanzi[j*2] = hanzi[j * 2+2];
                                }
                                hanzi[30] = table[you][flag_value * 2];
                                hanzi[31] = table[you][flag_value * 2 + 1];
                                flag_value ++;
                                if(flag_value >= 16)
                                {
                                        flag_value = 0;        
                                        you ++;
                                        if(you >= geshu)        //字全部顯示完了
                                                you = 0;
                                }                                
                        }
                }


                for(i=0;i<16;i++)
                {
                        out();                         //595輸出
                        P2 = we / 256;
                        P0 = we % 256;        
                        send_byte(hanzi[i*2])        ;                 //
                        send_byte(hanzi[i*2+1])        ;                 //
                        delay_1ms(1);
                }
        }
}


致   謝
        此設計及論文是在*888*老師悉心指導和大力支持下完成的,*888*老師以其嚴謹求實的治學態度、高度的敬業精神、兢兢業業的工作作風和大膽創新的進取精神對我產生重要影響。在論文的寫作過程中,也得到了許多同學的寶貴建議,同時還有那些與我一起工作奮斗的兄弟姐妹,所以在此,我要一并致以誠摯的謝意。感謝所有關心、支持、幫助過我的良師益友。

元件清單
STC89C52                        1
40DIP座                        1
30P電容                        2
12MHZ晶振                     1
10K電阻                        1
10uf電容                       1
排座                           3
自鎖開關                        1
10CM*10CM電路板               1
導線                            若干
排針                            1
74HC595                         2
74HC154                         1
8550 16
2K電阻                          16
470歐電阻                        16
28DIP座                          1
16DIP座                          2
電池盒                            1
8*8紅色點陣塊                    4

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

使用道具 舉報

沙發
ID:99188 發表于 2016-6-13 22:00 | 只看該作者
學長,您有詳細的16*16點陣資料嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 激情视频一区 | 国产日产精品一区二区三区四区 | 精品久久久久久久 | 精品亚洲一区二区三区四区五区 | 久久精品aaa | 91在线看片 | 国产免费一区 | 中国一级特黄真人毛片 | 欧美二区在线 | 国产精品伦一区二区三级视频 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美在线激情 | 日本天天色 | 欧美精品一区二区三区在线播放 | 在线黄av| 日韩中文字幕久久 | 毛片免费观看视频 | 高清av一区 | 午夜国产| 国产成人精品高清久久 | 五月天天色 | 国产精品一区二区在线免费观看 | 天天草天天干 | 国产精品国产三级国产aⅴ中文 | 羞羞视频在线观看 | 一区二区三区四区在线视频 | 免费视频二区 | 综合网在线| 欧洲国产精品视频 | 美女三区 | 国产精品美女久久久 | 日韩精品一区二区三区视频播放 | 久久精品亚洲精品国产欧美 | 中文字幕一区二区三区乱码在线 | 韩日一区二区三区 | 91精品国产综合久久久动漫日韩 | 精品三级在线观看 | 成年人黄色一级毛片 | 综合久久久 | 成人欧美一区二区三区白人 | 亚洲国产成人av |