?? lcd._c
字號:
#include <iom16v.h>
#include <macros.h>
#define LCD_RS (1 << 4)
#define LCD_RW (1 << 5)
#define LCD_E (1 << 7)
#define set_e() (PORTD |= LCD_E)
#define set_rs() (PORTD |= LCD_RS)
#define set_rw() (PORTD |= LCD_RW)
#define clr_e() (PORTD &= ~LCD_E)
#define clr_rs() (PORTD &= ~LCD_RS)
#define clr_rw() (PORTD &= ~LCD_RW)
/*-----------------------------------------------------------
delay :短延時函數
輸入參數 x :粗略延時,x越大,延時越長
輸出參數 :無
------------------------------------------------------------*/
void delay(unsigned int dk)
{
while(dk--);
}
/*------------------------------------------------------------
lcdwait :液晶延時函數
輸入參數 :無
輸出參數 :無
--------------------------------------------------------------*/
void lcdwait(void)
{
delay(600);
}
/*-----------------------------------------------------------
lcdpulse :脈沖函數,把數據寫入1602液晶
輸入參數 :無
輸出參數 :無
---------------------------------------------------------------*/
void lcdpulse(void)
{
set_e();
clr_e();
}
/*----------------------------------------------------------------
lcdsend :發送一字節數據函數
輸入參數 data :要發送字節數據
輸出參數 :無
------------------------------------------------------------------*/
void lcdsend(unsigned char data)
{
lcdwait();
PORTB=data;
lcdpulse();
}
/*------------------------------------------------------------------
wcom :寫一字節控制字函數
輸入參數 com :要寫入控制字
輸出參數 :無
-----------------------------------------------------------------*/
void wcom(unsigned char com)
{
clr_rs();
clr_rw();
lcdsend(com);
lcdwait();
}
/*--------------------------------------------------------------
wdat :顯示一字節函數
輸入參數 com :要顯示字符ASCⅡ碼
輸出參數 :無
----------------------------------------------------------------*/
void wdat(unsigned char dat)
{
set_rs();
clr_rw();
lcdsend(dat);
lcdwait();
}
/*------------------------------------------------------------------
LCM1602Reset :LCM1602復位
輸入參數 :無
輸出參數 :無
------------------------------------------------------------------*/
void LCM1602Reset(void)
{
delay(65000);
wcom(0x38);
delay(5000);
wcom(0x38);
delay(5000);
wcom(0x38);
delay(5000);
wcom(0x38);
}
/*------------------------------------------------------------------
lcdinit :LCM1602初始化
輸入參數 :無
輸出參數 :無
-------------------------------------------------------------------*/
void lcdinit(void)
{
wcom(0x01); //清屏
wcom(0x3c); //顯示開關控制:8bit,2行顯示,5x7
wcom(0x0c); //光標開,閃爍關
wcom(0x06); //輸入方式,增量方式,不移動
}
/*-----------------------------------------------------------------
disp_string :顯示一字符串函數
輸入參數 data :字符串指針
輸出參數 :無
------------------------------------------------------------------*/
void disp_string( unsigned char *data )
{
while(*data!=0) {wdat(*data);data++;}
}
//設置顯示坐標:X 0~39,Y:0~1
#define setxy(x,y) wcom(((x)|((y)<<6))|0x80)
/*--------------------------------------------------------------
main :主函數
輸入參數 :無
輸出參數 :無
--------------------------------------------------------------*/
void main()
{
DDRD=0xff;
DDRB=0xff;
LCM1602Reset();
lcdinit();
setxy(0,0);
disp_string("Easy Learning..");
setxy(2,1);
disp_string("Avr Studio!");
while(1)
{
wcom(0x08); //顯示關
delay(65000);
delay(65000);
delay(65000);
delay(65000);
delay(65000);
delay(65000);
delay(65000);
delay(65000);
wcom(0x0c); //顯示開
delay(65000);
delay(65000);
delay(65000);
delay(65000);
delay(65000);
delay(65000);
delay(65000);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -