NTC怎么查表得到温度值啊。。

2019-03-24 20:29发布

unsigned int const tab[]={1361 ,1405 ,1450 ,1495 ,1540 ,1587 ,1633 ,1681 ,1728 ,1776 ,//0~9
                                                  1824 ,1873 ,1921 ,1970 ,2019 ,2069 ,2118 ,2168 ,2217 ,2266 ,//10~19
                                                  2316 ,2365 ,2414 ,2463 ,2512 ,2560 ,2608 ,2656 ,2704 ,2751 ,//20~29
                                                  2798 ,2844 ,2890 ,2935 ,2980 ,3025 ,3068 ,3112 ,3155 ,3197 ,//30~39
                                                  3238 ,3279 ,3320 ,3359 ,3398 ,3437 ,3475 ,3512 ,3548 ,3584 ,//0~19
                                                  3619 ,3654 ,3688 ,3721 ,3753 ,3785 ,3816 ,3847 ,3877 ,3906 ,//10~19
                                                  3935 ,3963 ,3990 ,4017 ,4043 ,4069 ,4094 ,4118 ,4142 ,4165 ,//10~19
                                                  4188 ,4211 ,4232 ,4253 ,4274 ,4294 ,4314 ,4333 ,4352 ,4370 ,//10~19
                                                  4388 ,4405 ,4422 ,4439 ,4455 ,4470 ,4486 ,4501 ,4515 ,4529 ,4543};//10~19
uchar keymk(void);
void HC595store(void);
void HC595shift(void);
void HC595sent(uchar x);
void display(uchar dat);
void init(void);
void AD_Init(void);
//void readbyte(void);
//void outmode(void);
//void pwm(void);
unsigned int AD_GetData(void);
uchar keyval;
uint byte,bytev,shi,ge,keyad,Counter,count_2ms,count1,count2;                               
int main(void)//主函数
{       
        init();
        AD_Init();
        keyval=60;
   //T/C0定时中断设置
        TIMSK0 |= (1 << TOIE0);           //T/C0溢出中断允许
        TCCR0B |= (1 <<CS02) | (1 << CS00);  // T/C0工作于普通模式,1024分频,
                                        //定时器频率 = 1M/1024 = 976.5625Hz
        TCNT0 =  255;          //定时初值设置,定时时间 = (256-12)/976.5625=249.856ms
        Counter = 0;                // 1mS计时变量清零
        count_2ms=0;
       
    sei();          //使能全局中断  
        while(1)
        {
                keymk();
                bytev=(AD_GetData()*5);
                //byte=(int)(161-(377500/bytev));
                for(uint i=0;i<91;i++)
                        {
                        if(bytev<=tab[i])
                                byte=i;
                        }
                shi=byte/10;
                ge=byte%100;

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
Li_Lei
2019-03-25 15:03
Blyss89 发表于 2014-7-31 08:33
显示是可以。原来注释掉的一句是用直线模拟的数码管能正常显示,但是查表的时间就有问题。问题在这个查表 ...

我是用matlab算得那个表,算1K个占2K字节存储空间.

一周热门 更多>