📄 1602.h
字号:
#include <iom16v.h>
//#include "lcd1602.h"
//PortA(0.1.2) for control pin and PortB for data and com
#define RS_CLR PORTA &= ~(1 << PA2)
#define RS_SET PORTA |= (1 << PA2)
#define RW_CLR PORTA &= ~(1 << PA1)
#define RW_SET PORTA |= (1 << PA1)
#define EN_CLR PORTA &= ~(1 << PA0)
#define EN_SET PORTA |= (1 << PA0)
/*延时函数*/
void delay_us(unsigned int n) {
unsigned int i;
for(i=0;i<n;i++);
}
/*延时函数*/
void delay_ms(unsigned int i) {
unsigned int a, b;
for (a = 1; a < i; a++)
for (b = 1; b<1000; b++)
;
}
/*显示屏命令写入函数*/
void LCD_write_com(unsigned char com) {
RS_CLR;
RW_CLR;
EN_SET;
PORTB = com;
delay_us(5);
EN_CLR;
}
/*显示屏命令写入函数*/
void LCD_write_data(unsigned char data) {
RS_SET;
RW_CLR;
EN_SET;
PORTB = data;
delay_us(5);
EN_CLR;
}
/*显示屏清空显示*/
void LCD_clear(void) {
LCD_write_com(0x01);
delay_ms(5);
}
/*显示屏字符串写入函数*/
void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) {
if (y == 0) {
LCD_write_com(0x80 + x);
}
else {
LCD_write_com(0xC0 + x);
}
while (*s) {
LCD_write_data( *s);
s ++;
}
}
/*显示屏单字符写入函数*/
void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) {
if (y == 0) {
LCD_write_com(0x80 + x);
}
else {
LCD_write_com(0xC0 + x);
}
LCD_write_data( data);
}
/*显示数字函数*/
void LCD_write_num(unsigned char x,unsigned char y,unsigned char data_num) {
if (y == 0) {
LCD_write_com(0x80 + x);
}
else {
LCD_write_com(0xC0 + x);
}
LCD_write_data( 48+data_num);
}
/*显示屏初始化函数*/
void LCD_init(void) {
DDRB = 0xFF; /*I/O口方向设置*/
DDRA |= (1 << PA0) | (1 << PA1) | (1 << PA2);
// DDRB = 0xFF;
LCD_write_com(0x38); /*显示模式设置*/
delay_ms(5);
LCD_write_com(0x38);
delay_ms(5);
LCD_write_com(0x38);
delay_ms(5);
LCD_write_com(0x38);
LCD_write_com(0x08); /*显示关闭*/
LCD_write_com(0x01); /*显示清屏*/
LCD_write_com(0x06); /*显示光标移动设置*/
delay_ms(5);
LCD_write_com(0x0C); /*显示开及光标设置*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -