?? lcd_init.h
字號:
/*----------------------------------------------------
液晶LCD1602C 使用4條數據線(D4~D7)
編譯器:ICC-AVR v6.31A 日期: 2005-11-24 20:29:57
目標芯片 : M16
時鐘: 8.0000Mhz
作者:archeng504
---------------------------------------------------*/
#include "LCD.h"
#include"util/delay.h"
void LCD_init(void) //液晶初始化
{
LCD_DATA_DDR|=LCD_DATA; //數據口方向為輸出
LCD_EN_DDR|=LCD_EN; //設置EN方向為輸出
LCD_RS_DDR|=LCD_RS; //設置RS方向為輸出
LCD_write_command(0x28);
LCD_en_write();
_delay_us(40);
LCD_write_command(0x28); //4位顯示
LCD_write_command(0x0c); //顯示開
LCD_write_command(0x01); //清屏
// LCD_write_command(0x1c);
_delay_ms(2);
}
void LCD_en_write(void) //液晶使能
{
LCD_EN_PORT|=LCD_EN;
_delay_us(1);
LCD_EN_PORT&=~LCD_EN;
}
void LCD_write_command(unsigned char command) //寫指令
{
_delay_us(16);
LCD_RS_PORT&=~LCD_RS; //RS=0
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=command&0xf0; //寫高四位
LCD_en_write();
command=command<<4; //低四位移到高四位
LCD_DATA_PORT&=0x0f; //清高四位
LCD_DATA_PORT|=command&0xf0; //寫低四位
LCD_en_write();
}
void LCD_write_data(unsigned char data) //寫數據
{
_delay_us(1000);
LCD_RS_PORT|=LCD_RS; //RS=1
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=data&0xf0; //寫高四位
LCD_en_write();
data=data<<4; //低四位移到高四位
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=data&0xf0; //寫低四位
LCD_en_write();
}
void LCD_set_xy( unsigned char x, unsigned char y ) //寫地址函數
{
unsigned char address;
if (y==0) address=0x80+x;
else address=0xc0+x;
LCD_write_command(address);
}
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1
{
LCD_set_xy( X, Y ); //寫地址
while (*s) // 寫顯示字符
{
LCD_write_data(*s);
s++;
}
}
void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1
{
LCD_set_xy( X, Y ); //寫地址
LCD_write_data(data);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -