亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcd1602.c

?? 智能充電參考程序 可以控制整個充電過程希望對大家有幫助
?? C
字號:
/****************************************Copyright (c)**************************************************
**                              智 能 充 電 器 開 發 小 組
**                                     OurAVR 論壇
**                                   QQ 群: 26052247 
**
**                               http://www.ouravr.com/bbs
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: LCD1206.c
**創   建   人: Trinove
**最后修改日期: 2008年01月13日
**描        述: LCD1602字符型液晶的底層函數  FOR AVR MCU / Mega16
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 呂海安
** 版  本: v1.0
** 日 期: 2008年01月13日
** 描 述: 原始版本
**
**--------------歷史版本信息------------------------------------------------------------------------------
** 修改人: martin7wind
** 日 期: 2008年02月03日
** 描 述: For 智能充電器
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 呂海安
** 日 期: 2008年03月02日
** 描 述: 修改格式,歸檔
**
**------------------------------------------------------------------------------------------------------
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 村長 aleyn.wu
** 日 期: 2008年3月3日
** 描 述: 修改了一些BUG,使本項目能在CVAVR下編譯通過
**         增加了一個函數
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
#include "LCD1602.h"



/*----------------------------------------------------------------------------
四線模式:
LCD: 1602
PIN0~7, RW, E, RS

連線如下:
PIN7 --> PB4
PIN6 --> PD2
PIN5 --> PD3
PIN4 --> PD6
RW   --> GND (R/W = 0 write)
E    --> PA6 (E = 1 enable )
RS   --> PA7 (RS = 0 CMD; RS = 1 DATA )

---------------------------------------------------------------------------*/

#define LCD_DATA7_DDR    DDRB
#define LCD_DATA6_DDR    DDRD
#define LCD_DATA5_DDR    DDRD
#define LCD_DATA4_DDR    DDRD

#define LCD_DATA7_PIN    PINB
#define LCD_DATA6_PIN    PIND
#define LCD_DATA5_PIN    PIND
#define LCD_DATA4_PIN    PIND

#define LCD_DATA7_PORT   PORTB
#define LCD_DATA6_PORT   PORTD
#define LCD_DATA5_PORT   PORTD
#define LCD_DATA4_PORT   PORTD

#define LCD_DATA7 PB4
#define LCD_DATA6 PD2
#define LCD_DATA5 PD3
#define LCD_DATA4 PD6

#define LCD_E_DDR        DDRA
#define LCD_E_PORT       PORTA
#define LCD_E            PA6

#define LCD_E_HIGH       BIT_SET(LCD_E_PORT, LCD_E)
#define LCD_E_LOW        BIT_CLR(LCD_E_PORT, LCD_E)

#define LCD_RS_DDR       DDRA
#define LCD_RS_PORT      PORTA
#define LCD_RS           PA7

#define LCD_DATA_MODE    BIT_SET(LCD_RS_PORT, LCD_RS)
#define LCD_CMD_MODE     BIT_CLR(LCD_RS_PORT, LCD_RS)


#define BIT_POSITION7    (1<<7)
#define BIT_POSITION6    (1<<6)
#define BIT_POSITION5    (1<<5)
#define BIT_POSITION4    (1<<4)

#define LINE_1 0
#define LINE_2 1

INT16U temp;

/*******************************************************************************************************
** 函數名稱: delay_1us
** 功能描述: delay 1 us,16mhz, 1 nop bring 62.5ns delay
** 輸入參數: 無
** 輸出參數: 無
********************************************************************************************************/
void delay_1us(void)
{
    INT8U i;
    
    for(i = 15; i > 0; i--);
}

/*******************************************************************************************************
** 函數名稱: delay_xus
** 功能描述: 延時 N uS
** 輸入參數: INT8U t: N 個單位
** 輸出參數: 無
********************************************************************************************************/
void delay_xus(INT8U t)
{
    for( ; t>0; t--)
    {
        delay_1us();
    }
}

/*******************************************************************************************************
** 函數名稱: lcd_write_cmd
** 功能描述: 最初的初始化設置中,寫入數據函數
** 輸入參數: INT8U cmd: 命令
** 輸出參數: 無
********************************************************************************************************/
void lcd_write_cmd(INT8U cmd)
{  
    LCD_CMD_MODE; 
    
    if(cmd & BIT_POSITION7)
        {BIT_SET(LCD_DATA7_PORT, LCD_DATA7);}
    else
        {BIT_CLR(LCD_DATA7_PORT, LCD_DATA7);}
    
    if(cmd & BIT_POSITION6)
        {BIT_SET(LCD_DATA6_PORT, LCD_DATA6);}
    else
        {BIT_CLR(LCD_DATA6_PORT, LCD_DATA6);}
    
    if(cmd & BIT_POSITION5)
        {BIT_SET(LCD_DATA5_PORT, LCD_DATA5);}
    else
        {BIT_CLR(LCD_DATA5_PORT, LCD_DATA5);}
    
    if(cmd & BIT_POSITION4)
        {BIT_SET(LCD_DATA4_PORT, LCD_DATA4);}
    else
        {BIT_CLR(LCD_DATA4_PORT, LCD_DATA4);}
    
    
    LCD_E_HIGH;     // E 信號
    delay_us(5); 
    LCD_E_LOW;

}

/*******************************************************************************************************
** 函數名稱: lcd_write_byte
** 功能描述: 向LCD寫入數據
** 輸入參數: INT8U byte: 數據
**           INT8U type: 類型
** 輸出參數: 無
********************************************************************************************************/
void lcd_write_byte(INT8U byte, INT8U type)
{
    if(type)
    	{LCD_DATA_MODE;}
    else
    	{LCD_CMD_MODE;}
    
    
    temp = byte;
    
    
    if(byte & BIT_POSITION7)
        {BIT_SET(LCD_DATA7_PORT, LCD_DATA7);}
    else
        {BIT_CLR(LCD_DATA7_PORT, LCD_DATA7);}
    
    if(byte&BIT_POSITION6)
        {BIT_SET(LCD_DATA6_PORT, LCD_DATA6);}
    else
        {BIT_CLR(LCD_DATA6_PORT, LCD_DATA6);}
    
    if(byte&BIT_POSITION5)
        {BIT_SET(LCD_DATA5_PORT, LCD_DATA5);}
    else
        {BIT_CLR(LCD_DATA5_PORT, LCD_DATA5);}
    
    if(byte&BIT_POSITION4)
        {BIT_SET(LCD_DATA4_PORT, LCD_DATA4);}
    else
        {BIT_CLR(LCD_DATA4_PORT, LCD_DATA4);}
    
    
    LCD_E_HIGH;    // E 信號 
    delay_us(5);
    LCD_E_LOW;
    
    delay_xus(39); // 39 us!
    
    byte <<= 4;
    
    if(byte & BIT_POSITION7)
        {BIT_SET(LCD_DATA7_PORT, LCD_DATA7);}
    else
        {BIT_CLR(LCD_DATA7_PORT, LCD_DATA7);}
    
    if(byte & BIT_POSITION6)
        {BIT_SET(LCD_DATA6_PORT, LCD_DATA6);}
    else
        {BIT_CLR(LCD_DATA6_PORT, LCD_DATA6);}
    
    if(byte & BIT_POSITION5)
        {BIT_SET(LCD_DATA5_PORT, LCD_DATA5);}
    else
        {BIT_CLR(LCD_DATA5_PORT, LCD_DATA5);}
    
    if(byte & BIT_POSITION4)
        {BIT_SET(LCD_DATA4_PORT, LCD_DATA4);}
    else
        {BIT_CLR(LCD_DATA4_PORT, LCD_DATA4);}
    
    
    LCD_E_HIGH;     // E 信號 
    delay_xus(5); 
    LCD_E_LOW;
    
    delay_ms(10);  // 延時 10 mS
	
}


/*******************************************************************************************************
** 函數名稱: lcd_cls
** 功能描述: 清屏
** 輸入參數: 無
** 輸出參數: 無
********************************************************************************************************/
void lcd_cls()
{
    lcd_write_byte(0x01, CMD);
}

/*******************************************************************************************************
** 函數名稱: lcd_init
** 功能描述: 1602 液晶初始化函數
** 輸入參數: 無
** 輸出參數: 無
********************************************************************************************************/
void lcd_init()
{
    // 相關IO配置
    BIT_SET(LCD_DATA7_DDR, LCD_DATA7);
    BIT_SET(LCD_DATA6_DDR, LCD_DATA6);   
    BIT_SET(LCD_DATA5_DDR, LCD_DATA5);   
    BIT_SET(LCD_DATA4_DDR, LCD_DATA4);
    
    BIT_SET(LCD_E_DDR, LCD_E); 
    BIT_SET(LCD_RS_DDR, LCD_RS);
    
    delay_ms(15);          // 上電延時15MS以上
    lcd_write_cmd(0x30);    // 上電初始化命令
    delay_ms(5);           // delay > 5.1MS
    lcd_write_cmd(0x30);
    delay_ms(5);           // delay > 100us
    lcd_write_cmd(0x30);
    delay_ms(15);
    lcd_write_cmd(0x20);    // 四位數據模式
    delay_ms(15);
    
    //功能設定
    lcd_write_byte(0x28, CMD);   // 0x28 = 4 位數據線,雙行顯示,5*7 字型
    //LCD_write_byte(0x0e, CMD); // 0x0e = 顯示開,光標不閃爍
    lcd_write_byte(0x0c, CMD);   // 0x0c = 顯示開,光標不顯示
    lcd_write_byte(0x06, CMD);   // 0x06 = 每次輸入后光標右移一格
    
    lcd_cls();  // 清屏
}

/*******************************************************************************************************
** 函數名稱: lcd_write_char
** 功能描述: 在 X,Y 坐標寫單字符
** 輸入參數: INT8U lcd_x: x 坐標
**           INT8U lcd_y: y 坐標
**           INT8U data:  單字符
** 輸出參數: 無
********************************************************************************************************/
void lcd_write_char(INT8U lcd_x, INT8U lcd_y, INT8U data)
{ 
    if(lcd_y) // 第二行
    {
        lcd_write_byte(0xc0+lcd_x, CMD);
    }
    else      // 第一行
    {
        lcd_write_byte(0x80+lcd_x, CMD);
    }
    
    lcd_write_byte(data, DATA); 

}


/*******************************************************************************************************
** 函數名稱: lcd_locate
** 功能描述: 定位 LCD 行列位置
** 輸入參數: INT8U lcd_x: x 坐標
**           INT8U lcd_y: y 坐標
** 輸出參數: 無
********************************************************************************************************/
void lcd_locate(INT8U lcd_x, INT8U lcd_y)
{
    if(lcd_y) // 第二行
    {
        lcd_write_byte(0xc0 + lcd_x, CMD);
    }
    else      // 第一行
    {
        lcd_write_byte(0x80 + lcd_x, CMD);
    }
    
}


/*******************************************************************************************************
** 函數名稱: lcd_print_string
** 功能描述: 向 LCD 發送顯示文字
** 輸入參數: char *pstring: 顯示文字指針pstring
** 輸出參數: 無
********************************************************************************************************/
void lcd_print_string(char *pstring)
{
    while(*pstring)
    {
        lcd_write_byte(*pstring, DATA);
        pstring++;
    }
}

/*******************************************************************************************************
** 函數名稱: lcd_print_stringF
** 功能描述: 向 LCD 發送顯示文字
** 輸入參數: flash char *pstring: 顯示文字指針pstring
** 輸出參數: 無
********************************************************************************************************/
void lcd_print_stringF(flash char *pstring)
{
    while(*pstring)
    {
        lcd_write_byte(*pstring, DATA);
        pstring++;
    }
}

/*******************************************************************************************************
** 函數名稱: lcd_print_number
** 功能描述: 向 LCD 發送顯示數據
** 輸入參數: INT16S number: 數值, 為有符號的整數
**           INT8U ca: 顯示的位數 (1 - 6)
**           INT8U cb: 其中的小數位數,(類似定點的小數),顯示整數時,cb 置 0 即可
** 輸出參數: 無
********************************************************************************************************/
void lcd_print_number(INT16S number , INT8U ca , INT8U cb)
{
		
    INT8U _bit[5];   // 最多 5 位
    
    INT8U *pbit;
    
    INT8U i;
    
    if(number > 0)
    {
        temp = number;
    }
    else
    {
        temp = -number;
    }
    
    // temp = 12345;
    // 算出每一位 057920

    _bit[4] = (INT8U)(temp/10000);
    _bit[3] = (INT8U)(temp/1000  - _bit[4]*10);
    _bit[2] = (INT8U)(temp/100  - _bit[4]*100 - _bit[3]*10);
    _bit[1] = (INT8U)(temp/10  - _bit[4]*1000 - _bit[3]*100 - _bit[2]*10);
    _bit[0] = (INT8U)(temp  - _bit[4]*10000 - _bit[3]*1000 - _bit[2]*100 - _bit[1]*10);

    if(number < 0) // 負值
    {
        lcd_write_byte('-', DATA);	//先顯示負號
        
        pbit = &(_bit [4]);   //指向最高位
        
        for(i = 5 - ca; i > 0; i--)
        {
            pbit --;
        }
        while(ca)
        {
            if(ca == cb)
            {
                lcd_write_byte('.', DATA);
            }
            
            lcd_write_byte(*pbit+48, DATA);
            
            pbit --; 
            ca--;
            
        }
    }
    
    else  // 正數
    {
    	pbit = &(_bit [4]);   //指向最高位
    
    	for(i = 5 - ca; i > 0; i--)
    	{
            pbit --;
        }
        
    	while(ca)
        {
            if(ca == cb)
            {
                lcd_write_byte('.', DATA);
            }
        		
            lcd_write_byte(*pbit+48,DATA);
        
            pbit --;
            ca--;
        }
    }
} 


/**************************************************************************************×*****************
**                                 END OF FILE
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产九色sp调教91| 日韩不卡在线观看日韩不卡视频| 久久激情综合网| 欧美成人综合网站| 国产乱对白刺激视频不卡| 久久精品亚洲乱码伦伦中文| 国产乱码精品一区二区三区五月婷| 日本一区二区三区久久久久久久久不| 国产黑丝在线一区二区三区| 国产精品灌醉下药二区| 日本久久电影网| 丁香六月综合激情| 亚洲一区二区影院| 日韩一区二区麻豆国产| 国产在线精品一区二区夜色| 国产女主播一区| 欧美日韩中文字幕一区二区| 蓝色福利精品导航| 中文字幕一区二区三区在线观看| 91免费看片在线观看| 午夜久久久影院| 国产三级精品视频| 在线视频欧美精品| 精品制服美女丁香| 亚洲男人的天堂av| 欧美xxx久久| 91在线观看美女| 黄色小说综合网站| 亚洲一区免费观看| 久久精品人人做人人爽人人| 色av成人天堂桃色av| 久久69国产一区二区蜜臀 | 欧美日韩不卡一区| 国内精品视频666| 一区二区三区在线观看国产| 精品处破学生在线二十三| 色综合色狠狠综合色| 国产一区二区在线观看视频| 亚洲在线视频一区| 亚洲欧洲www| 亚洲五码中文字幕| 国产精品网站一区| 欧美一区二区三区免费| 色综合天天综合色综合av| 久久精品99久久久| 天堂av在线一区| 亚洲日本韩国一区| 中文成人综合网| 精品国产电影一区二区| 欧美吻胸吃奶大尺度电影| 成人性生交大片免费看中文网站| 免费黄网站欧美| 偷拍与自拍一区| 一区av在线播放| 中文字幕亚洲欧美在线不卡| 久久亚洲一级片| 91精品婷婷国产综合久久竹菊| 91黄色激情网站| 97精品超碰一区二区三区| 国产精品996| 国产自产高清不卡| 韩国精品在线观看| 黄色小说综合网站| 国产一区二区三区日韩| 免费成人性网站| 免费av网站大全久久| 亚洲v中文字幕| 性久久久久久久久| 石原莉奈在线亚洲二区| 亚洲成人免费视| 日本在线不卡视频一二三区| 日韩av一二三| 麻豆精品久久精品色综合| 免费在线看成人av| 免费看黄色91| 国产美女主播视频一区| 国产一区二区免费在线| 国产精品亚洲一区二区三区妖精| 激情国产一区二区| 国产成人h网站| 成人毛片视频在线观看| 成人精品鲁一区一区二区| 成人av资源在线| 一本大道久久a久久精品综合| 色菇凉天天综合网| 欧美日韩在线免费视频| 欧美日韩另类国产亚洲欧美一级| 欧美午夜免费电影| 欧美一区午夜精品| 精品粉嫩超白一线天av| 国产欧美综合在线| 亚洲欧美一区二区三区孕妇| 一区二区三区精品| 麻豆精品精品国产自在97香蕉| 国模娜娜一区二区三区| 国产成人精品一区二区三区四区 | av毛片久久久久**hd| 91视频国产观看| 欧美色网一区二区| 一区二区国产视频| 日本aⅴ亚洲精品中文乱码| 久久激五月天综合精品| 成人免费视频视频在线观看免费| 成人91在线观看| 欧美日韩一区二区三区视频| 欧美一卡二卡三卡| 国产精品视频一二三区| 亚洲亚洲人成综合网络| 日本成人超碰在线观看| 国产一区二区中文字幕| 99久久久久久| 日韩精品一区二区在线观看| 中文久久乱码一区二区| 亚洲影院在线观看| 国产一区二区三区电影在线观看 | 99r国产精品| 4438亚洲最大| 国产精品激情偷乱一区二区∴| 香蕉久久一区二区不卡无毒影院| 久久99热这里只有精品| 色香色香欲天天天影视综合网| 欧美一区二区三区视频在线观看| 中文字幕免费在线观看视频一区| 亚洲制服欧美中文字幕中文字幕| 久久99精品久久久久久久久久久久| 成人午夜免费av| 日韩女优av电影在线观看| 亚洲欧洲日产国码二区| 麻豆成人免费电影| 日本韩国欧美在线| 欧美国产精品专区| 麻豆国产一区二区| 欧美色视频在线| 中文字幕一区日韩精品欧美| 秋霞午夜鲁丝一区二区老狼| 91视频在线观看| 久久精品人人爽人人爽| 日韩精品一卡二卡三卡四卡无卡| 91免费版在线| 国产精品午夜久久| 韩国女主播一区| 日韩欧美亚洲另类制服综合在线| 一区二区三区四区激情| 成人午夜激情视频| 久久久国产午夜精品| 日韩成人午夜电影| 欧美日韩激情一区二区| 1区2区3区精品视频| 成人黄色一级视频| 国产三级精品三级| 精品一区二区精品| 日韩欧美国产系列| 蜜桃av一区二区三区电影| 欧美三级在线视频| 亚洲国产综合视频在线观看| 99久久精品国产精品久久| 欧美国产97人人爽人人喊| 国产在线看一区| 久久综合久久综合久久综合| 免费欧美高清视频| 欧美videos中文字幕| 久久成人免费电影| 精品区一区二区| 国产另类ts人妖一区二区| 精品国产区一区| 国内成人精品2018免费看| 久久久亚洲精品石原莉奈| 国内精品免费**视频| 久久久久久久国产精品影院| 秋霞午夜av一区二区三区 | 久久久综合网站| 国内精品视频一区二区三区八戒| 亚洲精品一区二区三区精华液| 日本欧美一区二区三区| 欧美日韩视频在线第一区| 日本视频一区二区| 精品国产乱码久久久久久久| 国产精品一品二品| 精品一区二区久久| 欧美国产精品专区| 91视频在线观看| 午夜精品福利在线| 欧美tickling网站挠脚心| 国产高清精品在线| 国产精品国产三级国产aⅴ中文| 暴力调教一区二区三区| 亚洲黄色av一区| 日韩一区二区三区三四区视频在线观看| 日日欢夜夜爽一区| 国产亚洲福利社区一区| av网站一区二区三区| 亚洲电影第三页| 久久网站热最新地址| www.久久久久久久久| 香港成人在线视频| 久久久不卡网国产精品二区| 色综合久久综合网欧美综合网| 婷婷六月综合网| 久久久精品蜜桃| 欧美四级电影在线观看|