单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 932|回复: 0
收起左侧

PIC单片机10位AD转换(汇编语言)含程序、设计流程图、proteus仿真

[复制链接]
随风飘扬4859 发表于 2019-1-16 09:30 | 显示全部楼层 |阅读模式
1.设计一套完整的单片机应用系统(硬件图纸,软件程序流程图)
2.9路2mA~20mA模拟量输入(需转化为1V~5V)
3.5位数码管显示(1路显示测量的通道数,4路显示测量结果)
4.10位AD转换,显示范围:000.0~999.9
5.每一秒检测1路,自动跳过无输入的测量通道
6.用“停止/巡检”按钮使其只测量/显示1路
7.给出理论上的测量精度


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
线性关系y=12x-2503计算过程:根据ad转换结果的0.2倍~1倍(1V~5V)对应输出结果0.000~999.9这一映射。


仿真器件选择:
1.单片机型号为P16F877
2.晶振4MHz
3.数码管选择六位,第一位显示路数,后四位显示转化结果。


相关寄存器定义:
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

单片机AD转换程序如下:
;AD转换
atod
          bcf pir1,adif;ADIF清零标志位
        bsf adcon0,go;go置1,启动AD转换
adwait
        btfss pir1,adif
        btfsc adcon0,go;AD转换结束后GO位自动置0
        goto adwait;未转换完成,返回继续转换
        movf adcon0,w;将通道数放入寄存器
        andlw b'00111000';将adcon0取第345位,右移三次存入dishc
        movwf dishc
        rrf dishc
        rrf dishc
        rrf dishc
        banksel porta
        btfsc porta,ra4;检测按键RA4
        call jia;若为1,通道数加1;不为1,即按下按钮不加1
        movf dishc,w;检测通道数是非为8
        sublw .8
        btfsc status,z
        call zhi;若等于8,将通道数置零
        movf adresh,w
        sublw .51
        btfsc status,c;判断AD转换是非在1V~5V之间
        goto atod;不在范围内,跳转回AD转换
        call switch
        movlw 00h;与12相乘
         movwf s2h
         movlw .12
         movwf s2l
         call mpxy;调用乘法程序      
        movf r2h,w;与2503相减
        movwf s2h
        movf r2l,w
        movwf s2l
        movlw 09h
        movwf s1h
        movlw 0c7h
        movwf s1l
        call subxy
         movf r1h,w;转入bcd转换
        movwf s1h
         movf r2h,w
        movwf s1l
        call bintobcd;调用bcd转换程序
        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

具体内容见附件,程序纯手打,有参考书本,设计思路等如有问题望告知,谢谢。
全部资料51hei下载地址:
pic大作业.zip (95.53 KB, 下载次数: 11)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

快速回复 返回顶部 返回列表