标题:
LCD12864+ds1302大时间显示 单片机程序
[打印本页]
作者:
cclianbao
时间:
2020-2-10 15:40
标题:
LCD12864+ds1302大时间显示 单片机程序
下面是复制的部分代码,复制到里面备注是乱码,不过提供源程序下载查看,备注很清楚,适合初学者
本程序是12864显示屏配合DS1302模块,用的普中科技HC6800ESV2.0的开发板。不过没用开发板自带的DS1302,电路板设计有缺陷导致1302和12864显示屏冲突。
各种现实数字全部自己设计图片并取模显示。全程屏幕显示用的是绘图模式刷新。用两个按键控制时间设定。
思路:先把屏幕格局设计出来,把字体字模提取。先把时间显示好再想办法把按键控制设计进去,然后再想着把要设置的那个位闪烁变化。
单片机源程序如下:
void main()
{
Lcd12864Init();//Lcd初始化
DisplayKJ(image1);//画面初始化
Time0init();
Time1init();//定时器初始化
Lcd12864Com(0x36);//打开绘图模式
while(1)
{
/***************判断K1键按下并且按键参数加1***********************/
if(K1==0)
{
Delay(20);
if(K1==0)
{
while(K1==0);
Keynumber++;
TR0=0;//暂停定时器0计数,不读取DS1302里面的数值
}
}
/***********根据K1的次数判断需要闪烁的位置分别是秒分时日月周*******************/
switch(Keynumber)
{
case 0:
DisplayTime();break;//无设置的时候全部刷新一遍
case 1:
if(shannumber==0)
{
DisplayMS(image2[SetTimeDate[0]/10]);
DisplayMG(image2[SetTimeDate[0]%10]);
}
else
{
DisplayMS(image2[10]);
DisplayMG(image2[10]);
};
break;//设置秒的时候只刷新秒位
case 2:
if(shannumber==0)
{
DisplayFG(image2[SetTimeDate[1]%10]);
DisplayFS(image2[SetTimeDate[1]/10]);
}
else
{
DisplayFS(image2[10]);
DisplayFG(image2[10]);
};
break;//设置分的时候只刷新分位
case 3:
if(shannumber==0)
{
DisplaySG(image2[SetTimeDate[2]%10]);
DisplaySS(image2[SetTimeDate[2]/10]);
}
else
{
DisplaySS(image2[10]);
DisplaySG(image2[10]);
};
break;//设置小时的时候只刷新小时位
case 4:
if(shannumber==0)
{
DisplayRS(image3[SetTimeDate[3]/10]);
DisplayRG(image3[SetTimeDate[3]%10]);
}
else
{
DisplayRS(image3[10]);
DisplayRG(image3[10]);
};
break;//设置日的时候只刷新日位
case 5:
if(shannumber==0)
{
DisplayYS(image3[SetTimeDate[4]/10]);
DisplayYG(image3[SetTimeDate[4]%10]);
}
else
{
DisplayYS(image3[10]);
DisplayYG(image3[10]);
};
break;//设置月的时候只刷新月位
case 6:
if(shannumber==0)
{
DisplayXQ(image3[SetTimeDate[5]%10]);
}
else
{
DisplayXQ(image3[10]);
};
break;//设置周的时候只刷新周位
case 7:
Keynumber=0;Ds1302Init();TR0=1;break;//按键循环一遍重新将数据写入时间数组,然后打开定时器读取DS1302内的数据
}
/******************在设置的状态下判断K2并设置各参数***********************/
/********************设置秒参数*********************/
if((Keynumber==1)&&(K2==0))
{
Delay(20);
if((Keynumber==1)&&(K2==0))
{
while((Keynumber==1)&&(K2==0));
SetTimeDate[0]++;
if(SetTimeDate[0]==60)
{
SetTimeDate[0]=0;
}
}
}
/*******************设置分参数****************************/
if((Keynumber==2)&&(K2==0))
{
Delay(20);
if((Keynumber==2)&&(K2==0))
{
while((Keynumber==2)&&(K2==0));
SetTimeDate[1]++;
if(SetTimeDate[1]==60)
{
SetTimeDate[1]=0;
}
}
}
/**********************设置时参数***********************************/
if((Keynumber==3)&&(K2==0))
{
Delay(20);
if((Keynumber==3)&&(K2==0))
{
while((Keynumber==3)&&(K2==0));
SetTimeDate[2]++;
if(SetTimeDate[2]==24)
{
SetTimeDate[2]=0;
}
}
}
/**********************设置日参数*******************************************/
if((Keynumber==4)&&(K2==0))
{
Delay(20);
if((Keynumber==4)&&(K2==0))
{
while((Keynumber==4)&&(K2==0));
SetTimeDate[3]++;
if(SetTimeDate[3]==32)
{
SetTimeDate[3]=1;
}
}
}
/***********************设置月参数*************************************/
if((Keynumber==5)&&(K2==0))
{
Delay(20);
if((Keynumber==5)&&(K2==0))
{
while((Keynumber==5)&&(K2==0));
SetTimeDate[4]++;
if(SetTimeDate[4]==13)
{
SetTimeDate[4]=1;
}
}
}
/********************设置星期*****************************************/
if((Keynumber==6)&&(K2==0))
{
Delay(20);
if((Keynumber==6)&&(K2==0))
{
while((Keynumber==6)&&(K2==0));
SetTimeDate[5]++;
if(SetTimeDate[5]==8)
{
SetTimeDate[5]=1;
}
}
}
}
}
void Timer0() interrupt 1 //定时器0中断函数
{
static uchar counte;
TH0=0x3c;
TL0=0xb0;
counte++;
if(counte==1)
{
counte=0;
SetTimeDate[0]=BcdToNum(Ds1302_Read(0x81));//正常运行把读出的秒分时保存到数组SetTimeDate中
SetTimeDate[1]=BcdToNum(Ds1302_Read(0x83));
SetTimeDate[2]=BcdToNum(Ds1302_Read(0x85));
SetTimeDate[3]=BcdToNum(Ds1302_Read(0x87));
SetTimeDate[4]=BcdToNum(Ds1302_Read(0x89));
SetTimeDate[5]=BcdToNum(Ds1302_Read(0x8b));
}
}
/*************************定时器1中断函数,设置闪烁的变量******************/
void Timer1() interrupt 3
{ static uchar number;
TH1 = 0x3c;
TL1 = 0xb0;
number++;
if(number==10)
{
number=0;
shannumber=~shannumber;
}
}
复制代码
Keil代码51hei下载地址:
12864显示时间 ds1302 按键.rar
(60.33 KB, 下载次数: 88)
2020-2-10 14:48 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
杨天想
时间:
2021-11-2 15:18
楼主能发原理图出来吗
作者:
Liubtwinner
时间:
2021-11-3 19:47
先下一个,有时间整一个。谢谢共享!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1