?? 復件 testlcd.c
字號:
/*-------------------------------------------------------------------------------------------------
╔=======================================
┆ YG51A開發(fā)板配套實驗學習例程 ┆
┆ Version 2.0 ┆
┆ ┆
┆ 揚光電子工作室 ┆
┆ ┆
┆ QQ:573764777 ┆
┆ E-mail:yg-stu@163.com ┆
╚=======================================╝
********************************** 程序功能說明 ******************************************************
在1602LCD上顯示"HELLO YG51A !"和"START! NOW !兩行內(nèi)容,
延遲后從右向左滾動.
******************************************************************************************************/
#include "reg52.h"
#define uchar unsigned char
typedef bit BOOL ;
sbit rs = P2^6 ;
sbit rw = P3^6 ;
sbit ep = P2^7 ;
void delay(uchar) ;
void lcd_wcmd(uchar) ;
BOOL lcd_bz() ;
void lcd_pos(uchar) ;
void lcd_wdat(uchar) ;
void display(uchar,uchar *) ;
code uchar dis1[] = {"HELLO engineer ! "} ;
code uchar dis2[] = {"START! NOW! "} ; //一行16個字符
void longdelay(uchar s) //長延時
{
while(s--)
{
delay(60) ;
}
}
void delay(uchar ms)
{ // 延時子程序
uchar i ;
while(ms--)
{
for(i=0;i<250;i++) ;
}
}
BOOL lcd_bz()
{ // 測試LCD忙碌狀態(tài)
BOOL result ;
rs = 0 ;
rw = 1 ;
ep = 1 ;
result = (BOOL)(P0 & 0x80); //強制類型轉換為BOOL,非0則等于1
ep = 0 ;
return result ;
}
void lcd_wcmd(uchar cmd)
{ // 寫入指令數(shù)據(jù)到LCD
while(lcd_bz()) ;
rs = 0 ;
rw = 0 ;
ep = 0 ;
P0 = cmd ;
ep = 1 ;
ep = 0 ;
}
void lcd_pos(uchar pos)
{
lcd_wcmd(pos | 0x80); //顯示數(shù)據(jù)存儲地址設置,最高位為1
}
void lcd_wdat(uchar dat)
{ //寫入字符顯示數(shù)據(jù)到LCD
while(lcd_bz()) ;
rs = 1 ;
rw = 0 ;
ep = 0 ;
P0 = dat ;
ep = 1 ;
ep = 0 ;
}
void lcd_init()
{ //LCD初始化設定
lcd_wcmd(0x38) ; //8位總線 雙行顯示
delay(1) ;
lcd_wcmd(0x01) ; //清顯示 光標復位到地址00H位置
delay(1) ;
lcd_wcmd(0x06) ; //光標移動方向右移 所有文字不移動
delay(1) ;
lcd_wcmd(0x0c) ; //開顯示 無光標 不閃爍
delay(1) ;
}
/*---------------
函數(shù)名稱:display()
功能 :在LCD上顯示數(shù)組的數(shù)據(jù)
說明 :先寫顯示地址,后寫顯示數(shù)據(jù)
調用 :lcd_wcmd(), lcd_pos()
入口參數(shù):pos 寫入的位置,q指向要寫入的數(shù)據(jù)所在的數(shù)組
返回值 :無
----------------*/
void display(uchar pos, uchar *q)
{
uchar i ;
//lcd_wcmd(0x01) ; //clear
//delay(10) ;
lcd_pos(pos) ;
for(i=0;i<16;i++) //寫16個字符
{
lcd_wdat(*q) ;
q++ ;
longdelay(2) ;
}
}
main()
{
lcd_init() ; //初始化LCD
//delay(10) ;
display(0x00,dis1) ;
display(0x40,dis2) ;
display(0x14,dis1) ;
display(0x54,dis2) ;
lcd_wcmd(0x07) ; //文字右移
delay(1) ;
while(1)
{
display(0x00,dis1) ;
display(0x40,dis2) ;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -