久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
Lcd.h頭文件下載-字符型液晶LCD的AVR單片機驅動程序頭文件
[打印本頁]
作者:
daming
時間:
2014-12-30 12:53
標題:
Lcd.h頭文件下載-字符型液晶LCD的AVR單片機驅動程序頭文件
在代碼下方點復制代碼,然后另存到電腦磁盤即可下載.
/*****************************************************************************
單 位:廣西民族大學物理與電子工程學院07物本班
文件名稱:Lcd.h
文件標識:_LCD_H_
摘 要:字符型液晶LCD的AVR單片機驅動程序頭文件
當前版本: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
/*****************************************************************************
整數顯示函數顯示的范圍定義:代碼優化之用,參見LcdShowNumber函數
*****************************************************************************/
#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); //寫數據
void LcdShowString(UINT8 *string); //顯示字符串
void LcdShowNumber(NumType number,SINT8 n); //顯示整數
/*****************************************************************************
向LCD控制器寄存器寫入指令或數據 底層函數 不包含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控制器寄存器寫入數據
*****************************************************************************/
void LcdWriteData(UINT8 data)
{
SET(LCD_RS);
LcdSendByte(data);
}
/*****************************************************************************
自定義自符
*****************************************************************************/
void LcdDefineChar(const UINT8 *pc,UINT8 acg)
{
UINT8 i;
LcdWriteCommand(acg); //設CGROM地址
for(i = 0; i < 8; i++)
LcdWriteData(*pc++); //寫入字模數據
}
/*****************************************************************************
顯示字符串
*****************************************************************************/
void LcdShowString(UINT8 *string)
{
while(*string)
LcdShowChar(*string++);
}
/*****************************************************************************
格式顯示整數 n<0:左對齊 n>0:右對齊 可以實現形如"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 //對有符號整數判斷正負值
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); //設RS輸出
OUT(LCD_EN); //設EN輸出
OUTS(LCD_DN); //設DN輸出
LcdWriteCommand(PBITS(LCD_DN)==W?0X38:0X28); //設置顯示模式
LcdWriteCommand(PBITS(LCD_DN)==W?0X38:0X28);
LcdWriteCommand(0x0c); //開顯示
LcdWriteCommand(0x01); //軟復位
delay_us(1600);
}
#endif
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
9191在线观看
|
heyzo在线
|
亚洲电影在线播放
|
久久久一二三区
|
在线一区
|
羞视频在线观看
|
成人高清在线视频
|
欧美日韩亚洲国产
|
国产羞羞视频在线观看
|
日本精品视频一区二区
|
久久国产高清视频
|
99久久国产综合精品麻豆
|
日韩一级
|
国产电影一区二区在线观看
|
美女国内精品自产拍在线播放
|
久久这里只有精品首页
|
成人在线观看免费
|
亚洲成人国产综合
|
av一区二区三区
|
久久久久久亚洲精品
|
欧美精品区
|
精品国产乱码久久久久久1区2区
|
欧美性生活视频
|
欧美日韩国产精品激情在线播放
|
久久精品—区二区三区
|
婷婷久久一区
|
欧州一区二区
|
一区二区在线看
|
精品影院
|
天天爽一爽
|
天久久
|
日韩中文字幕第一页
|
欧美一级电影免费
|
国产视频精品在线
|
亚洲国产精品激情在线观看
|
久久精品成人一区
|
免费看黄视频网站
|
中文字幕一区二区三区四区
|
欧美精三区欧美精三区
|
91麻豆精品国产91久久久久久
|
免费一区在线观看
|