#include "lcd.h"
void delay(unsigned char t){ //delay_time>t ms,fcpu=8MHZ
unsigned char i,j;
while(t--){
for(i=0;i<4;i++)
for(j = 0; j< 250; j++){
NOP();
NOP();
NOP();
NOP();
}
}
}
void delay_us(uchar t){ //delay_time>t us ,fcpu=8MHZ
while(t--){
uchar k;
for( k=0;k<4;k++)
NOP();
}
}
void Serial_Out_Driver(uchar data_lcd){
SRCK = 0; //shift register clock
RCK = 0; //register clock
SIN = 0; //serial data input
count_lcd = 0;
while(count_lcd < 8){
if((data_lcd << count_lcd)&(0b10000000))
SIN = 1;
else
SIN = 0;
delay_us(4);
SRCK = 1; //0(low)---->1(high)
delay_us(4);
SRCK = 0;
count_lcd++; //counter
}
RCK = 1; //0(low)---->1(high)
delay_us(4);
RCK = 0;
}
void lcd_wcmd(uchar cmd){
delay(5);
rs = 0;
delay_us(4);
rw = 0;
delay_us(4);
en = 0;
delay_us(4);
en = 1;
delay_us(4);
Serial_Out_Driver(cmd);
delay_us(4);
en = 0;
delay_us(4);
}
void lcd_pos(uchar postion){
lcd_wcmd(postion|0x80);
}
void lcd_wdat(uchar data){
delay(5);
rs = 1;
delay_us(4);
rw = 0;
delay_us(4);
en= 0;
delay_us(4);
en= 1;
delay_us(4);
Serial_Out_Driver(data);
delay_us(4);
en= 0;
delay_us(4);
}
void lcd_init(){
lcd_wcmd(0x38);
delay(15);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x38);
delay(1);
lcd_wcmd(0x08);
delay(1);
lcd_wcmd(0x01);
delay(1);
lcd_wcmd(0x06);
delay(1);
lcd_wcmd(0x0c);
delay(1);
}
void lcd_wdat_string(uchar string[],uchar pos){
uchar *p;
p = string;
while( *p != '\0'){
lcd_pos(pos++);
lcd_wdat(*p);
p++;
}
}
lcd.rar_NEC_nec lcd
版权申诉
5星 · 超过95%的资源 149 浏览量
2022-09-22
18:58:11
上传
评论
收藏 34KB RAR 举报
APei
- 粉丝: 64
- 资源: 1万+