当前位置:文档之家› 带字库12864 串口 时钟显示

带字库12864 串口 时钟显示

delaynms(1); //延时是必须的
sendbyte(Ldata);//发送低四位
delaynms(1); //延时是必须的
}
void sendbyte(unsigned char bbyte) //发送一个字节
{
unsigned char i;
for(i=0;i<8;i++)
{
SID=bbyte&0x80; //取出最高位
k=n%1000%100/10; //取余取整运算,求得十位数字
l=n%1000%100%10; //取余取整运算,求得个位数字
write(0,0x80); //写显示地址
write(1,ma4[i]); //将千位数字的字符常量写入LCD
write(1,ma4[j]); //将百位数字的字符常量写入LCD
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/*********************************************************************
main function
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;//写指令
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示日
******************************************************************************/
void DisplaySecond()
{
unsigned char i,j;
i=s/10;
j=s%10;
write(0,0x8d); //写显示地址,将十位数字显示在第2行第11列
/*12864LCD(ST7920)驱动程序
可显示年月日时分秒及加减时钟切换*/
#include <REGx51.H>
/*引脚定义*/
#define CS P2_0//片选高电平有效单片LCD使用时可固定高电平
#define SID P2_1//串数究谳
#define SCLK P2_2//串同步时钟信号
******************************************************************************/
void miao()
{
unsigned char i,j;
i=ss/10;
j=ss%10;
write(0,0x8d); //写显示地址,将十位数字显示在第2行第11列
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示小时
******************************************************************************/
voiБайду номын сангаас DisplayHour()
{
unsigned char i,j;
i=h/10;
j=h%10;
write(0,0x89); //写显示地址,将十位数字显示在第2行第5列
函数功能:显示小时
******************************************************************************/
void shi()
{
unsigned char i,j;
i=hh/10;
j=hh%10;
write(0,0x89); //写显示地址,将十位数字显示在第2行第5列
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示年
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); //显示打开,光标关,反白关
******************************************************************************/
void nian()
{
unsigned char i,j,k,l;
i=n/1000; //取整运算,求得千位数字
j=n%1000/100; //取余取整运算,求得百位数字
unsigned char code ma4[]={"0123456789"};
unsigned char code ma5[]={"年"};
unsigned charcode ma6[]={"月"};
unsigned char code ma7[]={"日"};
unsigned int count; //定义变量统计中断累计次数
******************************************************************************/
void DisplayMinute()
{
unsigned char i,j;
i=m/10;
j=m%10;
write(0,0x8b); //写显示地址,将十位数字显示在第2行第8列
else start_data=0xfa; //写数据
Hdata=ddata&0xf0;//取高四位
Ldata=(ddata<<4)&0xf0;//取低四位
sendbyte(start_data);//发送起始信号
delaynms(5); //延时是必须的
sendbyte(Hdata);//发送高四位
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 lcdtest(void);
void lcdcls(void);
/*存放字符串的数组*/
unsigned char code ma[] ={"2015年08月24日"};
unsigned char code ma2[]={"时分秒"};
unsigned char code ma3[]={"12864液晶时钟"};
unsigned int s,m,h; //定义变量储存秒、分钟和小时
unsigned int ss,mm,hh; //定义变量储存秒、分钟和小时
unsigned int n,u,r; //定义变量储存年、月、日
void lcdinit(void)//初始化LCD
{
delaynms(10); //启动等待,等LCM讲入工作状态
***********************************************************************/
void main(void)
{
unsigned char i;
lcdinit();
write(1,ma4[i]); //将十位数字的字符常量写入LCD
write(1,ma4[j]); //将个位数字的字符常量写入LCD
}
/******************************************************************************
函数功能:显示秒
void write(bit start, unsigned char ddata);//bit start;定义一个位的变量,他是1或0
void sendbyte(unsigned char bbyte);
相关主题