文档详情

单片机温度传感器C程序.doc

发布:2017-11-28约4.4千字共7页下载文档
文本预览下载声明
//DS18B20温度传感器和数码管显示 //编程时间:2010.4.7-2010.4.9 //陈小雄上传 // //********************************************************** //连线表: CPU=stc89C52 SysClock=12MHz // LEDLE=P1.0 控制位高电平有效 LEDSEG=P2 KEYBOARD=P3 LEDWEI=P0.5-0,LED高到底 //********************************************************** //DS18B20 //********************************************************** //连线表: CPU=stc89C52 SysClock=12MHz * //单总线: TMDAT=P1.1 // //********************************************************** #include reg52.h #define uchar unsigned char #define uint unsigned int uchar discount=0;//显示扫描位计数 uchar last=0;//最终温度值 uchar itcount=0x13;//定时器延时计数 uchar seg[4];//数码管显示暂存 uchar tem[2];//读取温度暂存 uchar flag=0;//温度正负标志位 /********************LED引脚定义********************/ sfr LEDSEG=0xA0;//P2 sfr LEDWEI=0xB0;//P3 /********************DS18B20引脚定义********************/ sbit TMDAT=P1^0; //温度传感器数据位 /********************DS18B20函数定义*******************/ void dmsec(uint count);//延时(count)毫秒 void tmreset(void); //产生复位信号 void tmpre(void); //检测器件应答信号 bit tmrbit(void); //从总线读一个bit uchar tmrbyte(void); //从总线读一个字节 void mwbyte(uchar dat);//向总线写一个字节 void tmstart(void); //启动一次温度转换 uchar tmrtemp(void); //读取温度数据 /********************LED函数定义*******************/ uchar * uchartodectoseg(uchar unm);//字符转换为十进制然后转换为数码管段表 void disp(uchar *seg);//显示函数 void delay_ms(uint t); //延时函数 /************************************************/ uchar code table[]= { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x00,0x39 }; /*************数码表*******0 1 2 3 4 5 6 7 8 9 无显示 C**************/ /************************************************/ uchar * uchartodectoseg(uchar unm) { uchar x00,xx,x0,x,n; x00=unm/100;//取百位 xx=unm%100;//取余 x0=xx/10;//取十位 x=xx%10;//取余即取个位 n=0; seg[n]=table[x00]; n++; seg[n]=table[x0]; n++; seg[n]=table[x]; n++; seg[n]=table[11];//最后一位显示摄氏度符号C if(flag==1) seg[0]=0x40;//显示负号‘-’ if(seg[0]==table[0]) seg[0]=table[10]; //如果百位为零则不显示 if((seg[0]==table[0
显示全部
相似文档