運(yùn)算放大器增益的程序控制015組實(shí)驗(yàn)報(bào)告_第1頁
運(yùn)算放大器增益的程序控制015組實(shí)驗(yàn)報(bào)告_第2頁
運(yùn)算放大器增益的程序控制015組實(shí)驗(yàn)報(bào)告_第3頁
運(yùn)算放大器增益的程序控制015組實(shí)驗(yàn)報(bào)告_第4頁
運(yùn)算放大器增益的程序控制015組實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 摘 要:本設(shè)計(jì)報(bào)告是我們小組對于單片機(jī)小系統(tǒng)的設(shè)計(jì)與實(shí)際應(yīng)用的情況的展示。其主要目的在于闡述我們小組如何通過運(yùn)用單片機(jī),設(shè)計(jì)并實(shí)現(xiàn)了數(shù)字化自動增益控制放大電路和液晶顯示。報(bào)告涵蓋了我們小組對這個(gè)項(xiàng)目的設(shè)計(jì)思想,原理分析,模塊分解,具體程序?qū)崿F(xiàn),外部電路設(shè)計(jì)與焊接,功能調(diào)試,問題解決等內(nèi)容,并在最后提出我們對這個(gè)項(xiàng)目的理解和感受。在報(bào)告的開頭第一二兩部分,我們給出了實(shí)驗(yàn)的總體說明,包括實(shí)驗(yàn)的目的,總體的設(shè)計(jì)思路,以及我們的實(shí)際完成情況,對于一些報(bào)告中所涉及的專業(yè)的術(shù)語,我們也給出了一定的解釋和說明。本次實(shí)驗(yàn)共分為兩個(gè)板塊,基礎(chǔ)部分的增益可數(shù)字化控制的線性放大器與拓展部分的液晶顯示。在報(bào)告的第二

2、到第四部分,我們從軟件,硬件以及原理層面等多個(gè)角度對兩個(gè)板塊實(shí)驗(yàn)的全過程進(jìn)行了全方面立體式的剖析。特別的,報(bào)告中強(qiáng)調(diào)了我們的一些對于細(xì)節(jié)的處理,比如延時(shí)消抖等。報(bào)告的第五至第七部分我們還對實(shí)際實(shí)驗(yàn)操作與測試的環(huán)境給與了說明,這其中也包括開發(fā)過程中我們所遇到的困難,以及一些關(guān)鍵問題的發(fā)現(xiàn)與解決。關(guān)鍵詞:單片機(jī);運(yùn)算放大器;增益;液晶顯示;并口擴(kuò)展ABSTRACTThis report displays how we design the Single Chip Micyoco for certain uses and put it into practice. The main obejecti

3、ve is to show how we compose a digital self-moving operational amplifier which is gain controllable. This report includes our designing idea, principle analysis, module decomposition, program realization, outer circuit design and jointing, function debugging, problem solution and so on. We also list

4、 our comprehension and discussion at the end.In the first two parts, the general explanation of the experiment is given, which consists of experiment objectives, designing idea and the condition of realization. As to those professional terms, they are also explained in our report.This experiment is

5、made up of two major parts. The basic mission is about the digital self-moving operational amplifier which is gain controllable. The advanced mission includes the LCD screen. In the second to fourth part, we operate a wide, deep analysis on the experiment from software, hardware, principle and other

6、 aspects. Especially, we emphasize on some details such as anti-tremble delay in our report.In the fifth to seventh parts, the experimental and examing environment are mentioned. The problems we met with and how we conquered them are also stated in this part.KEYWORDS Single Chip Micyoco (SCM); opera

7、tional amplification circuit; gain; LCD screen; parallel port extension上海交通大學(xué) 電子信息與電氣工程學(xué)院地 址:東川路800號郵 編:200240目次1. 概述11.1 編寫說明11.2 名詞定義11.3 縮略語12. 系統(tǒng)總體說明22.1 課題任務(wù)規(guī)定的設(shè)計(jì)要求22.2 實(shí)際完成后的功能22.3 系統(tǒng)的設(shè)計(jì)原理與分析22.3.1 系統(tǒng)的設(shè)計(jì)原理和總體結(jié)構(gòu)22.3.2 系統(tǒng)的功能43. 系統(tǒng)的硬件結(jié)構(gòu)53.1 硬件總體結(jié)構(gòu)53.2 <基礎(chǔ)部分增益可數(shù)字化控制的線性放大器>描述53.2.1 功能描述53.2.2

8、 接口定義63.2.3 技術(shù)要求63.2.4 實(shí)現(xiàn)方式63.3 <拓展部分液晶顯示>描述73.3.1 功能描述73.3.2 接口定義73.3.3 技術(shù)要求73.3.4 實(shí)現(xiàn)方式74. 系統(tǒng)的軟件結(jié)構(gòu)94.1 軟件總體結(jié)構(gòu)和功能94.2 重要的全局變量(部分直接取自示例程序t_mini.c)94.3 流程邏輯104.4 <鍵盤掃描和數(shù)碼管驅(qū)動、放大電路控制模塊>描述104.4.1 功能描述104.4.2 輸入輸出項(xiàng)描述104.4.3 數(shù)據(jù)結(jié)構(gòu)124.4.4 調(diào)用函數(shù)說明134.4.5 算法144.5 <液晶顯示增益模塊>描述154.5.1 功能描述154.5.

