標(biāo)題:
有關(guān)LCD1602動(dòng)態(tài)顯示的源程序和仿真原理圖
[打印本頁(yè)]
作者:
青春風(fēng)鈴
時(shí)間:
2016-10-25 16:13
標(biāo)題:
有關(guān)LCD1602動(dòng)態(tài)顯示的源程序和仿真原理圖
寫了一個(gè)基本的1602動(dòng)態(tài)顯示程序供大家參考!希望能給初學(xué)者帶來幫助。
字符式LCD滾動(dòng)顯示.rar
2016-10-25 16:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
71.46 KB, 下載次數(shù): 30, 下載積分: 黑幣 -5
1602
作者:
admin
時(shí)間:
2016-11-13 21:33
#include "stc15f2k60s2.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit lcd_rs=P0^7;
sbit lcd_rw=P0^6;
sbit lcd_en=P0^5;
uchar idata dis0[]={" "};
uchar idata dis1[]={"hdxydxc@163.com"};
uchar idata dis2[]={"QQ:1767104479"};
uchar idata dis3[]={"2016-10-20"} ;
uchar idata dis4[]= {"I LOVE YOU"};
void delay(uchar ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
uchar Busy_Check(void)// 測(cè)試LCD忙碌狀態(tài)
{
uchar LCD_Status;
lcd_rs=0;
lcd_rw=1;
lcd_en=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
LCD_Status=P0&0x80;
lcd_en=0;
return LCD_Status;
}
void lcd_wcmd(uchar cmd) //寫入指令數(shù)據(jù)到LCD
{
while(Busy_Check()); //等待LCD空閑
lcd_rs=0;
lcd_rw=0;
lcd_en=0;
_nop_ ();
_nop_ ();
P2=cmd;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
lcd_en=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
lcd_en=0;
}
void lcd_pos(uchar pos) // 設(shè)定顯示位置
{
lcd_wcmd(pos|0x80); //設(shè)置LCD當(dāng)前光標(biāo)的位置
}
void lcd_wdat(uchar dat)//寫入字符顯示數(shù)據(jù)到LCD
{
while(Busy_Check()); //等待LCD空閑
lcd_rs=1;
lcd_rw=0;
lcd_en=0;
P2=dat;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
lcd_en=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
lcd_en=0;
}
void LCD_disp(void) //向上滾動(dòng)
{
uchar i;
lcd_pos(1); //設(shè)置顯示位置為第一行的第二個(gè)字符
i=0;
while(dis0[i]!='\0')
{
lcd_wdat(dis0[i]); //在第一行顯示字符串“”
i++;
}
delay(1200);
lcd_pos(0x41);//設(shè)置顯示位置為第二行第二個(gè)字符
i=0;
while(dis1[i]!='\0')
{
lcd_wdat(dis1[i]); //在第1行顯示字符串“hdxydxc@163.com”
i++;
}
delay(200);
lcd_wcmd(0x01); //清除LCD顯示內(nèi)容
delay(1);
lcd_pos(1);//設(shè)置顯示位置為第一行第二個(gè)字符
i=0;
while(dis1[i]!='\0')
{
lcd_wdat(dis1[i]); //在第一行顯示字符串“hdxydxc@163.com”
i++;
}
delay(1200);
lcd_pos(0x41);//設(shè)置顯示位置為第二行第二個(gè)字符
i=0;
while(dis2[i]!='\0')
{
lcd_wdat(dis2[i]); //在第二行顯示字符串“QQ:1767104479”
i++;
}
delay(200);
lcd_wcmd(0x01); //清除LCD顯示內(nèi)容
delay(1);
lcd_pos(1);//設(shè)置顯示位置為第一行第二個(gè)字符
i=0;
while(dis1[i]!='\0')
{
lcd_wdat(dis2[i]); //在第一行顯示字符串“QQ:1767104479”
i++;
}
delay(1200);
lcd_pos(0x41);//設(shè)置顯示位置為第二行第二個(gè)字符
i=0;
while(dis3[i]!='\0')
{
lcd_wdat(dis3[i]); //在第二行顯示字符串“2016-10-20”
i++;
}
delay(200);
lcd_wcmd(0x01); //清除LCD顯示內(nèi)容
delay(1);
lcd_pos(1);//設(shè)置顯示位置為第一行第二個(gè)字符
i=0;
while(dis3[i]!='\0')
{
lcd_wdat(dis3[i]); //在第一行顯示字符串“2016-10-20”
i++;
}
delay(1200);
lcd_pos(0x41);//設(shè)置顯示位置為第二行第二個(gè)字符
i=0;
while(dis4[i]!='\0')
{
lcd_wdat(dis4[i]); //在第二行顯示字符串“I LOVE YOU”
i++;
}
delay(200);
lcd_wcmd(0x01); //清除LCD顯示內(nèi)容
delay(1);
lcd_pos(1);//設(shè)置顯示位置為第一行第二個(gè)字符
i=0;
while(dis4[i]!='\0')
{
lcd_wdat(dis4[i]); //在第一行顯示字符串“I LOVE YOU”
i++;
}
delay(1200);
lcd_pos(0x41);//設(shè)置顯示位置為第二行第二個(gè)字符
i=0;
while(dis1[i]!='\0')
{
lcd_wdat(dis1[i]); //在第二行顯示字符串“hdxydxc@163.com”
i++;
}
delay(200);
lcd_wcmd(0x01); //清除LCD顯示內(nèi)容
delay(1);
}
void lcd_init(void) //LCD初始化設(shè)定
{
lcd_wcmd(0x38); //設(shè)置顯示格式為:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
delay(1);
lcd_wcmd(0x0c);//0x0f--顯示開關(guān)設(shè)置,顯示光標(biāo)并閃爍
delay(1);
lcd_wcmd(0x06);//0x06--讀寫后指針加1
delay(1);
lcd_wcmd(0x01); // 清除LCD顯示內(nèi)容
delay(1);
}
void main(void)
{
lcd_init(); // 初始化LCD
delay(10);
while(1)
{
LCD_disp();
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1