注意:Proteus中没有ADC0809因此要选择ADC0808

DATAS SEGMENT;此处输入数据段代码  IOYO equ 0C400h;对应的端口地址a8255 equ IOYO+00H*4;A端口b8255 equ IOYO+01H*4;B端口c8255 equ IOYO+02H*4;C端口m8255 equ IOYO+03H*4;8255控制字adc0808 equ 0C420h;对应的ADC0808的端口  table db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0a1h,86h,8ehresult db 5 dup(?)buf db 5 dup(?)
DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码db 200 dup(0)
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;准备工作写控制字lea di,result;用来保存计算后转换的结果mov dx,m8255mov al,99h;1001 1001out dx,almov dx,b8255mov al,0fhout dx,al;相当与单片机的while(1)部分;这里是0808测量部分部分,这里测量得到al的结果为1010 1000
LOOP1:mov dx,adc0808mov al,0out dx,almov dx,c8255
EOC:in al,dxtest al,01h;00表示还在转换jz eocjmp finish
Finish:mov dx,a8255in al,dx;计算转换结果mov ah,00h;将ah中的内容清零mov bx,01f4h;500的16进制mul bx;将al和500相乘,高位放到dx中,低位存在ax中mov bx,0ffhdiv bx;除以255得到的结果,ax中结果为0000 0001 0100 1001mov cx,ax;cx中备份数据;显示结果;将数据转换为十进制mov bx,10mov si,2;三位
toDec:mov dx,0div bx;(dx,ax)/bx中的数据除以bxmov [buf+si],dl;余数为该位上的值,第一次循环为个位,第二次为十位dec sicmp ax,0;商为0表示算法结束ja toDec;计算个位inc simov al,[buf+si]inc simov bx,offset tablexlatand al,7fh;加上小数点mov [di],al;计算第一个小数点位mov al,[buf+si]inc sixlat tablemov [di+1],al;计算第二个小数点位mov al,[buf+si]xlat tablemov [di+2],al;完成数码管动态扫描刷新mov dx,b8255;8255芯片or dx,0800h;;0000 1000 0000 0000mov al,[di+2]out dx,alcall delay_2msmov dx,b8255or dx,1000h;0001 0000 0000 0000mov al,[di+1]out dx,alcall delay_2msmov dx,b8255or dx,1800h;0001 1000 0000 0000mov al,[di]out dx,alcall delay_2msjmp LOOP1;循环MOV AH,4CHINT 21Hdelay_2ms proc nearpush bxmov bx,1ffh
LP2:pushfpopfdec bxjnz lp2pop bxret
delay_2ms endp
CODES ENDSEND START

结果是可以实时显示电压值。


A/D转化部分,显示结果需要经过一些计算,首先要计算分辨率,基准源为5V,分辨率为5.0/255=0.019,然后再和ADC0808输出的结果相乘得到的就是最终的结果。这个实验的显示部分我改进了几次,因为要显示多位数值,因此要对数码管进行动态扫描,可是不知道如何使用中断,因此扫描就是用的计时的方法,每当检测一次ADC0808转化的结果,就扫描数码管显示,可是因为用了一个1s的延时程序,因此中间会有一段数码管完全没有显示,所有就改进为检测EOC位,因为EOC位转化时为低电平,转化完成后会变为高电平,因此直接检测EOC位是否变为高电平延时很短,人眼也观察不出来效果就是数码管可以持续显示,还有一个问题是ADC0808在运行程序后只能检测一次,之后改变电压值,不会输出检测的结果。后来发现是使能端start和ALE的问题,修改之后就可以正常显示了,这里给出的是修改之后的程序。
时钟信号设置:

部分使能信号:

