欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
Lcd.h頭文件下載-字符型液晶LCD的AVR單片機(jī)驅(qū)動程序頭文件
[打印本頁]
作者:
daming
時(shí)間:
2014-12-30 12:53
標(biāo)題:
Lcd.h頭文件下載-字符型液晶LCD的AVR單片機(jī)驅(qū)動程序頭文件
在代碼下方點(diǎn)復(fù)制代碼,然后另存到電腦磁盤即可下載.
/*****************************************************************************
單 位:廣西民族大學(xué)物理與電子工程學(xué)院07物本班
文件名稱:Lcd.h
文件標(biāo)識:_LCD_H_
摘 要:字符型液晶LCD的AVR單片機(jī)驅(qū)動程序頭文件
當(dāng)前版本:V2.0
作 者: 【白 羽】
完成日期:2010年5月15日
*****************************************************************************/
#ifndef _LCD_H_
#define _LCD_H_
#include <BaiYuAvrKu\DataType.H>
#include <BaiYuAvrKu\PORT.H>
#include <BaiYuAvrKu\DELAY.H>
/*****************************************************************************
編繹控制:以下條件編繹語句保證只有在正確配置IO端口的情況下,才引用并編繹本文件
*****************************************************************************/
#if !defined(LCD_PORT)&&!defined(LCD_RS)&&!defined(LCD_EN)&&!defined(LCD_DN)
#define LCD_RS P(PORTA,0)
#define LCD_EN P(PORTA,2)
#define LCD_DN P(PORTA,H)
#elif defined(LCD_PORT)&&!defined(LCD_RS)&&!defined(LCD_EN)&&!defined(LCD_DN)
#define LCD_RS P(LCD_PORT,0)
#define LCD_EN P(LCD_PORT,2)
#define LCD_DN P(LCD_PORT,H)
#elif defined(LCD_RS)&&defined(LCD_EN)&&defined(LCD_DN)&&!defined(LCD_PORT)
#else
#error 您沒有正確配置lcd.h與AVR單片機(jī)的連接情況
#endif
/*****************************************************************************
整數(shù)顯示函數(shù)顯示的范圍定義:代碼優(yōu)化之用,參見LcdShowNumber函數(shù)
*****************************************************************************/
#ifndef NumType
#define NumType SINT32
#endif
/*****************************************************************************
常用控制命令
*****************************************************************************/
#define LcdLocate(x,y) LcdWriteCommand(0x40*(x)+(y)+0x3f) //定位
#define LcdMyChar(pc,x) LcdDefineChar(pc,0x40+(x)*8) //自定義自符
#define LcdShowChar(data) LcdWriteData(data) //顯示字符
void LcdInit(void); //液晶初始化
void LcdWriteCommand(UINT8 command); //寫指令
void LcdWriteData(UINT8 data); //寫數(shù)據(jù)
void LcdShowString(UINT8 *string); //顯示字符串
void LcdShowNumber(NumType number,SINT8 n); //顯示整數(shù)
/*****************************************************************************
向LCD控制器寄存器寫入指令或數(shù)據(jù) 底層函數(shù) 不包含RS控制線
*****************************************************************************/
#define H4BIT(X) ((PBITS(LCD_DN)==H)?((X)&0XF0):((X)>>4)) //高四位
#define L4BIT(X) ((PBITS(LCD_DN)==L)?((X)&0X0F):((X)<<4)) //低四位
void LcdSendByte(UINT8 byte)
{
if(PBITS(LCD_DN) == W) //八線模式
{
PORT(LCD_DN) = byte;
SET(LCD_EN);
CLR(LCD_EN);
}
if((PBITS(LCD_DN)==H)||(PBITS(LCD_DN)==L)) //四線模式
{
PORT(LCD_DN) = (PORT(LCD_DN)&(~PBITS(LCD_DN))) | H4BIT(byte);
SET(LCD_EN);
CLR(LCD_EN);
PORT(LCD_DN) = (PORT(LCD_DN)&(~PBITS(LCD_DN))) | L4BIT(byte);
SET(LCD_EN);
CLR(LCD_EN);
}
delay_us(40); //這里至少需要延時(shí)35us
}
/*****************************************************************************
向LCD控制器寄存器寫入指令
*****************************************************************************/
void LcdWriteCommand(UINT8 command)
{
CLR(LCD_RS);
LcdSendByte(command);
}
/*****************************************************************************
向LCD控制器寄存器寫入數(shù)據(jù)
*****************************************************************************/
void LcdWriteData(UINT8 data)
{
SET(LCD_RS);
LcdSendByte(data);
}
/*****************************************************************************
自定義自符
*****************************************************************************/
void LcdDefineChar(const UINT8 *pc,UINT8 acg)
{
UINT8 i;
LcdWriteCommand(acg); //設(shè)CGROM地址
for(i = 0; i < 8; i++)
LcdWriteData(*pc++); //寫入字模數(shù)據(jù)
}
/*****************************************************************************
顯示字符串
*****************************************************************************/
void LcdShowString(UINT8 *string)
{
while(*string)
LcdShowChar(*string++);
}
/*****************************************************************************
格式顯示整數(shù) n<0:左對齊 n>0:右對齊 可以實(shí)現(xiàn)形如"001"或"1 "的顯示哦!
*****************************************************************************/
#define Longth ((sizeof(NumType)==1)?4:((sizeof(NumType)==2)?6:11))
void LcdShowNumber(NumType number,SINT8 n)
{
UINT8 array[Longth], *p, *temp, flag = 0;
if(n < 0)
{
n = -n;
flag = 1;
if(number == 0)
{
LcdShowChar('0');
flag += n - 1;
goto NULLs; //補(bǔ)空格
}
}
p = array;
array[n] = 0;
#ifndef LCD_UINT //對有符號整數(shù)判斷正負(fù)值
if(number < 0)
{
number = -number;
LcdShowChar('-');
p++;
}
#endif
for(temp = &array[n-1]; temp >= p; temp--)
{
*temp = (UINT8)(number % 10) + '0';
number /= 10;
}
if(flag) //取消左邊多余的零
{
while(*p == '0')
{
p++;
flag++;
}
}
LcdShowString(p);
NULLs: //在右邊補(bǔ)足空格
while(flag-- > 1)
{
LcdShowChar(' ');
}
}
/*****************************************************************************
液晶器件初始化
*****************************************************************************/
void LcdInit(void)
{
OUT(LCD_RS); //設(shè)RS輸出
OUT(LCD_EN); //設(shè)EN輸出
OUTS(LCD_DN); //設(shè)DN輸出
LcdWriteCommand(PBITS(LCD_DN)==W?0X38:0X28); //設(shè)置顯示模式
LcdWriteCommand(PBITS(LCD_DN)==W?0X38:0X28);
LcdWriteCommand(0x0c); //開顯示
LcdWriteCommand(0x01); //軟復(fù)位
delay_us(1600);
}
#endif
復(fù)制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1