基于8255的LCD顯示簡易電壓表設(shè)計(jì)(共24頁)_第1頁
基于8255的LCD顯示簡易電壓表設(shè)計(jì)(共24頁)_第2頁
基于8255的LCD顯示簡易電壓表設(shè)計(jì)(共24頁)_第3頁
基于8255的LCD顯示簡易電壓表設(shè)計(jì)(共24頁)_第4頁
基于8255的LCD顯示簡易電壓表設(shè)計(jì)(共24頁)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上2013/2014學(xué)年 第一學(xué)期課程設(shè)計(jì)II 實(shí)驗(yàn)報(bào)告 模 塊 名 稱 關(guān)于51單片機(jī)設(shè)計(jì)(proteus) 專 業(yè) 通信工程 學(xué) 生 班 級 學(xué) 生 學(xué) 號 學(xué) 生 姓 名 指 導(dǎo) 教 師 專心-專注-專業(yè)設(shè)計(jì)題目基于的顯示簡易電壓表設(shè)計(jì)任務(wù)要求數(shù)字電壓表(AC/DC)設(shè)計(jì) 基本要求:了解電壓表的工作原理。設(shè)計(jì)一個(gè)直流電壓測量器,測量范圍0.01V-3V,用LED數(shù)碼管/LCD屏顯示測量值,顯示精度0.001用鍵盤選擇測量范圍(分檔) 發(fā)揮部分:交流電壓測量,被測頻率1KHz-10KHz (0.1-3V)考慮交流測量的附加電路。 顯示格式: LED數(shù)碼管/LCD屏顯

2、示參數(shù) 基于8255口是指顯示和鍵盤都由8255的IO口控制實(shí)驗(yàn)設(shè)備及軟件PC機(jī),proteus同組人員學(xué)號及姓名參考文獻(xiàn)1胡健.單片機(jī)原理及接口技術(shù)M.北京:機(jī)械工業(yè)出版社,2004年10月2王毓銀.數(shù)字電路邏輯設(shè)計(jì)M.高等教育出版社,2005年12月3于殿泓、王新年.單片機(jī)原理與程序設(shè)計(jì)實(shí)驗(yàn)教程M.西安電子科技大學(xué)出版社,2007年5月4謝維成、楊加國.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)實(shí)例M.電子工業(yè)出版社,2006年3月5李廣弟.單片機(jī)基礎(chǔ)M.北京航空航天大學(xué)出版社,2007年5月.報(bào)告內(nèi)容第一部分 實(shí)驗(yàn)?zāi)康暮鸵蟊菊n程設(shè)計(jì)是在理論課程的基礎(chǔ)上,重點(diǎn)培養(yǎng)學(xué)生的動手能力,通過理論計(jì)算、實(shí)際

3、編程、調(diào)試、測試、分析查找故障,解決在實(shí)際設(shè)計(jì)中的問題,使設(shè)計(jì)好的電路能正常工作,為下一部結(jié)合實(shí)際的硬件系統(tǒng)設(shè)計(jì)準(zhǔn)備條件。實(shí)驗(yàn)要求:數(shù)字電壓表(AC/DC)設(shè)計(jì) 基本要求:了解電壓表的工作原理。設(shè)計(jì)一個(gè)直流電壓測量器,測量范圍0.01V-3V,用LED數(shù)碼管/LCD屏顯示測量值,顯示精度0.001用鍵盤選擇測量范圍(分檔) 發(fā)揮部分:交流電壓測量,被測頻率1KHz-10KHz (0.1-3V)考慮交流測量的附加電路。 顯示格式: LED數(shù)碼管/LCD屏顯示參數(shù) 基于8255口是指顯示和鍵盤都由8255的IO口控制根據(jù)提供的參考工程,在proteus平臺自己重新畫出實(shí)驗(yàn)所需要的電氣原理圖,并在此

4、基礎(chǔ)上編寫相對應(yīng)的程序,實(shí)現(xiàn)其功能,學(xué)習(xí)proteus軟件的使用,其中包括原理圖器件的選取、原理圖的電氣連接、程序的編寫編譯以及運(yùn)行,并能查出其錯(cuò)誤等。第二部分 實(shí)驗(yàn)工具及實(shí)驗(yàn)器件1. Proteus軟件 Proteus是英國Labcenter公司開發(fā)的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真軟件。Proteus可以實(shí)現(xiàn)數(shù)字電路、模擬電路及微控制器系統(tǒng)與外設(shè)的混合電路系統(tǒng)的電路仿真、軟件仿真、系統(tǒng)協(xié)同仿真和PCB設(shè)計(jì)等功能。Proteus是目前唯一能對各種處理器進(jìn)行實(shí)時(shí)仿真、調(diào)試與測試的EDA工具,真正實(shí)現(xiàn)了在沒有目標(biāo)原型時(shí)就可對系統(tǒng)進(jìn)行調(diào)試、測試和驗(yàn)證。Proteus軟件大大提高了企業(yè)的產(chǎn)品開發(fā)效率,降低

5、了開發(fā)風(fēng)險(xiǎn)。由于Proteus軟件逼真、真實(shí)的協(xié)同仿真功能,它也特別適合于作為配合單片機(jī)課堂教學(xué)和實(shí)驗(yàn)的學(xué)習(xí)工具。Proteus軟件提供了30多個(gè)元器件庫、7000余種元器件。元器件涉及電阻、電容、二極管、三極管、變壓器、繼電器、各種放大器、各種激勵器、各種微控制器、各種門電路和各種終端等。Proteus軟件還提供有交直流電壓表、邏輯分析儀、示波器、定時(shí)/計(jì)數(shù)器和信號發(fā)生器等測試信號工具用于電路測試。Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括

6、C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會令你事半功倍。應(yīng)用Keil進(jìn)行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存建立工程并添加源文件設(shè)置工程編譯/匯編、連接,產(chǎn)生目標(biāo)文件程序調(diào)試。Keil使用“工程”(Project)的概念,對工程(而不能對單一的源程序)進(jìn)行編譯/匯編、連接等操作。

