基础不好,求C51怎么算这个?
冲压发动机2011/03/26电子技术 IP:广东
temp=(ADC-5.58)/-0.035          突然发现我什么都不懂。
来自:电子信息 / 电子技术
14
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
warmonkey
13年11个月前 IP:未同步
286780
如果ADC是ADC数据寄存器的名称,那么你写的是对的。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
refinder
13年11个月前 IP:未同步
286849
float temp;
temp=((float)ADC-5.58)/0.035*(-1);
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
冲压发动机作者
13年11个月前 IP:未同步
286877
uint16 temp;

temp=(ADC-5.58)/-0.035;//ADC=4.8;
shi=temp/10;
ge=temp%10;
结果数码管显示57;用计算器算出来是20左右。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
冲压发动机作者
13年11个月前 IP:未同步
286878
回 2楼(refinder) 的帖子
你的我会试试看!谢谢/
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wacke
13年11个月前 IP:未同步
286990
ADC的值是不是电压值,需要根据AD分辨率和REF电压变成电压后再进行计算。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
冲压发动机作者
13年11个月前 IP:未同步
286992
之前对它加工过了。ADC是转换之后真正的电压、KEIL 定义float temp;就出错。怎么回事?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
丁当
13年11个月前 IP:未同步
287048
许久没用keil了,你也没说咋错误了,貌似你包含头文件不对了。楼主是否在编温度显示程序?呵呵,怀念啊
你ADC是什么数据类型的?需要转换吗?temp就用unsigned char试下吧,
unsigned char temp;
temp=(5.58-ADC)/0.035;//ADC=4.8;
shi=temp/10;
ge=temp%10;
这个看看如何。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
44670
13年10个月前 IP:未同步
290246
51单片机浮点需要软件模拟,尽量避免浮点运算,精度要求不高的话可以用整数运算代替。
如果非要用浮点keil c51好像需要额外的库
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
婺源寻芳
13年10个月前 IP:未同步
290248
当然是用定点运算,怎么用浮点运算呢?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
冲压发动机作者
13年10个月前 IP:未同步
292921
算是做得差不多了,有兴趣的可以指点一下。
attachment icon ceshi.rar 69.47KB RAR 40次下载
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
冲压发动机作者
13年10个月前 IP:未同步
292922
if(u==10)
       {                                                
             u=0;
             flag++;
        
            temp=read_AD(CH1)*2;//电阻分压过,值要乘2
              
            if(temp<5590)//高于0度
            {
                LED=1;
              temp=(temp-5590)/-40;
            }
            if(temp>5590)//低于0度
            {
                LED=0;
                temp=(temp-5590)/40;
            
            }    
        
                 shi=temp%100/10;  //取十位
                ge=temp%10;          //取个位
        }
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
冲压发动机作者
13年10个月前 IP:未同步
292923
uint16 read_AD(uint8 channel)
{
    uint8 AD_finished=0;      
    uint16 h_val;
    uint16 l_val;
    ADC_RES = 0;
    ADC_RESL = 0;

    channel &= 0x01;      
    ADC_CONTR = AD_SPEED;  //转换速度90个时钟一次
    delay_us(1);
    ADC_CONTR |= channel; //选通道、      
    delay_us(1);
    ADC_CONTR |= 0x80;   //开ADC电源
    delay_us(1);            
    ADC_CONTR |= 0x08;   //启动AD转换  
    AD_finished = 0;
    while ( AD_finished ==0 )  
    {
        AD_finished = (ADC_CONTR & 0x10); //查询标志位
    }
    ADC_CONTR &= 0xE7;//标志手动清0        
    h_val = ADC_RES;//AD寄存器高8位。
    h_val = h_val<<2;
    l_val = ADC_RESL & 0X03; //AD寄存器低8位,2位有效。
    
        
    h_val = h_val | l_val;
     h_val=(h_val*5/1024)*1000;    //换算成电压放大1000倍
    return (h_val);              
}
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
rabbit
10年6个月前 IP:未同步
708745
天啊51做浮点运算
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
冲压发动机
笔友
文章
28
回复
174
学术分
0
2006/03/11注册,4年7个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}