12864带字库操作步骤

单片机用的是STC12C5608AD硬件连接就是上面的哪5个插件对应的液晶的20P接口。求讲解一下如何写文字进液晶里显示。看12864的资料看不懂采纳后追加50分... 单片机用的是STC12C5608AD硬件连接就是上面的哪5个插件对应的液晶的20P接口。求讲解一下如何写文字进液晶里显示。看12864的资料看不懂采纳后追加50分 展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
yhsy1002
推荐于2016-03-04 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:100%
帮助的人:38.6万
展开全部
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*12864端口定义*/
#define LCD_data P1 //数据口
sbit LCD_RS = P2^4; //选择寄存器(并行) 0 ;指令 1 :数据;
sbit LCD_RW = P2^3; //液晶读/写控制
sbit LCD_EN = P2^2; //读写数据启始宽含烂脚(并行)
sbit LCD_PSB = P2^7; //串/并老衡方式控制 0为串行模式,1 为并
sbit LCD_RST = P2^5; //复位 低电平有
uchar code dis1[] = {"一二三四 ,送 |"};
uchar code dis2[] = {"落日故人情。友李"};
uchar code dis3[] = {"挥手自兹去,人白"};
uchar code dis4[] = {"萧萧班马鸣。 | "};
/********************************************************
//延时函数
//*******************************************************/
void delay(uint k)
{
uint i;
uchar j;
for(i=0;i<k;i++)
{
for(j=0;j<10;j++);
}
}
/**********************************************************
// 延时1ms 函数
//********************************************************/
void delay_ms(unsigned int k)//延时0.994us,晶振12M
{
unsigned int x,y;
for(x=k;x>0;x--)
for(y=121;y>0;y--);
}
void ledzs()
{
led=0;
delay_ms(100);
led=1;
delay_ms(100);
}
/*************************************************************
/慎漏 12864 读忙标志位 最高位为1 则忙,不能读写
/************************************************************/
void Read_busy()
{
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
while(P2&0x80);
LCD_EN=0;
}
/*************************************************************
/ 写命令函数
/************************************************************/
void Lcdwcom(uchar wcom)
{
Read_busy(); //每次进行读忙标识 可以不加 最好加
delay(1); // 延时
LCD_RS=0; //指令 为底 数据为高
delay(1); // 延时
LCD_RW=0; //写为底 读为高
delay(1); // 延时
LCD_EN=1; //使能信号
delay(1); // 延时
LCD_data=wcom; //将指令写入并口
delay(1); // 延时
LCD_EN=0; // 关闭使能
}
/*************************************************************
/ 写数据函数
/************************************************************/
void Lcdwdata(uchar wdata)
{
Read_busy();
delay(1);
LCD_RS=1; //指令 为底 数据为高
delay(1);
LCD_RW=0; //写为底 读为高
delay(1);
LCD_EN=1; //使能信号
delay(1);
LCD_data=wdata; //将数据写入并口
delay(1);
LCD_EN=0; // 关闭使能
}
/*************************************************************
/ 12864显示位置设定函数
参数说明: x 为行号 y 位列号
/************************************************************/
void Set_Pos(uchar x,uchar y)
{
uchar i;
switch(x) //确定行号
{
case 0: i=0x80; break;
case 1: i=0x90; break;
case 2: i=0x88; break;
case 3: i=0x98; break;
default :break;
}
i=i+y; //确定列号
Lcdwcom(i);
}
/*************************************************************
/ 12864初始化函数 顺序不可乱
/************************************************************/
void LCD_Init(void)
{
delay_ms(2);
LCD_RST=1;
LCD_RST=0;
LCD_RST=1;
LCD_PSB=1; //选择并口
Lcdwcom(0x30); //基本指令操作1 延时不同
delay(8);
Lcdwcom(0x30); //基本指令操作2
delay(5);
Lcdwcom(0x0c); //显示开光标
delay(5);
Lcdwcom(0x01); //清楚LCD显示内容
delay(5);
Lcdwcom(0x06); //光标的移动方向
delay(5);
}
/*************************************************************
/ 12864 指定位置显示字符串函数 若整体化则只能显示第一行
/************************************************************/
void Display_String(uchar x1,uchar y1,uchar *string)
{
uchar i=0;
Set_Pos(x1,y1); //设定位置
while(string[i]!='\0')
{
Lcdwdata(string[i]);
i++;
}
}
/*************************************************************
/ 12864 自带字符串显示函数 只需将ASCII码 写入即可 不怎么好使
/************************************************************/
void Display_Ascii(uchar x2,uchar y2,uchar ascii)
{
Set_Pos(x2,y2);
Lcdwdata(ascii);
}
void main()
{
uchar j=0;
LCD_Init();
Lcdwcom(0x01); //清楚LCD显示内容
Display_String(0,0,dis1);
Display_String(1,0,dis2);
Display_String(2,0,dis3);
Display_String(3,0,dis4);
while(1);
}
追问
要改变屏幕的字显示要在哪里修改
追答
只需要修改这四句话里面就可以,
uchar code dis1[] = {"一二三四 ,送 |"};
uchar code dis2[] = {"落日故人情。友李"};
uchar code dis3[] = {"挥手自兹去,人白"};
uchar code dis4[] = {"萧萧班马鸣。 | "};
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式