原创 12864液晶C程序+电路+图片 (控制器KS0108)

2010-2-1 09:51 9830 6 9 分类: MCU/ 嵌入式


点击看大图点击看大图


/*********************************************************************/
/*文件名称: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]);
}
}



 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户162309 2010-7-14 17:29

我QQ 527717539

用户293337 2010-7-12 14:01

#include 请问:你的程序复制以后就能用吗?

用户293337 2010-7-12 13:57

请问:楼主有QQ吗? 我有问题想问。
相关推荐阅读
用户162309 2010-02-01 09:52
12864液晶asm程序+电路+图片 (控制器KS0108)
/*********************************************************************//*文件名称:12864-01-8x8.asm      ...
用户162309 2008-08-06 17:28
STM32F103VB开发板使用心得
2008年7月3日参加了ARM成都地区研讨会。7月16号买了STM32F103VB开发板680的,最近就在研究这个板子。使用U LINK2 仿真器下载程序,目前只是下载程序,然后复位电路,没有用仿真功...
我要评论
3
6
关闭 站长推荐上一条 /3 下一条