8255LCD函數(shù)信號發(fā)生器解析_第1頁
8255LCD函數(shù)信號發(fā)生器解析_第2頁
8255LCD函數(shù)信號發(fā)生器解析_第3頁
8255LCD函數(shù)信號發(fā)生器解析_第4頁
8255LCD函數(shù)信號發(fā)生器解析_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課 程 設(shè) 計 報 告課 程 名 稱 51單片機 課 程 題 目 基于8255的LCD顯示函數(shù)信號發(fā)生器的設(shè)計 專 業(yè) 通信工程 班 級 學(xué) 號 姓 名 同 組 人 指 導(dǎo) 單 位 南京郵電大學(xué)通達學(xué)院 指 導(dǎo) 教 師 林建中 第一部分 實驗?zāi)康募耙?、 實驗?zāi)康恼莆誔roteus對MCS51單片機的仿真學(xué)習(xí)匯編語言以及C語言在51編程上的使用掌握使用Keil軟件對51單片機編程根據(jù)提供的參考工程,在 Proteus平臺自己重新畫出實驗所需要的電氣原理圖,并在此基礎(chǔ)上編寫相對應(yīng)的程序,實現(xiàn)其功能,學(xué)習(xí)Proteus軟件的使用,其中包括原理圖器件的選取、原理圖的電氣連接、程序的編寫編譯以及運行

2、,并能查出其錯誤等。2、實驗設(shè)備硬件:微機(WindowsXP)軟件:Proteus 7.4 sp3,Keil uVersion 33、實驗基本要求基本要求:用存儲器或算法得到信源。用DA轉(zhuǎn)換器輸出一函數(shù)信號(正弦、方波、三角、鋸齒等,頻率1000Hz),可以用 示波器進行波形觀察。用LCD顯示輸出參數(shù)。用功能鍵切換各信號的輸出。動態(tài)顯示格式:自定第二部分 實驗工具及實驗器件1、Proteus 以及 Keil 軟件的介紹Proteus 是英國 Labcenter 公司開發(fā)的電路及單片機系統(tǒng)設(shè)計與仿真軟件。Proteus可以實現(xiàn)數(shù)字電路、模擬電路及微控制器系統(tǒng)與外設(shè)的混合電路系統(tǒng)的電路仿真、軟件

3、仿真、系統(tǒng)協(xié)同仿真和PCB設(shè)計等功能。Proteus是目前唯一能對各種處理器進行實時仿真、調(diào)試與測試的EDA工具,真正實現(xiàn)了在沒有目標原型時就可對系統(tǒng)進行調(diào)試、測試和驗證。Proteus 軟件大大提高了企業(yè)的產(chǎn)品開發(fā)效率,降低了開發(fā)風(fēng)險。由于Proteus軟件逼真、真實的協(xié)同仿真功能,它也特別適合于作為配合單片機課堂教學(xué)和實驗的學(xué)習(xí)工具。Proteus 軟件提供了30多個元器件庫、7000余種元器件。元器件涉及電阻、電容、二極管、三極管、變壓器、繼電器、各種放大器、各種激勵器、各種微控制器、各種門電路和各種終端等。Proteus 軟件還提供有交直流電壓表、邏輯分析儀、示波器、定時/計數(shù)器和信號

4、發(fā)生器等測試信號工具用于電路測試。Keil C51是美國 Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil 提供了包括 C 編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整 開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP 等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令

5、你事半功倍。應(yīng)用 Keil 進行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存建立工程并添加源文件設(shè)置工程編譯/匯編、連接,產(chǎn)生目標文件程序調(diào)試。Keil 使用“工程”(Project)的概念,對工程(而不能對單一的源程序)進行編譯/匯編、連接等操作。工程的建立、設(shè)置、編譯/匯編及連接產(chǎn)生目標文件的方法非常易于掌握。首先選擇菜單File-New,在源程序編輯器中輸入?yún)R編語言或C語言源程序(或選擇 File-Open,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時必須在文件名后加上擴展名.asm(.a51)或.c;然后選擇菜單Project-New Project,建立新工程并保存(保

6、存時無需加擴展名,也可加上擴展名.uv2);工程保存后會立即彈出一個設(shè)備選擇對話框,選擇CPU后點確定返回主界面。這時工程管理窗口的文件頁(Files)會出現(xiàn)“Target1”,將其前面+號展開,接著選擇Source Group1,右擊鼠標彈出快捷菜單,選擇“Add File to GroupSource Group1”,出現(xiàn)一個對話框,要求尋找并加入源文件(在加入一個源文件后,該對話框不會消失,而是等待繼續(xù)加入其它文件)。加入文件后點close返回主界面,展開“Source Group1”前面+號,就會看到所加入的文件,雙擊文件名,即可打開該源程序文件。緊接著對工程進行設(shè)置,選擇工程 管理窗

7、口的Target1,再選擇Project-Option for TargetTarget1(或點右鍵彈出快捷菜單再選擇該選項),打開工程屬性設(shè)置對話框,共有8個選項卡,主要設(shè)置工作包括在Target選項卡中設(shè)置晶振頻率、在Debug選項卡中設(shè)置實驗仿真板等,如要寫片,還必須在Output選項卡中選中“Creat Hex Fi”;其它選項卡內(nèi)容一般可取默認值。工程設(shè)置后按F7鍵(或點擊編譯工具欄上相應(yīng)圖標)進行編譯/匯編、連接以及產(chǎn)生目標文件。成功編譯/匯編、連接后,選擇菜單Debug-Start/Stop Debug Session(或按Ctrl+F5鍵)進入程序調(diào)試狀態(tài),Keil 提供對程序

8、的模擬調(diào)試功能,內(nèi)建一個功能強大的仿真CPU以模擬執(zhí)行程序。Keil 能以單步執(zhí)行(按 F11或選擇 Debug-Step)、過程單步執(zhí)行(按F10或選擇 Debug-Step Over)、全速執(zhí)行等多種運行方式進行程序調(diào)試。如果發(fā)現(xiàn)程序有錯,可采用在線匯編功能對程序進行在線修改(Debug-Inline Assambly),不必執(zhí)行先退出調(diào)試環(huán)境、修改源程序、對工程重新進行編譯/匯編和連接、然后再次進入調(diào)試狀態(tài)的步驟。對于一些必須滿足一定條件(如按鍵被按下等)才能被執(zhí)行的、難以用單步執(zhí)行方式進行調(diào)試的程序行,可采用斷點設(shè)置的方法處理(Debug-Insert/Remove Breakpoin

9、t 或 Debug-Breakpoints等)。在模擬調(diào)試程序后,還須通過編程器將.hex 目標文件燒寫入單片機中才能觀察目標樣機真實的運行狀況。在PROTEUS繪制好原理圖后,調(diào)入已編譯好的目標代碼文件:*.HEX,可以在 PROTEUS 的原理圖中看到模擬的實物運行狀態(tài)和過程。2、51單片機AT89C5151單片機是對目前所有兼容Intel 8031指令系統(tǒng)的單片機的統(tǒng)稱。該系列單片機的始祖是Intel的8031單片機,后來隨著Flash rom技術(shù)的發(fā)展,8031單片機取得了長足的進展,成為目前應(yīng)用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測控系統(tǒng)

10、之中。目前很多公司都有51系列的兼容機型推出,在目前乃至今后很長的一段時間內(nèi)將占有大量市場。51單片機是基礎(chǔ)入門的一個單片機,還是應(yīng)用最廣泛的一種。需要注意的是52系列的單片機一般不具備自編程能力。當前常用的51系列單片機主要產(chǎn)品有:*Intel的:80C31、80C51、87C51、80C32、80C52、87C52 等;*ATMEL的:89C51、89C52、89C2051 等;AT89C51單片機的內(nèi)部結(jié)構(gòu)為:單一+5V電源供電; CPU:由運算和控制邏輯組成,同時還包括中斷系統(tǒng)和部分外部特殊功能寄存器; RAM:用以存放可以讀寫的數(shù)據(jù),如運算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù); RO

11、M:用以存放程序、一些原始數(shù)據(jù)和表格; I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出; T/C:兩個定時/記數(shù)器,既可以工作在定時模式,也可以工作在記數(shù)模式; 五個中斷源的中斷控制系統(tǒng): 一對全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實現(xiàn)單片機之間或單片機與微機之間的串行通信; 片內(nèi)振蕩器和時鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。2、D/A轉(zhuǎn)換集成芯片DAC0832DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片,與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點,在單片機應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。它由8位輸入鎖存器、8位DAC寄存器、8位D/

12、A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。D0D7:8位數(shù)據(jù)輸入線,TTL電平,有效時間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會出錯); ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效; CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效; WR1:數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存; XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應(yīng)大于500ns)有效; WR2:DAC寄存器選通輸入線,負脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組

