上一主题 下一主题 收起左侧 用单片机驱动ADC0808时仿真不出来,求大神帮忙解答!!!感激不尽

问题描述:用proteus仿真时,不管两个变阻器怎么调节,始终是两个红灯亮。求大神帮忙解答。硬件描述:我用的是AT89C51,ADC0808,四个LED灯,两个滑动变阻器... 问题描述:用proteus仿真时,不管两个变阻器怎么调节,始终是两个红灯亮。求大神帮忙解答。硬件描述:我用的是AT89C51,ADC0808,四个LED灯,两个滑动变阻器代替模拟两个传感器。ADC0808接口:IN0接滑动变阻器RVI,IN1接滑动变阻器RV2,ADDA、B、C分别接P2.0、P2.1、P2.2,ALE和START接P0.6,CLOCK接单片机ALE经过四分频,EOC接P0.2,OE接P0.0,OUT1~OUT8接P3端口。P1.0和P1.2接红灯,P1.1和P1.3接绿灯。硬件图在下面。实现的功能:不停地将两个滑动变阻器RV1和RV2的模拟电压信号通过ADC0808转换成数字信号输出到单片机P3端口,当RV1的输出电压超过2.5V时,P1.0红灯亮,否则P1.1绿灯亮;当RV2的输出电压超过2.5V时,P1.2红灯亮,否则P1.3绿灯亮。汇编程序: ORG 0000H //开始CHONG: CLR P0.0 //OE置0 MOV P2,#0 //选择IN0端口 CLR P0.6 //启动A/D转换 SETB P0.6 CLR P0.6 JNB P0.2,$ //等待转换结束 SETB P0.0 //转换结束则将OE置1,允许输出 MOV A,P3 //将ADC0808的输出放到A SUBB A,#80H //将其减去2.5V ANL A,#80H //判断余数是正数还是负数 JNZ YWZC //若为负数则模拟电压小于2.5V,转变阻器1正常显示程序;否则顺序执行变阻器1不正常显示程序 CLR P1.0 //红灯1亮 SETB P1.1 //绿灯1灭 SJMP COCGQ //转RV2判断YWZC: CLR P1.1 //红灯1灭 SETB P1.0 //绿灯1亮COCGQ: CLR P0.0 //OE置0,以下程序判断RV2 MOV P2,#01 //选择IN1端口 SETB P0.6 //启动A/D转换 CLR P0.6 JNB P0.2,$ //等待转换结束 SETB P0.0 //转换结束则将OE置1,允许输出 MOV A,P3 //将ADC0808的输出放到A SUBB A,#80H //将其减去2.5V ANL A,#80H //判断余数是正数还是负数 JNZ COZC //若为负数则模拟电压小于2.5V,转变阻器2正常显示程序;否则顺序执行变阻器2不正常显示程序 CLR P1.2 //红灯2亮 SETB P1.3 //绿灯2灭 SJMP COBZC //转移COZC: CLR P1.3 //红灯2灭 SETB P1.2 //绿灯2亮COBZC: SJMP CHONG //转第一步,无限循环 展开
 我来答
lycdl
高粉答主

2018-03-20 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4927万
展开全部
AD0808的CLOCK这么接是没有时钟信号的,因仿真时ALE无信号输出。很简单,左边工具条中有个信号源,选其中的DCLOCK,放置后双击,把频率改为500K就好了。改完还不行,再帮你找原因。
追答
还有P0.1接lN7是不行的,因P0.1是没有电压的。
那P0.0和P0.6要加上拉电阻才行。这有点麻烦,别用P0口啊,其它口还有剩余引脚吗,为什么不用呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2018-03-20 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38385
国家科技进步奖

向TA提问 私信TA
展开全部
源程序没有换行,太乱了,没法看,发我同名微信吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式