电压输入单片机,输出在lcd显示屏,求大神告诉程序,用的51单片机内部自带的,ad转换。谢谢各位大

电压输入单片机,输出在lcd显示屏,求大神告诉程序,用的51单片机内部自带的,ad转换。谢谢各位大神了

第1个回答  2015-05-20
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

unsigned int qian,bai,shi,ge;

void delay (uint z) //z毫秒延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void write_com(uchar com) //LCD写指令
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}

void write_data(uchar dat) //LCD写数据
{
lcdrs=1;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}

void init() //液晶初始化
{
// dula=0;
// wela=0;
lcden=0;
write_com(0x38);//
write_com(0x0f);//
write_com(0x06);//
write_com(0x80);
write_com(0x01);//
}

void Display(uint Adr)
{
// uint i=Adr;
qian=num/1000;
bai=num%1000/100;
shi=num%100/10;
ge=num%10;
write_com(0x80+Adr);
write_data(0x30+qian);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);

}
这个是1602的液晶屏控制程序,我自己写的,亲测可用。你可以根据自己的情况改写一下,num是全局变量,把要显示的四位数赋给num,DISPLAY这个函数会把它拆解开显示出来,Adr这个变量作为形参赋给Display这个函数,这个Adr是你要显示的地址信息,具体地址参考1602LCD内部的寄存器代码。Adr=0的话是在第一排第一个数字开始显示,40是在第二排第一个开始显示。电压值的读取你看一下你这个AD转换是串口的还是并口的,如果是并口就很简单直接读取引脚状态就行了,如果是串口你就写一个串口读写函数就行了,具体的不清楚的的AD型号,你自己查查看吧本回答被提问者和网友采纳

51单片机与AD转换程序
include<reg51.h> define uchar unsigned char define uint unsigned int sbit wr=P2^6;sbit rd=P2^7;sbit adint=P2^5;delay(uint z){ uchar w;while(z--){ for(w=0;w<125;w++);} } ad_star(){ wr=1;wr=0;wr=1;} main(){ uchar a;while(1){ ad_star();while(adint);...

求51单片机实现AD转换及串口数据发送的程序?谢谢了!
A2=temp%1000\/100; \/\/ 数码管第二位显示数据 A3=temp%1000%100\/10;\/\/数码管第三位显示数据 A4=temp%1000%100%10; \/\/数码管第四位显示数据 } }

普中的51单片机stc90C516RD+中的AD转换怎么用(买了一个风速传感器)_百度...
对于使用51单片机STC90C516RD+进行AD转换的问题,您可以按照以下步骤进行操作:1. 连接传感器:将风速传感器与单片机进行连接。通常,风速传感器会有两个输出引脚,其中一个是信号引脚,用于连接到单片机的ADC输入引脚。2. 配置引脚:在编程之前,您需要将相应的引脚配置为ADC输入模式。通过查阅STC90C516RD+...

51单片机有外部数据存储器的时候怎么开始AD转换?
movx @dptr,A,开启AD转换会与外部数据存储器发生冲突,那是因为DPTR中的地址没有指向AD转换器的端口地址,或者AD端口地址与外部数据存储器的地址重复了。没有具体电路,真正原因不好确定。单片机可采用端口模式与AD转换器连接比较好,见下图。

51单片机AD转换不稳定
1.是不是电平有跳动的不稳定,比如输入电平抖动(干扰导致),你只是肉眼没看出来而已,所以认为它是稳定的。这个解决方法如果输入是稳定电压(直流),那就在电压之间加上个电容就完事了。2.是不是输入电压的范围超了?如果是范围超了,加个分压电路,然后在单片机程序里面再按比例的增加就行了。

怎样把51单片机读回来的AD值转换成电压值?
通常是0-5V,对应于0-11111...1111(24位二进制)那么1V就是:3355443(十进制)。用读回来的值AD_data除以3355443,得到的整数部分就是0~5,即为电压的整数部分。把AD_data除以3355443的余数,再除以0.1V所对应的数值(请自己算一下),取整数将得到0~9,即为电压的第一位小数。……取多少位...

为什么51单片机中的ADC转换。没有输入电压。他也一直变动?
只要启动转换了就会有AD转换的结果,你没加AD电压,那么输出有值,说明电源电压的地不太干净,或者你的AD电路有写问题。

51单片机AD转换的问题,求大神解答。
就是个语法 dat<<=1 ==> dat=dat<<1;dat|=DOUT ==> dat=dat|DOUT

51单片机的ADC请教
1,作AD用必须一个接电源一个接地,两个电阻中间即VREF接单片机引脚或接一个1K的电阻再接单片机引脚。2,IO口上拉选择4,7K--10K都可以。3,IO口接按键接地端一般不需再接电阻,直接接地即可。

51单片机采集的AD值的转换程序问题?
0~2.5V,对应于AD_data = 0~11111...1111(24位二进制);那么1V就是:6710886(十进制)。用24位值AD_data除以6710886,得到的整数部分就是0~5,即为电压的整数部分。再把刚才除得的余数,再除以10,取整数将得到0~9,即为电压的第一位小数;余数,再除以10,取整数将得到0~9,即为电压...

相似回答