1.設(shè)計一套完整的單片機(jī)應(yīng)用系統(tǒng)(硬件圖紙,軟件程序流程圖)
2.9路2mA~20mA模擬量輸入(需轉(zhuǎn)化為1V~5V)
3.5位數(shù)碼管顯示(1路顯示測量的通道數(shù),4路顯示測量結(jié)果)
4.10位AD轉(zhuǎn)換,顯示范圍:000.0~999.9
5.每一秒檢測1路,自動跳過無輸入的測量通道
6.用“停止/巡檢”按鈕使其只測量/顯示1路
7.給出理論上的測量精度
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
線性關(guān)系y=12x-2503計算過程:根據(jù)ad轉(zhuǎn)換結(jié)果的0.2倍~1倍(1V~5V)對應(yīng)輸出結(jié)果0.000~999.9這一映射。
仿真器件選擇:
1.單片機(jī)型號為P16F877
2.晶振4MHz
3.數(shù)碼管選擇六位,第一位顯示路數(shù),后四位顯示轉(zhuǎn)化結(jié)果。
相關(guān)寄存器定義:
temp equ 20h temp1 equ 21h dishc equ 25h count equ 30h wei equ 31h s1h equ 50h s1l equ 51h s2h equ 52h s2l equ 53h r1h equ 54h r1l equ 55h r2h equ 56h r2l equ 57h p1h equ 58h p1l equ 59h
r1z equ 5ah
單片機(jī)AD轉(zhuǎn)換程序如下:
;AD轉(zhuǎn)換 atod bcf pir1,adif;ADIF清零標(biāo)志位 bsf adcon0,go;go置1,啟動AD轉(zhuǎn)換 adwait btfss pir1,adif btfsc adcon0,go;AD轉(zhuǎn)換結(jié)束后GO位自動置0 goto adwait;未轉(zhuǎn)換完成,返回繼續(xù)轉(zhuǎn)換 movf adcon0,w;將通道數(shù)放入寄存器 andlw b'00111000';將adcon0取第345位,右移三次存入dishc movwf dishc rrf dishc rrf dishc rrf dishc banksel porta btfsc porta,ra4;檢測按鍵RA4 call jia;若為1,通道數(shù)加1;不為1,即按下按鈕不加1 movf dishc,w;檢測通道數(shù)是非為8 sublw .8 btfsc status,z call zhi;若等于8,將通道數(shù)置零 movf adresh,w sublw .51 btfsc status,c;判斷AD轉(zhuǎn)換是非在1V~5V之間 goto atod;不在范圍內(nèi),跳轉(zhuǎn)回AD轉(zhuǎn)換 call switch movlw 00h;與12相乘 movwf s2h movlw .12 movwf s2l call mpxy;調(diào)用乘法程序 movf r2h,w;與2503相減 movwf s2h movf r2l,w movwf s2l movlw 09h movwf s1h movlw 0c7h movwf s1l call subxy movf r1h,w;轉(zhuǎn)入bcd轉(zhuǎn)換 movwf s1h movf r2h,w movwf s1l call bintobcd;調(diào)用bcd轉(zhuǎn)換程序 movf r1z,w;第四位 andlw 0f0h movwf dishc+1 swapf dishc+1 movf r1z,w;第三位 andwf 0fh movwf dishc+2 movf r1l,w;第二位 andlw 0f0h movwf dishc+3 swapf dishc+3 movf r1l,w;第一位 andwf 0fh movwf dishc+4 call disp call delay1s
goto atod
具體內(nèi)容見附件,程序純手打,有參考書本,設(shè)計思路等如有問題望告知,謝謝。 全部資料51hei下載地址:
pic大作業(yè).zip
(95.53 KB, 下載次數(shù): 63)
2019-1-16 09:27 上傳
點擊文件名下載附件
|