13、合產(chǎn)生LE2,當LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。 IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化; IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù); Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度; Vcc:電源輸入端,Vcc的范圍為+5V+15V; VREF:基準電壓輸入線,VREF的范圍為-10V+10V; AGND:模擬信號地 DGND:數(shù)字信號地3、可編程并行I/O接口芯片8255A8255是Intel公司生產(chǎn)的可編程并行I/O接口芯片,有3個8位并行

14、I/O口。具有3個通道3種工作方式的可編程并行接口芯片(40引腳)其各口功能可由軟件選擇,使用靈活,通用性強。8255可作為單片機與多種外設(shè)連接時的中間接口電路。8255作為主機與外設(shè)的連接芯片,必須提供與主機相連的3個總線接口,即數(shù)據(jù)線、地址線、控制線接口。同時必須具有與外設(shè)連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內(nèi)部結(jié)構(gòu)分為3個部分:與CPU連接部分、與外設(shè)連接部分、控制部分。特點:(1)一個并行輸入/輸出的LSI芯片,多功能的I/O器件,可作為CPU總線與外圍的接口。(2)具有24個可編程設(shè)置的I/O口,即3組8位的I/O口為PA口,PB口和 P

15、C口。它們又可分為兩組12位的I/O口,A組包括A口及C口(高4位,PC4PC7),B組包括B口及C口(低4位,PC0PC3)。A組可設(shè)置為基本的I/O口,閃控(STROBE)的I/O閃控式,雙向 I/O3種模式;B組只能設(shè)置為基本I/O或閃控式I/O兩種模式,而這些操作模式完全由控制寄存器的控制字決定。RESET:復(fù)位輸入線,當該輸入端處于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有 I/O 口均被置成輸入方式。 CS:芯片選擇信號線,當這個輸入引腳為低電平時,即/CS=0 時,表示芯片被選中,允許8255與CPU進行通訊;/CS=1 時,8255無法與CPU做數(shù)據(jù)傳輸。 RD:

16、讀信號線,當這個輸入引腳為低電平時,即/RD=0 且/CS=0 時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 WR:寫入信號,當這個輸入引腳為低電平時,即/WR=0且/CS=0時,允許CPU將數(shù)據(jù)或控制字寫入8255。 D0D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當CPU執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。 PA0PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器,一個8位的數(shù)據(jù)輸入鎖存器。 PB0PB7:端口B輸入輸出線, 一個8位的 I/O 鎖存器一個8位的輸入輸出緩沖

17、器。 PC0PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器,一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器。當 A1=0,A0=0 時,PA 口被選擇;當 A1=0,A0=1 時,PB 口被選擇; 當 A1=1,A0=0 時,PC 口被選擇;當 A1=1,A0=1 時,控制寄存器被選擇。4、LCD液晶顯示器件LM016LLM016L 是一個2*16的點陣式字符液晶顯示模塊,每

18、個字符由5*7個點組成的; 內(nèi)部帶有HD44780控制器; 采用5V電源供電; 內(nèi)建有192個字符,8個用戶自建字符。第三部分 實驗原理圖及程序1、實驗步驟有Proteus參與的單片機系統(tǒng)開發(fā)過程一般分為四步:在Proteus平臺上進行單片機系統(tǒng)電路設(shè)計、選擇元器件、接插件、連接電路和電氣檢測等。進行單片機系統(tǒng)源程序設(shè)計、編輯、匯編編譯、調(diào)試,最后生成目標代碼文件。在Proteus平臺上將目標代碼文件加載到單片機系統(tǒng)中,并實現(xiàn)單片機系統(tǒng)的實時交互、協(xié)同仿真。仿真正確后,制作實際單片機系統(tǒng)電路,并將目標代碼文件下載到實際單片機中運行、調(diào)試,直至運行成功。2、硬件部分電路設(shè)計由于本次實驗設(shè)計的是一

19、個由單片機組成的函數(shù)信號發(fā)生器的實驗,并且題目要求我們使用的是8255芯片,由于8255并行IO口擴展方法之一,通過初始化編程設(shè)置,為單片機擴展多種方式的并行輸入/輸出接口,最多可擴展三個八位的IO口,分別稱為A口、B口和C口,其中,A口具有輸入輸出雙向鎖存,可實現(xiàn)一般IO功能、選通輸入功能、選通輸出功能和選通輸入/輸出雙向功能,其運用最為靈活。B口具有輸出鎖存和輸入緩沖,能實現(xiàn)A口的相同功能,除了雙向輸入/輸出功能,C口能用于一般八為IO口,具有為操作功能,在多數(shù)場合作為A口和B口的控制端口使用。8255芯片占用CPU的四個外部RAM地址單元。8255具有多種用途,通過跳線可以用于LCD數(shù)碼

20、管顯示輸出。DA轉(zhuǎn)換器用于數(shù)字信號模擬化,DAC0832是8位分辨率的DA轉(zhuǎn)換器,與微處理器完全兼容。與它類似的芯片有DAC0830和DAC0831,這個系列的轉(zhuǎn)換器芯片以其價格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點,在單片機應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。這類D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及控制電路構(gòu)成。該電路的顯示部分按要求則使用型號為LM016的LCD液晶顯示器,通過P0口傳送數(shù)據(jù)然后由 LCD 顯示出來。另外,電路中還設(shè)計了兩個按鍵,用來選擇要顯示的波形。基于8255口是指顯示和鍵盤都由8255的 I/O 口控制,使用8255可編程并行口芯片,設(shè)定為工作方式0,

21、PC口做輸入,PA口做輸出,使得達到控制通過按鍵選擇發(fā)送,顯示正確的數(shù)據(jù)串。完整電路原理圖如下:(雖然題目的要求是頻率1000Hz,但是經(jīng)過測試,1000Hz時的波形及其不穩(wěn)定,經(jīng)過反復(fù)調(diào)試,得出結(jié)論:當頻率為333Hz時,波形比較穩(wěn)定,所以改動了題目的要求)3、軟件部分設(shè)計程序如下:#include #include lcd1602.h#define uchar unsigned char#define uint unsigned intsbit key1 = P3 4;sbit key2 = P3 5;code unsigned char Str1 = Signal Source;code

22、 unsigned char Str2 = Starting.;unsigned char DispSin1 = Wave:sin ;unsigned char DispSin2 = F=333hz 2A=2.5v ;code unsigned char DispSaw1 = Wave:saw ;code unsigned char DispSaw2 = F=333hz A=2.5v ;code unsigned char DispSqu1 = Wave:squ ;code unsigned char DispSqu2 = F=333hz A=2.5v ;code unsigned char

23、DispTri1 = Wave:tri ;code unsigned char DispTri2 = F=333hz A=1.25v ;code unsigned char Sin128=64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,109,111,113,115,117,118,120,121,123,124,125,126,126,127,127,127,127,127,127,127,126,126,125,124,123,121,120,118,117,115,113,111,109,106,104,102,99,96,94,91

24、,88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39,36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,25,28,31,33,36,39,42,45,48,51,54,57,60; /T=3ms f=333hzcode unsigned char Saw128= 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10,11,12,13,14,15 , 16,17,18,19,20

25、,21,22,23 , 24,25,26,27,28,29,30,31 , 32,33,34,35,36,37,38,39 , 40,41,42,43,44,45,46,47 , 48,49,50,51,52,53,54,55 , 56,57,58,59,60,61,62,63 , 64,65,66,67,68,69,70,71 , 72,73,74,75,76,77,78,79 , 80,81,82,83,84,85,86,87 , 88,89,90,91,92,93,94,95 , 96,97,98,99,100,101,102,103, 104,105,106,107,108,109,1

26、10,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127;code unsigned char Tri128=1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,63,62,61,60,59,58,57,

27、56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,1;code unsigned char Squ128=0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0

28、,0,0, 0,0,0,0,0,0,0,0, 127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127;main()unsigned

29、char ouoput_cnt;unsigned char dispflg;unsigned char dispbak,dispnum;lcd1602init(); PORT = 0x03; lcd_clr(); lcd_string(Str1, 1); lcd_string(Str2, 2); while (1) ouoput_cnt+;if(ouoput_cnt = 128)ouoput_cnt =0;if(key1 = 0 & key2 = 0)P1=Sinouoput_cnt;dispbak = dispnum;dispnum = 0;if(dispbak != dispnum)dispflg = 1;else if(key1 = 0 & key2 = 1)P1=Triouoput_cnt;dispbak = dispnum;dispnum = 1;if(dispbak != dispnum)dispflg = 1;else if(key1 = 1 & key2 = 0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論