找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2726|回复: 4
收起左侧

关于土壤湿度测量的程序!学生党求助讲解!!

[复制链接]
ID:264186 发表于 2017-12-20 12:50 | 显示全部楼层 |阅读模式
#include <reg52.h>
#include <stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int                        // 头文件及宏定义               
uchar code table[]={
0x28,0x7b,0x1c,0x19,0x4b,
0x89,0x88,0x3b,0x08,0x09
};

sbit DI=P1^3;
sbit DO=P1^3;
sbit CS=P1^1;
sbit CLK=P1^2;
sbit w1=P2^2;
sbit w2=P2^0;
uchar data_f,data_b;
/***********************************************************/
void delay(uint z)
{
        uint x,y;
        for(x=0;x<z;x++)
                for(y=110;y>0;y--);
}
void AD_deal()                                                //0832测电压子程序
{
        uchar i;
        DI=1;
        CS=1;
        _nop_();
        CS=0;
        DI=1;
        CLK=1;
        _nop_();_nop_();
        CLK=0;
        _nop_();_nop_();
        CLK=1;
        DI=1;
        _nop_();_nop_();
        CLK=0;
        _nop_();_nop_();
        CLK=1;
        DI=1;          
        _nop_();_nop_();
        CLK=0;
        _nop_();_nop_();
       
        CLK=1;
        _nop_();_nop_();
        CLK=0;
        _nop_();_nop_();
        CLK=1;
       
        for(i=8;i>0;i--)
                {
                data_f|=DO;
                data_f<<=1;
                _nop_();
                CLK=1;
                _nop_();
                _nop_();
                CLK=0;
                _nop_();
                _nop_();       
                }
        for(i=8;i>0;i--)
                {
                data_b<<=1;
                data_b|=DO;
                _nop_();
                CLK=1;
                _nop_();
                _nop_();
                CLK=0;
                _nop_();
                _nop_();
       
                }
        CLK=1;
        _nop_();_nop_();
        CS=1;
}

void display()
{
        int t0,t;
        t0=data_f*1.93/5;
        t=100-t0;
        P0=0xff;
        w1=0;
        P0=table[t/10];
        delay(5);
        w1=1;
       
        P0=0xff;
        w2=0;
        P0=table[t%10];
        delay(5);
        w2=1;
}

void main()                                                                 //主函数
{


        while(1)       
        {       

                AD_deal();
                display();
        }
}
回复

使用道具 举报

ID:255296 发表于 2017-12-22 14:09 | 显示全部楼层
看一看adc0832资料介绍,主要是通过传感器阻值变化和模数转换实现,最近也在做这个
回复

使用道具 举报

ID:264186 发表于 2017-12-23 14:18 | 显示全部楼层
yesning 发表于 2017-12-22 14:09
看一看adc0832资料介绍,主要是通过传感器阻值变化和模数转换实现,最近也在做这个

enen 请问程序里怎样吧输入的电压值转换为百分比数值了?我原理搞懂了一些,但程序有点看不懂,谢谢啦
回复

使用道具 举报

ID:480682 发表于 2019-4-14 23:42 | 显示全部楼层
楼主搞懂了吗?那个w1跟w2是什么啊
回复

使用道具 举报

ID:532517 发表于 2021-4-9 17:03 | 显示全部楼层
毕设很难 发表于 2019-4-14 23:42
楼主搞懂了吗?那个w1跟w2是什么啊

不懂
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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