89C52单片机液晶汉字显示c语言程序.docx
《89C52单片机液晶汉字显示c语言程序.docx》由会员分享,可在线阅读,更多相关《89C52单片机液晶汉字显示c语言程序.docx(31页珍藏版)》请在冰豆网上搜索。
![89C52单片机液晶汉字显示c语言程序.docx](https://file1.bdocx.com/fileroot1/2022-12/30/1b853187-aa3c-4cbe-a208-b8aac8caeafb/1b853187-aa3c-4cbe-a208-b8aac8caeafb1.gif)
89C52单片机液晶汉字显示c语言程序
单片机液晶汉字显示语言程序
*液晶屏分为行*列汉字,全部使用模拟接口方式。
*接口程序(模拟方式)
;**********************单片机液晶汉字显示语言程序*****************************************************
;连线图:
;*********
;*********
;*********
;*********
;*******
;注的晶振频率为*
;*****************************单片机液晶汉字显示语言程序**********************************************
画线部分请参照的程序。
**生成文件开关,必要时打开*
<>
<>
<>
***********液晶显示器接口引脚定义***************
^;
^;
^;
^;*这个连接只是做实验的临时接法。
*
^;
^;
;数据口
[]{"浸渠叁绳漱塔烃威牺晓玄瑶"};
***********常用操作命令和参数定义***************
*显示*
*显示*
*显示起始行定义*
*定位设定指令(页)*
*定位设定指令(列)*
*忙判断位*
**************显示分区边界位置*****************
*左区*
*左区和中区分界*
*中区和右区分界*
*显示区的右边界*
****************全局变量定义*******************
;*列,行(页),输出数据*
;*画线方向标志:
水平*
*****************函数列表**********************
();*液晶模块初始化*
();*延时,入口数为*
();*判断、等待(左区)*
();*判断、等待(中区)*
();*判断、等待(右区)*
();*半角字符输出*
();*全角(汉字)输出*
();*数据输出给*
();*全屏幕清零(填充)*
();*公用等待*
();*光标定位*
();*左区命令输出*
();*中区命令输出*
();*右区命令输出*
(*);*中英文字符串输出*
();*屏幕向上滚动演示*
();*从液晶片上读数据*
();*横(竖)方向画线*
();*打点*
();
******************数组列表*********************
[];*常规字符点阵码表*
[];*自用汉字点阵码表*
[];*自定义字符串*
[];
[];
[];
********************************
*单片机液晶汉字显示语言程序*
********************************
()
{
;
;
;
();*延时大约,等待外设准备好*
();*液晶模块初始化,包括全屏幕清屏*
();*第一行字符输出,字节*
;
;
();*第二行字符输出,字节*
;
;
();*第三行字符输出,字节*
;
;
();*第四行字符输出,字节*
;
;
;
;*方向标志。
定为水平方向*
();*画一条横线()()*
;
;
;
();*画一条横线()()*
;
;
;
();*画一条横线()()*
;
;
;*方向标志。
定为垂直方向*
();*画一条竖线()()*
;
;
;
();*画一条竖线()()*
;*设定斜线的起点坐标*
;
();*画一段斜线()()*
;
;
();*继续画斜线()()*
(){
();*定位新的显示起*
;
;
[];
();*延时,控制滚动速度*
};
}
************************************************
*画线。
任意方向的斜线,不支持垂直的或水平线*
************************************************
()
{
;
;
;
**
;
;
*,
""*
(>);
();
;
(>);
();
;
**
();
();
(>);
;
**
(<;){
();
;
;
(>){
;
;
}
(>){
;
;
}
}
}
****************************************
*画线。
只提供或方向的,不支持斜线*
****************************************
()
{
;
(){;
(<){
;
();}
}
{;
(<){
;
();}
}
}
***************单片机液晶汉字显示语言程序*************************
*画点*
****************************************
()
{
;
;
;
>>;*取方向分页地址*
();
;*字节内位置计算*
;
<<;*移入所画点*
();*画上屏幕*
;*恢复坐标*
;
}
****************************************
*屏幕滚动定位*
****************************************
()
{
;*定义显示起始行为?
*
();
();
();
}
****************************************
*一个字串的输出*
****************************************
(*)
{
;
(<)
{
[];
()
{
();*只保留低位*
}
();*码表从开始*
}
}
****************************************
*半角字符点阵码数据输出*
****************************************
()
{
;*共定义个局部变量*
;*偏移量,字符量少的可以定义为*
;*暂存坐标,已备下半个字符使用*
;
*;*半角字符,每个字符字节*
*上半个字符输出,列*
(<)
{
[];*取点阵码,数组*
();*写输出一字节*
;
;
(){;};*下一列,如果列越界换行*
(>);*如果行越界,返回首行*
}*上半个字符输出结束*
;*列对齐*
;*指向下半个字符行*
*下半个字符输出,列*
(<)
{
[];*取点阵码*
();*写输出一字节*
;
;
(){;};*下一列,如果列越界换行*
(>);*如果行越界,返回首行*
}*下半个字符输出结束*
;
}*整个字符输出结束*
****************************************
*全角字符点阵码数据输出*
****************************************
()
{
;*共定义个局部变量*
;*偏移量,字符量少的可以定义为*
;*暂存坐标,已备下半个字符使用*
;
*;*每个字符字节*
*上半个字符输出,列*
(<)
{
([]);*写输出一字节*
;
;
(){;}*下一列,如果列越界换行*
(>);*如果行越界,返回首行*
}*上半个字符输出结束*
*下半个字符输出,列*
;
;
(<)*下半部分*
{
([]);
;
;
(){;}*下一列,如果列越界换行*
(>);*如果行越界,返回首行*
}*下半个字符输出结束*
;
}*整个字符输出结束*
****************************************
*清屏,全屏幕清零*
****************************************
()
{
(<)
(<)();
}
****************************************
*从液晶片上读数据,保留在全局变量中*
****************************************
()
{
();*坐标定位,返回时保留分区状态不变*
;
;*数据*
;*读数据*
;*读入到*
();
;*虚读一次*
;
();*坐标定位,返回时保留分区状态不变*
;
();
;*数据*
;*读数据*
;*读入到*
();
;*从数据口读数据,真读*
;
}
****************************************
*数据写输出*
****************************************
()
{
();*坐标定位,返回时保留分区状态不变*
();
;*数据输出*
;*写输出*
;*数据输出到数据口*
;*读入到*
();
;
}
****************************************
*命令输出,每次输出一个分区控制口*
****************************************
*()
{
();*确定分区,返回时保留分区状态不变*
();*等待操作允许*
;*数据操作*
;*写输出*
;*数据输出到数据口*
();*读入到*
}
********************************
*命令输出到左区控制口*
********************************
()
{
();*确定分区,返回时保留分区状态不变*
;*命令操作*
;*写输出*
;*数据输出到数据口*
();*读入到*
}
********************************
*命令输出到中区控制口*
********************************
()
{
();*确定分区,返回时保留分区状态不变*
;*命令操作*
;*写输出*
;*命令输出到数据口*
();*读入到*
}
********************************
*命令输出到右区控制口*
********************************
()
{
();*确定分区,返回时保留分区状态不变*
;*命令操作*
;*写输出*
;*命令输出到数据口*
();*读入到*
}
*****************单片机液晶汉字显示语言程序***************************************
*分区操作允许等待,返回时保留分区选择状态*
********************************************************
()
{
;**
;**
;**
();**
}
()
{
;**
;**
;**
();**
}
()
{
;**
;**
;**
();**
}
()
{
;**
;**
;**
();
();
;
}
********************单片机液晶汉字显示语言程序************************************
*根据设定的坐标数据,定位上的下一个操作单元位置*
********************************************************
()
{
;
()**
{*条件分支执行*
:
{();}*左区*
:
{();}*中区*
:
{();}*右区*
}
;**
;**
();**
;**
;**
;**
();
();**
;**
;**
;**
();
}
********************************
*液晶屏初始化*
********************************
()
{
;*关闭显示屏*
();
();
();
;*打开显示屏*
();
();
();
;*定义显示起始行为零*
();
();
();
();
;*清屏*
;
();
}
********************************
*延时*
********************************
()
{
;
()
{;
()
{
;
(){;};
;
}
;
}
}
********************************
定义字符串数组*
********************************
[]
{
};
[]"";
[]"";
[]"";
********************************
*定义中文字库*
********************************
[]{
*茂*
*兴*
*国*
*际*
*(*
*广*
*东*
*)*
*有*
*限*
*公*
*司*
};
****************************************
*定义字库列*行*
****************************************
[]{
*文字:
*
*文字*
*文字:
"*
*文字*
*文字:
$*
*文字*
*文字*
*文字:
'*
*文字:
(*
*文字:
)*
*文字:
**
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字:
<*
*文字*
*文字:
>*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字:
{*
*文字:
\*
*文字:
}*
*文字:
^*
*文字*
*文字:
`*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字*
*文字:
{*
*文字*
*文字:
}*
*文字*
};