|
楼主 |
发表于 2011-1-10 09:39:00
|
显示全部楼层
这是3310 LCD 部分
#include <reg51.h>
#include <INTRINS.H>
sbit SDIN = P3^2; //P3^2
sbit SCLK = P3^4;
sbit D_C = P3^5;
sbit SCE = P3^7;
code unsigned char Font[70] =
{
0x3E, 0x51, 0x49, 0x45, 0x3E , // 0
0x00, 0x42, 0x7F, 0x40, 0x00 , // 1
0x42, 0x61, 0x51, 0x49, 0x46 , // 2
0x21, 0x41, 0x45, 0x4B, 0x31 , // 3
0x18, 0x14, 0x12, 0x7F, 0x10 , // 4
0x27, 0x45, 0x45, 0x45, 0x39 , // 5
0x3C, 0x4A, 0x49, 0x49, 0x30 , // 6
0x01, 0x71, 0x09, 0x05, 0x03 , // 7
0x36, 0x49, 0x49, 0x49, 0x36 , // 8
0x06, 0x49, 0x49, 0x29, 0x1E , // 9
0x00, 0x00, 0x36, 0x36, 0x00 , // :
0x7f, 0x3e, 0x1c, 0x08, 0x00 , // >
0x3e, 0x3e, 0x00, 0x3e, 0x3e , // ||
0x00, 0x00, 0x00, 0x00, 0x00 , //" "
};
code unsigned char Level[8] = {0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,};
extern void delay(unsigned int i);
void LCD3310_write_cmd(unsigned char cmd)
{
D_C = 0;
SCLK = 0;
SCE = 0;
delay(3);
SDIN = cmd & 0x80;
SCLK = 1;
SDIN = cmd & 0x40;
SCLK = 0;
SCLK = 1;
SDIN = cmd & 0x20;
SCLK = 0;
SCLK = 1;
SDIN = cmd & 0x10;
SCLK = 0;
SCLK = 1;
SDIN = cmd & 0x08;
SCLK = 0;
SCLK = 1;
SDIN = cmd & 0x04;
SCLK = 0;
SCLK = 1;
SDIN = cmd & 0x02;
SCLK = 0;
SCLK = 1;
SDIN = cmd & 0x01;
SCLK = 0;
SCLK = 1;
D_C = 1;
SDIN = 1;
SCE = 1;
}
void LCD3310_write_dat(unsigned char dat)
{
// D_C = 1;
SCLK = 0;
SCE = 0;
delay(3);
SDIN = dat & 0x80;
SCLK = 1;
SDIN = dat & 0x40;
SCLK = 0;
SCLK = 1;
SDIN = dat & 0x20;
SCLK = 0;
SCLK = 1;
SDIN = dat & 0x10;
SCLK = 0;
SCLK = 1;
SDIN = dat & 0x08;
SCLK = 0;
SCLK = 1;
SDIN = dat & 0x04;
SCLK = 0;
SCLK = 1;
SDIN = dat & 0x02;
SCLK = 0;
SCLK = 1;
SDIN = dat & 0x01;
SCLK = 0;
SCLK = 1;
D_C = 1;
SDIN = 1;
SCE = 1;
}
void LCD3310_init(void)
{
LCD3310_write_cmd(0x21);
LCD3310_write_cmd(0xd7);
LCD3310_write_cmd(0x06);
LCD3310_write_cmd(0x20);
LCD3310_write_cmd(0x0c);
}
void LCD3310_set_XY(unsigned char x,unsigned char y)
{
if (x >= 84) return;
if (y >= 6) return;
LCD3310_write_cmd(0x80 | x);
LCD3310_write_cmd(0x40 | y);
}
void LCD3310_print(unsigned char n)
{
n = (n << 2) + n;
LCD3310_write_dat(Font[n]);
LCD3310_write_dat(Font[++n]);
LCD3310_write_dat(Font[++n]);
LCD3310_write_dat(Font[++n]);
LCD3310_write_dat(Font[++n]);
} |
|