标题: 关于用ad转换和单片机的问题 [打印本页]
作者: 省略句号 时间: 2014-8-20 11:47
标题: 关于用ad转换和单片机的问题
ad转换后,经单片机处理,让数码管显示数值,程序中这句什么意思
dianya=dianyal*20+dianyah*320; //最后的结果是一个四位数,便于显示
作者: jiege 时间: 2014-8-20 17:04
dianyal可能是低位 dianyah可能是高位
作者: 省略句号 时间: 2014-8-20 17:56
file:///c:/users/administrator.user-20140308fi/appdata/roaming/360se6/User Data/temp/eb05e7b8-4046-496a-a76e-9acaedd4d97a.jpgfile:///c:/users/administrator.user-20140308fi/appdata/roaming/360se6/User Data/temp/eb05e7b8-4046-496a-a76e-9acaedd4d97a.jpg
嗯,但他没有用译码器而是直接用下面一段程序实现完成代码的转换
unsigned int datpro(void)//ADC0804 读出的数据处理
{
unsigned char x;
unsigned int dianyah,dianyal; //用于存储读出数据的高字节和低字节
unsigned int dianya="0"; //存储最后处理完的结果 注意数据类型
for(x=0;x<10;x++) //将 10次测得的结果存储在dianya中
{
dianya=adc0804()+dianya;
}
dianya=dianya/10; //求平均值
dianyah=dianya&0xf0; //屏蔽低四位
dianyah=dianyah>>4; //右移四位 取出高四位
dianyal=dianya&0x0f; //屏蔽高四位 取出低四位
dianya=dianyal*20+dianyah*320; //最后的结果是一个四位数,便于显示
return(dianya); //返回最后处理结果
}
void Led()
{
unsigned int date;
date=datpro(); //调用数据处理最后结果
P2=P2&0xef;
P0=seg7code[date/1000]|0x80; //输出个位数和小数点
Delay(8);
P2=P2|0xf0; P2=P2&0xdf;
P0=seg7code[date%1000/100]; //输出小数点后第一位
Delay(8);
P2=P2|0xf0; P2=P2&0xbf;
P0=seg7code[date%100/10]; //输出小数点后第二位
Delay(8);
P2=P2|0xf0; P2=P2&0x7f;
P0=seg7code[date%10]; //输出小数点后第三位
Delay(8);
P2=P2|0xf0;
}
作者: 省略句号 时间: 2014-8-20 18:01
嗯,但他没有用译码器而是直接用下面一段程序实现完成代码的转换
unsigned int datpro(void)//ADC0804 读出的数据处理
{
unsigned char x;
unsigned int dianyah,dianyal; //用于存储读出数据的高字节和低字节
unsigned int dianya="0"; //存储最后处理完的结果 注意数据类型
for(x=0;x<10;x++) //将 10次测得的结果存储在dianya中
{
dianya=adc0804()+dianya;
}
dianya=dianya/10; //求平均值
dianyah=dianya&0xf0; //屏蔽低四位
dianyah=dianyah>>4; //右移四位 取出高四位
dianyal=dianya&0x0f; //屏蔽高四位 取出低四位
dianya=dianyal*20+dianyah*320; //最后的结果是一个四位数,便于显示
return(dianya); //返回最后处理结果
}
void Led()
{
unsigned int date;
date=datpro(); //调用数据处理最后结果
P2=P2&0xef;
P0=seg7code[date/1000]|0x80; //输出个位数和小数点
Delay(8);
P2=P2|0xf0; P2=P2&0xdf;
P0=seg7code[date%1000/100]; //输出小数点后第一位
Delay(8);
P2=P2|0xf0; P2=P2&0xbf;
P0=seg7code[date%100/10]; //输出小数点后第二位
Delay(8);
P2=P2|0xf0; P2=P2&0x7f;
P0=seg7code[date%10]; //输出小数点后第三位
Delay(8);
P2=P2|0xf0;
}
作者: NB没B 时间: 2014-8-21 11:58
就是为了便于显示 把二进制换成易于现实的十进制数
作者: 省略句号 时间: 2014-8-21 16:16
那为什么不乘21要乘20
作者: hujia 时间: 2014-8-21 20:43
难怪,他在程序中这样做是为了配合显示电路,乘以二十才能得到正确的显示结果,
作者: 省略句号 时间: 2014-8-22 08:51
谢谢了
作者: NB没B 时间: 2014-8-22 09:42
配合显示电路啊
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |