




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機課程設計(方波信號發(fā)生器)單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第1頁。通信與信息工程學院單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第1頁?!秾I(yè)技能課程設計》班級:姓名:學號:指導教師:設計時間:成績:評語:通信與信息工程學院二〇二一年單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第2頁。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第2頁。目錄TOC\o"1-3"\h\u一.設計要求 單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第3頁。方波產生電路單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第3頁。設計要求設計要求用單片機產生頻率可調的方波信號,輸出方波的頻率范圍為1Hz-9kHz,頻率誤差比小于0.5%,用4個按鈕改變方波給定頻率,按鈕每按下一次,給定頻率改變一次,用示波器觀察方波波形。設計思路AT89C52單片機具有組成微型計算機的各部分部件:CPU、RAM、I/O定時器/計數(shù)器以及串行通訊接口等。只要將AT89C52的ROM,接口電路,再配置鍵盤及其接口,顯示器及其接口,數(shù)模轉換及波形輸出,指示燈及其接口等四部分,即可構成所需波形發(fā)生器。在方波發(fā)生電路中,只用到片內中斷請求,即是在AT89C52輸出一個波形采樣點信號后,接著啟動定時器,在定時器未產生中斷之前,AT89C52等待,直到定時器計時結束,產生中斷請求,AT89C52響應中斷,接著輸出下一個信號波形,如此循環(huán)。當有按鍵按下時,產生外部中斷請求信號,CPU暫停當前工作,處理中斷請求重新裝入定時初值。其數(shù)字信號進入DAC0832后,由數(shù)字信號轉換為模擬信號,然后經(jīng)過放大器LM324放大,最后接示波器顯示波形。方波發(fā)生器構成原理框圖如圖2-1所示:圖2-1方波發(fā)生器設計流程框圖硬件實現(xiàn)本次課程設計選擇12M赫茲晶體振蕩器,此時機器周期位1微秒。本次設計選用AT89C52單片機,相較于AT89C51,AT89C52擁有較大的存儲器RAM,AT89C52最多支持4K程序,而AT89C52最多支持8K程序。選擇8位的D/A轉換集成芯片DAC0832,選擇液晶顯示模塊LM016L輸出方波頻率并反饋是否輸出方波。運算放大器則選擇LM324并將輸出方波信號。3.1AT89C52引腳及功能AT89C52是一個低電壓,高性能CMOS8位單片機,片內含8kbytes的可反復擦寫的Flash只讀程序存儲器和256bytes的隨機存取數(shù)據(jù)存儲器(RAM),兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器和Flash存儲單元。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第4頁。斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規(guī)方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第4頁。管腳功能說明:XTAL1(19腳)和XTAL2(18
腳):振蕩器輸入輸出端口,外接12MHz晶振。RST(9腳);復位輸入端口,外接電阻電容組成的復位電路。VCC(40腳)和VSS(20腳):供電端口,分別接+5V電源的正負端。PO~P3:為可編程通用I/O腳,其功能用途由軟件定義,在本設計中,PO端口(32~39腳)被定義為N1功能控制端口,分別與N1的相應功能管腳相連接。13腳:IR輸入端。10腳和11腳:I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口。12腳、27腳及28腳:握手信號功能端口,連接主板CPU
的相應功能端,用于當前制式的檢測及會聚調整狀態(tài)進入的控制功能。AT89C52外形及引腳排列如圖3-1所示。圖3-1AT89C52引腳圖3.2DAC0832引腳及功能DAC0832(如圖2.2)是8分辨率的D/A轉換集成芯片,由8位輸入鎖存器、8位DAC寄存器、8位D/A轉換器及轉換控制電路四部分構成。8位輸入鎖存器用于存放主機送來的數(shù)字量,使輸入數(shù)字得到緩沖和鎖存,并加以控制;8位DAC寄存器用于存放存放待轉換的數(shù)字量,并加以控制;8位D/A轉換器輸出與數(shù)字量成正比的模擬電流,由與門、與非門組成的輸入控制的輸入電路來控制2個寄存器的選通或鎖存狀態(tài)。
DAC0832的主要特性參數(shù):
1.分辨率為8位;電流穩(wěn)定時間1us;
2.可單緩沖、雙緩沖或直接數(shù)字輸入;
3.只需在滿量程下調整其線性度;
4.單一電源供電(+5V~+15V);
5.低功耗,20mW。WR2和XFER同時有效時,8位DAC寄存器端為高電平“1”,此時DAC寄存器的輸出端Q跟隨輸入端D也就是出入寄存器Q端得電平變化,反之,當端為低單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第5頁。電平“0”時,第一級8位輸入寄存器Q端得狀態(tài)則鎖存到第二級8位DAC寄存器中,以便第三極8位DAC轉換器進行D/A轉換,引腳如圖3-2所示。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第5頁。圖3-2DAC0832引腳圖
D0~D7作為8位數(shù)據(jù)輸入線,TTL電平,有效時間應大于90ns(否則鎖存器的數(shù)據(jù)會出錯)。ILE作為數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效。CS作為片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效。WR1作為數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(脈寬應大于500ns)有效。CS、WR1的邏輯組合產生LE1,當LE1
為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存。XFER作為數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖有效。WR2作為DAC寄存器選通輸入線,負脈沖有效。IOUT1作為電流輸出端1,其值隨DAC寄存器的內容線性變化。IOUT2作為電流輸出端2,其值與IOUT1值之和為一常數(shù)。Rfb作為反饋信號輸入線,改變Rfb端外接電阻值可調整轉換滿量程精度。Vcc作為電源輸入端,Vcc的范圍為+5V~+15V。VREF作為基準電壓輸入線,VREF的范圍為-10V~+10V。AGND作為模擬信號地。DGND作為數(shù)字信號地。3.3LM324引腳及功能LM324系列運算放大器是價格便宜的帶差動輸入功能的四運算放大器。可工作在單電源下,電壓范圍是3.0V-32V或+16V。LM324是四運放集成電路,它采用14腳雙列直插塑料封裝,外形如圖所示。它的內部包含四組形式完全相同的運算放大器,除電源共用外,四組運放相互獨立。每一組運算放大器可用圖1所示的符號來表示,它有5個引出腳,其中"+"、"-"為兩個信號輸入端,"V+"、"V-"為正、負電源端,"Vo"為輸出端。兩個信號輸入端中,Vi-(-)為反相輸入端,表示運放輸出端Vo的信號與該輸入端的相位相反;Vi+(+)為同相輸入端,表示運放輸出端Vo的信號與該輸入端的相位相同。LM324引腳如圖3-3所示。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第6頁。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第6頁。圖3-3LM324引腳連接圖3.4LM016L引腳及功能LM016L液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內部操作自動寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時,液晶模塊處于內部模式,不響應外部操作指令和接受數(shù)據(jù),DDTAM用來存儲顯示的字符,能存儲80個字符碼。LM016L引腳如圖3-4所示。圖3-4LM324引腳軟件實現(xiàn)此次設計使用keil5編譯環(huán)境,頭文件選擇reg52.h,并在keil5中生成單片機AT89C52可以執(zhí)行的符合IntelHEX文件格式的文本所構成的ASCII文本文件,又稱為hex文件,并將生成的文件加載至單片機進行仿真后運行良好。4.1主程序設計該電路模擬仿真時默認開啟時開關開啟,初始方波頻率為500赫茲。主程序中首先進行初始狀態(tài)賦值,即變量mode賦初值為1,在此情況下,電路輸出波單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第7頁。形為方波。電路采用12MHZ晶體振蕩器,計算得出定時器高位和低位的數(shù)值。打開允許中斷位標志EA,即將EA值設置為1。設置定時器時鐘為TR0,設置50毫秒的延時以穩(wěn)定數(shù)據(jù)。將LCD初始化,顯示輸出方波的反饋,若輸出為方波,則LCD顯示mode為1。根據(jù)調節(jié)頻率不同的頻率變化升高或減少相應頻率,在此電路中提供四種頻率變化,分別為頻率增加10赫茲、增加100赫茲、減少10赫茲、減少100赫茲,并根據(jù)不同的延時程序進行具體實現(xiàn),波形輸出后在LCD輸出反饋和調節(jié)后的方波頻率。主程序程序框圖如圖4-1所示。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第7頁。圖4-1主程序流程框圖4.2延時函數(shù)設計由于該設計電路采用12M赫茲的晶體振蕩器,可知機器周期為1微秒,延時程序模塊包含兩延時子程序,以毫秒為單位的延時函數(shù)和以微秒為單位的延時函數(shù)。兩個函數(shù)均需要傳遞整形數(shù)作為參數(shù)。其中以毫秒為單位的延時程序架設單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第8頁。兩層空循環(huán)實現(xiàn),傳遞的參數(shù)控制外層循環(huán),內層執(zhí)行一次完整循環(huán)為1毫秒。以微秒為單位的延時程序通過假設單層空循環(huán)實現(xiàn)。延時函數(shù)框圖如圖4-2所示。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第8頁。圖4-2延時程序流程圖4.3LCD顯示模塊子程序設計該模塊包含LCD的初始化程序和向LCD寫入數(shù)據(jù)和命令程序。其中子程序voidLcdInit()為初始化程序,子程序voidLcdWriteData(uchardat)所實現(xiàn)的向LCD寫入數(shù)據(jù)程序,子程序voidLcdWriteCom(ucharcom)所實現(xiàn)的是向LCD模塊寫入一個字節(jié)命令。LCD初始化程序通過清除原始數(shù)據(jù),設置數(shù)據(jù)顯示起始點,并將原始的參數(shù)在LCD輸出這三步驟實現(xiàn)。向LCD輸入數(shù)據(jù)需要將使能端E設置為0,將RS設置為1選擇寫入數(shù)據(jù),將RW設置為0選擇寫入,加入延時函數(shù)穩(wěn)定數(shù)據(jù)并寫入時序。向LCD輸入命令將使能端E設置為0,將RS設置為0選擇寫入命令,將RW設置為0選擇寫入,加入延時函數(shù)穩(wěn)定數(shù)據(jù)并寫入時序。LCD顯示模塊子程序流程框圖如圖4-3所示。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第9頁。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第9頁。圖4-3LCD顯示模塊子程序框圖仿真和PCB圖制作本次設計的仿真階段使用proteus8.9進行仿真,包括原理圖繪制和PCB布版。原理圖繪制則是從元件庫中調用所需原件,并按照設計時的線路對元器件進行連線,輸出波形使用示波器進行顯示,使用探針對輸出的電壓進行測量。5.1仿真驗證設計目標要求輸出為方波,在設計中設計其頻率可調,根據(jù)數(shù)據(jù)求得相應參數(shù),為驗證實際輸出值與理想計算值之間的差距,判斷是否可行,在此進行仿真驗證階段,通過比較實際輸出波形頻率與理想計算得到的波形頻率,以判斷仿真是否可行,失真是否在允許范圍內。設計方波初始輸出頻率為500赫茲,即一個周期為2毫秒,示波器顯示為2.08毫秒,此時頻率為480.8赫茲。產生的誤差在允許范圍內。500赫茲仿真效果圖如圖5-1所示。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第10頁。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第10頁。圖5-1500HZ仿真效果圖測試時還選擇1000赫茲和100赫茲進行嘗試,分別得到的誤差都在合理范圍內,其中100赫茲條件下,理論周期為10毫秒,仿真波形圖顯示一個波長需要時間為10.10毫秒,求得此時頻率為99赫茲,產生的誤差在允許范圍內。100赫茲仿真效果如圖5-2所示。圖5-2100赫茲仿真效果圖在1000赫茲條件下,理論周期為1毫秒,仿真波形圖顯示一個波長需要時間為1.01毫秒,求得此時頻率為990赫茲,產生的誤差在允許范圍內。1000赫茲仿真效果如圖5-3所示。圖5-31000赫茲仿真效果圖5.2PCB布版PCB布版則是在仿真良好的情況下進行,此次課程設計使用proteus8.9繪制PCB板,走線方式選擇自動布線,運行模式設置為全自動模式。定義PCB板邊界需要首先選擇二維方框圖形模式,如圖5-4所示。選擇之后在頁面左下角選項條內選擇板邊,如圖5-5所示。完成選項后即可在區(qū)域內選擇目標區(qū)域。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第11頁。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第11頁。圖5-4選擇圖形模式圖5-5選擇類型為板邊封裝,是把集成電路裝配為芯片最終產品的過程,簡單地說,就是把鑄造廠生產出來的集成電路裸片(Die)放在一塊起到承載作用的基板上,把管腳引出來,然后固定包裝成為一個整體,強調其保護芯片、增強電熱性能、方便整機裝配的重要作用。進行PCB布版之前需要對相關元器件進行封裝,在本次課程設計中,存在器件未封裝的情況,圖5-6所示。對于這種情況需要選擇合適的封裝才能進行接下來的操作。未封裝元件為可變電阻,查閱資料得可以選擇PRE-HMT封裝方式。圖5-6未封裝元件首先將元器件放入規(guī)定好的區(qū)域內,在過程中并將未封裝的元器件選擇合適的封裝對其進行封裝操作。將元件放入目標區(qū)域之后如圖5-7所示,可見此時元器件擺放雜亂。防止之后進行自動布線操作,并選擇全自動布線方式。布線完畢之后結果如圖5-8所示。此時系統(tǒng)顯示無丟失且無錯誤。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第12頁。單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第12頁。圖5-7自動布線之前圖5-8自動布線之后調用3D查看器可查看PCB板的3D圖,正、反面分別由圖5-9和5-10所示。圖5-9PCB板3D俯視圖單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第13頁??偨Y單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第13頁。本次課程設計使用任務為產生方波,要求使用51單片機和A/D數(shù)模轉換器完成電路圖搭建并制作出硬件。經(jīng)過模擬仿真測試,使用proteus8.9進行仿真,驗證該電路頻率可調范圍為300赫茲至9000赫茲。該電路使用4個開關對方波頻率進行調節(jié),分別為增加10赫茲、增加100赫茲、減少10赫茲和減少100赫茲。根據(jù)示波器一個周期所用時間求得理想頻率與實際仿真所得到的方波頻率存在微小誤差,但誤差在允許范圍內。軟件方面采用keil5進行編程,通過控制單片機引腳的控制位和編寫的包括延時程序、LCD控制程序和主函數(shù)對系統(tǒng)進行控制。利用延時程序進行數(shù)據(jù)的保護和緩沖,利用初始化程序、顯示程序、寫入命令和寫入數(shù)據(jù)程序實現(xiàn)對液晶顯示模塊的控制。在keil5中生成單片機可執(zhí)行的文件在仿真電路中將編寫的程序載入單片機后輸出的波形符合題目要求。使用燒寫器將文件燒錄至單片機中即可在單片機上運行。本次課程實際也加深了對編程的認識和理解,了解并使用單片機編程的方式方法。使用proteus繪制PCB板遇到主要問題為元器件未封裝,需要找到合適該元器件的封裝,若無法找到,則需要添加新的封裝。繪制PCB板使用自動走線方式,輸出文件時遇到自動布線無法進行參考文獻杜路泉.基于STC89C52的信號發(fā)生器設計[J].湖北師范大學學報(自然科學版),2020,40(02):69-73.李模剛,賈春防,鄧威,莫世雄.MCS-51模塊化通用I/O通道的設計與實現(xiàn)[J].工業(yè)控制計算機,2020,33(12):70-72.謝琪林.淺談STC89S51單片機時序[J].電子測試,2020(24):139-140.[4]?童詩白.模擬電路技術基礎[M].北京:高等教育出版社,2000.5.?[5]?方大千.鮑俏偉.實用電子控制電路[M].國防工業(yè)出版社,2003.4.??[6]?李朝青.單片機原理及接口技術[M].北京航空航天大學出版社.2011.6[7]?求是科技.單片機典型模塊設計實例導航.人民郵局出版社.2004.5.?附錄一程序主函數(shù):#include<reg52.h>#include"delay.h"#include"wave.h"#include"LCD.h"#include"string.h"#include"stdio.h"#defineucharunsignedchar#defineuintunsignedintsbitkey1=P1^0;sbitk1=P3^3;sbitk2=P3^4;單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第14頁。sbitk3=P3^5;單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第14頁。sbitk4=P3^6;unsignedcharmode=1;//默認開啟bitfreq_bit=0,CDD=1;charstr1[6]="mode:",str2[6]="freq:";unsignedinttim0_cnt=0; voidtimer0()interrupt1{tim0_cnt++;TH0=(65536-50000)/256;TL0=(65536-50000)%256;}voidmain(void){ unsignedintfreq=500,freq_q=2000; floattemp=0; unsignedchari; TMOD=0X11;//gongzuojicunqizu2,jicunqiR1 TH1=0X00; TL1=0X00; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1;//yunxuzhongduan EA=1;//開放全局中斷 TR0=0;//使用T0作為計數(shù)器 P2=0; P1=0xff; delay_ms(50);//延時50毫秒 LCDInit() ;//LCD初始化 for(i=0;i<strlen(str1);i++)//輸出判斷是否為方波 { LCDWriteCom(0x80+i); LCDWriteData(str1[i]); } for(i=0;i<strlen(str2);i++)//輸出方波頻率 { LCDWriteCom(0x80+0x40+i); LCDWriteData(str2[i]); } LCDWriteCom(0x80+0x40+9); LCDWriteData('H'); LCDWriteCom(0x80+0x40+10); LCDWriteData('z'); //LCD輸出當前參數(shù),包括頻率和是否輸出 while(1)//分支結構根據(jù)按鍵不同輸入調節(jié)LCD不同輸出 { if(key1==0){mode=1;freq_bit=1;} if(k1==0){delay_ms(300);if(freq<=9000){freq+=100;freq_bit=1;}} if(k2==0){delay_ms(300);if(freq>=100){freq-=100;freq_bit=1;}} if(k3==0){delay_ms(300);if(freq<=9000){freq+=10;freq_bit=1;}} if(k4==0){delay_ms(300);if(freq>=10){freq-=10;freq_bit=1;}} if(freq_bit||CDD) { CDD=0; freq_bit=0; temp=(float)freq; temp=1000/temp;//2000 temp=1000*temp;單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第15頁。 freq_q=(unsignedint)temp;單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第15頁。 LCD_display(mode,freq); } if(mode==1)square_wave(freq_q/2); }}延時函數(shù)#include<reg52.h>voiddelay_ms(unsignedintx)//根據(jù)12M晶振計算得到每毫秒震蕩次數(shù),傳遞參數(shù)進行延時{ unsignedinti,j; for(i=x;i>0;i--) for(j=120;j>0;j--);}voiddelay_us(unsignedintt)//根據(jù)12M晶振計算得到每微秒震蕩次數(shù),傳遞參數(shù)進行延時{ TH1=0; TL1=0; TR1=1; while((256*TH1+TL1)<t); TR1=0;}voiddelay_us1(intt){while(t--);}LCD函數(shù)#include"LCD.h"#include"string.h"#include"stdio.h"http://LCD1毫秒延時voidLCD1602_Delay1ms(uintc){uchara,b; for(;c>0;c--) { for(b=199;b>0;b--) { for(a=1;a>0;a--); } }}//向LCD輸入一個字節(jié)的命令#ifndef LCD1602_4PINS voidLCDWriteCom(ucharcom) //寫入命令{ LCD1602_E=0;//使能 LCD1602_RS=0; //選擇發(fā)送命令 LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=com;//放入命令 LCD1602_Delay1ms(1); //延時1毫秒穩(wěn)定數(shù)據(jù) LCD1602_E=1; //寫入時序 LCD1602_Delay1ms(5); //保持時間 LCD1602_E=0;}#else單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第16頁。voidLCDWriteCom(ucharcom) //寫入命令單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第16頁。{ LCD1602_E=0; //使能端 LCD1602_RS=0; //選擇發(fā)送命令 LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=com; LCD1602_Delay1ms(1);//延時穩(wěn)定數(shù)據(jù) LCD1602_E=1; //寫入時序 LCD1602_Delay1ms(5); LCD1602_E=0; LCD1602_DATAPINS=com<<4; LCD1602_Delay1ms(1); LCD1602_E=1; //寫入時序 LCD1602_Delay1ms(5); LCD1602_E=0;}#endif#ifndef LCD1602_4PINS voidLCDWriteData(uchardat) //寫入一個字節(jié)的數(shù)據(jù){ LCD1602_E=0; //使能清零 LCD1602_RS=1; //選擇輸入數(shù)據(jù) LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=dat;//寫入數(shù)據(jù) LCD1602_Delay1ms(1);//延時1毫秒穩(wěn)定數(shù)據(jù) LCD1602_E=1;//寫入時序 LCD1602_Delay1ms(5);//保持時間 LCD1602_E=0;}#elsevoidLCDWriteData(uchardat) //寫入數(shù)據(jù){ LCD1602_E=0; //使能清零 LCD1602_RS=1; //選擇輸入數(shù)據(jù) LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=dat;//寫入數(shù)據(jù) LCD1602_Delay1ms(1);//延時1毫秒穩(wěn)定數(shù)據(jù) LCD1602_E=1; //寫入時序 LCD1602_Delay1ms(5);//保持時間 LCD1602_E=0; LCD1602_DATAPINS=dat<<4; LCD1602_Delay1ms(1); LCD1602_E=1; //寫入時序 LCD1602_Delay1ms(5);//保持時間 LCD1602_E=0;}#endif//LCD初始化函數(shù)#ifndef LCD1602_4PINSvoidLCDInit() { LCDWriteCom(0x38);//開顯示 LCDWriteCom(0x0c);//開顯示時不顯示光標 LCDWriteCom(0x06);//將指針自增1單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第17頁。 LCDWriteCom(0x01);//清屏單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第17頁。 LCDWriteCom(0x80);//設置數(shù)據(jù)指針起點}#elsevoidLCDInit() //初始化子程序{ LCDWriteCom(0x32); //將8位地址總線轉為4位總線 LCDWriteCom(0x28); //在4位總線下進行初始化 LCDWriteCom(0x0c);//開顯示不顯示光標 LCDWriteCom(0x06);//將指針加1 LCDWriteCom(0x01);//清屏 LCDWriteCom(0x80);//設置數(shù)據(jù)指針起點}#endifvoidLCD_display(unsignedcharmode,unsignedintfreq)//LCD顯示波形和頻率函數(shù){ unsignedchari;charst[4]="\0"; sprintf(st,"%d",freq); LCDWriteCom(0x80+5); LCDWriteData('0'+mode); for(i=0;i<4;i++) { LCDWriteCom(0x80+0X45+i); LCDWriteData(st[i]); }}輸出波形函數(shù)#include<reg52.h>#include"delay.h"unsignedintx=5;voidsquare_wave(unsignedintfreq){ P2=0x00; delay_us(freq); P2=0xff; delay_us(freq);}延時頭文件(delay.h)#ifndef _DELAY_H_#define _DELAY_H_#include<reg52.h>voiddelay_ms(unsignedintx);//延時1毫秒voiddelay_us(unsignedintt);//延時1微秒voiddelay_us1(intt);#endifLCD頭文件(LCD.h)#ifndef _LCD_H_#define _LCD_H_#include<reg52.h>#define ucharunsignedchar #define uintunsignedint #defineLCD1602_DATAPINSP0 sbitLCD1602_E=P3^2;//復位sbitLCD1602_RS=P3^0;//數(shù)據(jù)輸入/輸出單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第18頁。sbitLCD1602_RW=P3^1; //′串行時鐘輸入單片機課程設計(方波信號發(fā)生器)全文共20頁,當前為第18頁。voidLCDInit();//LCD初始化voidLCDWriteCom(ucharcom);//向LCD中寫入一個字節(jié)的命令voidLCDWriteData(uchardat);//向LCD中寫入一個字節(jié)的數(shù)據(jù)voidLCD_display(unsignedcharmode,unsignedintfreq);//顯示#endif輸出波形頭文件(wave.h)#ifndef _WAVE_H_#define _WAVE_H_voidsquare_wave(unsignedintfreq);#endif52頭文件(reg52.h)/*REG52.HHeaderfileforgeneric80C52and80C32microcontroller.Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.Allrightsreserved.*/#ifndef__REG52_H__#define__REG52_H__/*BYTERegisters*///specialpositionsfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;sfrPSW=0xD0;sfrACC=0xE0;sfrB=0xF0;sfrSP=0x81;sfrDPL=0x82;sfrDPH=0x83;sfrPCON=0x87;sfrTCON=0x88;sfrTMOD=0x89;sfrTL0=0x8A;sfrTL1=0x8B;sfrTH0=0x8C;sfrTH1=0x8D;sfrIE=0xA8;sfrIP=0xB8;sfrSCON=0x98;sfrSBUF=0x99;/*8052Extensions*/sfrT2CON=0xC8;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《藥品市場營銷學》課程標準
- 農莊轉讓帳篷合同范本
- 化肥區(qū)域授權合同范本
- 上海電子營銷咨詢合同范例
- 余姚市房地產經(jīng)紀合同范本
- 接觸網(wǎng)中級工題庫與參考答案
- 化工總控工高級測試題及參考答案
- 道路交通安全模擬試題含參考答案
- 個人安全與社會責任心得體會
- 公司收購資產合同范本
- 噴涂設備點檢表
- GB/T 2831-2009光學零件的面形偏差
- 廣東省佛山市《綜合基礎知識》事業(yè)單位國考真題
- 02 第2章 城市與城市化-城市管理學
- 六年級上冊英語教案-Culture 2 Going Green 第二課時 廣東開心英語
- 警察叔叔是怎樣破案的演示文稿課件
- 2019石景山初三一模語文試題及答案
- 尿液有形成分形態(tài)學檢查與臨床意義課件
- 09式 新擒敵拳 教學教案 教學法 圖解
- CAD術語對照表
- 學術論文的寫作與規(guī)范課件
評論
0/150
提交評論