资源描述:
《可调时,温度显示,电子表1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、可调时,温度显示,电子表1#include"reg51.h"#defineucharunsignedchar#defineuintunsignedintsbitSCLK=P1^0;//定义DS1302引脚sbitIO=P1^1;sbitRST=P1^2;sbitDQ=P0^1;//定义DS18B20引脚sbitrs=P0^5;//定义1602液晶引脚6sbitrw=P0^6;sbiten=P0^7;sbitk1=P1^3;//定义独立按键sbitk2=P1^4;sbitk3=P1^5;sbitk4=P
2、1^6;ucharmiao=0,fen=30,shi=8,ri=22,yue=10,nian=12,zhou=3;ucharflag=0,w=0;bitq=0;bitz=0;floattt;uinttemp;uchartemp0[3];uchartemp1[6];ucharcodetimema[]={"0123456789"};//液晶时间显示数据ucharcodeaddress[]={0x02,0x03,0x05,0x06,0x08,0x09,0x0f,0x40,0x41,0x43,0x44,0x4
3、6,0x47};//光标显示地址ucharcodeweeklist[]={'S','u','n','M','o','n',//星期显示数据'T','u','e','W','e','d','T','h','u','F','r','i','S','a','t'};//*******延时函数********//voiddelay1(uintf){while(f--);}//*****复位1302*****//voidreset1302(){RST=0;SCLK=0;RST=1;}//********十进制数
4、据转换为BCD码的函数*******//ucharDB(uchary){ucharbcd;bcd=((y/10)<<4
5、(y%10));return(bcd);}//********BCD码转化为十进制数******//ucharBD(ucharbcd){ucharz;z=(((bcd>>4)&0x0f)*10+(bcd&0x0f));return(z);}///////////1602液晶的操作//////////////**********写指令操作**********//voidwc(uchar
6、com){rs=0;//写指令允许rw=0;//写入P2=com;delay1(5);en=1;delay1(10);en=0;}//**********写数据操作**********//voidwd(uchardate){rs=1;rw=0;//写入//写数据操作允许P2=date;delay1(5);en=1;delay1(10);en=0;}//***********对液晶控制器进行初始化操作**********//voidinit1602()//对液晶控制器进行初始化操作{en=0;wc(0x
7、38);//对液晶显示模式设置wc(0x0c);//无光标,光标不闪wc(0x06);wc(0x01);}///////////////////////对DS18B20进行的操作/////////////////////////***********DS18B20初始化函数***********//bitds18b20_init(){bitflag;DQ=0;//单片机向ds18b20发出低电平复位脉冲delay1(60);//复位脉冲持续480~640us;DQ=1;//释放总线,等待从机发出应答脉
8、冲,主机进入接收状态delay1(3);//主机进入接收状态15~60us后,主机开始检测I/O引脚上的下降沿,//已确定总线上是否存在从机flag=DQ;//检测总线电平,若为低,则从机应答,否则未应答delay1(50);//从机低电平持续时间为60~240us;主机整个接收状态应至少480usreturn(flag);}//*************向DS18B20写入一个字节函数****************//voidwritebyte(uchardate){uchari;bittestb
9、;for(i=0;i<8;i++){testb=date&0x01;date>>=1;if(testb)//写1{DQ=0;//拉低总线,进入写时隙delay1(1);//拉低总先后15us内必须释放总线DQ=1;//拉高总线,并维持至少60usdelay1(6);//此处已包含两个写时隙间隔至少一微秒}else{DQ=0;//拉低总线,进入写时隙delay1(6);//拉低总先后15us内必须释放总线DQ=1;//拉高总线,并维持至少60usdelay