9、2 輸入輸出項(xiàng)154.5.3 數(shù)據(jù)結(jié)構(gòu)164.5.4 調(diào)用函數(shù)說明164.5.5 算法和原理165. 系統(tǒng)功能及技術(shù)指標(biāo)測試205.1 測試項(xiàng)目205.1.1 基礎(chǔ)部分:增益可數(shù)字化控制的線性放大器205.1.2 拓展部分:液晶顯示205.2 測試的資源205.2.1 測試所用設(shè)備:205.2.2 測試環(huán)境205.3 測試方法205.4 測試結(jié)果及分析205.4.1 基礎(chǔ)部分216. 開發(fā)工具226.1 硬件開發(fā)工具226.2 軟件開發(fā)工具227. 調(diào)試過程238. 致謝249. 參考資料2510. 附錄2610.1 程序清單2610.2 課程學(xué)習(xí)心得和建議意見26第45頁上海交通大學(xué) 電子信

10、息與電氣工程學(xué)院1. 概述本組實(shí)驗(yàn)項(xiàng)目分為基礎(chǔ)部分和拓展部分?;A(chǔ)部分是實(shí)現(xiàn)一個(gè)增益可數(shù)字化控制的線性放大器電路。其功能是通過單片機(jī)小系統(tǒng)控制的按鍵輸入,控制1V的輸入信號增益值(從0.11.5倍)并輸出,并且在數(shù)碼管上顯示其增益倍數(shù)。拓展部分是液晶屏顯示。顯示內(nèi)容為基礎(chǔ)部分的放大倍數(shù)。1.1 編寫說明本報(bào)告主要說明我們小組完成此次項(xiàng)目的基本思想,軟硬件的設(shè)計(jì)和實(shí)現(xiàn)方法,以及遇到的問題和解決辦法。作者目的在于讓讀者對我們小組整個(gè)實(shí)驗(yàn)的設(shè)計(jì)和實(shí)現(xiàn)過程有更深的了解。本報(bào)告適讀對象為實(shí)驗(yàn)指導(dǎo)老師、本小組和其它小組成員、以及其它單片機(jī)設(shè)計(jì)愛好者。1.2 名詞定義單片機(jī)小系統(tǒng):由單片機(jī)、存儲器、數(shù)碼顯示

11、管等構(gòu)成的小型系統(tǒng)??勺冊鲆娣糯笃麟娐罚罕緦?shí)驗(yàn)中是指,由運(yùn)算放大器(由LM741實(shí)現(xiàn)),模擬開關(guān)(由CD4066實(shí)現(xiàn))和各個(gè)電阻組成的可以調(diào)節(jié)放大倍數(shù)的運(yùn)算放大電路。按鍵的抖動和消抖:每一個(gè)按鍵動作會引起多個(gè)脈沖信號,稱為抖動。用上升沿或下降沿觸發(fā)的形式消除這種抖動的方法,成為消抖。按鍵1、按鍵2、按鍵3:單片機(jī)小系統(tǒng)上的三個(gè)微動開關(guān)P10 ; P11、P12分別稱為按鍵1、按鍵2、按鍵3。 七段顯示數(shù)碼管:abcdefg七段和dp小數(shù)點(diǎn)段,通過給某些段加上驅(qū)動電壓或電流來使這些段發(fā)光。1.3 縮略語運(yùn)放:運(yùn)算放大器。單片機(jī):單片機(jī)小系統(tǒng)。數(shù)碼管: 七段顯示數(shù)碼管。2. 系統(tǒng)總體說明2.1 課

12、題任務(wù)規(guī)定的設(shè)計(jì)要求設(shè)計(jì)并實(shí)現(xiàn)一個(gè)增益可數(shù)字化控制的線性放大器電路。其功能是通過單片機(jī)小系統(tǒng)的按鍵輸入,控制1V的輸入信號增益值的等級并將其輸出,同時(shí)在晶體管上顯示倍數(shù)。技術(shù)指標(biāo):1) 最低增益(絕對值,可以是反相增益)小于0.15倍;最高增益(絕對值)大于1.45倍;2) 放大器的增益至少包括15個(gè)等級:從0.1倍至1.5倍,以0.1為間隔共15種;3) 各等級的實(shí)際增益值(絕對值)與標(biāo)準(zhǔn)值比較,誤差應(yīng)小于3%,且越小越好; 列出設(shè)計(jì)課題的各項(xiàng)基本功能和指標(biāo)要求2.2 實(shí)際完成后的功能對照設(shè)計(jì)要求,簡述實(shí)際實(shí)現(xiàn)的主要功能。如有超出基本要求規(guī)定的新功能,應(yīng)專項(xiàng)說明。詳細(xì)測試數(shù)據(jù)一般不在此節(jié)列出

13、,放到“系統(tǒng)功能及技術(shù)指標(biāo)測試”一章中?;A(chǔ)部分:增益可數(shù)字化控制的線性放大器能夠通過單片機(jī)小系統(tǒng)的按鍵輸入,控制1V的輸入信號增益值的等級并將其輸出,同時(shí)在晶體管上顯示倍數(shù)。技術(shù)指標(biāo):1)最低增益為0.1倍;最高增益為1.5倍;2)放大器的增益包括15個(gè)等級:從0.1倍至1.5倍,以0.1為間隔共15種;3)各等級的實(shí)際增益值(絕對值)與標(biāo)準(zhǔn)值比較,誤差在3以下。拓展部分:液晶顯示僅實(shí)現(xiàn)了液晶字符的顯示和屏幕的翻滾,對于數(shù)字放大增益并沒有在液晶屏上顯示出來。2.3 系統(tǒng)的設(shè)計(jì)原理與分析2.3.1 系統(tǒng)的設(shè)計(jì)原理和總體結(jié)構(gòu)對系統(tǒng)的設(shè)計(jì)原理和總體結(jié)構(gòu)進(jìn)行闡述,適當(dāng)?shù)厥褂脠D示說明法建議:本文中的圖

