忙了一天做了一個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); }