标题:
帮忙检查下程序,数字电压表
[打印本页]
作者:
若叶12345
时间:
2017-6-5 19:09
标题:
帮忙检查下程序,数字电压表
include<reg52.h>
#include<intrins.h> //调用_nop_();延时函数用
#define uchar unsigned char#define uint unsigned int
uchar code table[]="0123456789.";//定义显示的数组
sbit lcden=P3^5;//定义管脚
sbit lcdrs=P3^3;
sbit lcdrw=P3^4;
sbit a=P2^1;
sbit b=P2^2;
sbit c=P2^3;
sbit st=P2^4;
sbit eoc=P2^5;
sbit oe=P2^6;
uchar num,flag;
void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)//1602读指令
{ lcdrw=0;
lcdrs=0;
P1=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)//1602读数据
{ lcdrw=0;
lcdrs=1;
P1=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void lcd_init()//1602初始化函数
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()
{
uchar date=0;
float temp=0.0;
uchar q,b,s,g;
a=1;//选着ADC0809的第7通道
b=1;
c=1;
lcd_init();
oe=0;
while(1)
{
st=0;
st=1;
st=0;
delay(5);
while(!eoc)
{
oe=1;
date=P0;
oe=0;
temp= (float) date*5.0/256;//数据处理
temp=temp/100.0;
temp=temp*100000.0;
q=(int)temp/1000;
b=(int)temp%1000/100;
s=(int)temp%1000%100/10;
g=(int)temp%10;
write_com(0x80);//1602显示处理好的数据
write_data(table[q]);
delay(20);
write_data(table[11]);
delay(20);
write_data(table[b]);
delay(20);
write_data(table[s]);
delay(20);
write_data(table[g]);
delay(20);
}
}
}
复制代码
作者:
a11123
时间:
2017-6-5 20:55
有没有仿真图
作者:
卓林2211
时间:
2017-6-5 22:46
管脚定义对了嘛
作者:
51mcu
时间:
2017-6-6 06:34
你的这个程序,没看出什么啊。
作者:
bayga456
时间:
2017-6-7 10:20
oe=1;
date=P0;
oe=0;
temp= (float) date*5.0/256;//数据处理
oe=1是不是A/D芯片转换使能。要不要延时?还有这里是芯片为高电平使能。
另:
temp=temp/100.0;
temp=temp*100000.0;
这两句能不能直接改为 temp=temp*1000.0;
这句s=(int)temp%1000%100/10;能不能改为 s=(int)temp%100/10;
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1