14、都選擇嵌入式對象形式,具體操作方法是在“插入”-“對象”中選擇“microsoft word 圖片”,這樣做的好處是圖容易被編輯處理基礎(chǔ)部分:增益可數(shù)字化控制的線性放大器此部分是在基本放大電路的基礎(chǔ)上,通過對反相比例器的拓展和與單片機(jī)的對接實(shí)現(xiàn)的。通過單片機(jī)的按鍵輸入,改變單片機(jī)的數(shù)字信號輸出,用此數(shù)字信號控制數(shù)字開關(guān)的開合,以數(shù)字開關(guān)的開合控制電阻并入電路與否,由此改變電路的參數(shù),并最終實(shí)現(xiàn)增益的改變。系統(tǒng)結(jié)構(gòu)圖如圖2.3.1-1;單片機(jī)小系統(tǒng)控制數(shù)字開關(guān)控制運(yùn)算放大電路輸出信號輸入信號圖2.3.1-1拓展部分:液晶顯示此部分是通過單片機(jī)與液晶屏的對接實(shí)現(xiàn)的。單片機(jī)通過8255擴(kuò)展出PB端口

15、,并使用P34,P32,P16控制液晶模塊,顯示放大倍數(shù)。系統(tǒng)結(jié)構(gòu)圖如圖2.3.1-2。單片機(jī)放大電路8255液晶總線擴(kuò)展PA控制控制 圖2.3.1-22.3.2 系統(tǒng)的功能對系統(tǒng)的各項(xiàng)功能進(jìn)行簡要闡述,如可分為“可變增益放大器”、“鍵盤與顯示”、“增益控制”等基礎(chǔ)部分:增益可數(shù)字化控制的線性放大器可變增益放大器:由單片機(jī)和放大電路組成,通過按鍵控制單片機(jī)的數(shù)字信號輸出,并由該信號控制放大電路的參數(shù)變化,使電壓增益從0.11.5之間改變。鍵盤與顯示:用按鍵14控制增益的倍數(shù)。按鍵1為增加一擋(一擋為0.1倍),按鍵2為減小一擋,按鍵3為增加3檔,按鍵4為減小3檔。最小為0,最大為1.5。超過此

16、范圍的數(shù)將被視為非法并將不予讀入數(shù)據(jù)。用2位的數(shù)碼管顯示增益放大倍數(shù),包括一位整數(shù)(以及整數(shù)后面的小數(shù)點(diǎn))和一位小數(shù)。增益控制:通過鍵盤按鍵的鍵入調(diào)節(jié)放大的倍數(shù)。主要由單片機(jī)實(shí)現(xiàn)。拓展部分:液晶顯示顯示放大倍數(shù):通過基礎(chǔ)部分完成的單片機(jī)的數(shù)字信號輸出,控制液晶屏顯示放大倍數(shù)。3. 系統(tǒng)的硬件結(jié)構(gòu)3.1 硬件總體結(jié)構(gòu)給出硬件總體結(jié)構(gòu)的框圖和說明,硬件模塊的列表,合理進(jìn)行模塊劃分硬件總體結(jié)構(gòu)由三部分構(gòu)成:單片機(jī),放大電路和液晶屏顯示電路。單片機(jī)和基本放大電路的連接構(gòu)成了基礎(chǔ)部分:增益可數(shù)字化控制的線性放大器;而單片機(jī)和液晶屏顯示電路的連接構(gòu)成了拓展部分:液晶顯示。放大電路單片機(jī)小系統(tǒng)液晶屏顯示電路

17、 連接組成連接組成增益可數(shù)字化控制線性放大器液晶顯示單元3.2 <基礎(chǔ)部分增益可數(shù)字化控制的線性放大器>描述標(biāo)題中的< >部分應(yīng)換成實(shí)際的模塊名稱,下同對有必要單獨(dú)詳細(xì)說明的硬件模塊,進(jìn)行專門描述,重點(diǎn)應(yīng)是除單片機(jī)小系統(tǒng)外的自行完成 部分。從內(nèi)容完整的角度考慮,單片機(jī)電路部分也應(yīng)給予適當(dāng)?shù)拿枋?。以下給出建議的說明項(xiàng)目3.2.1 功能描述人機(jī)界面: 由按鍵1(P10)、按鍵2(P11)、按鍵3 (P12)按鍵4 (P13)和數(shù)碼顯示管組成。按鍵1和按鍵2為用戶提供調(diào)節(jié)增益的功能,按鍵1為增加一擋(一擋為0.1倍),按鍵2為減小一擋,按鍵3為增加3檔,按鍵4為減小3檔,。數(shù)

18、碼管則用于顯示當(dāng)前放大倍數(shù)。3.2.2 接口定義放大電路單元和單片機(jī)控制增益倍數(shù)單元間的接口: P14,p16,p32,p34,為單片機(jī)控制增益倍數(shù)單元向放大電路單元輸出的接口。4066的管腳1c,2c,3c,4c則為放大電路單元的輸入接口。其對應(yīng)關(guān)系如下:P144c(控制80千歐的電阻)p163c(控制40千歐的電阻)p322c(控制20千歐的電阻)p341c(控制10千歐的電阻)3.2.3 技術(shù)要求1 輸出電壓增益誤差不能大于3。由于器件并非時(shí)理想的,所以有結(jié)點(diǎn)電阻、CD4066導(dǎo)通電阻等存在,并將產(chǎn)生的誤差。為了減小它們的影響,把輸出電壓增益誤差控制在3內(nèi),R1、R2、R3、R4、Rf應(yīng)

19、盡量大。但是又由于LM741不是理想運(yùn)放,其輸入電阻不為無窮大,輸出電阻不為0,Au也不是無窮大,所以選取R1、R2、R3、R4、Rf時(shí)阻值又不能過大。經(jīng)過理論計(jì)算,我們選取的R1、R2、R3、R4、Rf的阻值依次為80K,40K,20K,10K和8K。2 按鍵消抖:按鍵輸入的掃描由中斷函數(shù)控制。也就是說,每一個(gè)中斷信號到來時(shí),有按鍵按下,則放大倍數(shù)就會自動加一。而時(shí)鐘信號頻率對于人的動作而言是很高的,所以若不對按鍵進(jìn)行消抖處理,一個(gè)按鍵的動作,將會觸發(fā)若干個(gè)記數(shù)信號,產(chǎn)生錯(cuò)誤的輸入。理想的消抖做法是采用計(jì)數(shù)器上升沿觸發(fā)。由于一個(gè)按鍵的動作只有一個(gè)上升沿,這樣設(shè)計(jì)就能保證一個(gè)按鍵動作只產(chǎn)生一個(gè)

20、記數(shù)信號。但是在實(shí)際操作中,我們只是通過對按鍵進(jìn)行了延時(shí)處理,通過實(shí)際的測試,多次的試驗(yàn),我們最終將延時(shí)消抖定在200ms,應(yīng)用于實(shí)際電路中,測試的效果還是比較理想的。3.2.4 實(shí)現(xiàn)方式對模塊的具體實(shí)現(xiàn)方式進(jìn)行詳細(xì)描述,主要是電路設(shè)計(jì)說明,有些情況要有必要的定量計(jì)算;必要時(shí)可包括主要器件的介紹3.2.4.1 單片機(jī)控制增益倍數(shù)單元:本單元的實(shí)現(xiàn)我們采用了四個(gè)微動開關(guān)(按鍵1、按鍵2、按鍵3和按鍵4)和四個(gè)數(shù)碼管來實(shí)現(xiàn)。本單元又分為人機(jī)界面和輸入信號讀取與轉(zhuǎn)換兩部分。(1) 人機(jī)界面: 按鍵14供用戶輸入放大倍數(shù)。按鍵按下后,通過對輸入信號的讀取與轉(zhuǎn)換,改變輸出的數(shù)字信號,同時(shí)在數(shù)碼管上顯示。

21、(2) 輸入信號讀取與轉(zhuǎn)換部分: 由單片機(jī)完成。經(jīng)過消抖后的按鍵讀入信號,通過讀入信號對計(jì)算和轉(zhuǎn)換,產(chǎn)生兩部分輸出信號。一部分通過接口傳到下一單元,另一部分則傳到數(shù)碼管,轉(zhuǎn)化為數(shù)字顯示。具體實(shí)現(xiàn)方法主要涉及軟件部分,在此不再贅述。(3) 輸出接口:單片機(jī)的作用在于輸出控制電子開關(guān)的數(shù)字信號,因此輸出接口必不可少。由于有4個(gè)開關(guān),所以我們采用的是四線輸出,輸出口分別是p14,p16,p32,p34。這樣數(shù)字信號就能通過傳輸線傳輸至下一單元。3.2.4.2 放大電路單元:(1) 接口:由單片機(jī)輸出的數(shù)字信號要被正確接收才能正確控制數(shù)字開關(guān)。在這一單元中,我們從CD4066的1c,2c,3c,4c端

22、口中接出4條導(dǎo)線,作為接受數(shù)字控制信號的接口。它們與單片機(jī)輸出接口的對應(yīng)關(guān)系為:P144c(控制80千歐的電阻)p163c(控制40千歐的電阻)p322c(控制20千歐的電阻)p341c(控制10千歐的電阻)(2) LM741放大電路的核心是LM741運(yùn)算放大器。在本次實(shí)驗(yàn)中,我們采用的是反相放大的方法,通過改變外接阻抗的阻值來達(dá)到改變放大倍數(shù)的目的。外接阻抗由4個(gè)阻值互不相同的電阻并聯(lián)而成,并在每個(gè)電阻上串聯(lián)一個(gè)開關(guān),即CD4066的4個(gè)in和out端口。一個(gè)開關(guān)有開/閉兩種狀態(tài),4個(gè)開關(guān)組合在一起就有16種不同的狀態(tài),因此外接阻抗可以有16個(gè)不同的阻值,可滿足15個(gè)增益等級的要求。反相放大

23、器的原理如圖3.2.4.2-1圖3.2.4.2-11在我們的設(shè)計(jì)中,Rf為固定電阻,Rl為4個(gè)電阻R1,R2,R3,R4并聯(lián)而得,則由并聯(lián)電阻阻值公式1/Rl=1/R1+1/R2+1/R3+1/R4,以及Afl-1/Rl可知R1,R2,R3,R4比值之比為1:2:4:8。由于實(shí)驗(yàn)室中免費(fèi)供應(yīng)的電阻阻值的局限性和較大的誤差,我們決定選取Rf為8k,R1為10k,R2為20k,R3為40k,R4為80K。Rf,R1,R2,R3,R4的接法見圖3.2.4.2.2-2 圖3.2.4.2.2-22圖3.2.4.2-2中的4個(gè)開關(guān)均由CD4066控制,其中4個(gè)開關(guān)均斷開時(shí)輸出電壓為零,即斷開,故共有15種

24、有效狀態(tài)。3.2.4.2.1 CD4066:CD4066在單片機(jī)的控制下可改變最多4個(gè)開關(guān)的開/閉狀態(tài)。CD4066的引腳定義見圖3.2.4.2.3-1圖3.2.4.2.3-13CD4066的VCC引腳接入+5V的供電電壓,當(dāng)1C連接高電平時(shí)1A和1B之間連通,低電平時(shí)1A和1B斷開。3.2.4.2.2 最終電路圖將LM741的電路圖和CD4066的電路圖連在一起就是最終電路圖。我們的電路板上4個(gè)引腳分別為+5V,-5V,+1V和地線,而輸出端用一根黑色導(dǎo)線懸在電路板上。最終電路圖見圖3.2.4.2.4-1圖3.2.4.2.4-13.3 <拓展部分液晶顯示>描述3.3.1 功能描述

25、本模塊從單片機(jī)接收數(shù)據(jù),實(shí)現(xiàn)液晶顯示基礎(chǔ)部分放大倍數(shù)的功能。3.3.2 接口定義引 線 號符 號名 稱功 能1Vss接地0V2VDD電路電源5V±10%3VEE液晶驅(qū)動電壓保證VDD-VEE=4.55V電壓差4RS寄存器選擇信號H:數(shù)據(jù)寄存器 L:指令寄存器5R/W讀/寫信號H:讀 L:寫6E片選信號下降沿觸發(fā),鎖存數(shù)據(jù)7|14DB0|DB7數(shù)據(jù)線數(shù)據(jù)傳輸表3.3.2-1 液晶模塊功能引用表3.3.3 技術(shù)要求1、 能夠正常與單片機(jī)交換數(shù)據(jù)。2、 能夠正常顯示文字和符號,并能夠調(diào)節(jié)對比度。3.3.4 實(shí)現(xiàn)方式由于我們拿到的液晶模塊已經(jīng)將液晶控制器HD44780和驅(qū)動器HD44100封

26、裝在一起,并給出了標(biāo)準(zhǔn)化的接口,所以硬件部分要做的就是簡單的供電、接地和實(shí)現(xiàn)與單片機(jī)交換數(shù)據(jù)的接口。圖3.3.4-11234567891011121314P3P1口插座DB口插座P32P33P34TVCC電位器液晶的引腳1-14圖3.3.4-14. 系統(tǒng)的軟件結(jié)構(gòu)4.1 軟件總體結(jié)構(gòu)和功能1總體功能1.通過外部開關(guān)控制內(nèi)部變量增減,以實(shí)現(xiàn)各級放大機(jī)顯示。2.液晶顯示增益。2體系結(jié)構(gòu)如圖4.1-1所示系統(tǒng)初始化數(shù)碼管顯示中斷鍵盤掃描及數(shù)據(jù)處理調(diào)用調(diào)用主循環(huán)及顯示增益液晶顯示顯示模塊 圖4.1-1 主程序基本結(jié)構(gòu)圖3功能模塊鍵盤掃描模塊、數(shù)碼管驅(qū)動模塊、放大器增益控制模、液晶屏驅(qū)動模塊。闡述整個(gè)系

27、統(tǒng)的軟件體系結(jié)構(gòu),給出軟件總體結(jié)構(gòu)的框圖和功能說明,各軟件功能模塊的列表4.2 重要的全局變量(部分直接取自示例程序t_mini.c)1、按鍵定義:單片機(jī)小系統(tǒng)中的四個(gè)按鍵分別使用了P1口的四個(gè)引腳sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;2、輸出端口定義:本系統(tǒng)中使用了P14、P16、P32以及P36作為輸出端口控制電子開關(guān)4066。在拓展部分的實(shí)驗(yàn)中使用了8255擴(kuò)展的PB0PB7作為輸出端口控制液晶模塊,使用P34、P32、P16分別控制液晶模塊的片選、使能和讀寫 ,使用P14作為8255的復(fù)位控制。sbit p14

28、= P14;/控制80千歐的電阻sbit p16 = P16;/控制40千歐的電阻sbit p32 = P32;/控制20千歐的電阻sbit p34 = P34;/控制10千歐的電阻sbit RS=P34;sbit EN=P32;sbit RW=P16;sbit res8255=P14;3、 0.1s軟件定時(shí)器計(jì)數(shù) unsigned char clock;4、0.1s軟件定時(shí)器溢出標(biāo)志,位變量bit clock1s_flag;5、 數(shù)碼管位驅(qū)動和指示燈驅(qū)動信號輸出緩存,定義了一個(gè)可位尋址的變量unsigned char bdata output_sel;sbit led_1 = output_

29、sel5;sbit led_2 = output_sel6;sbit led_3 = output_sel7;sbit led_4 = output_sel4;6、 數(shù)碼管掃描驅(qū)動指針,為測試外部存儲器(U3 6264),特使用xdata類型 unsigned char xdata digi_scaner;7、 測試用計(jì)數(shù)器,為測試外部存儲器(U3 6264),特使用xdata類型 unsigned int xdata test_counter;8、 測試用計(jì)數(shù)值十進(jìn)制表示,為測試外部存儲器(U3 6264),特使用xdata類型 unsigned char xdata digi4; 詳細(xì)描述

30、重要的全局變量的功能含義和類型結(jié)構(gòu)定義4.3 流程邏輯用圖表(例如流程圖、判定表等)輔以必要的說明來表示程序的邏輯流程。$4.4 <鍵盤掃描和數(shù)碼管驅(qū)動、放大電路控制模塊>描述 對有必要單獨(dú)詳細(xì)說明的模塊(尤指原示例程序內(nèi)容以外的自行添加或修改完成的部分),進(jìn)行專門描述以下給出建議的說明項(xiàng)目,如果某項(xiàng)目無相關(guān)內(nèi)容,則刪去該項(xiàng)標(biāo)題4.4.1 功能描述本模塊實(shí)現(xiàn)如下功能:1、 鍵盤防抖掃描2、 順序掃描驅(qū)動數(shù)碼管3、 計(jì)算放大倍數(shù),通過P14、P16、P32和P34口輸出高低電平控制4066的通斷,進(jìn)而控制放大電路的放大倍數(shù) 給出軟件模塊要實(shí)現(xiàn)功能的詳細(xì)描述。4.4.2 輸入輸出項(xiàng)描述

31、4.4.2.1 輸入項(xiàng)KEY1、KEY2、KEY3、KEY4KEY14分別用來代表四個(gè)按鍵SW2、SW3、SW4、SW5。聲明:sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;數(shù)據(jù)類型:sbit。數(shù)據(jù)值:0/1。數(shù)據(jù)來源:P10P13。4.4.2.2 輸出項(xiàng)1 Count放大倍數(shù)聲明:int count; /全局變量,記錄增益數(shù)據(jù)類型:int。數(shù)據(jù)值:015。數(shù)據(jù)來源:計(jì)算。2 p14,p16,p32,p344066控制端口聲明:sbit p14 = P14;/控制80千歐的電阻sbit p16 = P16;/控制40千歐的電阻s

32、bit p32 = P32;/控制20千歐的電阻sbit p34 = P34;/控制10千歐的電阻數(shù)據(jù)類型:sbit。數(shù)據(jù)值:0/1。數(shù)據(jù)來源:程序賦值。3 digi0、digi1、digi2、digi3數(shù)碼管顯示值。聲明:unsigned char xdata digi4;數(shù)據(jù)類型:unsigned char xdata。數(shù)據(jù)值:0F,0.,1.,-,_, 。數(shù)據(jù)來源:digi0不顯示,digi1顯示-,digi2 、digi3由程序賦值。 給出對每一個(gè)輸入輸出項(xiàng)的特性,包括名稱、標(biāo)識、數(shù)據(jù)的類型和格式、數(shù)據(jù)值的有效范圍、輸入數(shù)據(jù)的來源等等。4.4.3 數(shù)據(jù)結(jié)構(gòu)本模塊中使用到的數(shù)據(jù)結(jié)構(gòu)按照功

33、能分類主要有以下幾種,現(xiàn)分別介紹。詳細(xì)描述本軟件模塊中一些全局變量、記錄狀態(tài)變量、結(jié)構(gòu)和數(shù)組或各寄存器的使用說明。4.4.3.1 計(jì)時(shí)器及中斷相關(guān)時(shí)間常量#define V_TH0 0xee #define V_TL0 0x00#define V_T1s 0xfdV_TH0和V_TL0分別為時(shí)間常數(shù)的高8位和低8位,其計(jì)算方法如下:,其中T為1個(gè)機(jī)器周期的長度。從式中解出x,轉(zhuǎn)換成2進(jìn)制,高8位為V_TH0值,低8位為V_TL0值。V_T1s代表要達(dá)到1秒鐘所需的中斷次數(shù)。因?yàn)橹袛嚅g隔時(shí)間為5ms,故取200。中斷開關(guān)TR0=1時(shí),計(jì)時(shí)器T0中斷開。TR0=0時(shí),計(jì)時(shí)器T0中斷關(guān)。軟件計(jì)時(shí)un

34、signed char clock1s;bit clock1s_flag;clock1s為中斷計(jì)數(shù)器,當(dāng)其等于V_T1s時(shí)1秒鐘計(jì)時(shí)到,計(jì)時(shí)器溢出標(biāo)志clock1s_flag賦值為1,clock1s重新賦值為0,下一秒計(jì)時(shí)開始。4.4.3.2 放大倍數(shù)計(jì)算和顯示、輸出相關(guān)放大倍數(shù)int count;/全局變量,記錄增益count為放大倍數(shù),根據(jù)用戶的需要自增或自減數(shù)碼管顯示digi0、digi1、digi2、digi3digi0時(shí)鐘顯示0digi1顯示-digi2為個(gè)位數(shù),digi3為小數(shù)點(diǎn)后一位。具體計(jì)算方式為:digi2 = count/10+16; /*計(jì)算十位數(shù) */digi3 = c

35、ount%10; /*計(jì)算個(gè)位數(shù) */放大倍數(shù)輸出sbit p14 = P14;/控制80千歐的電阻sbit p16 = P16;/控制40千歐的電阻sbit p32 = P32;/控制20千歐的電阻sbit p34 = P34;/控制10千歐的電阻為避免和8255沖突,ALPHA選擇P35端口。p14,p16,p32.p34分別控制4066四個(gè)開關(guān)的通斷。4.4.4 調(diào)用函數(shù)說明1、 主函數(shù):timer0() interrupt 1 using 0時(shí)鐘中斷服務(wù)程序,每5ms執(zhí)行一次,內(nèi)含鍵盤掃描、數(shù)碼管驅(qū)動、數(shù)據(jù)計(jì)算等本模塊主要代碼。輸入項(xiàng):無。輸出項(xiàng):無。2、 調(diào)用的本模塊相關(guān)函數(shù)(以下資

36、料和代碼來自示例程序t_mini.c):unsigned char NUMTOSEG7(unsigned char DATA)七段碼顯示器譯碼程序,提供從字符到7段譯碼結(jié)果的轉(zhuǎn)換功能。輸入項(xiàng):DATA,數(shù)據(jù)類型unsigned char,要顯示的數(shù)字或字符。輸出項(xiàng):7段譯碼結(jié)果 ( D70 = PGFEDCBA )。unsigned char NUMTOSEG7(unsigned char DATA)4066開關(guān)控制程序,在相應(yīng)放大倍數(shù)下打開或關(guān)閉開關(guān)。輸入項(xiàng):count,數(shù)據(jù)類型int ,放大倍數(shù)。輸出項(xiàng):無。 給出本軟件模塊調(diào)用的其它函數(shù)的說明,包括對函數(shù)功能、輸入輸出項(xiàng)的詳細(xì)說明。4.4

37、.5 算法4.4.5.1 鍵盤掃描和消抖/* 0.1秒鐘軟定時(shí)器計(jì)數(shù) ,延時(shí)消抖*/if (+clock>=V_T1s)clock_flag = 1; /*當(dāng)0.1秒到時(shí),溢出標(biāo)志置1 */clock = 0;放大倍數(shù)的計(jì)算程序中放大倍數(shù)以變量count保存,根據(jù)用戶按鍵的情況,count在合理范圍內(nèi)自增或自減。4.4.5.2 放大倍數(shù)的控制和顯示程序通過p14,p16,p32,p34代表的端口輸出高低電平,控制4066各開關(guān)的通斷來控制放大倍數(shù)。count的值介于0和15之間,其4位二進(jìn)制值分別送入 。使用NUMTOSEG7函數(shù)計(jì)算各開關(guān)的二進(jìn)制值,并實(shí)現(xiàn)開關(guān)的開閉。代碼如下:unsi

38、gned char NUMTOSEG7(unsigned char DATA) unsigned char AA; switch (DATA) case 0: AA=0xc0;break; /* 0*/ case 1: AA=0xf9;break; /* 1*/ case 2: AA=0xa4;break; /* 2*/ case 3: AA=0xb0;break; /* 3*/ case 4: AA=0x99;break; /* 4*/ case 5: AA=0x92;break; /* 5*/ case 6: AA=0x82;break; /* 6*/ case 7: AA=0xf8;br

39、eak; /* 7*/ case 8: AA=0x80;break; /* 8*/ case 9: AA=0x90;break; /* 9*/ case 10: AA=0x88;break; /* A*/ case 11: AA=0x83;break; /* B*/ case 12: AA=0xc6;break; /* C*/ case 13: AA=0xa1;break; /* D*/ case 14: AA=0x86;break; /* E*/ case 15: AA=0x8e;break; /* F*/ case 16: AA=0x40;break; /* 0.*/ case 17: A

40、A=0x79;break; /* 1.*/ case '-':AA=0xbf;break; /* 破折號*/ case '_':AA=0xf7;break; /* 下劃線*/ case ' ':AA=0xff;break; /* 消隱*/ default: AA=0xff; return(AA);七段數(shù)碼管的顯示值由數(shù)組digi4提供,其中前兩位沒有用到,將digi0時(shí)鐘顯示為0,digi1顯示為-。digi2、digi3分別取times十位和個(gè)位,其中digi2后需要加小數(shù)點(diǎn),由于使用的共陽極數(shù)碼管,若可歸納出算法,則詳細(xì)說明本軟件模塊所選用的

41、算法,具體的計(jì)算公式或處理步驟。4.5 <液晶顯示增益模塊>描述4.5.1 功能描述本模塊實(shí)現(xiàn)液晶屏的驅(qū)動,放大倍數(shù)在液晶屏上的再顯示。4.5.2 輸入輸出項(xiàng)4.5.2.1 輸入項(xiàng)本模塊主體部分與<鍵盤掃描和數(shù)碼管驅(qū)動、放大電路控制模塊>共享中斷函數(shù)。4.5.2.2 輸出項(xiàng)液晶模塊的顯示內(nèi)容:HELLO WORLD; HELLO WORLD;聲明:uchar LCD_Disp_Buf116='H','E','L','L','O',' ','W','O&

42、#39;,'R','L','D','!','!',' ',' ',' 'uchar LCD_Disp_Buf216='H','E','L','L','O',' ','W','O','R','L','D','!','!',' ',' '

43、;,' '使用unsigned char 類型的全局變量,在運(yùn)行期間始終顯示。數(shù)據(jù)來源:無符號字符數(shù)組。4.5.3 數(shù)據(jù)結(jié)構(gòu)本模塊中使用到的數(shù)據(jù)比較簡單,故不再贅述。4.5.4 調(diào)用函數(shù)說明1、 液晶片選函數(shù)void En_Toggle(void);本函數(shù)通過對液晶的EN引腳的控制選中液晶模塊。輸入項(xiàng):無輸出項(xiàng):無2、 液晶數(shù)據(jù)寫入函數(shù)void Write_Data(unsigned char datas);本函數(shù)向液晶寫入數(shù)據(jù)。輸入項(xiàng):datas,要寫入的數(shù)據(jù)值,數(shù)據(jù)類型:unsigned char。輸出項(xiàng):無3、 液晶命令寫入函數(shù)void Write_Command(uns

44、igned char command);本函數(shù)向液晶寫入命令輸入項(xiàng):command,要寫入的命令,數(shù)據(jù)類型:unsigned char。4、 放大倍數(shù)顯示的函數(shù)unsigned char display_num(unsigned char n);本函數(shù)將要顯示的數(shù)字轉(zhuǎn)化為相應(yīng)的ASCII碼。輸入項(xiàng):n,要顯示的數(shù)字,數(shù)據(jù)類型:unsigned char輸出項(xiàng):abc,數(shù)字所對應(yīng)的ASCII碼,數(shù)據(jù)類型:unsigned char4.5.5 算法和原理4.5.5.1 液晶模塊顯示算法本模塊僅涉及到顯示的數(shù)字轉(zhuǎn)化為相應(yīng)的ASCII碼。使用switch語句完成,代碼如下:unsigned char

