Atmega16单片机实用程序
for(count=7;count>
data;
delayus(3);
}
/****************************************************************
名稱:開關顯示控制
功能:開啟與關閉顯示操作,1為開顯示,0為關閉顯示
*****************************************************************/
void LCD_Command_Displayonoff(uchar onoff)
{
RW_WRITE;
RS_COMM;
EN_CLR;
SET_DATA(0x3e + onoff); //onoff為1開顯示,為0關顯示;
EN_SET;
delayus(2);
EN_CLR;
}
/***************************************************************
名稱: LCD顯示起始行設定
功能:設置LCD顯示起始行位置,startline範圍0~63
***************************************************************/
void LCD_Command_setstartline(uchar startline)
{
RW_WRITE;
RS_COMM;
EN_CLR;
SET_DATA(0Xc0 + startline); //12864行地址為0~63之間設定;
EN_SET;
delayus(2);
EN_CLR;
}
/***************************************************************
名稱:設置顯示行頁地址
功能:設置顯示行頁地址,12864為0~7
****************************************************************/
void LCD_Command_set_x(uchar x)
{
RW_WRITE;
RS_COMM;
EN_CLR;
SET_DATA(0xB8+x); //設置12864行頁地址 x範圍0~7;
EN_SET;
delayus(2);
EN_CLR;
}
/****************************************************************
名稱:設置顯示列地址
功能:設置顯示列地址y,範圍0~63;
*****************************************************************/
void LCD_Command_set_y(uchar column)
{
RW_WRITE;
RS_COMM;
EN_CLR;
SET_DATA(0x40+column); //設置顯示列地址y,範圍0~63;
EN_SET;
delayus(2);
EN_CLR;
}
/********************************************************************
名稱:LCD顯示數據寫入
功能:將顯示數據寫入12864液晶
*********************************************************************/
void LCD_Command_writebyte(uchar data)
{
RW_WRITE;
RS_DATA;
EN_CLR;
SET_DATA(data);
EN_SET;
delayus(2);
EN_CLR;
}
/*********************************************************************
名稱:LCD複位操作
功能:複位LCD
**********************************************************************/
void LCD_RESET()
{
RESET;
NOP();
NOP();
NOP();
RESET_OVER;
}
/************************************************************
名稱:清除指定範圍函數
功能:清除LCD屏幕指定範圍起始行~結束行的顯示內容
************************************************************/
void LCD_CLEAR_LINE(uchar startline,uchar endline)
{
uchar i,j;
for(i-startline;i<=endline;i++)
{
CS1_EN;
CS2_EN;
LCD_Command_set_x(i);
LCD_Command_set_y(0); //y地址每次操作後自動加1;
for(j=0;j<64;j++)
{
LCD_Command_writebyte(0x00);
}
}
}
/*************************************************************
名稱:顯示初始化
功能:初始化LCD
*************************************************************/
void LCD_init()
{
LCD_RESET();
LCD_CLEAR_LINE(0,7);
NOP();
LCD_Command_Displayonoff(1);
NOP();
LCD_Command_setstartline(0);
}
/**************************************************************
名稱:LCD_WRITE_DATA
輸入:x in [0,7] and y in [0,127]
輸出:無
功能:在LCD指定行列寫一個數據
**************************************************************/
void LCD_write_data(uchar x,uchar y,uchar data)
{
if(y<64)
{
CS1_EN;
CS2_DIS;
LCD_Command_set_x(x);
LCD_Command_set_y(y);
}
else
{
CS1_DIS;
CS2_EN;
LCD_Command_set_x(x);
LCD_Command_set_y(y-64);
}
LCD_Command_writebyte(data);
delayus(1);
}
/*********************************************************
名稱:LCD_WRITE_DOT
輸入:x in [0,63] and y in [0,127]
輸出:無
功能:在指定像素位置描點,此函數為覆蓋式描點,原位置一個
字節數據被覆蓋
*********************************************************/
void LCD_write_dot(uchar x,uchar y)
{
uchar x_address,y_address;
uchar data=0;
if((x<64)&&(y<128))
{
x_address=x>>3;
y_address=y;
LCD_write_data(x_address,y_address,data|(1<(x%8)));
}
}
/**********************************************************
名稱:LCD_WRITE_CHAR
輸入
Atmega16单片机实用程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)