12864液晶显示程序(串口)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*------------------初始化-----------------*/
void init_lcd (void)
{
// rst=1;
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
void lcd_string(uchar x0,uchar y0,uchar k,uchar *chn)
{
uchar adr,i;
switch(x0)
{
case 0: adr = 0x80 + y0;
break; //在第1行y列显示
case 1: adr = 0x90 + y0;
break; //在第2行y列显示
case 2: adr = 0x88 + y0;
break; //在第3行y列显示
case 3: adr = 0x98 + y0;
break; //在第4行y列显示
default: ;
}
wr_lcd (comm,0x30);
{
case 0: adr = 0x80 + y0;
break; //在第1行y列显示
case 1: adr = 0x90 + y0;
break; //在第2行y列显示
case 2: adr = 0x88 + y0;
break; //在第3行y列显示
case 3: adr = 0x98 + y0;
#define comm 0
#define dat 1
sbit cs = P0^0;
sbit std = P0^1;
sbit sclk = P0^2;
//sbit rst = P0^3; //Reset Signal 低电平有效
void wr_lcd (uchar dat_comm,uchar content);
wr_lcd (comm,adr);
for(i=0;i<k;i++)
wr_lcd (dat,chn[i]);
}
/*------------------主程序--------------------*/
void main ()
{ uchar chn[4]={0x31,0x32,0x35,0x36};
delay (100);
wr_lcd (comm,0x06); /*光标的移动方向*/
wr_lcd (comm,0x0c); /*开显示,关游标*/
}
/*--------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
a=content;
cs=1;
_nop_();
sclk=0;
_nop_();
std=1;
_nop_();
for(i=0;i<5;i++)
{
sclk=1;
_nop_();
_nop_();
_nop_();
sclk=0;
}
std=0;
_nop_();
sclk=1;
_nop_();
_nop_();
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
_nop_();
_nop_();
_nop_();
sclk=0;
}
wr_lcd (comm,0x01);
delay (180);
}
/*---------------------------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
uchar a,i,j;
delay (500);
void delay (uint us);
void lcd_char(uchar x0,uchar y0,uchar k,uchar *chn);
void init_lcd (void);
void lcd_string(uchar x0,uchar y0,uchar k,uchar *chn);
break; //在第4行y列显示
default: ;
}
wr_lcd (comm,0x30);
wr_lcd (comm,adr);
for(i=0;i<2*k;i++)
wr_lcd (dat,chn[i]);
}
//在任意位置显示字符串,k为字符个数
}
}
/*-----------------------------------*/
void delay (uint us) //delay time
{
while(us--);
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
程序代码如下:
#include <reg52.h>
#include"INTRINS.H"
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
_nop_();
sclk=1;
_nop_();
_nop_();
_nop_();
sclk=0;
for(jቤተ መጻሕፍቲ ባይዱ0;j<2;j++)
{
for(i=0;i<4;i++)
{
a=a<<1;
std=CY;
sclk=1;
_nop_();
_nop_();
_nop_();
_nop_();
sclk=0;
_nop_();
if(dat_comm)
std=1; //data
else
std=0; //command
sclk=1;
_nop_();
_nop_();
_nop_();
sclk=0;
std=0;
uchar b[]={"欢迎使用本程序"};
init_lcd ();
while (1)
{
clrram();
lcd_char(0,0,7,b);
lcd_string(1,0,4,chn);
delay1 (8000);
}
}
delay(1);
}
/*-------在任意位置显示一串汉字------
X0为行,Y0为列,chn为所要显示的汉字串 ,k为汉字个数
*/
void lcd_char(uchar x0,uchar y0,uchar k,uchar *chn)
{
uchar adr,i;
switch(x0)