專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機+1602液晶顯示

作者:jfe5254   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2010年08月10日   【字體:

忙了一天做了一個1602 顯示的仿真電路和程序  經(jīng)過調(diào)試正常運行!!Success的感覺真好  哈哈.........

現(xiàn)在就把成果分享給大家


 

本電路程序如下:
#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);//顯示模式設(shè)置 設(shè)定1602*2顯示 5*7點陣 8為數(shù)據(jù)入口
 write_cmd(0x0c);//顯示開關(guān)、光標(biāo)設(shè)置 0x0f可以顯示光標(biāo)
 write_cmd(0x04);//光標(biāo)機屏幕顯示設(shè)方式置
 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);        //動態(tài)停機
}
如果需要動態(tài)移動還可以再加上一條屏幕移動指令
for(num=0;num<16;num++)
{
write_cmd(0x1f);
delay(8000);
}

關(guān)閉窗口

相關(guān)文章