7、工程的建立、設(shè)置、編譯/匯編及連接產(chǎn)生目標(biāo)文件的方法非常易于掌握。首先選擇菜單File-New,在源程序編輯器中輸入?yún)R編語言或C語言源程序(或選擇File-Open,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時(shí)必須在文件名后加上擴(kuò)展名.asm(.a51)或.c;然后選擇菜單Project-New Project,建立新工程并保存(保存時(shí)無需加擴(kuò)展名,也可加上擴(kuò)展名.uv2);工程保存后會立即彈出一個(gè)設(shè)備選擇對話框,選擇CPU后點(diǎn)確定返回主界面。這時(shí)工程管理窗口的文件頁(Files)會出現(xiàn)“Target1”,將其前面+號展開,接著選擇Source Group1,右擊鼠標(biāo)彈出快捷菜

8、單,選擇“Add File to Group Source Group1”,出現(xiàn)一個(gè)對話框,要求尋找并加入源文件(在加入一個(gè)源文件后,該對話框不會消失,而是等待繼續(xù)加入其它文件)。加入文件后點(diǎn)close返回主界面,展開“Source Group1”前面+號,就會看到所加入的文件,雙擊文件名,即可打開該源程序文件。緊接著對工程進(jìn)行設(shè)置,選擇工程管理窗口的Target1,再選擇Project-Option for TargetTarget1(或點(diǎn)右鍵彈出快捷菜單再選擇該選項(xiàng)),打開工程屬性設(shè)置對話框,共有8個(gè)選項(xiàng)卡,主要設(shè)置工作包括在Target選項(xiàng)卡中設(shè)置晶振頻率、在Debug選項(xiàng)卡中設(shè)置實(shí)驗(yàn)仿

9、真板等,如要寫片,還必須在Output選項(xiàng)卡中選中“Creat Hex Fi”;其它選項(xiàng)卡內(nèi)容一般可取默認(rèn)值。工程設(shè)置后按F7鍵(或點(diǎn)擊編譯工具欄上相應(yīng)圖標(biāo))進(jìn)行編譯/匯編、連接以及產(chǎn)生目標(biāo)文件。 成功編譯/匯編、連接后,選擇菜單Debug-Start/Stop Debug Session(或按Ctrl+F5鍵)進(jìn)入程序調(diào)試狀態(tài),Keil提供對程序的模擬調(diào)試功能,內(nèi)建一個(gè)功能強(qiáng)大的仿真CPU以模擬執(zhí)行程序。Keil能以單步執(zhí)行(按F11或選擇Debug-Step)、過程單步執(zhí)行(按F10或選擇Debug-Step Over)、全速執(zhí)行等多種運(yùn)行方式進(jìn)行程序調(diào)試。如果發(fā)現(xiàn)程序有錯(cuò),可采

10、用在線匯編功能對程序進(jìn)行在線修改(Debug-Inline Assambly),不必執(zhí)行先退出調(diào)試環(huán)境、修改源程序、對工程重新進(jìn)行編譯/匯編和連接、然后再次進(jìn)入調(diào)試狀態(tài)的步驟。對于一些必須滿足一定條件(如按鍵被按下等)才能被執(zhí)行的、難以用單步執(zhí)行方式進(jìn)行調(diào)試的程序行,可采用斷點(diǎn)設(shè)置的方法處理(Debug-Insert/Remove Breakpoint或Debug-Breakpoints等)。在模擬調(diào)試程序后,還須通過編程器將.hex目標(biāo)文件燒寫入單片機(jī)中才能觀察目標(biāo)樣機(jī)真實(shí)的運(yùn)行狀況。在PROTEUS繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模

11、擬的實(shí)物運(yùn)行狀態(tài)和過程。2.51單片機(jī)AT89C51 51單片機(jī)是對目前所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8031單片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8031單片機(jī)取得了長足的進(jìn)展,成為目前應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號是的AT89系列,它廣泛應(yīng)用于工業(yè)測控系統(tǒng)之中。目前很多公司都有51系列的兼容機(jī)型推出,在目前乃至今后很長的一段時(shí)間內(nèi)將占有大量市場。51單片機(jī)是基礎(chǔ)入門的一個(gè)單片機(jī),還是應(yīng)用最廣泛的一種。需要注意的是52系列的單片機(jī)一般不具備自編程能力。當(dāng)前常用的51系列單片機(jī)主要產(chǎn)品有:*Intel的:80C31、80C5

12、1、87C51,80C32、80C52、87C52等;*ATMEL的:89C51、89C52、89C2051等;89C51單片機(jī)的內(nèi)部結(jié)構(gòu)為:單一+5V電源供電;CPU:由運(yùn)算和控制邏輯組成,同時(shí)還包括中斷系統(tǒng)和部分外部特殊功能寄存器;RAM:用以存放可以讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù);ROM:用以存放程序、一些原始數(shù)據(jù)和表格;I/O口:四個(gè)8位并行I/O口,既可用作輸入,也可用作輸出;T/C:兩個(gè)定時(shí)/記數(shù)器,既可以工作在定時(shí)模式,也可以工作在記數(shù)模式;五個(gè)中斷源的中斷控制系統(tǒng);一對全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實(shí)現(xiàn)單片機(jī)之間或單片機(jī)與微機(jī)之

13、間的串行通信;片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。最高振蕩頻率為12M。3.LCD液晶顯示器件LM016LLM016L是一個(gè)2*16的點(diǎn)陣式字符液晶顯示模塊,每個(gè)字符由5*7個(gè)點(diǎn)組成的;內(nèi)部帶有HD44780控制器;采用5V電源供電; 內(nèi)建有192個(gè)字符,8個(gè)用戶自建字符。4.可編程并行I/O接口芯片8255A8255是Intel公司生產(chǎn)的可編程并行I/O接口芯片,有3個(gè)8位并行I/O口。具有3個(gè)通道3種工作方式的可編程并行接口芯片(40引腳)。 其各口功能可由軟件選擇,使用靈活,通用性強(qiáng)。8255可作為單片機(jī)與多種外設(shè)連接時(shí)的中間接口電路。 8255作為主機(jī)與外設(shè)

14、的連接芯片,必須提供與主機(jī)相連的3個(gè)總線接口,即數(shù)據(jù)線、地址線、控制線接口。同時(shí)必須具有與外設(shè)連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內(nèi)部結(jié)構(gòu)分為3個(gè)部分:與CPU連接部分、與外設(shè)連接部分、控制部分。特點(diǎn):(1)一個(gè)并行輸入/輸出的LSI芯片,多功能的I/O器件,可作為CPU總線與外圍的接口. (2)具有24個(gè)可編程設(shè)置的I/O口,即3組8位的I/O口為PA口,PB口和PC口.它們又可分為兩組12位的I/O口,A組包括A口及C口(高4位,PC4PC7),B組包括B口及C口(低4位,PC0PC3).A組可設(shè)置為基本的I/O口,閃控(STROBE)的I/O

15、閃控式,雙向I/O3種模式;B組只能設(shè)置為基本I/O或閃控式I/O兩種模式,而這些操作模式完全由控制寄存器的控制字決定.RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 CS:芯片選擇信號線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/CS=0時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊;/CS=1時(shí),8255無法與CPU做數(shù)據(jù)傳輸. RD:讀信號線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/RD=0且/CS=0時(shí),允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 WR:寫入信號,當(dāng)這個(gè)輸入引腳為低電平時(shí),

16、即/WR=0且/CS=0時(shí),允許CPU將數(shù)據(jù)或控制字寫入8255。 D0D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。 PA0PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。 PB0PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器一個(gè)8位的輸入輸出緩沖器。 PC0PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和

17、端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。' A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器. 當(dāng)A1=0,A0=0時(shí),PA口被選擇; 當(dāng)A1=0,A0=1時(shí),PB口被選擇; 當(dāng)A1=1,A0=0時(shí),PC口被選擇; 當(dāng)A1=1.A0=1時(shí),控制寄存器被選擇.5.8位 A/D轉(zhuǎn)換器TLC549TLC549是 TI公司生產(chǎn)的一種低價(jià)位、高性能的8位 A/D轉(zhuǎn)換器,它以8位開關(guān)電容逐次逼近的方法實(shí)現(xiàn) A/D轉(zhuǎn)換,其轉(zhuǎn)換速度小于 17us,最大轉(zhuǎn)換速率為 40000HZ,4MHZ典型內(nèi)部系統(tǒng)時(shí)鐘,電源為 3V至 6V。它能方便地采用三線串行接口方式與各

18、種微處理器連接,構(gòu)成各種廉價(jià)的測控應(yīng)用系統(tǒng)。TLC549引腳圖REF+:正基準(zhǔn)電壓輸入 2.5VREF+Vcc+0.1。 REF:負(fù)基準(zhǔn)電壓輸入端,-0.1VREF-2.5V。且要求:(REF+)(REF-)1V。 VCC:系統(tǒng)電源3VVcc6V。 GND:接地端。 /CS:芯片選擇輸入端,要求輸入高電平 VIN2V,輸入低電平 VIN0.8V。 DATA OUT:轉(zhuǎn)換結(jié)果數(shù)據(jù)串行輸出端,與 TTL 電平兼容,輸出時(shí)高位在前,低位在后。ANALOGIN:模擬信號輸入端,0ANALOGINVcc,當(dāng) ANALOGINREF+電壓時(shí),轉(zhuǎn)換結(jié)果為全“1”(0FFH),ANALOGINREF-電壓時(shí),

19、轉(zhuǎn)換結(jié)果為全“0”(00H)。 I/O CLOCK:外接輸入/輸出時(shí)鐘輸入端,同于同步芯片的輸入輸出操作,無需與芯片內(nèi)部系統(tǒng)時(shí)鐘同步。TLC549 器件工作時(shí)當(dāng)/CS變?yōu)榈碗娖胶螅?TLC549芯片被選中, 同時(shí)前次轉(zhuǎn)換結(jié)果的最高有效位MSB (A7)自 DATA OUT 端輸出,接著要求自 I/O CLOCK端輸入8個(gè)外部時(shí)鐘信號,前7個(gè) I/O CLOCK信號的作用,是配合 TLC549 輸出前次轉(zhuǎn)換結(jié)果的 A6-A0 位,并為本次轉(zhuǎn)換做準(zhǔn)備:在第4個(gè) I/O CLOCK 信號由高至低的跳變之后,片內(nèi)采樣/保持電路對輸入模擬量采樣開始,第8個(gè) I/O CLOCK 信號的下降沿使片內(nèi)采樣/保

20、持電路進(jìn)入保持狀態(tài)并啟動 A/D開始轉(zhuǎn)換。轉(zhuǎn)換時(shí)間為 36 個(gè)系統(tǒng)時(shí)鐘周期,最大為 17us。直到 A/D轉(zhuǎn)換完成前的這段時(shí)間內(nèi),TLC549 的控制邏輯要求:或者/CS保持高電平,或者 I/O CLOCK 時(shí)鐘端保持36個(gè)系統(tǒng)時(shí)鐘周期的低電平。由此可見,在自 TLC549的 I/O CLOCK 端輸入8個(gè)外部時(shí)鐘信號期間需要完成以下工作:讀入前次A/D轉(zhuǎn)換結(jié)果;對本次轉(zhuǎn)換的輸入模擬信號采樣并保持;啟動本次 A/D轉(zhuǎn)換開始。第三部分 實(shí)驗(yàn)原理圖及程序代碼1.硬件部分電路設(shè)計(jì) 本次試驗(yàn)要求設(shè)計(jì)簡易電壓表,因此用一個(gè)滑動變阻器代替被測電阻,由滑動變阻器的組織改變,加一個(gè)能夠測量實(shí)際電壓的電壓表測量

21、其電壓。電阻電壓經(jīng)過TLC549模數(shù)轉(zhuǎn)換為數(shù)字信號-電流大小,送至51單片機(jī),51單片通過檢查相應(yīng)的檔位是否在合法范圍內(nèi),如果在合法范圍內(nèi),則通過8255A芯片顯示在LCD上,右側(cè)圖為要求的4X4小鍵盤用來改變檔位。2.實(shí)驗(yàn)原理圖如下:2.軟件部分設(shè)計(jì)在程序中后面注釋了我對程序功能的理解,所以就沒有分塊分析。下面是整個(gè)設(shè)計(jì)代碼和我對設(shè)計(jì)的認(rèn)識和理解。#include<reg52.h>#include<absacc.h>#include <intrins.h>/*宏定義*/#define uint unsigned int#define uchar unsig

22、ned char/*芯片端口地址定義*/#define COM8255 XBYTE0X7FFF /8255的命令口#define PA8255 XBYTE0X1FFF /8255的PA#define PB8255 XBYTE0X3FFF /8255的PB#define PC8255 XBYTE0X5FFF /8255的PC/*按鍵編碼查表,可得到鍵值*/const unsigned char Key_code=0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77;uchardeda;uch

23、ar flang, jishu,num;unsigned char KeyValue=0;uchar display_data_1="Gear:X2.0V 0"uchar display_data_2="Voltage:0.000V 0"bit done;bit xianshi;uint dianya;uint sheding=2000;uchar flag_v=20;/*系統(tǒng)引腳定義*/sbit RS=P30; /1602的數(shù)據(jù)/命令控制口口sbit RW=P31; /1602的讀寫控制端sbit EN=P32; /1602的使能控制端sbit CLK

24、 = P15;/7腳sbit DAT = P17; /腳sbit CS = P16; /5 腳unsigned char TLC549_AD(void)/TLC549轉(zhuǎn)換函數(shù) unsigned char i,x; CLK = 0; DAT = 1; CS = 0; for(i = 0;i<8;i+) CLK = 1; x<<=1; if(1 = DAT) x+; CLK = 0; CS = 1; for(i=0;i<8;i+) _nop_();return (x);/*延時(shí)函數(shù)*/static void SoftDelay(unsigned int time)unsig

25、ned char n;while(time-)for(n=0;n<50;n+);/*延時(shí)子程序*/void delayms(uchar x) /ms延時(shí)函數(shù)uchar y;for(;x>0;x-)for(y=110;y>0;y-) ;void delayus(uint x) /us延時(shí)函數(shù)while(x-);/*按鍵編碼和鍵值轉(zhuǎn)換函數(shù)*/unsigned char Key_code_value(unsigned char key_code)unsigned char i;for(i=0;i<16;i+)if(Key_codei=key_code)return i;/re

26、turn key_code;return 0xff;/*按鍵掃描程序,返回按鍵鍵值,采用翻轉(zhuǎn)法*/unsigned char Key_Scan(void)unsigned char temp;temp= PC8255;temp&=0x0f;/Set8255_Mode(0x90);/模式0,PA口輸入,下PC口輸出(PA為矩陣鍵盤的行,下PC口為列)COM8255=0x82;PB8255 = 0x0f;/PC8255 = temp;temp |=(PB8255<<4);/形成按鍵編碼,PA(低位)值為高4位,PC(低位)值為低4位return (Key_code_value(

27、temp);/*功能:判斷是否有鍵按下,如有返回鍵值*/unsigned char KeyRead(void)/Set8255_Mode(0x81);/模式0,PA口輸出,下PC口輸入(PA為矩陣鍵盤的行,下PC口為列)COM8255=0x89;PB8255 = 0x00;/PA口輸出低電平PC8255 = 0x0f;/if(PC8255&&0x0f)!=0x0f)/讀取8255的下PC口,即讀取矩陣按鍵的列狀態(tài)SoftDelay(1);/軟件延時(shí)去抖if(PC8255&0x0f)!=0x0f)/如果矩陣按鍵列狀態(tài)不為0x0f,則說明有鍵按下return (Key_Sc

28、an();/按鍵鍵值掃描/return 5;else return 0xff;elsereturn 0xff;/*1602液晶驅(qū)動程序*/1602寫命令程序void WriteCom(uchar COM)RS=0;EN=0;PA8255=COM;delayms(5);EN=1;delayms(5);EN=0;/1602寫數(shù)據(jù)程序void WriteData(uchar x,uchar y,uchar DATA)if(x=1)WriteCom(0x80+y-1);if(x=2)WriteCom(0x80+0x40+y-1); /向1602寫坐標(biāo)信息RS=1;EN=0;PA8255=DATA;de

29、layms(5);EN=1;delayms(5);EN=0;/*1602液晶顯示時(shí)間程序*/void display() uchar i;for(i=0;i<16;i+)WriteData(1,i+1,display_data_1i); WriteData(2,i+1,display_data_2i);/*系統(tǒng)初始化程序*/void Initial()COM8255=0x89; /定義8255的A口B口為輸出,和C口為輸入RW=0;/1602液晶讀寫端清零WriteCom(0x38);WriteCom(0x0c);WriteCom(0x06);WriteCom(0x01);/清屏void

30、 timetoseg()/數(shù)據(jù)轉(zhuǎn)換程序 display_data_28=dianya/1000+0x30;display_data_210=dianya/100%10+0x30;display_data_211=dianya/10%10+0x30;display_data_212=dianya%10+0x30;display_data_16=flag_v/10+0x30;display_data_18=flag_v%10+0x30;if(dianya>=sheding)display_data_28='-'display_data_210='-'displ

31、ay_data_211='-'display_data_212='-' void key()/按鍵檢測 uchar key_temp;key_temp=KeyRead();if(key_temp!=0xff)if(key_temp=12)sheding=1000;flag_v=10;if(key_temp=13)sheding=2000;flag_v=20; if(key_temp=14)sheding=2500;flag_v=20;if(key_temp=15)sheding=3000;flag_v=30;while(KeyRead()!=0xff); /*主程序*/void main()Initial(); /系統(tǒng)初始化while(1)dianya=TLC549_AD()*11.;timetoseg();/轉(zhuǎn)換 key(); /按鍵檢測 di

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論