yl69怎么将模拟量传给adc0804lcn

急求一份基于51单片机用YL69 土壤湿度传感器在1602显示屏显示湿度值的程序_百度知道
急求一份基于51单片机用YL69 土壤湿度传感器在1602显示屏显示湿度值的程序
我有更好的答案
只有大于或小于设定湿度你这个51如果是不带ADC型号的,单片机没办法显示具体湿度的,只能通过调节电位器设置湿度
谢谢啊,用的89c52,没带ADC,如果再加一个A/D转换模块呢?想找一下这个的程序。
加adc就能读具体数值的
能不能给个程序做参考呢?AD转换器用的是pcf8591的模块。我这儿也收集了一些相关的资料。你看你有没有空帮我看看,太谢谢了
可以代写程序,需要请私信
我在论坛上找到一份pcf8591模块用LCD1602显示模拟量的程序,但是注释不太清楚,烧入单片机后采集的数据我没太弄清楚是哪个通道的,你看能不能帮我把程序改成LCD同时显示四个模拟量通道的采集数据也行。把这个弄清楚了那个土壤湿度传感器也是一样的了
需要程序代写私信
需要代写说明需要的功能就好
哇,你还没有睡觉啊,不好意思打扰了,时间太晚了,明天我发给你,太感谢了
采纳率:75%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。adc0804输出的是二进制(八个输出口)怎么赋给变量就变成十进制_百度知道
adc0804输出的是二进制(八个输出口)怎么赋给变量就变成十进制
我做的是ad转换,ad0804输出给P1口逼,将P1口赋给变量后,变量就变成十进制(如255)
我有更好的答案
例如这样; P1=0xffc51直接当十进制用就行;100;/百位 2 shi=P1%100/10;
/十位 5 ge=P1%10;
/// bai=P1//&#47
采纳率:48%
没太看明白你意思
为您推荐:
其他类似问题
您可能关注的内容
adc0804的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【单片机练习】AD转换ADC0804的应用 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
【单片机练习】AD转换ADC0804的应用
09:55:05  
用TX-B开发板参照模数转换ADC0804的应用中的实验要求和源代码, 自己也改进了一些代码.
ADC0804与单片机的连接电路图:
6位数码管与单片机的连接电路图
数码管动态扫描显示的原理:就六位数码管显示123456举例说明如下:先让第一个数码管显示1,其余的全部不亮,1大约亮几毫秒,然后熄灭,紧接着立即让第二个数码管显示2,其余的全部不亮,2同样亮几毫秒,依次这样亮到第六个数码管,然后再回来显示1,如此这样以很快的速度不断循环下去,由于人眼的视觉暂留时间大约为20毫秒左右,所以是感觉不出有不亮的数码管存在的,看见的是六个数码管同时在显示,数值是123456,如果我们把这个过程一点点放慢,看见的是从第一个数码管显1,然后移到第二个再显2,。。。也就是说在任一时刻只有一位数码管是亮的。ADC0804: ADC0804是8位全MOS中速A/D 转换器、它是逐次逼近式A/D 转换器,片内有三态数据输出锁存器,可以和单片机直接接口。单通道输入,转换时间大约为100us。ADC0804 转换时序是:当CS=0 许可进行A/D 转换。WR由低到高时,A/D开始转换,一次转换一共需要66-73 个时钟周期。CS与WR同时有效时启动A/D转换,转换结束产生INTR 信号(低电平有效),可供查询或者中断信号。在CS和RD 的控制下可以读取数据结果。本实验没有使用INTR信号。
源代码:
#include
&&//读取通过ADC0804将模拟量转换成数字量, 并显示相应的数值
&&#include& &//要使用到_nop_();函数, 延时一个空操作时间
&&#define uchar unsigned char
&&unsigned char j,
&&//延时函数, 例i=10,则大概延时10ms.
&&void delay(unsigned char i)
{
& & for(j = j & 0; j--)
& & {
& && &&&for(k = 125; k & 0; k--);
& & }
}
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
& & 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F数码管的编码(共阴极)
//控制数码管段选的锁存器锁存端& &下降沿过后锁存,即先令dula = 1,再令dula=0,完成锁存
sbit dula=P2^6;&&
//控制数码管位选的锁存器锁存端& &过程如dula
sbit wela=P2^7;
sbit adrd = P3^7;&&//一个上升沿脉冲, 打开读取ADC
sbit adwr = P3^6;&&//一个上升沿脉冲, 启动ADC
uchar ds[] = {0, 0, 0}; //存放转换结果
sbit adcs = P0^7;&&//ADC的片选, 低电平有效
//datas[0]百位数字,datas[1]十位, datas[2]个位
void display(uchar datas[])
{
& &
& & for(count = 0; count & 3; count++)
& & {
& && & //片选
& && &&&wela = 0;
& && &&&P0 = ((0xfe && count) | (0xfe && (8 - count))) & 0x7f; //选择第(count + 1) 个数码管
& && &&&wela = 1; //打开锁存, 给它一个下降沿量
& && &&&wela = 0;
& && &&&//段选
& && &&&dula = 0;
& && &&&P0 = table[datas[count]];&&//显示数字
& && &&&dula = 1;&&//打开锁存, 给它一个下降沿量
& && &&&dula = 0;
& && &&&delay(5); //延时5ms, 即亮5ms
& && &&&//清除段先, 让数码管灭, 去除对下一位的影响, 去掉高位对低位重影
& && &&&//若想知道影响效果如何, 可自行去掉此段代码
& && &&&//因为数码管是共阴极的, 所有灭的代码为: 00H
& && &&&dula = 0;
& && & P0 = 0x00;&&//显示数字
& && & dula = 1; //打开锁存, 给它一个下降沿量
& && &&&dula = 0;
& & }
}
//启动ADC
void ADStart()
{
& & adcs = 0;&&//选中ADC
& &_nop_();
& & adwr = 0;
& & _nop_();
& & adwr = 1;&&//一个上升沿脉冲
& & _nop_();
& & adcs = 1;
}
//读ADC
uchar ADRead()
{
& &
& & adcs = 0; //选中ADC
& & _nop_();
& &adrd = 0; //准备读取
& & _nop_();
& & _nop_();&&
& & tmp = P1;&&//读取ADC数据
& & adrd = 1;
& & _nop_();
& & adcs = 1;
& &
}
void main()
{
& & uchar advalue,
& &
& & while(1)
& & {
& && &&&//启动AD转换
& && &&&ADStart();
& && & //读AD
& && &&&advalue = ADRead();
& && &&&
& && &&&ds[0] = advalue / 100;& && && && & //百位
& && &&&ds[1] = (advalue % 100) / 10;& && &//十位
& && &&&ds[2] = advalue % 10;& && && && &//个位
& && && &//循环显示五十次, 再去采样电压, 留足够的时间让ADC0804完成模数转换
& && &&&for(icount = 0; icount & 50; icount++)
& && &&&{
& && && && &display(ds);
& && &&&}
& & }
}复制代码
特别对于数码管显示函数display():
//datas[0]百位数字,datas[1]十位, datas[2]个位
void display(uchar datas[])
{
& &
& &for(count = 0; count & 3; count++)
& & {
& && & //片选
& && &&&wela = 0;
& && & P0 = ((0xfe && count) | (0xfe && (8 - count))) & 0x7f; //选择第(count + 1) 个数码管
& && &&&wela = 1; //打开锁存, 给它一个下降沿量
& && &&&wela = 0;
& && & //段选
& && & dula = 0;
& && &&&P0 = table[datas[count]];&&//显示数字
& && & dula = 1;&&//打开锁存, 给它一个下降沿量
& && & dula = 0;
& && & delay(5); //延时5ms, 即亮5ms
& && &&&//清除段先, 让数码管灭, 去除对下一位的影响, 去掉高位对低位重影
& && &//若想知道影响效果如何, 可自行去掉此段代码
& && &&&//因为数码管是共阴极的, 所有灭的代码为: 00H
& && &&&dula = 0;
& && &&&P0 = 0x00;&&//显示数字
& && &&&dula = 1; //打开锁存, 给它一个下降沿量
& && & dula = 0;
& & }
}复制代码
若去掉将数码灭掉的那4行代码, 显示效果将如下:
而最理想的效果应如下:
这是因为74HC573的锁存, 上一位的结果被锁存了, 在片选后, 也被显示在选中的位上.
只要在片选前将锁存的结果清除, 即可消除这个影响.
本帖子中包含更多资源
才可以下载或查看,没有帐号?
19:49:09  
很详细的AD转换程序,谢谢楼主
助理工程师
22:35:07  
学习了 mark
21:54:06  
楼主,我最近在使用你的程序,发现没接电压LED显示为120左右,过了一段时间就变为100左右了,这是为什么?
15:34:17  
楼主:那个&&读取ADC的时候一定要用数组吗?,那个tmp可不可以直接当做一变量当做数据来用。。
也就是这样在数码管显示的时候:
delay(5);
可以不??
16:05:19  
21:56:35  
高级工程师
22:42:45  
15:52:51  
我只能说,好贴!!!!
12:52:55  
最近想做数控电源,楼主资料真的很有用
09:41:16  
资料很详细,很给力
09:51:50  
助理工程师
09:00:45  
22:11:22  
21:36:13  
最近电设要用,真是十分感谢
01:19:27  
感谢分享,感谢楼主的无私奉献!
这真的是非常好的东西啊,太感谢了!!
09:11:10  
非常感谢!!!!!!!!!!!!!!!!!!!!!!!!!!!
10:19:39  
很好,谢谢楼主 分享!
20:51:38  
必顶啊!楼主威武
11:25:04  
非常感谢楼主!!!
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司ADC0804工作原理及其在单片机中的应用(基于Proteus仿真).doc_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
ADC0804工作原理及其在单片机中的应用(基于Proteus仿真).doc
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢求用通过PCF8591模数转换YL69土壤湿度模块模拟量,用lcd1602显示的程序代码_百度知道
求用通过PCF8591模数转换YL69土壤湿度模块模拟量,用lcd1602显示的程序代码
我有更好的答案
需要带写不
采纳率:75%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 adc0804中文数据手册 的文章

 

随机推荐