|
|
main.c:
#include <STC89C5xRC.H>
#include "LCD.h"
//char *str1=" Hello World! Hello World! ";
//char *str2=" I'm LCD1602A I'm LCD1602A ";
//void main(){
// unsigned int counter=0;
// LCD_Init();
// LCD_ShowString(0,0,str1);
// LCD_ShowString(0,1,str2);
// while(1){
// for(counter=0;counter<500;counter++){
// LCD_Delay();
// }
// LCD_Scroll(0);
// }
//}
unsigned char heart[]={0x00,0x0a,0x1f,0x1f,0x0e,0x04,0x00,0x00};
void main(){
LCD_Init();
LCD_Write_CGRAM(7,heart);
LCD_SetPox(0,0);
LCD_WD(0x07);
while(1);
}
LCD.c:
#include <STC89C5xRC.H>
#define LCD_DATA P0
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
void LCD_Delay();
void LCD_WS(unsigned char ws);
void LCD_WD(unsigned char wd);
void LCD_Init();
void LCD_SetPox(unsigned char x,unsigned char y);
void LCD_ShowString(unsigned char x,unsigned char y,char *str);
void LCD_Scroll(bit fx);
void LCD_Write_CGRAM(unsigned char weizhi,unsigned char *array);
void LCD_Delay(){
unsigned char data i, j;//24MHz 2ms
i = 8;
j = 197;
do
{
while (--j);
} while (--i);
}
void LCD_WS(unsigned char ws){
LCD_E=1;
LCD_RS=0;//S
LCD_RW=0;//W
LCD_DATA=ws;
LCD_Delay();
LCD_E=0;
}
void LCD_WD(unsigned char wd){
LCD_E=1;
LCD_RS=1;//R
LCD_RW=0;//W
LCD_DATA=wd;
LCD_Delay();
LCD_E=0;
}
void LCD_Init(){
LCD_WS(0x38);
LCD_WS(0x0C);
LCD_WS(0x06);
LCD_WS(0x01);
}
void LCD_SetPox(unsigned char x,unsigned char y){
if(y){
LCD_WS(0x80+0x40+x);
}else{
LCD_WS(0x80+x);
}
}
void LCD_ShowString(unsigned char x,unsigned char y,char *str){
LCD_SetPox(x,y);
while(*str){
LCD_WD(*str);
str++;
}
}
void LCD_Scroll(bit fx){
if(fx){
LCD_WS(0x1C);//right
}else{
LCD_WS(0x18);//left
}
}
void LCD_Write_CGRAM(unsigned char weizhi,unsigned char *array){
//0<=weizhi<8,array[8]
unsigned char i=(weizhi<<3)|0x40;
LCD_WS(i);
for(i=0;i<8;i++){
LCD_WD(array[i]);
}
LCD_WS(0x80);
}
LCD.h:
#ifndef __LCD_H
#define __LCD_H
void LCD_Delay();
void LCD_WS(unsigned char ws);
void LCD_WD(unsigned char wd);
void LCD_Init();
void LCD_SetPox(unsigned char x,unsigned char y);
void LCD_ShowString(unsigned char x,unsigned char y,char *str);
void LCD_Scroll(bit fx);
void LCD_Write_CGRAM(unsigned char weizhi,unsigned char *array);
#endif
|
|