?? 33xlcd.c
字號:
//-----------------------------------------------------------------------------
// 版權(quán)歸新華龍電子公司所有
//-----------------------------------------------------------------------------
//
// 文件名:330LCD.c
//
// 編寫人:寧太陽
//
// 編寫時間:2004/12/31
//
// 目標(biāo)器件: C8051F33x
//
// 編譯工具: Silicon Laboratories IDE
//
//-----------------------------------------------------------------------------
//程序描述:
//-----------------------------------------------------------------------------
// 此程序控制一塊字符型液晶(WCM1602ATL012,它是5V 器件),,液晶資料可從新華龍公網(wǎng)
//站上下載,單片機的P0口作為液晶的8位數(shù)據(jù)口,P1.0為背光控制(LCDCTRL),P1.1送出脈
//沖信號(LCDE),P1.2為讀寫信號(LCDRW),P1.4為液晶片選信號(LCDRS),P1.3接發(fā)光二極管。
// 這個程序可以在該液晶模塊上顯示一行字符:www.xhl.com.cn
//-----------------------------------------------------------------------------
//
//液晶接線方法
//-----------------------------------------------------------------------------
// 1腳接地;2腳接+5V;3腳通過1個10K電阻接+5v,通過1個430歐電阻接地;15腳接三極管
//(9013)的集電極,其發(fā)射極接地,基極通過1個5.1K電阻接地,并通過1個5.1K的電阻接
//LCDCTRL信號;16腳通過1個10電阻接+5v。液晶別的引腳直接接相應(yīng)的數(shù)據(jù)或控制信號線。
//
//-----------------------------------------------------------------------------
// 頭文件包含
//-----------------------------------------------------------------------------
#include <c8051f330.h>
//-----------------------------------------------------------------------------
// 常量定義
//-----------------------------------------------------------------------------
//
#define SYSCLK 24500000 / 8 //系統(tǒng)工作頻率
//-----------------------------------------------------------------------------
//位定義
//-----------------------------------------------------------------------------
sbit LED = P1^3; // LED所接的引腳
sbit LCDRS = P1^4;
sbit LCDRW = P1^2;
sbit LCDE = P1^1;
sbit LCDCTRL = P1^0;
//-----------------------------------------------------------------------------
//全局變量定義
//-----------------------------------------------------------------------------
//---------------------------------------------------
unsigned long i; //w w w . x h l . c o |
unsigned char xdata lcddata[15]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,// |
0x6d,0x2e,0x63,0x6e};// |
//m . c n |
//-----------------------------------------------------
unsigned char *lcdpoint; //指向 lcddata數(shù)組的指針
unsigned char lcd_data_count; //要顯示的數(shù)據(jù)個數(shù)
//-----------------------------------------------------------------------------
// 函數(shù)定義
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);
void LCD_Init(void);
void SEND_LCD(unsigned char lcd_data_count);
//-----------------------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------------------
void main (void)
{
unsigned char j;
PCA0MD &= ~0x40; //禁止看門狗定時器
SYSCLK_Init (); // 系統(tǒng)時鐘初始化
PORT_Init (); // 交叉開關(guān)和通用I/O口初始化
LCD_Init(); //LCD初始化
LCDRS = 1; //準(zhǔn)備送數(shù)據(jù)
for(i=0;i<5000;i++);
for(i=0;i<5000;i++);
lcdpoint=&lcddata;
for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--) //顯示第一行字符
{
P0=*lcdpoint;
lcdpoint++;
LCDE =0;
LCDE =1;
for(i=0;i<700;i++);
} //字符顯示完畢
while (1)
{
LED =!LED;
for(i=0;i<5000;i++);
for(i=0;i<5000;i++);
}
}
//-----------------------------------------------------------------------------
//系統(tǒng)時鐘初始化
//-----------------------------------------------------------------------------
//
void SYSCLK_Init (void)
{
OSCICN = 0x80; // 系統(tǒng)時鐘初始化為片內(nèi)的 24.5MHz / 8
RSTSRC = 0x04; // 使能時鐘丟失檢測器
}
//-----------------------------------------------------------------------------
// 通用I/O口及交叉開關(guān)初始化
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
XBR0 = 0x00; // 沒有選擇數(shù)字外設(shè)
XBR1 = 0x40; // 使能交叉開關(guān)和弱上拉
P0MDOUT = 0xff; // P0口設(shè)為推挽方式
P1MDOUT = 0xff; // P1口設(shè)為推挽方式
}
//-----------------------------------------------------------------------------
// 通用I/O口及交叉開關(guān)初始化
//-----------------------------------------------------------------------------
void LCD_Init(void)
{
LCDE = 1;
LCDRS = 0; //選通液晶
LCDRW = 0; //準(zhǔn)備寫數(shù)據(jù)
LCDCTRL=1; //背光開
for(i=0;i<50000;i++);
for(i=0;i<50000;i++);
for(i=0;i<50000;i++);
P0=0x38; //8位數(shù)據(jù)線
LCDE =0;
LCDE =1;
for(i=0;i<5000;i++);
for(i=0;i<5000;i++);
P0=0x0c; //開顯示
LCDE =0;
LCDE =1;
for(i=0;i<5000;i++);
for(i=0;i<5000;i++);
P0=0x01; // 清屏
LCDE =0;
LCDE =1;
for(i=0;i<5000;i++);
for(i=0;i<5000;i++);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -