"限",0xFF,0x81,0x99,0xE7,0x00,0xFF,0x25,0xE5,0x25,0xBF,0x40,0x00,0x07,0x00,0x00,0x00,0x00,0x07,0x04,0x02,0x01,0x02,0x04,0x00,
"公",0x20,0x10,0x08,0x07,0xC0,0x30,0x83,0x0C,0x10,0x20,0x20,0x00,0x00,0x04,0x06,0x05,0x04,0x04,0x02,0x03,0x06,0x00,0x00,0x00,
"司",0x08,0x09,0xE9,0x29,0x29,0x29,0xED,0x09,0x01,0xFF,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x04,0x04,0x07,0x00,0x00,
};
unsigned char GetPage(void) /*得到当前页*/
{
return CurPage;
}
unsigned char GetCol(void) /*得到当前列*/
{
return CurCol;
}
void SetPageCol(unsigned char upage, unsigned char ucol) /* 设置液晶的页和列 */
{
CurPage = upage;
CurCol = ucol;
if(ucol<64)
{
set_page_L(upage);
set_col_addr_L(ucol);
}
else
{
set_page_R(upage);
set_col_addr_R(ucol-64);
}
}
/* 设置当前显示的页和列 */
void SetRowCol(unsigned char urow, unsigned char ucol)
{
unsigned char page;
CurRow = urow;
CurCol = ucol;
switch(urow)
{
case 1:
page=0;
CurOffset=1;
break;
case 2:
page=1;
CurOffset=2;
break;
case 3:
page=3;
CurOffset=1;
break;
case 4:
page=4;
CurOffset=2;
break;
case 5:
page=6;
CurOffset=1;
break;
}
SetPageCol(page,ucol);
}
void disp_ch(unsigned char c)
{
unsigned char k,j,uPage,uCol,ch_r,ch_w;
unsigned char width;
unsigned char len;
uPage = GetPage();
uCol = GetCol();
len=sizeof(ASC_16)/sizeof(ASC_16[0]);
for(k=0;k<len;k++)
{
if(c == ASC_16[k].Index[0] ) break;
}
if(k<len)
{
if(c==’-’||c==’:’)
width=ASC_CHR_WIDTH-2;
else if(c==’|’)
width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
else
width=ASC_CHR_WIDTH;
if(CurOffset==1) //下半部是写半个字节
{
for(j=0;j<width;j++)
{
SetPageCol(uPage,uCol+j);
ch_w=ASC_16[k].Msk[j];
if(uCol+j<64) write_LCD(LEFT,DATA,ch_w);
else write_LCD(RIGHT,DATA,ch_w);
}
SetPageCol(uPage+1,uCol);
for(j=0;j<width;j++)
{
SetPageCol(uPage+1,uCol+j);
if(uCol+j<64) ch_r=read_LCD(LEFT);
else ch_r=read_LCD(RIGHT);
ch_r&=0xf0;
ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j]&0x0f;
ch_w|=ch_r;
SetPageCol(uPage+1,uCol+j);
if(uCol+j<64) write_LCD(LEFT,DATA,ch_w);
else write_LCD(RIGHT,DATA,ch_w);
}
}
else //上半部是写半个字节
{
for(j=0;j<width;j++)
{
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:程序 C语言 AVR单片机,单片机-工控设备 - AVR单片机