单片机控制的LCD 1602的电子广告牌_单片机lcd1602程序
单片机控制的LCD 1602的电子广告牌由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机lcd1602程序”。
单片机控制的LCD 1602的电子广告牌
设计要求:
用单片机控制字符型LCD 1602显示字符信息“Hello everyone!”和“Welcome to Harbin”。字符信息“Hello everyone!”、“Welcome to Harbin”分别从LCD 1602右侧第一行、第一行滚动移入,然后再从左侧滚动移出,循环显示。
功能说明:由于液晶模块用怎样的命令控制显示由模块本身在制造时已经给出,实现相应的显示功能参照说明即可,液晶模块与单片机的连接不采用添加多个与非门的方式,而采用更直接、清晰的方式,使WR、RD直接与LCD的R/W、RS相连,使能端与P3^5相连,由软件给出下降沿,电路图如下:
详细的功能说明:
1)给LCD写命令、送数据等均需要进行选中寄存器、发送命令或数据代码、使能端有效等过程,若逐一写出会使程序混乱冗长,因此将写命令、写数据、初始化等分别封装在子函数中,方便随时调用。
2)为实现滚动显示,使用命令打开整体显示移动。
3)由于显示字母只需将相应的ASCII代码发送给LCM即可,因此将需要显示的字符直接设为数组中的元素,显示时逐一写入液晶。4)若数组中只有相应的字符,显示的末尾会出现预料之外的字符,因此加入足够的空格避免这种现象发生。
5)为实现循环不断显示的功能,只需将函数整体放入while(1)中即可,但应注意下一次循环开始前将DDRAM的地址回复为第一行。C语言程序: #include #define uchar unsigned char #define uint unsigned int #define LCDPORT P0 uchar code tab[]=“Hello everyone!
uchar code tab1[]=”Welcome to Harbin 出现不该出现的字符 sbit LCDE=P3^5;sbit LCDRW=P3^6;sbit LCDRS=P3^7;
void WriteCMD(uchar);
void init();
void WriteData(uchar);
void Delay();
void mydelay(int);
void main(){
uint i;
init();
while(1)
{
for(i=0;i
{
WriteData(tab[i]);的“忙”状态
mydelay(50);
}
mydelay(50);
WriteCMD(0x01);
WriteCMD(0x80+0x40+15);行末尾,从此处开始进入字符
for(i=0;i
{
WriteData(tab1[i]);
mydelay(50);
}
mydelay(50);
“;
”;//字符后面加若干个空格,防止滚动显示时
//定义写命令函数
//定义初始化函数
//定义写数据函数
//定义延迟函数
//定义无符号整形变量
//液晶模块的初始化
//使之一直进行滚动显示程序,不断循环 //显示第一行字符
//每显示一个字符后停留一会,越过液晶
//清屏,准备进行下一行显示
//改变DDRAM的地址,更改为第二 //开始输入第二行字符
WriteCMD(0x01);
WriteCMD(0x80+15);
进入下一次循环,显示重新开始
} }
void Delay(){
uint uiCount;
for(uiCount=0;uiCount
void WriteCMD(uchar Command)
寄存器 {
Delay();
LCDE=1;
LCDRS=0;
LCDRW=0;
LCDPORT=Command;
LCDE=0;
执行命令 }
void WriteData(uchar dat)
符 {
Delay();
LCDE=1;
LCDRS=1;
LCDRW=0;
LCDPORT=dat;
LCDE=0;
}
void init()
{
LCDRW=0;
LCDE=0;
WriteCMD(0x38);
WriteCMD(0x0c);
WriteCMD(0x07);
WriteCMD(0x01);
WriteCMD(0x80+15);
//DDRAM的地址改回第一行,准备 //写命令函数,用于修改液晶的状态
//先延时,越过液晶“忙”状态
//使能端先置1 //设置RS为0,打开指令寄存器
//设置为写寄存器状态
//输出命令
//使能端由1变0,出现下降沿有效,//写数据函数,用于提供液晶的显示的字
//把LCD改为写入数据状态
//再输出数据
//使能端有效,显示数据
//初始化程序,模块化使程序更清晰
//设置双行显示、8位数据接口
//设置整体显示开、光标关、字符不闪烁//设置为增量方式,整体显示移动开 //清屏
//设置字符进入屏幕的初始位置
}
void mydelay(int x){
int i,j;
for(i=x;i>0;i--)
for(j=255;j>0;j--);}
基于51单片机的电子广告牌电路设计2011-10-15 14:08:20来源:互联网关键字:51单片机 电子广告牌0 引 言现在城市中用于装点各种建筑物的绚丽色彩依旧是霓虹灯.但是霓虹灯具有发......
《单片机原理与应用》课程设计报告题 目:LCD数字式温度湿度测量计 专 业:自动化 班 级:A1332 学 号:10 姓 名:曾志勇 指导老师:查兵2016-06-08目 录1.设计题目、要求及分工 ............
#include#define uchar unsigned char#define uint unsigned int#define KEY_IO P3#define LCD_IO P0sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;sbit SPK......
毕业论文题目:单片机制作控制继电器的电路毕业论文目录引言··············································1 摘要····......
毕业设计程序源代码ORG 0000H;主程序的入口地址LJMP MAIN;跳转到主程序的开始处ORG 0003H;外部中断0的中断程序入口地址ORG 000BH;定时器0的中断程序入口地址LJMP T0_INT;跳......
