15.5.2 程序设计
这里采用C51语言编写程序,具体操作步骤如下。
(1)在KeilµVision3集成开发环境中,选择“Project”→“New”→“µVision Project”新建一个工程,并保存。
(2)在弹出的选择器件对话框中,选择Atmel公司的AT89S52,如图15.31所示。
(3)单击“确定”按钮,此时询问是否添加启动代码,如图15.32所示。单击“是”按钮选择添加启动代码,完成工程的建立。
图 15.31 选择单片机AT89S52
图 15.32 添加启动代码
(4)选择“File”→“New”命令,新建一个程序文件,并保存为*.C文件。用户可以在其中输入程序源代码,示例如下。
include<reg52.h>//头文件
include<stdio.h>
unsigned data i;
unsigned char*p;//建立数组指针
unsigned char wbyte;
sbit E=P3^2;//读写使能信号,1有效
sbit R_W=P3^1;//读写选择信号;1为读选通,0为写选通
sbit RS=P3^0;
sbit D_I=P3^0;//数据指令选择信号;1为数据操作,0为写指令或读状态
char code Hanzi[32]=//汉字和字符数组
{
0x02,0x03,//笑脸,心
0x03,//心
0xb1,0xb1,//汉字“北”
0xbe,0xa9,//汉字“京”
0xb0,0xc2,//汉字“奥”
0xd4,0xcb,//汉字“运”
0xbb,0xe1,//汉字“会”
0x03,//心
0x03,0x02,//心,笑脸
0x30,0x31,//0,1
0x32,0x33,//2,3
0x34,0x35,//4,5
0x36,0x37,//6,7
0x38,0x39,//8,9
0x41,0x42,//A,B
0x43,0x44,//C,D
0x45,0x46//E,F
};
char code Hanzi1[28]=//汉字和字符数组
{
0xbb,0xb6,//汉字“欢”
0xd3,0xad,//汉字“迎”
0xc4,0xfa,//汉字“您”
0xa3,0xa1,//!
0x20,0x20,//空格
0x20,0x20,
0x20,0x20,
0x20,
0x32,0x30,//2,0
0x30,0x38,//0,8
0x2d,0x30,//-,0
0x38,0x2d,//8,-
0x30,0x38,//0,8
0x20,0x20,//空格
0x20,
};
unsigned char data j;
unsigned char data k;
void WCOM(unsigned char dcode);//指令操作子函数
void Dat(unsigned char ddata);//数据操作子函数
void Imim();/
void Clearlcd();//基本指令集清屏子函数
void Hanz();//汉字显示子函数
void main()
{
Imim();//初始化
Clearlcd();
j=32;//所建立的第一个汉字数组中元素的个数
k=0x80;//起始点:80h-8fh为在第一行显示
p=Hanzi;//指针指向数组的首地址*/
Hanz();//在1、3行写汉字程序
j=28;//所建立的第二个汉字数组中元素的个数
k=0x92;//起始点:90h-9fh为在第二行显示
p=Hanzi1;
Hanz();//在2、4行写汉字程序
while(1)
{
}
}
在该程序中,定义了液晶显示模块的E接单片机P3.2引脚,R_W接单片机P3.1引脚,D_I/RS接单片机P3.0引脚。程序中还定义了Hanzi和Hanzi1为两个汉字和字符数组,用于存放第一、三行和第二、四行显示的汉字和字符。其中的显示数据可以在ST7920字符集中查找。
在main主函数中,首先初始化液晶屏,然后进行基本指令集的清屏操作。接着将指针p分别指向Hanzi和Hanzi1,然后调用Hanz()函数在液晶屏上显示预定义的汉字和字符。液晶屏上的显示内容,如图15.33所示。
图 15.33 液晶屏显示内容