45、abc;switch (n)case 0:abc='0'break;case 1:abc='1'break;case 2:abc='2'break;case 3:abc='3'break;case 4:abc='4'break;case 5:abc='5'break;case 6:abc='6'break;case 7:abc='7'break;case 8:abc='8'break;case 9:abc='9'break;defaul

46、t:break; return abc;4.5.5.2 并口擴(kuò)展芯片8255和液晶模塊HD44780的使用原理及編程1、8255的使用8255為一并口擴(kuò)展芯片,有A、B、C三個(gè)8位I/O端口和一個(gè)8位數(shù)據(jù)總線。本系統(tǒng)使用74HC138三態(tài)八位譯碼器連接8255與單片機(jī),74HC138的引腳與8255的片選引腳相連,地址總線的高三位為單片機(jī)的P20,P21,P22,全部置時(shí)選中8255,故A、B、C三個(gè)端口和控制字寫入分別對應(yīng)的地址聲明如下:#define A8255 XBYTE0XE000#define B8255 XBYTE0XE001#define C8255 XBYTE0XE002#de

47、fine D8255 XBYTE0XE003本例中由口輸出數(shù)據(jù)和命令。2、HD44780的使用原理及編程和編程有關(guān)的三個(gè)引腳定義如表5.1:表5.1:HD44780引腳定義(部分)4引腳號縮寫定義說明4RS寄存器選擇信號H:數(shù)據(jù)寄存器 L:指令寄存器5R/W讀/寫信號H:讀 L:寫6E片選信號下降沿觸發(fā),鎖存數(shù)據(jù)其中E為使能信號,讀操作中高電平有效,寫操作中下降沿有效。結(jié)合RS、R/W的取值,我們有如下的指令表(表5.2):表5.2:HD44780指令表5指令名稱 指 令 碼 說 明執(zhí)行周期FCP=250KHZRS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0清 屏L

48、 L L L L L L L L H清除屏幕,置AC為零1.64ms返 回L L L L L L L L H X設(shè)AC為零,顯示回原位,DDRAM內(nèi)容不變1.64ms輸入方式設(shè) 置L L L L L L L H I/D S設(shè)光標(biāo)移動方向并指定整體顯示是否移動40us顯示開關(guān)控 制L L L L L L H D C B設(shè)整體顯示開關(guān)(D),光標(biāo)開關(guān)(C),及光標(biāo)位的字符閃耀(B)40us移 位L L L L L H S/C R/L X X移動光標(biāo)或整體顯示,同時(shí)不改變DDRAM內(nèi)容40us功能設(shè)置L L L L H DL N F X X設(shè)接口數(shù)據(jù)位數(shù)(DL),顯示行數(shù)(L),及字型(F)40us

49、CGRAM地址設(shè)置L L L H ACG設(shè)CGRAM地址,設(shè)置后CGRAM數(shù)據(jù)被發(fā)送和接收40usDDRAM地址設(shè)置L L H ADD設(shè)DDRAM地址,設(shè)置后DDRAM數(shù)據(jù)被發(fā)送和接收40us讀忙信號(BF)及ACL H BF AC讀忙信號位(BF)判斷內(nèi)部操作正在執(zhí)行并讀地址計(jì)數(shù)器內(nèi)容0us寫數(shù)據(jù)CG/DD RAMH L 寫數(shù)據(jù)寫數(shù)據(jù)到CG或DDRAM40usTadd=6ns讀數(shù)據(jù)由CG/DD RAMH H 讀數(shù)據(jù)讀數(shù)據(jù)由CG或DDRAM40usTadd=6nsI/D 1:增量方式, 0:減量方式S 1:移位S/C 1:顯示移位,0:光標(biāo)移位R/L 1:右移,0:左移DL 1:8位,0:4位

50、N 1:2行,0:1行F 1:5×10,0: 5×7BF 1:內(nèi)部操作,0:接收指令RS :寄存器選擇R/W :讀/寫DDRAM : 顯示數(shù)據(jù)RAMCGRAM: 字符生成RAMAC: 用于DD和CGRAM地址的地址計(jì)數(shù)器執(zhí)行周期隨主頻率改變而改變例如:當(dāng)Fosc或fcp為270KHZ40us×250/270=37 us實(shí)際接線中,我們將單片機(jī)的P34,P32,P33與R/W、RS、E連接,PB的07號針與DB07連接,這樣就可以通過8255控制液晶模塊的工作了。寫入命令時(shí),RS、R/W均置0,命令通過PB口寫入,再由E的下降沿變化使能。寫入數(shù)據(jù)時(shí),RS、R/W分別

51、置1、0,數(shù)據(jù)通過PB口寫入,再由E的下降沿變化使能。讀出數(shù)據(jù)時(shí),RS、R/W均置1,數(shù)據(jù)通過PB口讀入。在進(jìn)行這些工作之前,必須對液晶模塊進(jìn)行初始化。HD44780的初始化流程如圖: 電 源 開 VDD 上升到4.5V后等待>15 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × ×等待>4.1ms RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × ×等待>100us

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

最新文檔

評論

0/150

提交評論