找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7056|回復(fù): 1
收起左側(cè)

PIC單片機(jī)10位AD轉(zhuǎn)換(匯編語言)含程序、設(shè)計流程圖、proteus仿真

[復(fù)制鏈接]
ID:436877 發(fā)表于 2019-1-16 09:30 | 顯示全部樓層 |閱讀模式
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仿真工程文件可到本帖附件中下載)
0.png
線性關(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)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:676457 發(fā)表于 2019-12-29 09:48 | 顯示全部樓層
謝樓主分享
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表