带字库12864 串口 时钟显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
******************************************************************************/
void DisplayHour()
{
unsigned char i,j;
i=h/10;
j=h%10;
write(0,0x89); //写显示地址,将十位数字显示在第2行第5列
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示日
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示秒
函数功能:显示小时
******************************************************************************/
void shi()
{
unsigned char i,j;
i=hh/10;
j=hh%10;
write(0,0x89); //写显示地址,将十位数字显示在第2行第5列
unsigned char code ma4[]={"0123456789"};
unsigned char code ma5[]={"年"};
unsigned charcode ma6[]={"月"};
unsigned char code ma7[]={"日"};
unsigned int count; //定义变量统计中断累计次数
void write(bit start, unsigned char ddata);//bit start;定义一个位的变量,他是1或0
void sendbyte(unsigned char bbyte);
void delaynms(unsigned int di);
void lcdinit(void);
******************************************************************************/
void DisplaySecond()
{
unsigned char i,j;
i=s/10;
j=s%10;
write(0,0x8d); //写显示地址,将十位数字显示在第2行第11列
void lcdtest(void);
void lcdcls(void);
/*存放字符串的数组*/
unsigned char code ma[] ={"2015年08月24日"};
unsigned char code ma2[]={"时分秒"};
unsigned char code ma3[]={"12864液晶时钟"};
k=n%1000%100/10; //取余取整运算,求得十位数字
l=n%1000%100%10; //取余取整运算,求得个位数字
write(0,0x80); //写显示地址
write(1,ma4[i]); //将千位数字的字符常量写入LCD
write(1,ma4[j]); //将百位数字的字符常量写入LCD
else start_data=0xfa; //写数据
Hdata=ddata&0xf0;//取高四位
Ldata=(ddata<<4)&0xf0;//取低四位
sendbyte(start_data);//发送起始信号
delaynms(5); //延时是必须的
sendbyte(Hdata);//发送高四位
write(1,ma4[k]); //将十位数字的字符常量写入LCD
write(1,ma4[l]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示月
***********************************************************************/
void main(void)
{
unsigned char i;
lcdinit();
unsigned int s,m,h; //定义变量储存秒、分钟和小时
unsigned int ss,mm,hh; //定义变量储存秒、分钟和小时
unsigned int n,u,r; //定义变量储存年、月、日
void lcdinit(void)//初始化LCD
{
delaynms(10); //启动等待,等LCM讲入工作状态
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示小时
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示分钟
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示分钟
SCLK=1;
SCLK=0;
bbyte<<=1; //左移
}
}
void delaynms(unsigned int di) //延时
{
unsigned int da,db;
for(da=0;da<di;da++)
for(db=0;db<10;db++);
}
/******************************************************************************
******************************************************************************/
void ri()
{
unsigned char i,j;
i=r/10; //取整运算,求得十位数字
j=r%10; //取余运算,求得个位数字
write(0,0x85); //写显示地址,
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示秒
write(0,0x01); //清屏,将DDRAM的地址计数器归零
}
void write(bit start, unsigned char ddata) //写指令或数据bit start;定义一个位的变量,他是1或0
{
unsigned char start_data,Hdata,Ldata;
if(start==0) start_data=0xf8;//写指令
******************************************************************************/
void nian()
{
unsigned char i,j,k,l;
i=n/1000; //取整运算,求得千位数字
j=n%1000/100; //取余取整运算,求得百位数字
PSB=0; ;//串口驱动模式;PSB=1时为并行
// RESET=0; delaynms(1); RESET=1; //复位LCD
// CS=1; //串行数据口
write(0,0x30); // DL=0,4位数据;DL=1,8位数据RE=1,扩充指令操作;RE=0,基本指令操作;
write(0,0x0c); //显示打开,光标关,反白关
#define PSB P2_3//低电平时表示用串口驱动,可固定低电平;高电平并行驱动
#define RESET P2_4//LCD复位,LCD模块自带复位电路,可不接或接高电平vcc
#define key P2_5 //因有定义,因此可以写成P2_5或sbit key=P2^5;
/*函数全局声明*/
/*12864LCD(ST7920)驱动程序
可显示年月日时分秒及加减时钟切换*/
#include <REGx51.H>
/*引脚定义*/
#define CS P2_0//片选高电平有效单片LCD使用时可固定高电平
#define SID P2_1//串数究谳
#define SCLK P2_2//串同步时钟信号
******************************************************************************/
void yue()
{
unsigned char i,j;
i=u/10; //取整运算,求得十位数字
j=u%10;//取余运算,求得个位数字
write(0,0x83); //写显示地址
******************************************************************************/
void DisplayMinute()
{
unsigned char i,j;
i=m/10;
j=m%10;
write(0,0x8b); //写显示地址,将十位数字显示在第2行第8列
******************************************************************************/
void fen()
{
unsigned char i,j;
i=mm/10;
j=mm%10;
write(0,0x8b); //写显示地址,将十位数字显示在第2行第8列
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示年
******************************************************************************/
void miaoபைடு நூலகம்)
{
unsigned char i,j;
i=ss/10;
j=ss%10;
write(0,0x8d); //写显示地址,将十位数字显示在第2行第11列
delaynms(1); //延时是必须的
sendbyte(Ldata);//发送低四位
delaynms(1); //延时是必须的
}
void sendbyte(unsigned char bbyte) //发送一个字节
{
unsigned char i;
for(i=0;i<8;i++)
{
SID=bbyte&0x80; //取出最高位
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/*********************************************************************
main function
相关文档
最新文档