2011年4月3日 星期日

4Bit LCD Display















//11.0592mhz//
#include "reg52.h"
#include "stdio.h"
#define c2051 1
//#define S52 2

#ifdef S52
sbit rs = P2^0; /* LCD RS 接腳控制位元定義*/
sbit en = P2^1; /* LCD EN 接腳控制位元定義*/
#define PP P0
#endif

#ifdef c2051
sbit rs = P3^4; /* C2051 LCD RS 接腳控制位元定義*/
sbit en = P3^5; /* C2051 LCD EN 接腳控制位元定義*/
#define PP P1
#endif


void delay(int d)
{
int i、j;
for(i=0; i for(j=0; j<500; j++) ;
}

void del() /* 短暫延遲*/
{
int i;
for(i=0; i<100; i++) ;
}


void en1() /* LCD 致能控制信號*/
{
en=1;del();
en=0;del();
}

void write_com(unsigned char c) /* 寫入指令暫存器*/
{
PP=c; rs=0; en1(); c<<=4; /* 左移4 位元*/
PP=c; rs=0; en1();
}

extern char putchar(unsigned char c)/* 寫入資料暫存器*/
{
PP=c; rs=1; en1(); c<<=4; /* 左移4 位元*/
PP=c; rs=1; en1();
}

void init_lcd() /* LCD 4 bit 存取介面初始化*/
{
en=0;
write_com(0x28); /* 4 bit I/O,雙列顯示*/
write_com(0x0e); /* 游標出現,不閃爍*/
write_com(0x06); /* 每次向右移,顯示幕不移動*/
write_com(0x01); /* 清除LCD 顯示幕*/
delay(100); /* 延遲一下*/
}

void main()
{
delay(25);
init_lcd();/* 初始化LCD 介面*/
while(1)
{
delay(25);
printf("test");
delay(25);
while(1);
}

}

沒有留言: