📄 lcd.c
字号:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include <avr/wdt.h>
#include "main.h"
#include "init.h"
#include "inter.h"
#include "func.h"
#include "lcd.h"
/* write lcd */
void write_data(uint8_t c)
{
wait_free();
PORTC |= _BV(RS); //SET RS,SEND DATA
delay_ms(1);
PORTC &= ~_BV(RW); //SET WRITE STATU
delay_ms(1);
PORTC |= _BV(E_LCD); //READ START
delay_ms(1);
DDRB = 0XFF; //设置为输出
delay_ms(1);
PORTB = c;
delay_ms(1);
PORTC &= ~_BV(E_LCD); //READ OVER
write_over();
}
/* write command */
void write_command(uint8_t c)
{
wait_free();
PORTC &= ~_BV(RS); //清RS,发COMMAND
PORTC &= ~_BV(RW); //SET WRITE STATU
PORTC |= _BV(E_LCD); // START WRITE
delay_us(10);
DDRB = 0XFF; //设置为输出
PORTB = c;
PORTC &= ~_BV(E_LCD); //WRITE OVER
write_over();
}
/*write over SET*/
void write_over(void)
{
PORTC &= ~_BV(RS);
PORTC &= ~_BV(RW);
PORTC &= ~_BV(E_LCD);
}
/* wati daly */
void wait_free(void)
{
uint8_t i;
DDRB = 0XFF; //设置为输出
PORTB = 0XFF; //全置1
PORTC &= ~_BV(RS); //清RS,发COMMAND
PORTC |= _BV(RW); //SET READ STATU
do
{
PORTC |= _BV(E_LCD); //READ START
delay_us(10);
i=PINC & 0X80;
delay_us(10);
PORTC &= ~_BV(E_LCD); //READ OVER
}
while(i);
PORTC &= ~_BV(RS); //清RS,发COMMAND
PORTC &= ~_BV(RW); //SET WRITE STATU
write_over();
}
/*lcd初始化*/
void lcd_init(void)
{
delay_ms(1000);
write_command(0b00110000); //select basic instruction ,8bit parall
delay_us(900);
write_command(0b00110000); //set basic mode
// write_command(0b00000100); //enter dot setup
delay_us(900);
write_command(0b00001100); //turn on lcd
delay_us(900);
write_command(0b00000001); //clr screen text
delay_ms(100);
write_command(0b00000110); //enter dot setup
delay_ms(100);
write_command(0b10000000);
write_over();
}
void putchar_lcd(uint8_t *p)
{
uint8_t counter = 0;
while (!(counter==20))
{
delay_ms(1);
write_data(*p ++);
counter++;
}
counter = 0;
// p-=21;
write_command(0x90);
while(!(counter==20) && (*p))
{
delay_ms(1);
write_data(*p ++);
counter++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -