📄 lcd_b.h
字号:
}
/****************************************************************************************
//函数: void DispHLine()
//描述: 显示横线
//参数: none
//返回值:none
*****************************************************************************************/
/*void DispHLine()
{
unsigned char i,j;
//writeMI(0x3f);writeSI(0x3f);//显示器开
//writeMI(0xB8);writeSI(0xB8);//设置DDRAM中的页地址(X地址)
//writeMI(0xc0);writeSI(0xc0);//设置显示起始行
//writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
for(j=0;j<8;j++)
{
writeMI(0xB8+j);writeSI(0xB8+j);//设置DDRAM中的页地址(X地址)
writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
// write_com(Start_Line+0);
for(i=0;i<64;i++)
{
writeMD(0x00);writeSD(0x00);
writeMD(0x00);writeSD(0x00);
}
}
}
*/
/****************************************************************************************
//函数: void DispVLine()
//描述: 显示竖线
//参数: none
//返回值:none
*****************************************************************************************/
/*void DispVLine()
{
unsigned char i,j;
//writeMI(0x3f);writeSI(0x3f);//显示器开
//writeMI(0xB8);writeSI(0xB8);//设置DDRAM中的页地址(X地址)
//writeMI(0xc0);writeSI(0xc0);//设置显示起始行
//writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
for(j=0;j<8;j++)
{
writeMI(0xB8+j);writeSI(0xB8+j);//设置DDRAM中的页地址(X地址)
writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
writeMI(0xc0);writeSI(0xc0);//设置显示起始行
for(i=0;i<32;i++)
{
writeMD(0x00);writeSD(0x00);
writeMD(0x55);writeSD(0x55);
}
}
}
*/
/****************************************************************************************
//函数: void hzdisp16(unsigned char pag,unsigned char col, unsigned char *hzk)
//描述: 指定位置显示汉字16*16
//参数:
//返回值:none
*****************************************************************************************/
void hzdisp16(unsigned char pag,unsigned char col,const unsigned char *hzk)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
if(col<64)
{
writeMI(0xB8+pag+j);
writeMI(0x40+col);
for(i=0;i<16;i++) writeMD(hzk[16*j+i]);
}
else
{
writeSI(0xB8+pag+j);
writeSI(0x40+col-64);
for(i=0;i<16;i++) writeSD(hzk[16*j+i]);
}
}
}
/****************************************************************************************
//函数: void zfdisp8(unsigned char pag,unsigned char col,const unsigned char *zfk)
//描述: 指定位置显示字符16*8
//参数:
//返回值:none
*****************************************************************************************/
void zfdisp8(unsigned char pag,unsigned char col,const unsigned char *zfk)
{
unsigned char j, i=0;
for(j=0;j<2;j++)//写两行
{
if(col<64)//左边
{
writeMI(0xB8+pag+j);
writeMI(0x40+col);
for(i=0;i<8;i++) writeMD(zfk[8*j+i]);
}
else//右边
{
writeSI(0xB8+pag+j);
writeSI(0x40+col-64);
for(i=0;i<8;i++) writeSD(zfk[8*j+i]);
}
}
}
/***************************************************************************************
//函数: void display(unsigned char word,unsigned char layer, unsigned char width,unsigned char *array)
//描述: 液晶显示 汉字
//参数: word-列地址 layer-页地址 width-宽 array-字模数组
//返回值:none
***************************************************************************************/
/*void display(unsigned char word,unsigned char layer, unsigned char width,unsigned char *array)
{
unsigned char x;
unsigned char k=16 ;
unsigned char address;//address表示显存的物理地址
unsigned char p=0;
unsigned char page;
page=layer;
address=64-(word*16)/2;
writeMI(0xB8|page);//主控制器发页地址
writeMI(address);//主控制器发窗口地址
for(x=0;x<=width/2;x++)
{
if(k--)
{
writeMD(array[p]);// (左-- 上)层数据输出
p++;
}
else
{
k=16;
p=p+16;
}
}
writeSI(0xB8|page);//从控制器发页地址
writeSI(0x40);//从控制器发窗口地址
for(x=0;x<=width/2;x++)
{
if(k--)
{
writeSD(array[p]);//(右--上)层数据输出
p++;
}
else
{
k=16;
p=p+16;
}
}
}
*/
/****************************************************************************************
//函数: void distimfrm()
//描述: 显示时间框
//参数: none
//返回值:none
*****************************************************************************************/
void dis_timfrm()
{
unsigned char i,j;
for(i=0;i<4;i++)
{
writeMI(0xB8+i+4);//定位页
writeMI(0x40+40);//定位列
for(j=0;j<24;j++) writeMD(nBitmapTime[24*i+j]);
writeSI(0xB8+i+4);//定位页
writeSI(0x40);//定位列
for(j=0;j<24;j++) writeSD(nBitmapTime[24*(i+4)+j]);
}
}
/****************************************************************************************
//函数: void dis_timpos()
//描述: 显示时间分隔
//参数: none
//返回值:none
*****************************************************************************************/
void dis_timpos()
{
unsigned char i,j;
for(i=0;i<2;i++)//写两页
{
writeMI(0xB8+i+5);//定位页
writeMI(0x40+60);//定位列
for(j=0;j<4;j++) writeMD(nTimePos[4*i+j]);
}
}
//*******************************************************
//函数: dis_date()
//描述: 显示数字
//参数: pag-显示地址 col-显示列 tim_data-显示的数字
//返回值:none
//*******************************************************
void dis_date(unsigned char pag,unsigned char col,unsigned char tim_data)
{
switch(tim_data)
{
case 0:zfdisp8(pag,col,ziku1);break; //0
case 1:zfdisp8(pag,col,ziku2);break; //1
case 2:zfdisp8(pag,col,ziku3);break; //2
case 3:zfdisp8(pag,col,ziku4);break; //3
case 4:zfdisp8(pag,col,ziku5);break; //4
case 5:zfdisp8(pag,col,ziku6);break; //5
case 6:zfdisp8(pag,col,ziku7);break; //6
case 7:zfdisp8(pag,col,ziku8);break; //7
case 8:zfdisp8(pag,col,ziku9);break; //8
case 9:zfdisp8(pag,col,ziku10);break; //9
default:zfdisp8(pag,col,ziku316);break;
}
}
//*******************************************************
//函数: lcd_clock()
//描述: 显示时钟初始化,显示 00:00
//参数: none
//返回值:none
//*******************************************************
void lcdclock()
{
// zfdisp8(5,44,ziku1);
// zfdisp8(5,52,ziku1);
min=lcd_min;
dis_date(5,76,(unsigned char)(min%10));//分钟低位
dis_date(5,68,(unsigned char)(min/10));//分钟高位
dis_timpos();//时间分隔
//zfdisp8(5,68,ziku1);
//zfdisp8(5,76,ziku1);
hour=lcd_hour;
dis_date(5,52,(unsigned char)(hour%10));//小时低位
dis_date(5,44,(unsigned char)(hour/10));//小时高位
}
//*******************************************************
//函数: void lcd_clock_flash(void)
//描述: 时间刷新
//参数: none
//返回值:none
//*******************************************************
void lcd_clock_flash(void)
{
if(modify_time_flag==0)//未进入调时状态
{
if(lcd_min!=min)
{
min=lcd_min;
dis_date(5,76,(unsigned char)(min%10));
dis_date(5,68,(unsigned char)(min/10));
//闪烁控制 1s钟一次
//if(flash)
//{
//zfdisp8(5,92,ziku38);
// }
//else
//{
//zfdisp8(5,92,ziku300);
//}
//flash=!flash;
}
if(lcd_hour!=hour)
{
hour=lcd_hour;
dis_date(5,52,(unsigned char)(hour%10));
dis_date(5,44,(unsigned char)(hour/10));
}
}
}
/*
uint temp_licheng0=0;
void lcd_clock_flash(void)
{
//temp_licheng0=(uint)(licheng/1000);
//temp_licheng1=licheng/1000;
if(temp_licheng0!=temp_licheng)
{
temp_licheng0=temp_licheng;
dis_date(5,76,(unsigned char)(temp_licheng0%1000%100%10));
dis_date(5,68,(unsigned char)(temp_licheng0%1000%100/10));
dis_date(5,52,(unsigned char)(temp_licheng0%1000/100));
dis_date(5,44,(unsigned char)(temp_licheng0/1000));
}
}*/
/*
void LCD_CLOCK(void)
{
if(!clock_change){
if(minl!=minl0||minh!=minh0)
{
minl0=minl;
minh0=minh;
if(minl!=(lcd_min%10)) //分钟低位
{
minl=(unsigned char)(lcd_min%10);
dis_date(5,80,minl);
}
if(minh!=(lcd_min/10)) //分钟高位
{
minh=(unsigned char)(lcd_min/10);
dis_date(5,72,minh);
}
}
if(hourl!=hourl0||hourh!=hourh0)
{
hourl0=hourl;
hourh0=hourh;
if(hourl!=(lcd_hour%10)) //小时低位
{
hourl=(unsigned char)(lcd_hour%10);
dis_date(5,52,hourl);
}
if(hourh!=(lcd_hour/10)) //小时高位
{
hourh=(unsigned char)(lcd_hour/10);
dis_date(5,44,hourh);
}
}
}
}*/
/**************************************************************************************
//函数: void lcdinitial(void)
//描述: 初始化程序
//参数: none
//返回值:none
***************************************************************************************/
void init_lcd(void)
{
RST=1;PTG=0;
LCD_DDR=0xff;
LCD_DATA=0;
writeMI(0x3f);writeSI(0x3f);//显示器开
//writeMI(0x3e);writeSI(0x3e);//显示器关
writeMI(0xc0);writeSI(0xc0);//设置显示起始行
writeMI(0xB8);writeSI(0xB8);//设置DDRAM中的页地址(X地址)
writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
Clr_LCD();
//显示器清屏
//dis_timfrm();
lcdclock();
//时间外框和时间初始化
}
//////////////////////////////////////
/*void DIS_LCD(unsigned char dis_data)
{
unsigned char lcd_page=0;
unsigned char lcd_count=0;
for(lcd_page=0;lcd_page<8;lcd_page++)
{
writeSI(0XB8+lcd_page);
writeSI(0X40);
writeMI(0XB8+lcd_page);
writeMI(0X40);
for(lcd_count=0;lcd_count<64;lcd_count++)
{
writeSD(dis_data);
writeMD(dis_data);
}
}
}
*/
/**************************************************************************************
//函数: void lcdbutton(void)
//描述: 初始化程序
//参数: none
//返回值:none
***************************************************************************************/
void lcdbutton(void)
{
if(modify_time_flag)//正在进行时间调整
{
minl=(unsigned char)(lcd_min%10);
minh=(unsigned char)(lcd_min/10);
hourl=(unsigned char)(lcd_hour%10);
hourh=(unsigned char)(lcd_hour/10);
if(timer_button_change)//时间调整按键变化
{
timer_button_change=0;
if(timer_bit_change)
{
//timer_bit_change=0;
clock_count0++;//判断变化次数
clock_count0=clock_count0%4;
}
else if(timer_add_change)
{
//timer_add_change=0;
if(clock_count0==1)//分钟低位
{
minl++;
minl=(unsigned char)(minl%10);
dis_date(5,76,20);
dis_date(5,76,minl);
}
if(clock_count0==2)//分钟高位
{
minh++;
minh=(unsigned char)(minh%6);
dis_date(5,68,20);
dis_date(5,68,minh);
}
if(clock_count0==3)//小时低位
{
hourl++;
hourl=(unsigned char)(hourl%10);
dis_date(5,52,20);
dis_date(5,52,hourl);
}
if(clock_count0==0)//小时高位
{
hourh++;
hourh=(unsigned char)(hourh%3);
dis_date(5,44,20);
dis_date(5,44,hourh);
}
lcd_min=minl+10*minh;
lcd_hour=hourl+hourh*10;
}
}
if(timer_button_change==0)//闪烁
{
++clock_change;
if(clock_change%10==0)
{
switch(clock_count0)
{
case 1://分钟低位
{
dis_date(5,44,hourh);
dis_date(5,52,hourl);
dis_date(5,68,minh);
//dis_date(5,76,minl);
if(flash)
{
dis_date(5,76,minl);
}
else
{
dis_date(5,76,20);
}
flash=!flash;
}
break;
case 2://分钟高位
{
dis_date(5,44,hourh);
dis_date(5,52,hourl);
//dis_date(5,68,minh);
dis_date(5,76,minl);
if(flash)
{
dis_date(5,68,minh);
}
else
{
dis_date(5,68,20);
}
flash=!flash;
}
break;
case 3://小时低位
{
dis_date(5,44,hourh);
//dis_date(5,52,hourl);
dis_date(5,68,minh);
dis_date(5,76,minl);
if(flash)
{
dis_date(5,52,hourl);
}
else
{
dis_date(5,52,20);
}
flash=!flash;
}
break;
case 0://小时高位
{
//dis_date(5,44,hourh);
dis_date(5,52,hourl);
dis_date(5,68,minh);
dis_date(5,76,minl);
if(flash)
{
dis_date(5,44,hourh);
}
else
{
dis_date(5,44,20);
}
flash=!flash;
}
break;
}//end if switch
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -