0x04, 0x02, 0x01, 0x02, 0x04, // ^
0x40, 0x40, 0x40, 0x40, 0x40, // _
0x00, 0x01, 0x02, 0x04, 0x00, // ’
0x20, 0x54, 0x54, 0x54, 0x78, // a
0x7F, 0x48, 0x44, 0x44, 0x38, // b
0x38, 0x44, 0x44, 0x44, 0x20, // c
0x38, 0x44, 0x44, 0x48, 0x7F, // d
0x38, 0x54, 0x54, 0x54, 0x18, // e
0x08, 0x7E, 0x09, 0x01, 0x02, // f
0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g
0x7F, 0x08, 0x04, 0x04, 0x78, // h
0x00, 0x44, 0x7D, 0x40, 0x00, // i
0x40, 0x80, 0x84, 0x7D, 0x00, // j
0x7F, 0x10, 0x28, 0x44, 0x00, // k
0x00, 0x41, 0x7F, 0x40, 0x00, // l
0x7C, 0x04, 0x18, 0x04, 0x78, // m
0x7C, 0x08, 0x04, 0x04, 0x78, // n
0x38, 0x44, 0x44, 0x44, 0x38, // o
0xFC, 0x24, 0x24, 0x24, 0x18, // p
0x18, 0x24, 0x24, 0x18, 0xFC, // q
0x7C, 0x08, 0x04, 0x04, 0x08, // r
0x48, 0x54, 0x54, 0x54, 0x20, // s
0x04, 0x3F, 0x44, 0x40, 0x20, // t
0x3C, 0x40, 0x40, 0x20, 0x7C, // u
0x1C, 0x20, 0x40, 0x20, 0x1C, // v
0x3C, 0x40, 0x30, 0x40, 0x3C, // w
0x44, 0x28, 0x10, 0x28, 0x44, // x
0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y
0x44, 0x64, 0x54, 0x4C, 0x44, // z
0x00, 0x08, 0x36, 0x41, 0x00, // {
0x00, 0x00, 0x7F, 0x00, 0x00, // |
0x00, 0x41, 0x36, 0x08, 0x00, // }
0x08, 0x10, 0x08, 0x04, 0x08 // ~
};
void ks0108rs0 (unsigned char rs) //写一个指令
{
E=1; RS=0; RW=0;
DATA=rs;
E=0;
delay_ms(1); //KS0108真是慢,写指令/数据都要适当延时
}
void ks0108putbyte (unsigned char datas) //写一个字节
{
if(ks0108x>127) //显示到最后列时就退出本函数,并停止写显示数据
return;
if(ks0108x<64) //判断列地址,确定在左屏还是在右屏写数据
{ CS1=1; CS2=0; }
else
{ CS1=0; CS2=1; }
E=1; RS=1; RW=0; //写一个显示数据
DATA=datas;
E=0;
ks0108x++; //每写一个数据,列地址就要加1
delay_ms(1);
}
void ks0108putchar (unsigned char ASCII) //写一个字符(就是写6个数据)
{
unsigned char i;
unsigned int No;
No=ASCII-32; //字模数据是由空格’ ’开始,空格的ASCII的值就是32
No=No*5; //每个字符的字模是5个字节
ks0108putbyte(0); //每个字符之间空一列
for(i=0;i<5;i++) //一个字符的字模是5个字节,就是5*8点阵
{
ks0108putbyte(data[No]);
No++;
}
}
void ks0108gotoxy (unsigned char x,unsigned char y) //写列/行地址
{
if(x>127) x=0; //如果列地址超出范围就回到0列
if(y> 7) y=0; //如果行地址超出范围就回到0行
CS1=1; //左右屏都使能,写下相同的行地址
CS2=1;
ks0108rs0(y+184); //写页(行)地址,共有8页,第0页地址是184
if(x<64) //写列地址,共有64列,第0列地址是64
{ CS1=1; CS2=0; ks0108rs0(x+64); }
else
{ CS1=0; CS2=1; ks0108rs0(x); };
ks0108x=x; //记住列/行地址
ks0108y=y;
上一页 [1] [2] [3] 下一页
本文关键字:程序 AVR单片机,单片机-工控设备 - AVR单片机