您的当前位置:首页正文

11730实验十二

2023-10-02 来源:伴沃教育
学 号

天津城建大学

嵌入式系统及应用A实验报告

实验十二 点阵字符液晶显示实验

学专指成

生业导、

姓班教

名 级 师 绩

计算机与信息工程学院

实验十二 点阵字符液晶显示实验

一、 任务及要求

任务:编写程序控制LCD1602点阵字符液晶模块,使字符分两行显示,实现逐 字符显示“Welcome to MCU51 LCD Learning!”字样并以从左向右移动的方式显示 该字符串的效果。

要求:通过实验,掌握点阵字符液晶原理;熟悉单片机对点阵字符液晶编程方法。

二、 实验源程序

#include

#define uchar unsigned char #define uint unsigned int

#define LCDDataBus P2 //定义LCD数据总线 sbit RS = P1^2; sbit RW = P1^3; sbit EP = P1^4;

// 延时函数 void delay(uchar k) { }

// 写数据函数

void LCDWriteData(uchar Data) { }

// 写指令函数

void LCDWriteCmd(uchar Cmd) {

RS=0; //传输指令 RW=0;

RS=1; //传输数据 RW=0; //写 LCDDataBus=Data; EP=1; delay(1); EP=0;

unsigned char i; for(i = 121; i > 0; i--); for(; k > 0; k--)

}

LCDDataBus=Cmd; EP=1; delay(1); EP=0;

// ================坐标转换函数 ============================ // 将坐标转换为LCD的坐标 // //

row = 0x00在第一行显示,row = 0x01在第二行显示 column = 0~15在LCD上的可见域显示

// ========================================================= void LCDPosition(uchar row,uchar column) { }

// ==============在指定位置写数据函数======================= // row指定行,column指定列位置,c为待写入的数据。

// ========================================================= void writeChar(uchar row,uchar column, char c) { }

// ============写字符串函数================================

// row表示行,column1表示第一行起始地址,column2表示下一行起始地址,均从1开始。 // ========================================================= void writeString(uchar row,uchar column1,uchar column2, char *s) {

char i; if((*s)=='\\0') {

if((*(s+i)) == '\\0') return; for(i = 0; ; i++)

LCDPosition(row,column); LCDWriteData(c); delay(500);

LCDWriteCmd(position); delay(10); char position; if(row == 1)

position = 0x80 + column - 1; position = 0xC0 + column - 1; else if(row == 2)

}

}

{ }

break;

if(i <= 15)

writeChar(row,column1,*(s+i)); delay(2); column1++;

if(i > 15 && i< 32) { }

writeChar(row + 1,column2,*(s+i)); delay(2); column2++;

// 移动字符串函数 void moveString(char *s) { }

// 液晶初始化函数 void LCDInit(void) {

LCDWriteCmd(0x38); //设置16*2显示,5*7点阵,8位数据接口 delay(30);

LCDWriteCmd(0x01);//清屏 delay(30);

LCDWriteCmd(0x06);//地址加一,整屏右移 delay(30);

LCDWriteCmd(0x0f);//开显示,光标闪烁,显示光标 }

// 主函数 void main(void) {

LCDInit(); uchar i;

writeString(1,25,25,s); for(i = 16; i > 0; i--) { }

LCDWriteCmd(0x18); delay(900);

//屏幕移动

}

writeString(1,1,1,\"Welcome to MCU51 LCD Learning!\"); delay(100);

moveString(\"Welcome to MCU51 LCD Learning!\"); while(1);

三、 仿真环境搭建

四、 实验总结

掌握点阵字符液晶原理;熟悉单片机对点阵字符液晶编程方法,学会了LCD的现实原理与编程技巧。

因篇幅问题不能全部显示,请点此查看更多更全内容