?? lcd.c
字號:
#include <pic.h>
#include <stdio.h>
//#include <math.h>
#define rs RC5
#define rw RC6
#define e RC7
#define d PORTD
unsigned char const chuoi_khoitao[4] = {0x38, 0x0c, 1, 6};
unsigned char doc()
{
unsigned char dat;
d = 0x80;
rw = 1;
rw = 1;
e = 1;
e = 1;
dat = d;
e = 0;
return(dat);
}
void delay_us(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++);
}
void delay_ms(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++) delay_us(255);
}
/*void gui_dulieu( unsigned char n )
{
d = n;
d = n;
delay_us(10);
e = 1;
delay_us(10);
e = 0;
delay_us(10);
}*/
void ghi(unsigned char x,unsigned char y)
{
rs=0;
while ( doc()&0x80);
//d=y; //du lieu / ma lenh
rs=x; //x=0 ghi lenh, x=1 ghi du lieu
delay_us(10);
rw=0;
delay_us(10);
e=0;
d=y;
delay_us(10);
e=1;
delay_us(10);
e=0;
delay_ms(10);
}
void init()
{
int i;
TRISD=0;
TRISC=0;
PORTD=0;
PORTC=0;
rs = 0;
rw = 0;
e = 0;
delay_ms(15);
// for(i=0;i<=3;++i) gui_dulieu(0x30);
for(i=0;i<=3;i++)
ghi(0,chuoi_khoitao[i]);
}
void toado( unsigned char x, unsigned char y)
{
unsigned char address;
switch(y)
{
case 1 : address=0x80;break;
case 2 : address=0xC0;break;
case 3 : address=0x94;break;
case 4 : address=0xD4;break;
}
address+=x;
ghi(0,address);
}
void tach( char c)
{
ghi(1,c);
}
//void hienthi( const unsigned char *msg)
//{
// while(*msg) tach(*msg++);
//}
void main()
{
const char *str;
init();
while(1)
{
ghi(0,1);
str="WELCOME TO";
toado(3,1);
while(*str)
{
ghi(1,*str++);
delay_ms(100);
}
str="KHTN";
toado(6,2);
while(*str)
{
ghi(1,*str++);
delay_ms(100);
}
delay_ms(2000);
ghi(0,1);
delay_ms(200);
str="Dien Tu";
toado(4,1);
while(*str)
{
ghi(1,*str++);
delay_ms(100);
}
str="Vien Thong";
toado(3,2);
while(*str)
{
ghi(1,*str++);
delay_ms(100);
}
delay_ms(2000);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -