久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
Lcd.h頭文件下載-字符型液晶LCD的AVR單片機驅(qū)動程序頭文件
[打印本頁]
作者:
daming
時間:
2014-12-30 12:53
標(biāo)題:
Lcd.h頭文件下載-字符型液晶LCD的AVR單片機驅(qū)動程序頭文件
在代碼下方點復(fù)制代碼,然后另存到電腦磁盤即可下載.
/*****************************************************************************
單 位:廣西民族大學(xué)物理與電子工程學(xué)院07物本班
文件名稱:Lcd.h
文件標(biāo)識:_LCD_H_
摘 要:字符型液晶LCD的AVR單片機驅(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單片機的連接情況
#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); //這里至少需要延時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:右對齊 可以實現(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; //補空格
}
}
p = array;
array[n] = 0;
#ifndef LCD_UINT //對有符號整數(shù)判斷正負值
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: //在右邊補足空格
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://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
青青草手机在线视频
|
久久视频在线免费观看
|
久久精品在线视频
|
亚洲图片一区二区
|
免费的毛片
|
亚洲最新av
|
国产一二区
|
国产又猛又黄又爽
|
啪啪导航
|
黄色片在线免费观看
|
中文字幕在线观看日本
|
在线观看视频一区二区三区
|
美女黄色一级片
|
日韩精品在线一区二区
|
国产成人tv
|
狠狠干网
|
视频一区二区在线播放
|
久操不卡
|
97人人插
|
一级理论片
|
国产午夜精品一区二区三区嫩草
|
国产三级午夜理伦三级
|
欧美一区二区三区在线
|
成年人视频网站
|
亚洲免费a
|
一区二区三区四区在线视频
|
久久五月婷
|
免费观看全黄做爰的视频
|
www一级片
|
狠狠做深爱婷婷综合一区
|
涩涩久久
|
久久黄色
|
天天天天操
|
日韩精品网站
|
日韩在线观看一区
|
可以看毛片的网站
|
日本中文在线观看
|
a视频在线
|
色婷婷狠狠
|
91色国产
|
黄色午夜
|