找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3473|回复: 8
打印 上一主题 下一主题
收起左侧

关于用ad转换和单片机的问题

[复制链接]
跳转到指定楼层
楼主

ad转换后,经单片机处理,让数码管显示数值,程序中这句什么意思
dianya=dianyal*20+dianyah*320; //最后的结果是一个四位数,便于显示
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:51088 发表于 2014-8-20 17:04 | 只看该作者
dianyal可能是低位 dianyah可能是高位
回复

使用道具 举报

板凳
ID:58089 发表于 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;


}






回复

使用道具 举报

地板
ID:58089 发表于 2014-8-20 18:01 | 只看该作者
jiege 发表于 2014-8-20 17:04
dianyal可能是低位 dianyah可能是高位

嗯,但他没有用译码器而是直接用下面一段程序实现完成代码的转换
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;

}
回复

使用道具 举报

5#
ID:63839 发表于 2014-8-21 11:58 | 只看该作者
省略句号 发表于 2014-8-20 17:56
嗯,但他没有用译码器而是直接用下面一段程序实现完成代码的转换
unsigned int datpro(void)//ADC0804 读 ...

就是为了便于显示 把二进制换成易于现实的十进制数

评分

参与人数 1威望 +15 黑币 +15 收起 理由
admin + 15 + 15 很给力!

查看全部评分

回复

使用道具 举报

6#
ID:58089 发表于 2014-8-21 16:16 | 只看该作者
NB没B 发表于 2014-8-21 11:58
就是为了便于显示 把二进制换成易于现实的十进制数

那为什么不乘21要乘20
回复

使用道具 举报

7#
ID:26188 发表于 2014-8-21 20:43 来自手机 | 只看该作者
难怪,他在程序中这样做是为了配合显示电路,乘以二十才能得到正确的显示结果,
回复

使用道具 举报

8#
ID:58089 发表于 2014-8-22 08:51 | 只看该作者
hujia 发表于 2014-8-21 20:43
难怪,他在程序中这样做是为了配合显示电路,乘以二十才能得到正确的显示结果,

谢谢了
回复

使用道具 举报

9#
ID:63839 发表于 2014-8-22 09:42 | 只看该作者
省略句号 发表于 2014-8-21 16:16
那为什么不乘21要乘20

配合显示电路啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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