单片机温度计设计 我的课题需要做一个这样的试验,但是我跟本没学过单片机,请大侠们帮帮我...

作者&投稿:溥厚 (若有异议请与网页底部的电邮联系)
最近有个课题遇到了些问题,想请单片机的大牛指点。~

你试试用C#来读取excel文件里面的数据,然后编一个上位机,通过串口来把数据发送到单片机上。

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1339756&bbs_page_no=2&search_mode=9&search_text=null&bbs_id=1006

本大虾来教你

程序在下面,器件是18b20

下面有原理图

#include<reg52.h>

#include <intrins.h>

#define uint unsigned int 

#define uchar unsigned char

sbit DQ=P3^4;

sbit ka=P3^0;

sbit guan=P3^1;

uchar wendu[]={0x00,0x00};

uchar code tab[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};

uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar bai,shi,ge,xiao,wen;

//延时子程序

void delay(uint z)

{

 uint x,y;

 for(x=z;x>0;x--)

  for(y=110;y>0;y--);

}

void delay1(uint a)

{

    while(--a);

}

uchar init_18b20() //18b20初始化

{

    uchar b;

    DQ=1;

    delay1(8);

    DQ=0;

    delay1(90);

    DQ=1;

    delay1(8);

    b=DQ;

    delay1(100);

    DQ=1;

    return b;   

}

uchar du()//读字节

{

    uchar i,dat=0;

    DQ=1;_nop_();

    for(i=0;i<8;i++)

    {

        DQ=0;

     dat >>=1;

     DQ=1;

     _nop_(); _nop_();

     if(DQ)dat|=0x80;  

        delay1(30);

        DQ=1;

    }

    return dat;

}

void xie(uchar da)//写字节

{

    uchar i;

    for(i=0;i<8;i++)

    {

         DQ=0;

         DQ=da & 0x01;

         delay1(5);

         DQ=1;

         da>>=1;

    }

}

void duwendu()

{

    while(init_18b20());      //DQ=1;等待

    xie(0xcc);

    xie(0x44);

    init_18b20();

    xie(0xcc);

    xie(0xbe);

    wendu[0]=du();

    wendu[1]=du();

void xshi()

    uchar i;     

    xiao=tab[wendu[0] & 0x0f];

    wen=((wendu[0] & 0xf0)>>4) | ((wendu[1] & 0x07)<<4);

    bai=wen/100;

    shi=wen%100/10;

    ge=wen%10;

    

    for(i=0;i<15;i++)

    {

     P1=0xfe;

     P2=duanma[xiao];

     delay(5);

     P1=0xfd;

     P2=duanma[ge];

     delay(5);

     P1=0xfb;

     P2=duanma[shi];

     delay(5);

     P1=0xf7;

     P2=duanma[bai];

     delay(5);           

    }

}

void main()

{

    ka=0;

    guan=0;

    duwendu();

    delay(10);

    while(1)

    {

        duwendu();

        xshi();

        if(wen>=25)  //温度高于25度 开风扇

        {

            ka=1;

            guan=0;    

        }

        else 

        {

            ka=0;

            guan=1;

        }   

    }

}



要我说,趁这个机会正好学学单片机

2


南郑县13526027489: 8051单片机数字温度计单片机的设计设计制作一台热敏电阻温度计,要求如下.a.测量温度为10~150℃.b.温度误差不大于0.5%.c.温度用4位数码管显示.d.以热... -
芮勇槐耳:[答案] -55~125度,你自己修改: ; END

南郑县13526027489: 基于单片机的数字温度计设计 -
芮勇槐耳: 你可用SD18B20 -50 +125°完全适合-20 +50° 的测量,这是单片机都采用的,体积如三极管大小,精度0.5%.

南郑县13526027489: 用8051单片机设计一数字式温度计 的电路图 有程序的最好 谢了 -
芮勇槐耳: 这个电路很简单,我说一下就可以了.数字式温度传感器用最常用的DS18B20,它只有3个管脚,一个接电源,一个接地,另一个接8051单片机就可以了.温度值用数码管显示.这样整个电路就接好了.如果楼主觉得我回答的可以别忘了给我加...

南郑县13526027489: 单片机课程设计 数字温度计 -
芮勇槐耳: 用ds18b20吧,他的精度和范围绝对能满足你的要求,而且输出的是数字信号,ad都省了,我原来做过,现在还有点资料,要的话我给你发邮箱.

南郑县13526027489: 基于单片机的温度监控监测系统的设计怎么做?要具体电路图.谢谢 -
芮勇槐耳: 温度传感器:1820,太常用了~~直接数字的,都不用转换了 电源,5v直流、这不会做就别做其他的了,没意义.显示就用2位数码管,驱动的话,搞个5v和三极管加电阻的电路.执行部分:你就检测,执行部分没有.如果要有控温,那可以搞个正弦调制弱电控制强电的电路.或者直接用占空比型号控制驱动电路.驱动电路用光耦开关设计简单.电路图,哥哥,电路图都出来的话,你就只要焊电路了~~,真不会,百度下就搞定了~~ 晕,这是最简单的系统了.上课没认真啊你~~

南郑县13526027489: 课程设计题目《数字温度传感器》,请问用单片机做需要具体买哪些东西?详细清单!以及编写程序用什么语言 -
芮勇槐耳: 单片机STC89C52、10uf/16v电解电容一个(单片机复位电路)、10k直插电阻一个(单片机复位电路)、22pf瓷片电容2个(晶振电路)、11.0592Mhz晶振一个(晶振电路)、DS18B20(温度传感器)、4位共阳数码管(显示电路),1k电阻12个(数码管限流)、9012三极管(驱动数码管)、一个DC5v插座,一个洞洞板、排针若干.编写语言当然是C语言了.

南郑县13526027489: 单片机数字温度计课程设计
芮勇槐耳: 范围不小啊,精度有什么要求.一般的方案 -20至+100 以外估计误差有5度了,有精度要求就用铂电阻加AD.最省事的就去找个18b20的汇编程序做电路试试吧2,3,软件上处理就好了.“不要C语言编的”,你出些钱找人写吧,满足你的要求要免费做个项目了.........

南郑县13526027489: 温度传感器与单片机结合 设计一个电路 不要太复杂 要电路图 和 具体数值 和型号 谢谢 -
芮勇槐耳: 也就是做一个数字温度计(体温计)是吧,18B20数字温度计,显示可以用数码管或者LCD1602显示,或者12864都可以的.电路为PROTEL绘制.,程序都有的论文也有的 需要QQ我

南郑县13526027489: 单片机课程设计 单片机温度的检测与显示的设计 -
芮勇槐耳: 用18b20做很简单啊.温度的子程序给你,,你重定义一下接口,主程序已经调用出温度了,你送到显示就行了../* 延时t毫秒 */ void delay(uint t) { uint i; while(t--) { /* 对于11.0592M时钟,约延时1ms */ for (i=0;i<125;i++) {} } } /* 产生复位脉冲初...

南郑县13526027489: 求高手帮做一个基于S51单片机的温湿度计C语言程序以及其原理图 -
芮勇槐耳: char key() { char a,temp,c=99; for(a=0;a<3;a++) { p1=0x08<<a; temp=P1&0x07; switch(temp) { case 0x01: c=a;break; case 0x02: c=a+3;break; case 0x04: c=a+6;break; } if(c<99)//按键抗弹跳 } return c; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网