#include<reg51.h>
#define uchar unsigned char
sbit ST=P2^0;
sbit EOC=P2^1;
sbit OE=P2^2;
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
sbit LED5=P1^4;
sbit LED6=P1^5;
sbit LED7=P1^6;
sbit LED8=P1^7;
uchar DATA;
uchar h1;
void delay(uchar i)
{
uchar j;
while(i--)
{
for(j=125;j>0;j--);
}
}
uchar AD(void)
{
ST=0;
delay(10);
ST=1;
delay(10);
ST=0;
while(0==EOC);
OE=1;
DATA=P0;
OE=0;
return DATA;
}
void penquan()
{
h1=AD();
delay(h1);
if(h1>30) LED1=0; else LED1=1;
if(h1>70) LED2=0; else LED2=1;
if(h1>100) LED3=0; else LED3=1;
if(h1>130) LED4=0; else LED4=1;
if(h1>160) LED5=0; else LED5=1;
if(h1>180) LED6=0; else LED6=1;
if(h1>200) LED7=0; else LED7=1;
if(h1>230) LED8=0; else LED8=1;
delay(h1);
}
void main()
{
while(1)
{
penquan();
}
}
不好意思 真没想到字体。。仿真中我用的是0808,那个频率我根据网友提示也弄出来了输出500khz,我用频率计测了的。但P0口始终接收不了数据,我把软件重发一下,麻烦你帮我看看嘛。拜托了
就不能把那源程序复制上来吗?为什么非要截图?你自己看看那图片上字,你能看清什么?
追问我重新上传了问题,希望您能看一下。。。
追答是又重新提问了吗?没有找到。
你的程序是没有问题的,我用仿真图测试了。问题还是出在那个ADC0808的时钟信号上,用ALE是不行的。还有就是IN0不能加模拟信号,要用一个电位器调试电压来测试ADC转换过程。根据你的仿真图和程序,仿真的结果如下图,可以正常出结果的。
用电脑补充回答的,用手机看不到,APP有错误啊。
我这个51单片机AD转换电路错在哪里呢,怎么老是运行不起
但是,用proteus 仿真就不行了,单片机的ALE是没有信号输出的,所以ADC电路无时钟信号。其实,仿真时,可以直接用时钟信号的,在proteus 左边工具栏中选信号源,就是S字母那个,从中选DCLOCK,就是时钟脉冲信号,放到仿真图中后与ADC0809的CLOCK连接,并把信号频率改为500K即可。把分频的D触发器都删掉,...
51单片机AD转换不稳定
我觉得很有可能是下述原因之一:1.是不是电平有跳动的不稳定,比如输入电平抖动(干扰导致),你只是肉眼没看出来而已,所以认为它是稳定的。这个解决方法如果输入是稳定电压(直流),那就在电压之间加上个电容就完事了。2.是不是输入电压的范围超了?如果是范围超了,加个分压电路,然后在单片机程序...
51单片机和ADC0809配合时出现错误现象,求解
你把adc的CLK接单片机的ALE 试试。定时器 就 不用了。我之前遇到的问题是这样的(可能和你有点不一样):用proteus 仿真 是好的(也用的是定时器控制CLK)但是,实际线路中,开机第一次转换是好的,接下来改变电位器就没反应了。改变电位器后,再重启就又有一次好的(此时电位器的值)。下面是...
为什么51单片机中的ADC转换。没有输入电压。他也一直变动?
只要启动转换了就会有AD转换的结果,你没加AD电压,那么输出有值,说明电源电压的地不太干净,或者你的AD电路有写问题。
51单片机有外部数据存储器的时候怎么开始AD转换?
movx @dptr,A,开启AD转换会与外部数据存储器发生冲突,那是因为DPTR中的地址没有指向AD转换器的端口地址,或者AD端口地址与外部数据存储器的地址重复了。没有具体电路,真正原因不好确定。单片机可采用端口模式与AD转换器连接比较好,见下图。
普中的51单片机stc90C516RD+中的AD转换怎么用(买了一个风速传感器)_百度...
对于使用51单片机STC90C516RD+进行AD转换的问题,您可以按照以下步骤进行操作:1. 连接传感器:将风速传感器与单片机进行连接。通常,风速传感器会有两个输出引脚,其中一个是信号引脚,用于连接到单片机的ADC输入引脚。2. 配置引脚:在编程之前,您需要将相应的引脚配置为ADC输入模式。通过查阅STC90C516RD+...
求解决一个51单片机ad转换的问题
万用表是积分型AD,通常比逐次比较型的AD稳定,解决办法是用速度换精度,软件上可以多次平均或其它数字滤波算法,硬件上可接简单低通滤波如下图所示:允许的话,可以考虑将C2两端接到 PCF8591的差分输入端
51单片机采集的AD值的转换程序问题?
0~11111...1111(24位二进制);那么1V就是:6710886(十进制)。用24位值AD_data除以6710886,得到的整数部分就是0~5,即为电压的整数部分。再把刚才除得的余数,再除以10,取整数将得到0~9,即为电压的第一位小数;余数,再除以10,取整数将得到0~9,即为电压的第二位小数;……想要取多少...
51单片机PCF8591的AD转换程序在stc12c5a60s2上运行出现问题
12 系列跟90 系列指令周期不一样,理论上12系列比90系列速度快12倍,也就是说程序在90系列中12ms的延时,在12系列里运行只有1ms。这个用示波器观察下很明显。问题出在现在液晶屏的时序太快了,你把延时或者定时函数做相应的修改 就行了
51单片机在ad中怎么找
51单片机在ad中怎么找,打开ad的原理图库,双击,鼠标移到原理图中就有你点击的原理图元器件了,运算符中选择包含,然后---范围---选择---库文件路径 搜索直接输入c51或者c52就行,引脚兼容的。