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

定義四種波形64個點的位置信息和頻率參數的代碼部分 
定義按鍵按下檢查函數的代碼部分 

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

四、 仿真運行視頻鏈接 鏈接:用51單片機實現函數發生器功能www.bilibili.com/video/BV15P41117s
|