基于单片机的低功耗温度记录仪设计方案

基于单片机的低功耗温度记录仪设计方案

ID:1347595

大小:1.07 MB

页数:12页

时间:2017-11-10

基于单片机的低功耗温度记录仪设计方案_第1页
基于单片机的低功耗温度记录仪设计方案_第2页
基于单片机的低功耗温度记录仪设计方案_第3页
基于单片机的低功耗温度记录仪设计方案_第4页
基于单片机的低功耗温度记录仪设计方案_第5页
资源描述:

《基于单片机的低功耗温度记录仪设计方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于单片机的低功耗温度记录仪设计方案附录1:总体电路图:附录2:单片机程序:#INCLUDE#INCLUDE#DEFINEUCHARUNSIGNEDCHARBITTFLAG;//温度正负标志SBITDQ=P3^7;//温度输入口SBITDIN=P0^7;//LED小数点控制12UCHARCODEDITAB[16]={0X00,0X01,0X01,0X02,0X03,0X03,0X04,0X04,0X05,0X06,0X06,0X07,0X08,0X08,0X09,0X0

2、9};//温度小数部分用查表法UNSIGNEDCHARCODEDISPCODE[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X00,0X40};//共阴LED段码表0X40负UNSIGNEDCHARDISPBITCODE[]={0XFE,0XFD,0XFB,0XF7,};UCHARDATATEMP_DATA[2]={0X00,0X00};//读出温度暂放UNSIGNEDCHARDISPBUF[5]={0,0,0,0,0};VOIDDIGITALSHO

3、W(UNSIGNEDCHARA3,UNSIGNEDCHARA2,UNSIGNEDCHARA1,UNSIGNEDCHARA0){UNSIGNEDCHARI;DISPBUF[0]=A0;DISPBUF[1]=A1;DISPBUF[2]=A2;DISPBUF[3]=A3;FOR(I=0;I<4;I++){P2=0XFF;//关闭所有显示P0=DISPCODE[DISPBUF[I]];P2=DISPBITCODE[I];IF(I==1){DIN=1;}}}/**********该程序为总线上只有一个器件*********

4、*///毫秒延时11.059MHZVOIDDMSEC(UNSIGNEDINTCOUNT){UNSIGNEDINTI;//1MS延时WHILE(COUNT--){FOR(I=0;I<125;I++){}12}}VOIDDELAY(UNSIGNEDINTNUM)//延时函数{WHILE(--NUM);}//复位脉冲VOIDTMRESET(VOID){DQ=0;DELAY(90);//精确延时大于480USDQ=1;DELAY(4);//90,4可以小范围变化}//存在脉冲VOIDTMPRE(VOID){WHILE(D

5、Q);WHILE(~DQ);DELAY(4);}//读一个位BITTMRBIT(VOID){UNSIGNEDINTI;BITDAT;DQ=0;I++;//I++;大概1USDQ=1;I++;I++;DAT=DQ;DELAY(8);RETURN(DAT);}//读一个比特12UNSIGNEDCHARTMRBYTE(VOID){UNSIGNEDCHARI,J,DAT;DAT=0;FOR(I=1;I<=8;I++){J=TMRBIT();DAT=(J<<7)

6、(DAT>>1);}RETURN(DAT);}//写一个比特

7、VOIDTMWBYTE(UNSIGNEDCHARDAT){UNSIGNEDINTI;UNSIGNEDCHARJ;BITTESTB;FOR(J=1;J<=8;J++){TESTB=DAT&0X01;DAT=DAT>>1;//从低位开始?IF(TESTB){//WRITE1DQ=0;//先拉低I++;I++;//>1USDQ=1;DELAY(4);}ELSE{//WRITE0DQ=0;DELAY(4);//大一点没影响,但不能太大,写一个位在30US内DQ=1;12I++;I++;//再拉高}}}//DS1820开始

8、转换VOIDTMSTART(VOID){DMSEC(1);TMRESET();TMPRE();DMSEC(1);TMWBYTE(0XCC);//SKIPROMTMWBYTE(0X44);//转换}//读取温度READ_TEMP(){TMRESET();TMPRE();DMSEC(1);TMWBYTE(0XCC);//SKIPROMTMWBYTE(0XBE);//转换TEMP_DATA[0]=TMRBYTE();//LSB低8位TEMP_DATA[1]=TMRBYTE();//MSB高8位IF((TEMP_DATA

9、[1]&0X80)==0X80)//判断温度正负{TEMP_DATA[1]=~TEMP_DATA[1];TEMP_DATA[0]=~TEMP_DATA[0]+1;//负温度处理(DS18B20的负温度是正的反码,即将它取反+1,就得到正的温度)TFLAG=0;}ELSE12{TFLAG=1;}}/**********MAIN**********/VOIDMAIN(VOID

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。