#include <at89x52.h>
#include <Intrins.h>
sbit hc138_a=P2^0;
sbit hc138_b=P2^1;
sbit hc138_c=P2^2;
sbit u8_e=P2^3;
sbit u9_e=P2^4;
sbit u10_e=P2^6;
sbit sce=P0^4; //片选
sbit res=P2^7; //复位,0复位
sbit dc=P0^5; //1写数据,0写指令
sbit sdin=P0^6; //数据
sbit sclk=P0^7; //时钟
unsigned char code hanzi[]={
/*-- 文字: 宁 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x90,0x8C,0x84,0x84,0x84,0x85,0x86,0x84,0x84,0x84,0x84,0x94,0x8E,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 波 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x60,0x01,0xE6,0x00,0xF8,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x18,0x08,0x00,
0x04,0x04,0xFF,0x40,0x30,0x8F,0x80,0x41,0x26,0x18,0x18,0x26,0x61,0xC0,0x40,0x00,
/*-- 文字: 单 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00,0x00,
0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08,0x00,
/*-- 文字: 片 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0xFE,0x10,0x10,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x18,0x10,0x00,
0x80,0x40,0x30,0x0F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x00,0x00,0x00,0x00,
/*-- 文字: 机 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,
/*-- 文字: 开 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00,
0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 发 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x3E,0x10,0x10,0xF0,0x9F,0x90,0x90,0x92,0x94,0x1C,0x10,0x10,0x10,0x00,
0x40,0x20,0x10,0x88,0x87,0x41,0x46,0x28,0x10,0x28,0x27,0x40,0xC0,0x40,0x00,0x00,
/*-- 文字: 网 --*/
/*-- Trebuchet MS12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xFE,0x02,0x12,0x22,0xC2,0x22,0x1A,0x22,0x42,0x82,0x72,0x22,0xFE,0x00,0x00,
0x00,0x7F,0x08,0x04,0x03,0x00,0x03,0x0C,0x04,0x02,0x01,0x26,0x60,0x3F,0x00,0x00,
};
//---------------------------------------
//名称: 74HC138选择函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:[email protected]
//日期:20100401
//-----------------------------------------
void select_hc138(unsigned char con)
{
con&=0x03;
u8_e=0;
u9_e=0;
u10_e=0;
switch(con)
{
case 0: //关闭U8,U9,U10
break;
case 1: //打开U8,关闭U9,U10
u8_e=1;
break;
case 2: //打开U9,关闭U8,U10
u9_e=1;
break;
case 3: //打开U10,关闭U8,U9
u10_e=1;
break;
}
}
//---------------------------------------
//名称: 使用SPI接口写数据到LCD
//参数:dt:写入的数据 command: 1-数据/0-命令
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:[email protected]
//日期:20100501
//-----------------------------------------
void LCD_write_byte(unsigned char dt, unsigned char command)
{
unsigned char i;
sce=0;
dc=command;
for(i=0;i<8;i++)
{
if(dt&(0x80>>i))
sdin=1;
else
sdin=0;
sclk=0;
sclk=1;
}
dc=1;
sce=1;
sdin=1;
}
//---------------------------------------
//名称: 5110LCD初始化函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:[email protected]
//日期:20100501
//-----------------------------------------
void LCD_init(void)
{
unsigned char k;
res=0;
for(k=0;k<250;k++);
res=1; //LCD复位
LCD_write_byte(0x21,0);//LCD功能设置:芯片活动,水平寻址,使用扩展指令
LCD_write_byte(0xC0,0);//设置VOP值,调整液晶的对比度,需要改变此参数
LCD_write_byte(0x20,0);//LCD功能设置:芯片活动,水平寻址,使用基本指令
LCD_write_byte(0x0C,0);//设定显示配置:普通模式
}
//---------------------------------------
//名称: LCD清屏函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:[email protected]
//日期:20100501
//-----------------------------------------
void LCD_clear(void)
{
unsigned char t;
unsigned char k;
for(t=0;t<6;t++)
{
for(k=0;k<84;k++)
{
LCD_write_byte(0,1);
}
}
}
//---------------------------------------
//名称: 设置坐标函数
//参数:X:0-83 Y:0-5
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:[email protected]
//日期:20100501
//-----------------------------------------
void LCD_set_XY(unsigned char X, unsigned char Y)
{
LCD_write_byte(0x40 | Y, 0);
LCD_write_byte(0x80 | X, 0);
}
//---------------------------------------
//名称: 写一个汉字到LCD函数
//参数:row,page:写入汉字的地址 c: 写入汉字在han表格中的位置
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:[email protected]
//日期:20100501
//-----------------------------------------
void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符
{
unsigned char i;
LCD_set_XY(row*8, page);// 列,页
for(i=0; i<16;i++)
{
LCD_write_byte(hanzi[c*32+i],1);
}
LCD_set_XY(row*8, page+1);// 列,页
for(i=16; i<32;i++)
{
LCD_write_byte(hanzi[c*32+i],1);
}
}
//---------------------------------------
//名称: 主函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:[email protected]
//日期:20100501
//-----------------------------------------
void main()
{
select_hc138(0); //关闭U8,U9,U10
LCD_init(); //初始化LCD模块
LCD_clear(); //清屏幕
LCD_write_hanzi(0,0,0); //宁
LCD_write_hanzi(2,0,1); //波
LCD_write_hanzi(4,0,2); //单
LCD_write_hanzi(6,0,3); //片
LCD_write_hanzi(8,0,4); //机
LCD_write_hanzi(1,2,5); //开
LCD_write_hanzi(4,2,6); //发
LCD_write_hanzi(7,2,7); //网
while(1)
{
}
}
评论0