




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*系统名称:电子万年历日期:2008,7,18功能描述:LCD12864串行模式显示,DS1302读取时间年月份,18B20 读取温度*/#include #include #include #define uchar unsigned char#define uint unsigned int/*-LCD12864相关声明-*/#define com 0#define dat 1sbit cs =P16;sbit sid=P14;sbit sck=P12;uchar code TAB1=电字钟w418781840;/第一行初始化.uchar code TAB2=20 年 月 日; /第二行uchar code TAB3=星期 : : ; /第三行uchar code TAB4=室温: ; /第四行/*-DS1302相关声明-*/char TAB_1302= 0x00,0x29,0x02, /秒:分:时.0x18,0x06,0x06,0x08; /日:月:星期:年.uchar code TAB_XQ=一二三四五六日;/把DS1302数字日期转换为中文字符.sbit T_CLK=P24; /* 实时时钟的时钟线引脚*/sbit T_IO=P25; /* 实时时钟的数据线*/sbit T_RST=P26; /* 实时时钟的复位线引脚*/uchar bdata datbyte;sbit datbyte0=datbyte0;sbit datbyte7=datbyte7; /*-18B20相关声明-*/uchar dis116;sbit DQ=P10; /*DS18B20温度检测*/ /*-键盘相关声明-*/sbit key=P32; /功能键sbit key1=P33; /只有加1键uchar sum,keyflag=0; /调用时,分,秒,标志,调用键盘处理标志./*-以下为LCD12864相关函数-*/* 函数名称:void delay1ms(uint x)函数功能: 延时1MS*/void delay1ms(uint x)uint i,j;for(i=0;ix;i+)for(j=0;j120;j+); /*函数名称:void w_12864byte(uchar byte)函数功能: 写字节*/void w_12864byte(uchar byte)uchar i;for(i=0;i8;i+)sck=0;byte=1;sid=CY;sck=1; /*函数名称:uchar r_12864byte(void)函数功能: 读字节*/uchar r_12864byte(void)uchar i,temp1,temp2;temp1 = 0;temp2 = 0;for(i=0;i8;i+)temp1=temp11;sck = 0;sck = 1; sck = 0;if(sid) temp1+;for(i=0;i8;i+)temp2=temp21;sck = 0;sck = 1; sck = 0; if(sid) temp2+; return (0xf0&temp1)+(0x0f&temp2);/*函数名称:void c_12864busy( void )函数功能: 检测忙函数*/void c_12864busy( void )do w_12864byte(0xfc); /11111,RW(1),RS(0),0while(0x80&r_12864byte(); /*函数名称:void w_12864(bit dat_com,uchar byt)函数功能: 写入函数*/void w_12864(bit dat_com,uchar byt)uchar temp;if(dat_com=0) /为零,写入指令 temp=0xf8; /11111,RS(0),RW(0),0else /否则,写入数据temp=0xfa; /11111,RS(1),RW(0),0 cs=1;c_12864busy();w_12864byte(temp);w_12864byte(byt&0xf0); /写入高四位w_12864byte(byt4); /写入低四位cs=0;/*函数名称:void init_12864(void)函数功能:初始化12864*/void init_12864(void)w_12864(com,0x30); /基本指令功能.w_12864(com,0x0c); /显示打开,关光标,反白关.w_12864(com,0x01); /清屏指令.w_12864(com,0x06); /AC自动加一/*-以下为DS1302相关函数-*/*函数名称:void w_1302byte(uchar date)函数功能:写一个字节(上升沿)*/void w_1302byte(uchar date) uchar i; datbyte=date;for(i=0;i=1;/*函数名称:uchar r_1302byte(void)函数功能:读一个字节(下降沿)*/uchar r_1302byte(void) uchar i;datbyte=0;for(i=0;i=1;return(datbyte);/*函数名称:void write_1302(uchar addr,uchar date)函数功能: 指定位置写数据*/ void write_1302(uchar addr,uchar date) T_RST=0;T_CLK=0;T_RST=1;w_1302byte(addr);w_1302byte(date);T_CLK=0;T_RST=0; /*函数名称:uchar read_1302(uchar addr)函数功能: 指定位置读数据*/ uchar read_1302(uchar addr) uchar dat1,dat2,temp;T_RST=0;T_CLK=0;T_RST=1;w_1302byte(addr);temp=r_1302byte();T_RST=0;T_CLK=0;dat1=temp/16;dat2=temp%16;temp=dat1*10+dat2;return(temp); /*函数名称:void init_1302(void)函数功能: 初始化*/void init_1302(void) uchar i;uchar addr=0x80;write_1302(0x8e,0x00);for(i=0;i7;i+) write_1302(addr,TAB_1302i);addr+=2;write_1302(0x8e,0x80);/*函数名称:void get_1302(void) 功能说明:读取DS1302时钟信息.*/ void get_1302(void) uchar i,addr=0x81;for(i=0;i0;i-)DQ = 0; / 将DQ信号线拉低启动读时隙 DQ=1;/ 释放总线,等待从机动车辆返回数据位delay(1); /越接近15us越好; 准备采样总线上的信号date=1 ;if (DQ)date=date|0x80;delay(6); return(date);/*函数名称:void w_1280Byte(uchar bytevalue) 功能说明:向单总线写一个数据字节 */void w_1280Byte(uchar bytevalue) uchar i;for(i=0;i=1; delay(5); /等待写时隙结束/*函数名称:uint read_T(void) 功能说明:读取1820温度 */uint read_T(void)uchar a=0;uchar b=0;uint t=0;bus_rest();w_1280Byte(0xCC); / 跳过读序号列号的操作 ;w_1280Byte(0x44); / 启动温度转换,模数转化;bus_rest(); w_1280Byte(0xCC); /跳过读序号列号的操作 ;a=r_1820BYTE();/ 低8位b=r_1820BYTE();/ 高8位t=(b*256)+a;return(t); /*函数名称:void show_T(uint temp)函数功能:显示温度*/void show_T(uint temp)int i;float ftemp;ftemp = temp* 0.0625;w_12864(com,0x98+3);for(i=0;i5;i+)w_12864(dat,dis1i); /写入温度/*-以下为显示相关函数-*/ /*函数名称: void fenli(uchar x,uchar y,uchar val)功能描述: 指定位置写入数据*/void fenli(uchar x,uchar y,uchar val) uchar ge,shi,addr,i=0;if(val=5)/星期数字显示的转换为中文 w_12864(com,0x88+2);for(i=0;i2;i+) if(TAB_13025=0)w_12864(dat,TAB_XQi); if(TAB_13025=1)w_12864(dat,TAB_XQ2+i); if(TAB_13025=2)w_12864(dat,TAB_XQ3+i); if(TAB_13025=3)w_12864(dat,TAB_XQ5+i);if(TAB_13025=4)w_12864(dat,TAB_XQ7+i);if(TAB_13025=5)w_12864(dat,TAB_XQ9+i);if(TAB_13025=6)w_12864(dat,TAB_XQ11+i); else shi=TAB_1302val/10;/分离十位ge=TAB_1302val%10;if(x=1)x=0x80;if(x=2)x=0x90;if(x=3)x=0x88;if(x=4)x=0x98;addr=x+y;w_12864(com,addr);/指定位置w_12864(dat,0x30+shi);/写入w_12864(dat,0x30+ge);/*函数名称:void display(void)功能描述: 显示函数*/void display(void) get_1302(); /读1302fenli(3,7,0); /读秒fenli(3,5,1); /读分fenli(3,3,2); /读时fenli(2,5,3); /读日fenli(2,3,4); /读月fenli(3,2,5); /读星期fenli(2,1,6); /读年/*-按键处理相关函数-*/ /*函数名称:void scanner()功能描述: 按键函数*/void scanner() uchar i,j; if(!key) /功能键按下 delay1ms(500); /延时500MSif(!key) /还按下,退出时间调整 keyflag=0; /标志位为0sum=0; /清0w_12864(com,0x0c);/清闪烁for(i=0;i7;i+)/十进制转十六进制 j=TAB_1302i/10;TAB_1302i=TAB_1302i%10;TAB_1302i=TAB_1302i+16*j;init_1302(); /写入1302while(!key); /等待释放delay1ms(10); /延时消抖else /500MS内放开 keyflag=1; /标志为1,进行时间调整sum+; /功能键加1if(sum=8) sum=0;switch(sum) case 1: / w_12864(com,0x98+7);w_12864(com,0x0f);break;case 2: /为2,年闪烁w_12864(com,0x90+1);break;case 3: /月闪烁w_12864(com,0x90+3); break;case 4: /日闪烁w_12864(com,0x90+5); break;case 5: /星期闪烁w_12864(com,0x88+2);break;case 6: /分闪烁w_12864(com,0x88+5);break;case 7: /时闪烁w_12864(com,0x88+3);break;if(sum) /功能键按下 if(!key1) delay1ms(10);if(!key1) while(!key1);/等待加1键释放delay1ms(10);if(sum=1) /备用if(sum=2) TAB_13026+;if(TAB_13026=100)TAB_13026=0;fenli(2,1,6); w_12864(com,0x90+1);/闪烁归位if(sum=3) TAB_13024+;if(TAB_13024=13)TAB_13024=1;fenli(2,3,4);w_12864(com,0x90+3);if(sum=4) TAB_13023+;if(TAB_13023=32)TAB_13023=1;fenli(2,5,3);w_12864(com,0x90+5);if(sum=5) TAB_13025+;if(TAB_13025=7)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 综合解析山东省乐陵市中考数学真题分类(实数)汇编同步测试试题(含答案及解析)
- 大数据异步系统中的一致性测试挑战与优化-洞察及研究
- 资料员之资料员基础知识考试历年机考真题集含答案详解
- 自考专业(工商企业管理)考试历年机考真题集带答案详解(黄金题型)
- 重难点解析人教版8年级数学上册《全等三角形》专项训练试卷(解析版)
- 自考专业(国贸)经典例题及参考答案详解【满分必刷】
- 电竞公司考勤异常处理规章
- 电竞公司投资风险控制细则
- 注册电气工程师能力提升B卷题库【必刷】附答案详解
- 咨询工程师考试历年机考真题集【完整版】附答案详解
- 艺术基金授课协议书
- 【杭州】2025年浙江杭州市萧山区综合行政执法局第一次招聘编外人员14人笔试历年典型考题及考点剖析附带答案详解
- 2025保密观题库题库及答案
- 中华人民共和国民营经济促进法
- TBIE004-2023通孔回流焊接技术规范
- DB32T 5045-2025政务服务“一件事一次办”服务规范
- 第46届世界技能大赛贵州省选拔赛工业机械装调赛项试题7.10
- GB/T 320-2025工业用合成盐酸
- 班助工作流程
- 初中七年级分班考试语文试卷及答案
- 解读幼儿园教育指导纲要
评论
0/150
提交评论