本次設(shè)計(jì)的任務(wù)是設(shè)計(jì)制作一個波形發(fā)生器,該波形發(fā)生器能產(chǎn)生正弦波、方波、三角波和由用戶編輯的特定形狀波形。示意圖如下: 
基本要求如下: (1)具有產(chǎn)生正弦波、方波周期性波形的功能; (2)輸出波形的頻率范圍為100Hz~20kHz(非正弦波頻率按10次諧波計(jì)算);重復(fù)頻率可調(diào),頻率步進(jìn)間隔≤100Hz; (3)輸出波形幅度范圍0~5V(峰-峰值),可按步進(jìn)0.1V(峰-峰值)調(diào)整; (4)具有顯示輸出波形的類型、重復(fù)頻率(周期)和幅度的功能。
1.1 方案方案一:采用單片函數(shù)發(fā)生器可產(chǎn)生正弦波、方波等,操作簡單易行,用 D/A 轉(zhuǎn)換器的輸出來改變調(diào)節(jié)電壓,可以實(shí)現(xiàn)數(shù)控調(diào)整頻率,但產(chǎn)生信號的頻率穩(wěn)定度不高。 方案二:利用芯片組成的電路輸出波形,MAX038是MAXIM公司生產(chǎn)的一個只需要很少外部元件的精密高頻波形產(chǎn)生器,它能產(chǎn)生準(zhǔn)確的高頻正弦波、三角波、方波。輸出頻率和占空比可以通過調(diào)整電流、電壓或電阻來分別地控制。所需的輸出波形可由在A0和A1輸入端設(shè)置適當(dāng)?shù)拇a來選擇,且具有輸出頻率范圍寬、波形穩(wěn)定、失真小、使用方便等特點(diǎn)。 方案三:采用Atmel公司的AT89C51單片機(jī)編程方法實(shí)現(xiàn),該方案可以通過編程的方法控制信號波形的頻率和幅度,而在硬件電路不便的情況下,通過程序?qū)崿F(xiàn)頻率的變化和輸出波形的選擇,并同時在顯示器顯示相應(yīng)的結(jié)果。 方案一輸出信號頻率不夠穩(wěn)定;方案二成本高,程序復(fù)雜度高;方案三軟硬件結(jié)合,硬件成本低,軟件起點(diǎn)低,用匯編語言即可完成,優(yōu)化型相對比較好,容易實(shí)現(xiàn),且滿足設(shè)計(jì)要求。綜合考慮,我們采用了方案三,用AT89C51單片機(jī)設(shè)計(jì)多功能信號發(fā)生器,能夠滿足信號的頻率穩(wěn)定性和精度的準(zhǔn)確性。 1.2 系統(tǒng)描述 本方案以AT89C51為控制核心,主要模塊包括復(fù)位電路、時鐘信號發(fā)生電路、鍵盤控制電路、D/A轉(zhuǎn)化及LED顯示電路,其原理框圖如下:
鍵盤控制電路鍵盤電路分為獨(dú)立式按鍵和矩陣式鍵盤,為了簡化程序,我們采用了獨(dú)立式鍵盤。獨(dú)立式按鍵是指直接用I/O口線構(gòu)成的單個按鍵電路。每個獨(dú)立式按鍵單獨(dú)占有一根I/O口線,每根I/O口線的工作狀態(tài)不會影響其他I/O口線的工作狀態(tài),這是一種最簡單易懂的按鍵結(jié)構(gòu)。電路圖如下所示: 
圖5 鍵盤輸入電路 2.5 LED顯示電路
2.5.1 數(shù)碼管功能介紹 數(shù)碼管的外形結(jié)構(gòu)如下圖所示,由圖可見它由8個發(fā)光二極管構(gòu)成,通過不同的組合用來顯示0—9,A—F及小數(shù)點(diǎn)“.”等符號。數(shù)碼管通常有共陰極和共陽極兩種型號,共陰極數(shù)碼管的發(fā)光二極管陰極必須接低電平,當(dāng)某發(fā)光二極管的陽極為高電平(一般為+5V)時,此二極管點(diǎn)亮;共陽極數(shù)碼管的發(fā)光二極管是陽極并接到高電平,對于需點(diǎn)亮的發(fā)光二極管使其陰極接地電平即可(一般接地)。顯然,要顯示某字形就應(yīng)使此字形的相應(yīng)字段點(diǎn)亮,實(shí)際就是送不同電平組合代表的數(shù)據(jù)至數(shù)碼管。這種裝入數(shù)碼管顯示字形的數(shù)據(jù)稱字形碼。 
圖6 數(shù)碼管原理圖
要使數(shù)碼管顯示不同的數(shù)字或者字符,需要使端口輸出相應(yīng)的字型碼,顯示器的字形與字碼關(guān)系如下圖所示: 
圖7 段碼表 2.5.2 LED動態(tài)顯示原理及電路LED數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,單片機(jī)對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。 本次設(shè)計(jì)采用6位共陰極數(shù)碼管,選取AT89C51的P0口作為信號輸出端口,并外接兩片鎖存器74HC573,用于驅(qū)動數(shù)碼管,其中一片作為數(shù)碼管的段選信號輸入端,另一片作為數(shù)碼管的位選信號輸入端,選取AT89C51的P2.6和P2.7分別作為兩片鎖存器的片選信號輸入端,電路圖如下所示: 
圖8 LED顯示電路
2.6 D/A轉(zhuǎn)換及放大電路
2.6.1 DAC0832功能介紹DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個DA芯片以其價(jià)格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。其引腳圖如下所示: 
圖9 DAC0832引腳圖
關(guān)于DAC0832的引腳功能如下: D0~D7:數(shù)字信號輸入端。 ILE:輸入寄存器允許,高電平有效。 CS:片選信號,低電平有效。 WR1:寫信號1,低電平有效。 XFER:傳送控制信號,低電平有效。 WR2:寫信號2,低電平有效。 IOUT1、IOUT2:DAC電流輸出端。 RFB:是集成在片內(nèi)的外接運(yùn)放的反饋電阻。 VREF:基準(zhǔn)電壓(-10~10V)。 Vcc:是源電壓(+5~+15V)。 AGND:模擬地。 NGND:數(shù)字地,可與AGND接在一起使用。 2.6.2 D/A轉(zhuǎn)換電路由于單片機(jī)輸出的是數(shù)字信號,因此要得到模擬信號的波形就必須對其進(jìn)行數(shù)模轉(zhuǎn)換。我們采用了DAC0832數(shù)模轉(zhuǎn)換器,由于其輸出為電流輸出,需要外加運(yùn)算放大器OP07使之裝換為電壓輸出,最后通過示波器顯示輸出的波形。我們選取了AT89C51的P1口作為波形數(shù)字信號的輸出端口,電路圖如下所示: 圖10 D/A轉(zhuǎn)換電路
3 系統(tǒng)調(diào)試本次設(shè)計(jì)的系統(tǒng)仿真在Proteus軟件中進(jìn)行,并采用匯編語言進(jìn)行程序的編寫。 3.1 軟件調(diào)試3.1.1 三角波產(chǎn)生圖11 三角波仿真圖 TRI: CJNE R7,#0FFH,GO1 CLR 20H GO1: CJNE R7,#00H,GO2 SETB 20H GO2: JNB TF1,GO3 CLR TF1 JB 20H,GO4 DEC R7 SJMP GO6 GO4: INC R7 GO6: MOV P1,R7 LCALL DISPLAY GO3: MOV A,P3 ORL A,#1FH CPL A JZ GO5 LCALL DELAY MOV A,P3 ORL A,#1FH CPL A JZ GO5 LJMP CHANGESTATE GO5: LJMP TRI 3.1.2 方波產(chǎn)生
圖12 方波仿真圖 REC:JNB TF1,GG1 CLR TF1 DJNZ R2,GG2 MOV R2,#0FFH CPL 20H GG2:JB 20H,GG3 MOV P1,#00H SJMP GG4 GG3:MOV P1,#0FFH GG4: GG1:MOV A,P3 ORL A,#0FH CPL A JZ GG5 LCALL DELAY MOV A,P3 ORL A,#0FH CPL A JZ GG5 GG5:LJMP REC 3.1.3 正弦波產(chǎn)生
圖13 正弦波仿真圖 SIN: JNB TF1,G1 CLR TF1 INC R1 MOV A,R1 MOVC A,@A+DPTR MOV P1,A G1: MOV A,P3 ORL A,#1FH CPL A JZ G2 MOV A,P3 ORL A,#1FH CPL A JZ G2 G2: LJMP SIN
3.1.4 鍵盤控制 通過按鍵的控制,可以實(shí)現(xiàn)波形的相互轉(zhuǎn)換和調(diào)頻的功能。P3.5和P3.6端口的鍵盤分別實(shí)現(xiàn)頻率的加減功能,P3.7端口的鍵盤實(shí)現(xiàn)波形之間的相互轉(zhuǎn)換。其仿真效果如下圖所示: 圖14 波形轉(zhuǎn)換仿真圖 3.1.5 LED顯示本次設(shè)計(jì)采用6位數(shù)碼管實(shí)現(xiàn)顯示功能,其中前3位用于顯示波形的類型,REC代表方波,SIN代表正弦波,TRI代表三角波;后3位用于顯示波形的頻率。其仿真效果如下圖所示: 圖15 LED仿真圖 3.2 硬件調(diào)試本次設(shè)計(jì)的硬件電路調(diào)試結(jié)果如下圖所示:
圖16 硬件效果圖
4 系統(tǒng)功能介紹 本次設(shè)計(jì)的電路可實(shí)現(xiàn)以下三大功能: 本次設(shè)計(jì)電路可產(chǎn)生方波、三角波、正弦波三種波形,而且通過鍵盤控制可以實(shí)現(xiàn)三種波形之間的相互轉(zhuǎn)換和頻率調(diào)節(jié)的功能。 本次設(shè)計(jì)的顯示功能通過6位數(shù)碼管實(shí)現(xiàn),可以顯示三種波形的類型和頻率。 本次設(shè)計(jì)的電路具有鍵盤控制功能,可以進(jìn)行三種波形之間的任意轉(zhuǎn)換和波形頻率的調(diào)節(jié),并可以將改變后的結(jié)果實(shí)時地顯示在在數(shù)碼管上。
5 設(shè)計(jì)總結(jié)我們小組此次的設(shè)計(jì)題目是波形發(fā)生器的設(shè)計(jì),通過小組成員將近一個月的努力,并按照本次電子設(shè)計(jì)競賽的相關(guān)要求,最終完成此次設(shè)計(jì)。在此次設(shè)計(jì)中收獲頗多,主要有以下幾點(diǎn): - 通過對電路的設(shè)計(jì),對51系列單片機(jī)的原理和功能有了進(jìn)一步的了解,對之前學(xué)過的書本上的電路知識有了更深刻的體會,如復(fù)位電路的原理,晶振電路的作用,上拉電阻的功能,LED顯示電路的原理等,熟悉了DAC0832芯片的原理和功能,并且能對其進(jìn)行應(yīng)用。
- 通過原理圖的繪制,學(xué)會了Proteus軟件的使用,并且能用它完成一些簡單的電路設(shè)計(jì),對常用的一些元器件有了一定的了解和認(rèn)識。
- 本次設(shè)計(jì)的硬件電路相對簡單,核心部分是程序的編寫,考慮到匯編語言與硬件電路聯(lián)系比較緊密,我們組通過討論最終選取匯編語言進(jìn)行程序的編寫,方便后期調(diào)試過程查找錯誤。在軟件和硬件的調(diào)試階段遇到很多的問題,如LED顯示亂碼、閃爍、波形失真等,通過不斷的查找錯誤,對程序進(jìn)行相應(yīng)的修改,使其達(dá)到設(shè)計(jì)的要求,在這個過程中,認(rèn)識到有時候一個簡單的錯誤就有可能造成電路無法正常工作,可謂“失之毫厘,差之千里”,培養(yǎng)了我們嚴(yán)謹(jǐn)細(xì)致的工作態(tài)度,同時對電路的的工作原理有了更深刻的認(rèn)識。
- 在本次電路設(shè)計(jì)的過程中,深刻體會到對于一個功能較為復(fù)雜的系統(tǒng)設(shè)計(jì),一定要學(xué)會劃分功能模塊,逐個實(shí)現(xiàn),最終再進(jìn)行整合,切不可眉毛胡子一把抓,那樣不僅操作起來麻煩,效率低,而且容易出錯。
- “紙上得來終覺淺,絕知此事要躬行”,通過本次電子設(shè)計(jì)競賽,深刻體會到理論聯(lián)系實(shí)踐的重要性,要學(xué)會活學(xué)活用。同時,在實(shí)踐的過程中,也可以加深對理論知識的認(rèn)識,提高動手能力。
- 通過本次電子設(shè)計(jì)競賽,我更加深刻的認(rèn)識到團(tuán)隊(duì)合作的重要性,小組成員分工合作,是設(shè)計(jì)成功的關(guān)鍵,只有大家團(tuán)結(jié)一致,才能更快更好的完成任務(wù)。
我們此次的設(shè)計(jì)基本滿足設(shè)計(jì)的要求,當(dāng)然還是存在不足的地方,例如當(dāng)頻率過小的時候波形會有些失真,波形的頻率調(diào)節(jié)范圍比較小,D/A轉(zhuǎn)換器轉(zhuǎn)換時可以加一個鎖存器,放大電路設(shè)計(jì)上還有待進(jìn)一步改進(jìn),使其具有更強(qiáng)的輸出能力等。
附錄1 系統(tǒng)原理圖
單片機(jī)源程序如下:
- ORG 0000H
- lJMP MAIN
-
- MAIN:
- MOV TMOD,#20H
- MOV R0,#02H
- MOV A,#0FFH
- MOV P3,A
- MOV A,#70H
- MOV SP,A
- MOV R6,#0FFH
- REMAIN:CLR TR1
- MOV TH1,R6
- SETB TR1
- LCALL JM
-
- CJNE R0,#01,SHIFT
- TRI: CJNE R7,#0FFH,GO1
- CLR 20H
- GO1: CJNE R7,#00H,GO2
- SETB 20H
-
- GO2: JNB TF1,GO3
- CLR TF1
- JB 20H,GO4
- DEC R7
- SJMP GO6
- GO4: INC R7
- GO6: MOV P1,R7
- LCALL DISPLAY
- GO3:
- MOV A,P3
- ORL A,#1FH
- CPL A
- JZ GO5
- LCALL DELAY
- MOV A,P3
- ORL A,#1FH
- CPL A
- JZ GO5
- LJMP CHANGESTATE
- GO5: LJMP TRI
-
- SHIFT:JC SIN1
- REC:JNB TF1,GG1
- CLR TF1
- DJNZ R5,GG2
- MOV R5,#0FFH
- CPL 20H
- GG2:JB 20H,GG3
- MOV P1,#00H
- SJMP GG4
- GG3:MOV P1,#0FFH
- GG4:LCALL DISPLAY
- GG1:MOV A,P3
- ORL A,#1FH
- CPL A
- JZ GG5
- LCALL DELAY
- MOV A,P3
- ORL A,#1FH
- CPL A
- JZ GG5
- LCALL CHANGESTATE
- GG5:LJMP REC
-
- SIN1:NOP
- MOV DPTR,#TABSIN
- SIN: JNB TF1,G1
- CLR TF1
- INC R1
- MOV A,R1
- MOVC A,@A+DPTR
- MOV P1,A
- LCALL DISPLAY
- G1: MOV A,P3
- ORL A,#1FH
- CPL A
- JZ G2
- LCALL DELAY
- MOV A,P3
- ORL A,#1FH
- CPL A
- JZ G2
- LCALL CHANGESTATE
- G2: LJMP SIN
-
- CHANGESTATE:
- JB P3.7,GOTO1
- INC R0
- CJNE R0,#03H,GOTO1
- MOV R0,#00H
- GOTO1: JB P3.6,GOTO2
- INC R6
- GOTO2: JB P3.5,GOTO3
- DEC R6
- GOTO3: MOV A,P3
- CPL A
- JNZ GOTO3
- LJMP REMAIN
-
- JM:MOV DPTR,#TABNUM
- MOV A,R6
- MOV B,#100
- DIV AB
- MOVC A,@A+DPTR
- MOV 14H,A
- MOV A,B
- MOV B,#10
- DIV AB
- MOVC A,@A+DPTR
- MOV 15H,A
- MOV A,B
- MOVC A,@A+DPTR
- MOV 16H,A
-
- MOV DPTR,#TABWM
- MOV A,R0
- MOV B,#03H
- MUL AB
- MOV 10H,A
- MOVC A,@A+DPTR
- MOV 11H,A
- INC DPTR
- MOV A,10H
- MOVC A,@A+DPTR
- MOV 12H,A
- MOV A,10H
- INC DPTR
- MOVC A,@A+DPTR
- MOV 13H,A
- RET
-
-
- DISPLAY:
- SETB P2.6
- MOV P0,11H
- CLR P2.6
- MOV P0,#0FFH
- SETB P2.7
- MOV P0,#0FEH
- CLR P2.7
- MOV P0,#0FFH
- LCALL DELAY
-
- SETB P2.6
- MOV P0,12H
- CLR P2.6
- MOV P0,#0FFH
- SETB P2.7
- MOV P0,#0FDH
- CLR P2.7
- MOV P0,#0FFH
- LCALL DELAY
-
- SETB P2.6
- MOV P0,13H
- CLR P2.6
- MOV P0,#0FFH
- SETB P2.7
- MOV P0,#0FBH
- CLR P2.7
- MOV P0,#0FFH
- LCALL DELAY
-
- SETB P2.6
- MOV P0,14H
- CLR P2.6
- MOV P0,#0FFH
- SETB P2.7
- MOV P0,#0F7H
- CLR P2.7
- MOV P0,#0FFH
- LCALL DELAY
-
- SETB P2.6
- MOV P0,15H
- CLR P2.6
- MOV P0,#0FFH
- SETB P2.7
- MOV P0,#0EFH
- CLR P2.7
- MOV P0,#0FFH
- LCALL DELAY
-
- SETB P2.6
- MOV P0,16H
- CLR P2.6
- MOV P0,#0FFH
- SETB P2.7
- MOV P0,#0DFH
- CLR P2.7
- MOV P0,#0FFH
- LCALL DELAY
- RET
- DELAY:MOV R2,#0FFH
- MOV R3,#1
- LOOP:
- DJNZ R3,LOOP
- MOV R3,#2
- DJNZ R2,LOOP
- RET
-
- TABNUM: DB 3FH,06H,5BH,4FH,66H
- DB 6DH,7DH,07H,7FH,6FH
- TABWM: DB 6DH,06H,37H,07H,77H
- DB 30H,77H,79H,39H
- TABSIN:
- DB 80H,83H,86H,89H,8DH,90H,93H,96H
- DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
- DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
- DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
- DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
- DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
- DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
- DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
- DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
- DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
- DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
- DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
- DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
- DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
- DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
- DB 96H,93H,90H,8DH,89H,86H,83H,80H
- DB 80H,7CH,79H,78H,72H,6FH,6CH,69H
- DB 66H,63H,60H,5DH,5AH,57H,55H,51H
- DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH
- DB 38H,35H,33H,30H,2EH,2BH,29H,27H
- DB 25H,22H,20H,1EH,1CH,1AH,18H,16H
- DB 15H,13H,11H,10H,0EH,0DH,0BH,0AH
- DB 09H,08H,07H,06H,05H,04H,03H,02H
- DB 02H,01H,00H,00H,00H,00H,00H,00H
- DB 00H,00H,00H,00H,00H,00H,01H,02H
- DB 02H,03H,04H,05H,06H,07H,08H,09H
- DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H
- DB 16H,18H,1AH,1CH,1EH,20H,22H,25H
- DB 27H,29H,2BH,2EH,30H,33H,35H,38H
- DB 3AH,3DH,40H,43H,45H,48H,4CH,4EH
- DB 51H,55H,57H,5AH,5DH,60H,63H,66H
- DB 69H,6CH,6FH,72H,76H,79H,7CH,80H
-
-
- END
復(fù)制代碼完整的Word格式文檔51黑下載地址:
51單片機(jī)實(shí)現(xiàn)波形發(fā)生器.doc
(3.34 MB, 下載次數(shù): 197)
2019-5-20 18:30 上傳
點(diǎn)擊文件名下載附件
|