用單片機(jī)實(shí)現(xiàn)函數(shù)發(fā)生器功能 硬件:單片機(jī)+LCD1602+N個(gè)按鍵+4個(gè)LED燈+DAC0832。 基本要求: 按下按鍵可使DAC輸出不同波形(正弦波、三角波、鋸齒波、方波),對應(yīng)LED燈亮,且在LCD1602上顯示當(dāng)前波形信息。 擴(kuò)展要求(可任意選做,每實(shí)現(xiàn)一項(xiàng)+10分): 1.LCD顯示增加當(dāng)前波形的頻率; 2.有按鍵可增加or減少頻率; 3.波形幅值可設(shè)定; 提交Proteus+Keil+文檔打包
一、 硬件選擇及連接 1.硬件選擇 ①AT89C51單片機(jī)(一個(gè)) 選擇原因: 擁有完善的外部擴(kuò)展總線,通過這些總線可方便地?cái)U(kuò)展外圍單元、外圍接口等。單片機(jī)與工業(yè)標(biāo)準(zhǔn)的MCS-51型機(jī)的指令集和輸出引腳兼容,便于產(chǎn)品后續(xù)工業(yè)量產(chǎn)化。芯片內(nèi)自帶中斷系統(tǒng),可用于按鍵按下時(shí)觸發(fā)中斷從而可以控制波形。 ②DAC0832(一個(gè)) 選擇原因: 由于單片機(jī)產(chǎn)生的是數(shù)字信號(hào),要想得到所需要的波形,就要把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),所以可以選用價(jià)格低廉、接口簡單、轉(zhuǎn)換控制容易并具有8位分辨率的數(shù)模轉(zhuǎn)換器DAC0832,而且DAC0832是電流型輸出。 ③LM324(一個(gè)) 選擇原因: DAC0832作為電流型輸出,在應(yīng)用時(shí)要外接運(yùn)放使之成為電壓型輸出。所以運(yùn)算放大器的作用是將DAC0832輸出的電流信號(hào)轉(zhuǎn)化為電壓信號(hào)。 ④LCD1602(一個(gè)) 選擇原因: LCD1602作為字符型液晶顯示模塊,具有體積小,重量輕,功耗低和顯示內(nèi)容豐富等優(yōu)點(diǎn),而且可以顯示兩行,因此可以符合要求在第一行顯示波形形狀和頻率大小,在第二行顯示幅值大小。 ⑤按鍵(四個(gè)) 選擇原因:用于控制波形種類和頻率、幅值的改變。 ⑥LED燈(四個(gè)) 選擇原因:用于表示對應(yīng)波形的產(chǎn)生。 ⑦電阻(100Ω 四個(gè)) 選擇原因:由于LED燈連接在P0口,因此需要連接上拉電阻,LED燈才能夠亮。
2. 硬件連接 
二、軟件流程圖
主程序流程圖 
| 按鍵按下檢查函數(shù)流程圖 
| 定時(shí)器0中斷函數(shù)流程圖 
| KEY1按鍵按下流程圖 
| KEY2按鍵按下流程圖 
| KEY3按鍵按下流程圖 
| KEY4按鍵按下流程圖 
|
三、完整C語言程序 主程序函數(shù)爆部分代碼 

定義四種波形64個(gè)點(diǎn)的位置信息和頻率參數(shù)的代碼部分 
定義按鍵按下檢查函數(shù)的代碼部分 

定時(shí)器初始化和中斷函數(shù)的代碼部分 
定義LCD1602顯示器顯示函數(shù)的代碼部分 

四、 仿真運(yùn)行視頻鏈接 鏈接:用51單片機(jī)實(shí)現(xiàn)函數(shù)發(fā)生器功能www.bilibili.com/video/BV15P41117s
|