基于LCD1602和DS1302的时间显示程序(2)

2019-01-03 16:01

Disp_line1(); Disp_line2(); id_case1_key(); break;

case 7: //调节秒

min=0;sec=1;//设置秒钟闪烁标志位 Disp_line1(); Disp_line2(); id_case1_key(); break; } } }

//================================== 定时中断 ============================================= /***************************************************** 函数名:void t0()

功能:时间工作时,冒号闪烁 说明:T0中断入口,方式1 入口参数:无 返回值:无

*****************************************************/ void t0(void) interrupt 1 using 0 {

TH0=(65535-50000)/256; //取50ms定时初值 TL0=(65535-50000)%6; timecount++; if(timecount>9) {

timecount=0; //计时到,从先开始 flag=~flag; //标志位取反 } }

//==================================== 项目设置 =========================================== /***************************************************** 函数名:void id_case1_key()

功能:项目设置加减控制 说明:P1.5和P1.4 <==> +和- 入口参数:无 返回值:无

*****************************************************/ //id为1时的下一级选择 void id_case1_key() {

if (P1_5==0) //P1_5有按下,则数值增加(+) {

Delay5Ms(); //适当延时,消除抖动

if(P1_5==0) Set(id,0); //根据选择调整相应项目 if(id!=7) while(P1_5==0); }

if (P1_4==0) //P1_4有按下,则数值减少(-) {

Delay5Ms(); //适当延时,消除抖动

if(P1_4==0) Set(id,1); //根据选择调整相应项目 if(id!=7) while(P1_4==0); } }

/***************************************************** 函数名:void Set() 功能:项目设置

说明:sel_1=0时,数值加;sel_1=1时,数值减 入口参数:sel和sel_1 返回值:无

*****************************************************/ //根据选择调整相应项目并写入DS1302 void Set(uchar sel,uchar sel_1) {

signed char address,item; signed char max,mini; //偶数指令是写,奇数指令是读 //最大值与最小值限定

if(sel==7) {address=0x80; max=00;mini=0;} //秒 if(sel==6) {address=0x82; max=59;mini=0;} //分钟 if(sel==5) {address=0x84; max=23;mini=0;} //小时 if(sel==3) {address=0x86; max=31;mini=1;} //日 if(sel==2) {address=0x88; max=12;mini=1;} //月 if(sel==1) {address=0x8c; max=99;mini=0;} //年 if(sel==4) {address=0x8a; max=07;mini=1;} //星期

//先从1302中读出数据,把数据转换成十进制进行加减设置;后从先转换回来写入1302中

item=R1302(address+1)/16*10+R1302(address+1);//从1302中读出1字节,再转换成十进制

if (sel_1==0) item++; else item--; //sel_1=0则加,sel_1=1则减 if(item>max) item=mini; //大于最大值,则赋最小值(循环) if(item

W1302(0x8e,0x00); //允许写操作

W1302(address,item/10*16+item);//把调节好的十进制数据转换成十六进制后写入1302中

W1302(0x8e,0x80); //写保护,禁止写操作 }

//=======================================================================================

/***************************************************** 函数名:void Disp_line1()

功能:显示时间和温度 (XX:XX:XX XX.X C) 说明:第一行显示数据处理 入口参数:无 返回值:无

*****************************************************/ //屏幕显示第一行: 时间和温度显示 void Disp_line1(void) {

Read_Temperature(10,0); //温度显示 //冒号闪烁 if(flag==0)

{DisplayOneChar(3,0,0x3a); DisplayOneChar(6,0,0x3a);} else

{DisplayOneChar(3,0,0x20); DisplayOneChar(6,0,0x20);} if(sec==1) //秒闪烁标志位 {

if(flag==1) {

DisplayOneChar(7,0,R1302(0x81)/16+0x30); //显示秒十位 DisplayOneChar(8,0,R1302(0x81)+0x30); //显示秒个位 } else {

DisplayOneChar(7,0,0x20); //显示秒十位 DisplayOneChar(8,0,0x20); //显示秒个位 } } else {

DisplayOneChar(7,0,R1302(0x81)/16+0x30); //显示秒十位 DisplayOneChar(8,0,R1302(0x81)+0x30); //显示秒个位 }

if(min==1) //分钟闪烁标志位 {

if(flag==1) {

DisplayOneChar(4,0,R1302(0x83)/16+0x30); //显示分钟十位 DisplayOneChar(5,0,R1302(0x83)+0x30); //显示分钟个位 } else {

DisplayOneChar(4,0,0x20); //显示分钟十位 DisplayOneChar(5,0,0x20); //显示分钟个位 } }

else {

DisplayOneChar(4,0,R1302(0x83)/16+0x30); //显示分钟十位 DisplayOneChar(5,0,R1302(0x83)+0x30); //显示分钟个位 }

if(hour==1) //小时闪烁标志位 {

if(flag==1) {

DisplayOneChar(1,0,R1302(0x85)/16+0x30);//显示小时十位 DisplayOneChar(2,0,R1302(0x85)+0x30);//显示小时个位 } else {

DisplayOneChar(1,0,0x20); //显示小时十位 DisplayOneChar(2,0,0x20); //显示小时个位 } } else {

DisplayOneChar(1,0,R1302(0x85)/16+0x30);//显示小时十位 DisplayOneChar(2,0,R1302(0x85)+0x30);//显示小时个位 } }

/***************************************************** 函数名:void Disp_line2()

功能:显示日期和星期 (XX/XX/XX Week.X) 说明:第二行显示数据处理 入口参数:无 返回值:无

*****************************************************/ // 屏幕显示第二行日期和星期 void Disp_line2(void) {

DisplayOneChar(3,1,0x2f); //显示固定字符


基于LCD1602和DS1302的时间显示程序(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:经济地理学教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: