15.5.2 程序设计

这里采用C51语言编写程序,具体操作步骤如下。

(1)在KeilµVision3集成开发环境中,选择“Project”→“New”→“µVision Project”新建一个工程,并保存。

(2)在弹出的选择器件对话框中,选择Atmel公司的AT89S52,如图15.31所示。

(3)单击“确定”按钮,此时询问是否添加启动代码,如图15.32所示。单击“是”按钮选择添加启动代码,完成工程的建立。

15.5.2 程序设计 - 图1

图 15.31 选择单片机AT89S52

15.5.2 程序设计 - 图2

图 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.5.2 程序设计 - 图3

图 15.33 液晶屏显示内容