ad转化输出电压值8086和ADC0808的Proteus仿真相关推荐

  1. da转化输出不同波形8086和DAC0832的Proteus仿真

    DATAS SEGMENT;此处输入数据段代码 DAC0832 equ 0C400h IOY1 equ 0C480hb8255 equ IOY1+01H*4m8255 equ IOY1+03H*4bu ...

  2. 音乐发生器8086和8253通过Proteus仿真

    图中脉冲信号的频率为307.2KHz. 我这里实现了不同的乐曲分别是小星星,友谊地久天长和卖报歌,按下开关一是小星星,开关二是友谊地久天长,开关三是卖报歌: DATAS SEGMENT;此处输入数据段 ...

  3. 不同频率的方波发生器8086和8253的Proteus仿真

    时钟信号的频率为307.2kHz. 通过按钮可以选择输出不同频率的方波. DATAS SEGMENT;此处输入数据段代码 IOYO equ 0C400h;对应的端口地址IOY1 equ 0C440hM ...

  4. 8086+ADC0808+8255A电压测量数码管显示Proteus仿真

    8086+ADC0808+8255A电压测量数码管显示Proteus仿真 Proteus仿真截图 代码 CODE SEGMENT DATA SEGMENT PORT_ADC EQU 80H PORT_ ...

  5. 二极管电路图如图所示,试分析各电路中二极管的工作状态,并求出输出电压值,设二极管的导通电压为Vd=0.7V

    二极管电路图如图所示,试分析各电路中二极管的工作状态,并求出输出电压值,设二极管的导通电压为Vd=0.7V. (1) 当二极管开路时,Vd=2-(-2)=4V>0.7V,故二极管两端电压为导通状 ...

  6. “MPX4115型压力传感器+PCF8591型AD+模拟IIC总线”的Proteus仿真

    一.MPX4115型压力传感器介绍 1.1 引脚说明 即:1引脚为模拟量输出,2引脚接地,三引脚接电源,4.5.6引脚空 1.2 输出特性图 选择典型曲线,我们可以得知转换公式:压力值=(电压值/5. ...

  7. 【Proteus仿真】ATMEGA16 ADC转化数码管显示

    [Proteus仿真]ATMEGA16 ADC转化数码管显示 注意这是ATMEGA16AVR型号的单片机,不能在Keil平台上进行开发和编译的. Proteus仿真 所使用的编译软件ICCAVR 不懂 ...

  8. 8086+DAC0832产生方波、三角波及正弦波波形Proteus仿真

    8086+DAC0832产生方波.三角波及正弦波波形Proteus仿真 仿真截图 代码 CODE SEGMENTDATA SEGMENT SQURE DB 0,0,0,0,0,0,0,0,0,0,25 ...

  9. 基于8086步进电机定时启动设计-基于8086八路智能抢答器系统控制设计-基于8086八路PT100热敏电阻温度采集-基于8086 8253定时计数器方波发生器仿真-基于8086的1602动态显示仿真

    1157基于8086八路智能抢答器系统控制设计-微机原理资料 以8086为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0-S7表示. 设置一个系统清除和抢答控制开关S ...

  10. 【资料转发分享】基于8086八路智能抢答器系统控制设计、基于8086八路PT100热敏电阻温度采集、基于8086步进电机定时启动设计-仿真设计资料

    1157基于8086八路智能抢答器系统控制设计-微机原理资料 以8086为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0-S7表示. 设置一个系统清除和抢答控制开关S ...

最新文章

  1. deepsort原理快速弄懂——时效比最高的
  2. java并发处理时mvel表达式处理慢,一文说清!
  3. 浅谈常见的七种加密算法及实现(附代码)
  4. 一段从TXT导入excel的py脚本
  5. laya 怎么生成签名_PHP开发API接口签名生成及验证
  6. jquery ajax json转换出错Invalid JSON
  7. c语言char有什么作用,C语言中char*和char[]用法区别分析
  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 II【难度简单】
  9. 图解 继电器模组接线图_中间继电器如何接线_中间继电器接线图图解
  10. python循环结构代码_Python --- 程序的循环结构
  11. 转Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
  12. 完全二叉树之深度问题
  13. T电脑经典基础知识技术OC
  14. NBU备份软件实施过程的注意事项
  15. 开心盒子助手3.0版|开心盒子助手工具3.0电脑版
  16. 基于AD9979+夏普sharp 1/3英寸130万像素CCD成像组件设计
  17. 苹果手机白屏_岳瀚:Iphone手机维修简单总结
  18. 【无线网络技术专题(十)】企业无线网络规划设计与交付流程
  19. 会计专业毕业论文如何选题?
  20. 系统常用的通信对接方式

热门文章

  1. 使用AudioRecord录制pcm格式音频
  2. 路径规划算法:动态规划
  3. 【笔记】《Web全栈工程师的自我修养》
  4. git 小乌龟代码回退
  5. hfss史密斯图_这个史密斯圆图代表什么意思啊
  6. 【ATSC】美国地面数字电视广播从ATSC 1.0向ATSC 3.0标准的过渡
  7. python 气泡图 聚类_用SPSS制作气泡图
  8. step7设置pcpg_安装STEP7编程软件过程及PG/PC接口设置
  9. 最短路问题——spfa算法
  10. 超全面超详细的Linux学习入门系列教程