LCD带温度显示万年历.docx
- 文档编号:2174160
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:17
- 大小:19.24KB
LCD带温度显示万年历.docx
《LCD带温度显示万年历.docx》由会员分享,可在线阅读,更多相关《LCD带温度显示万年历.docx(17页珍藏版)》请在冰豆网上搜索。
LCD带温度显示万年历
LCD带温度显示万年历.txt都是一个山的狐狸,你跟我讲什么聊斋,站在离你最近的地方,眺望你对别人的微笑,即使心是百般的疼痛只为把你的一举一动尽收眼底.刺眼的白色,让我明白什么是纯粹的伤害。
LCD带温度显示万年历(2009-4-515:
02:
00>【收藏】【评论】【打印】【关闭】
标签:
1
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineLCD_DataP2
#defineBusy0x80//用于检测LCD状态字中的Busy标识
sbitDQ=P1^3。
sbitlcdrs=P3^5。
//数据命令选择端 sbitlcdrw=P3^6。 //读写选择端 sbitlcde=P3^7。 //使能信号 sbitSCL2=P1^0。 //SCL2定义为P1口的第3位脚,连接DS1302SCL和ADC0831SCL脚b5E2RGbCAP sbitSDA2=P1^1。 //SDA2定义为P1口的第4位脚,连接DS1302SCL和ADC0831SDA脚p1EanqFDPw sbitRST=P1^2。 //DS1302片选脚 sbitkey0=P0^0。 //定义三个按键 sbitkey1=P0^1。 //加按键 sbitkey2=P0^2。 //减按键 sbitH1=P0^3。 sbitL=P0^4。 bitpresence。 ucharcodecdis2[]={".C"}。 ucharbuzyc,funtion_flag=0,temp_num。 charshi,fen,miao,nian,yue,ri,xin。 ucharbeep。 unsignedchardatatemp_data[2]={0x00,0x00}。 unsignedchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00}。 DXDiTa9E3d unsignedcharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,RTCrpUDGiT 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}。 unsignedcharcodemytab[8]={0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00}。 5PCzVD7HxA unsignedcharl_tmpdate[8]={0x00,59,12,19,2,8,2}。 //显示初值jLBHrnAILg unsignedcharl_tmpdisplay[8]={0x40,0x40,0x40,0x40,0x40,0x40,0x40,0}。 //待显示的数xHAQX74J0X codeunsignedcharwrite_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a}。 //1302写入地址LDAYtRyKfE codeunsignedcharread_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b}。 //1302读出地址Zzz6ZB2Ltk codeunsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}。 //共阴数码管0-9'-''熄灭‘表dvzfvkwMI1 uchardate1[]="MON"。 uchardate2[]="TUE"。 uchardate3[]="WED"。 uchardate4[]="THU"。 uchardate5[]="FRI"。 uchardate6[]="SAT"。 uchardate7[]="SUN"。 #definedelayNOP(>。 {_nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 }。 rqyn14ZNXI /*****************************************************************************************************EmxvxOtOco 字节写入子函数: 将要写入的数字先右移一位,是最低位溢出,然后在scl2的一个上升沿数据被写入DS1302,注意 数据的写入时从低位到高位 *****************************************************************************************************/SixE2yXPq5 voidWrite_Ds1302_Byte(unsignedchardate> { ucharj,temp。 temp=date。 for(j=0。 j<8。 j++> { temp=temp>>1。 //将数据右移一位使最低位溢出 SDA2=CY。 //将待写入数据最低位写入数据缓冲 SCL2=0。 SCL2=1。 //在scl的上升延写入数据 } } /*****************************************************************************************************6ewMyirQFL 字节读出子函数: 分8次读出数据,将读出的数据存入temp: 在时钟信号的下降沿读出一个字节的数据 数据读出也是从低位到高位的 *****************************************************************************************************/kavU42VRUs ucharRead_Ds1302_Byte(> { ucharj,temp。 for(j=0。 j<8。 j++> { temp=temp>>1。 //将temp右移一位使最高位变为次高位,最高为为0 SDA2=1。 SCL2=1。 SCL2=0。 //在scl2的一个下降沿数据读出 if(SDA2==1>//如果读出的数据为1,即在temp的最高位写入1,为0的时候则写入0 temp=temp|0x80。 temp=temp|0x00。 } returntemp。 } /***************************************************************************************************************y6v3ALoS89 数据写入DS1302函数: 在指定地址写入指定数据,在rst为低scl2为低的情况下将rst置高,即允许数据写入 先写入地址 然后写入数据 最后将rst拉低结束数据写入 ****************************************************************************************************************/M2ub6vSTnP voidWrite_Ds1302(unsignedcharaddress,unsignedchardat>0YujCfmUCw { RST=0。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 SCL2=0。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 RST=1。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 //开启,写入数据地址,这是本串口协议的开始,加入延时防止干扰eUts8ZQVRd Write_Ds1302_Byte(address>。 //发送地址 Write_Ds1302_Byte(dat>。 //发送数据 RST=0。 //恢复 } /************************************************************************************************************sQsAEJkW5T 从指定地址读取数据子函数: 在rst为低scl2为低的情况下将rst置高,即允许数据被读出<注意加入延时可以防止干扰) 先写入地址 在分八次吧数据一位位读出,在scl2的一个下降沿数据被读出,数据位从0开始 ***************************************************************************************************************/GMsIasNXkA unsignedcharRead_Ds1302(unsignedcharaddress>TIrRGchYzg { unsignedchartemp1,temp2。 RST=0。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 SCL2=0。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 RST=1。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 _nop_(>。 //开启,写入数据地址,这是本串口协议的开始,加入延时防止干扰7EqZcWLZNX Write_Ds1302_Byte(address>。 temp1=Read_Ds1302_Byte(>。 temp2=temp1>>4。 temp2=temp2*10。 temp1=temp1&0x0f。 temp1=temp1+temp2。 //读出数据的时候要将BCD码转换成十进制 RST=0。 return(temp1>。 //返回 } /***************************************************************************************************lzq7IGf02E 设定时间初值: 在写入之前应当把要写入的数据转换成BCD码的形式 每写入一次数据记得都要打开1302的写入允许 ****************************************************************************************************/zvpgeqJ1hk voidSet_RTC(void>//设定日历 { unsignedchari,*p,tmp。 for(i=0。 i<8。 i++> {//数据的转换,DS1302以4位存储一个10进制数,因此需要将数据进行转换 tmp=l_tmpdate[i]/10。 l_tmpdate[i]=l_tmpdate[i]%10。 l_tmpdate[i]=l_tmpdat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD 温度 显示 万年历