忙了一天做了一個1602 顯示的仿真電路和程序 經過調試正常運行!!Success的感覺真好 哈哈.........
現在就把成果分享給大家
本電路程序如下:
#include<reg51.h>
#include<stdio.h>
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]="Hello Jary!";
uchar code tab1[]="I Love You!";
uchar num,len,len1;
sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7;
void delay(uint x)
{
while(--x);
}
void write_cmd(uchar cmd)
{
RS=0;
RW=0;
P0=cmd;
delay(50);
EN=1;
delay(50);
EN=0;
}
void write_dat(uchar dat)
{
RS=1;
RW=0;
P0=dat;
delay(50);
EN=1;
delay(50);
EN=0;
}
void inti_lcd()//1602初始化
{
EN=0;
write_cmd(0x38);//顯示模式設置 設定1602*2顯示 5*7點陣 8為數據入口
write_cmd(0x0c);//顯示開關、光標設置 0x0f可以顯示光標
write_cmd(0x04);//光標機屏幕顯示設方式置
write_cmd(0x01);//清屏
write_cmd(0x80);//指針初始化
}
void main()
{
inti_lcd();
len=sizeof(tab);
len1=sizeof(tab1);
write_cmd(0x80+0x02);
for(num=0;num<len;num++)
{
write_dat(tab[num]);
delay(6);
}
write_cmd(0x80+0x45);
for(num=0;num<len1;num++)
{
write_dat(tab1[num]);
delay(6);
}
while(1); //動態停機
}
如果需要動態移動還可以再加上一條屏幕移動指令
for(num=0;num<16;num++)
{
write_cmd(0x1f);
delay(8000);
}

