/*********************************************************************/
/*文件名称:12864-01-8x8.asm SIDE: 128 X 64 DOTS */
/*模 块 名: 12864-1 模块 CONTROLLER: KS0108 */
/*创 建 人:zmlceo 日期:2008-12-01 */
/*QQ:527717539 日期:2008-12-01 */
/*功能描述: */
/*其他说明: */
/*版 本:V1.0 */
/*********************************************************************/
//显示
/*****************/
/* */
/* 12864lcd */
/* */
/* */
/*****************/
#include <reg52.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/* Define the register command code */
#define Disp_On 0x3f
#define Disp_Off 0x3e
#define Col_Add 0x40
#define Page_Add 0xb8
#define Start_Line 0xc0
#define Lcd_Bus P0 //MCU P1 LCM
/*sbit Mcs="P2"^3; //Master chip enable
sbit Scs="P2"^4; //Slave chip enable
sbit Enable="P2"^0; //6800 mode Enable single
sbit Di="P2"^5; //Data or Instrument Select
sbit RW="P2"^6; //Write or Read
sbit Lcd_Rst=P2^2; //Lcm reset
sbit Test_Key=P2^1;*/
sbit Mcs="P2"^3; //Master chip enable
sbit Scs="P2"^4; //Slave chip enable
sbit Enable="P2"^2; //6800 mode Enable single
sbit Di="P2"^0; //Data or Instrument Select
sbit RW="P2"^1; //Write or Read
sbit Lcd_Rst=P2^5; //Lcm reset
sbit Test_Key=P1^0;
//;****************************************************************
/*;RS REG P2.0 DEFINE LCM DATA/INSTRUCTION PIN
;R/W REG P2.1 DEFINE LCM READ/WRITE PIN
;E REG P2.2 DEFINE LCM CHIP ENABLE PIN
;CS1 REG P2.3 DEFINE LCM CHIP 1 SELECT PIN
;CS2 REG P2.4 DEFINE LCM CHIP 2 SELECT PIN
;RSTB REG P2.5 DEFINE LCM /RESET PIN*/
char code SHU1[]={
/*-- 文字: 1 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00
};
char code SHU2[]={
/*-- 文字: 2 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00
};
char code SHU8[]={
/*-- 文字: 8 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00
};
char code SHU6[]={
/*-- 文字: 6 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00
};
char code SHU4[]={
/*-- 文字: 4 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00
};
char code L[]={
/*-- 文字: L --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00
};
char code C[]={
/*-- 文字: C --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00
};
char code D[]={
/*-- 文字: D --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00
};
/*****************/
/* */
/* 12864LCD */
/* */
/* */
/*****************/
/*------------------延时子程序-----------------------------*/
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
/*------------------写命令到LCD------------------------------*/
void write_com(unsigned char cmdcode)
{
Di=0;
RW=0;
Lcd_Bus=cmdcode;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/*-------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
Di=1;
RW=0;
Lcd_Bus=Dispdata;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/*-------------------读LCD数据----------------------------*/
unsigned char read_data()
{
unsigned char tmpin;
Di=1;
RW=1;
delay(0);
Enable=1;
delay(0);
Enable=0;
tmpin=Lcd_Bus;
return tmpin;
}
/*------------------清除内存---------------*/
void Clr_Scr()
{
unsigned char j,k;
Mcs=1;Scs=1;
write_com(Page_Add+0);
write_com(Col_Add+0);
for(k=0;k<8;k++){
write_com(Page_Add+k);
for(j=0;j<64;j++)write_data(0x00);
}
}
/*---------------------指定位置显示字符8*16-----------------------*/
void hz_disp816(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
unsigned char j="0",i=0;
for(j=0;j<2;j++){
write_com(Page_Add+pag+j);
write_com(Col_Add+col);
for(i=0;i<8;i++) write_data(hzk[8*j+i]);
}
}
用户162309 2010-7-14 17:29
用户293337 2010-7-12 14:01
用户293337 2010-7-12 13:57