wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

AVR 單片機學習筆記–LCD1602模塊

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年10月21日   【字體:

學完51單片機再來學AVR,感覺很容易上手,LCD1602在學51的時候學過,所以可以直接修改相關的IO口操作即可。現在順便也復習一下。1602可以顯示兩行字符,每行可以顯示16個字符,可惜的是不能顯示中文,在我調試的時候它幫我不少的忙。

一、主要技術參數:

顯示容量:            16X2個字符(兩行,每行16個字符)
       模塊工作電源:              4.5~5.5V
       模塊工作電流:              2.0mA (5.0V)
       模塊最佳工作電源:        5.0V
       字符尺寸:                     2.95X4.35(WXH)mm

二、IO引腳功能

LCD1602A模塊引腳功能

編號

符號

引腳說明

編號

符號

引腳說明

1

VSS

電源地(模塊供電)

9

D2

Data I/O

2

VDD

電源正極(模塊供電)

10

D3

Data I/O

3

VL

接在滑動電阻可以調節對比度

11

D4

Data I/O

4

RS

數據/命令選擇端 (H/L)

12

D5

Data I/O

5

R/W

讀/寫選擇端 (H/L)

13

D6

Data I/O

6

E

使能信號(通知芯片讀取數據)

14

D7

Data I/O

7

D0

Data I/O

15

BLA

模塊背光燈正極

8

D1

Data I/O

16

BLK

模塊背光燈負極

 

三、基本操作時序:

讀狀態:輸入:RS=L、RW=H、E=H                    模塊輸出:狀態字=D0~D7
       寫指令:輸入:RS=L、RW=L、D0~D7=指令碼、E=H       模塊輸出:無
       讀數據:輸入:RS=H、RW=H、E=H                               模塊輸出:數據=D0~D7
       寫數據:輸入:RS=H、RW=L、D0~D7=數據、E=H          模塊輸出:無

 狀態字說明(因為單片機的速度可能快過1602,所以需要判斷當1602是否在忙,或者延時。)

STA7

STA6

STA5

STA4

STA3

STA2

STA1

STA0

D7

D6

D5

D4

D3

D2

D1

D0

STA0-6:當前數據地址指針的數值

STA7

主要用來檢查1602模塊的是否可以寫入或讀出操作

1:禁止  0:允許

               

 

四、指令說明(這指令是用來設置1602顯示的方式)

顯示模式設置

指令碼

功能

0

0

1

1

1

0

0

0

設置16X2顯示,5X7點陣,8位數據接口

                 

 

顯示開/關及光標設置

指令碼

功能

0

0

0

0

1

D

C

B

D=1 開顯示         D=0 關顯示
C=1 顯示光標       C=0 不顯示光標
B=1 光標閃爍       B=0 光標不閃爍

0

0

0

0

0

1

N

S

N=1 當讀或寫一個字符后地址指針加1,且光
     標加1(即從左往右顯示)
N=0 當讀或寫一個字符后地址指針減1,且光
     標減1(即從右往左顯示)
S=1 當寫一個字符,中國男排顯示左移(N=1)

                 

 

五、時序圖

 

 
 

 


寫操作(寫指令、寫數據)時序圖

 


時序參數

寫指令時序,RS拉低表示寫指令,R/W拉低表示寫操作,給DB0-DB7賦值指令數據并保持>40ns時間,將E拉高表示數據已經準備好保持>150ns讓1602讀取,將E拉低,并延時>10ns一次寫操作完畢。

寫數據時序,RS拉高表示寫數據,R/W拉低表示寫操作,給DB0-DB7賦值指令數據并保持>40ns時間,將E拉高表示數據已經準備好保持>150ns讓1602讀取,將E拉低,并延時>10ns一次寫操作完畢。 

六、電路圖 
    
 

由于只是寫操作,所以R/W直接接地即可。 

PORTA接1602的8位數據引腳

PORTD5接1602的RS引腳 區分數據或命令:H數據,L命令

    PORTD4接1602的E引腳 高脈沖使能,使能脈寬最小150ns 

 

七、完整代碼。

// 代碼功能:驅動LCD1602顯示屏
// 平臺:DB-51 Ver2.1開發板
// 控制芯片:ATmega16A
// 時鐘:片內時鐘
// 設計者:L、QQ:1007566569
//                2013-8-10
//*************************************** 包含必備文件 *******************************************************
#ifndef _STRING_H
   #include "string.h"
#endif

#ifndef uchar         
   #define uchar unsigned char
#endif                 

#ifndef uint
   #define uint  unsigned int
#endif

//*************************************** 移植必須修改 *******************************************************

// 共占用 PORTA一組IO 、PORTD中第4、5 IO  由于只是寫操作,所以R/W直接接地即可。 

#define _1602_DATA        PORTA   // 接1602的8位數據引腳
#define _1602_CMDIO       PORTD   // 控制線所對應的IO口
#define _1602_CMDIO_RS    5       // 接1602的RS引腳 區分數據或命令:H數據,L命令
#define _1602_CMDIO_E     4       // 接1602的E引腳 高脈沖使能,使能脈寬最小150ns 

/**************************************************
設計者:L、QQ:1007566569
函數:自定義函數 void My_SetBit(unsigned char *Date, unsigned char Wei, unsigned char ms)
參數:Date:寄存器地址 Wei:更改指定位 ms:若為1則將指定位置1 若為0則將指定位置0
返回值:無返回值,函數里面會更改寄存器值
例子:My_SetBit((unsigned char*)&PORTB, 2, 1); 將PORTB寄存器中的第2位置1
函數描述:
    修改指定寄存器中的指定位,不影響其他位。
**************************************************/
/*** 第二版本 ***/
void My_SetBit(unsigned char *Date, unsigned char Wei, unsigned char ms)
{
   (((ms) == (0)) ? (*Date &= ~(0x1<<Wei)) : (*Date |= (0x1<<Wei)));
}

/* 延時函數 */
void delay_50us_1602(unsigned int x)
{  
   unsigned char y;
   for(;x>0;x--)
      for(y=19;y>0;y--);
}

/* 寫入指定命令 由于是寫操作 R/W 可以直接接地保持低電平即可*/
void lcdwrcom_1602(unsigned char cdat)
{  
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_E, 0);      // E置0,即將改變數據。不允許1602讀取數據(IO口狀態)
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_RS, 0);      // RS拉低 表示是命令
   _1602_DATA = cdat;                                    // 將命令送至與1602的8位數據口相連接的IO口              
   delay_50us_1602(4);                                    // 數據建立時間要 >40ns
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_E, 1);      // E使能,命令已經準備好,通知1602讀取命令(IO口狀態)
   delay_50us_1602(8);                                    // E高電平保持時間要 >150ns,讓1602有時間讀取完整
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_E, 0);      // E置0,不允許1602讀取數據(IO口狀態)可能改變。
   delay_50us_1602(2);                                    // 根據時序圖,讓數據再保持一小段時間 >10ns
}
/* 將指定數據寫入顯示屏 由于是寫操作 R/W 可以直接接地保持低電平即可*/
void lcdwrdata_1602(unsigned char dat)
{  
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_E, 0);      // E置0,即將改變數據。不允許1602讀取數據(IO口狀態)
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_RS, 1);      // RS拉高 表示是數據
   _1602_DATA = dat;                                    // 將命令送至與1602的8位數據口相連接的IO口              
   delay_50us_1602(4);                                    // 數據建立時間要 >40ns
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_E, 1);      // E使能,命令已經準備好,通知1602讀取命令(IO口狀態)
   delay_50us_1602(8);                                    // E高電平保持時間要 >150ns,讓1602有時間讀取完整
   My_SetBit((unsigned char*)&_1602_CMDIO, _1602_CMDIO_E, 0);      // E置0,不允許1602讀取數據(IO口狀態)可能改變。
   delay_50us_1602(2);                                    // 根據時序圖,讓數據再保持一小段時間 >10ns                                 // 根據時序圖,讓數據保持一小段時間
}

/* 初始化 1602 */
void lcd_init_1602()
{   // 具體含義請參考 1602官方使用手冊
   lcdwrcom_1602(0x38);//0x38設置顯示模式為:16X2 顯示,5X7 點陣,8 位數據接口
   lcdwrcom_1602(0x0C);//打開顯示光標閃爍
   lcdwrcom_1602(0x06);//顯示光標移動設置
   lcdwrcom_1602(0x01);//顯示清屏    
}

/* 綜合函數 API */
/* 參數:Show_1602(第一行顯示的數據, 第二行顯示的數據, 每個字符顯示的時間)*/
void Show_1602(unsigned char Text_1[], unsigned char Text_2[], unsigned int Time)
{
   unsigned char n;
   unsigned int Tmp;
   unsigned char TmpA, TmpC, TmpD;
  
   // 備份IO口原來的配置以備復原,避免影響其他模塊代碼
   TmpA = DDRA;  
   TmpC = DDRC;
   TmpD = DDRD;
   // 端口初始化
   DDRA = 0xFF;     
   DDRC = 0xC0;
   DDRD = 0x30;

   // 1602 初始化
   lcd_init_1602();
  
   lcdwrcom_1602(0x80+0x00);         // 設置要顯示(寫入)的位置 0x80-0x8F 第一行的位置
   Tmp = strlen(Text_1);      
   if(Tmp)
   {
      for(n=0; n<Tmp; n++)
      {
         lcdwrdata_1602(Text_1[n]);   // 一個字節一個字節寫入
         delay_50us_1602(Time);      // 延時指定時間 可以達到一個字符一個字符慢慢依次顯示的效果
      }
   }

   lcdwrcom_1602(0x80+0x40);         // 設置要顯示(寫入)的位置 0xC0-0xCF 第二行的位置  
   Tmp = strlen(Text_2);
   if(Tmp)
   {
      for(n=0; n<Tmp; n++)
      {
         lcdwrdata_1602(Text_2[n]);   // 一個字節一個字節寫入
         delay_50us_1602(Time);      // 延時指定時間 可以達到一個字符一個字符慢慢依次顯示的效果
      }
   }
  
   // 恢復端口原來的設置避免影響其他模塊的使用。
   DDRA = TmpA;
   DDRC = TmpC;
   DDRD = TmpD;
}

/*  寫完這個函數后,靈光一現!擦,被誤導了!霖鋒老師和郭天祥老師是不是都寫懵
   了,搞那么復雜,靠 一個 sprintf 就能搞定。
void Show_1602_Int(unsigned int Shuzi, unsigned int Time)
{
   unsigned char Tdate[]="0123456789";
   char Text[33] = {0};
   unsigned int Tmp;
   unsigned int Weishu = 10;
   char Textlen = 0;

   // 判斷位數 ↓
   if(Shuzi < 10 )                        // 如果是一位數 則不必拆分 直接引用
   {
      Text[Textlen] = Tdate[Shuzi];
      Show_1602_Char(Text, "", Time);
      return ;
   }

   while(1)                           // 如果是兩位數以上 則先判斷幾位
   {
      if(Shuzi>=Weishu && Shuzi<Weishu*10)
         break;
      Weishu*=10;
   }
   // 判斷位數 ↑

   // 將每一位拆分翻譯 ↓
   for(Textlen=0; Weishu; Textlen++)
   {                          
      Tmp = Shuzi/Weishu;        
      Text[Textlen] = Tdate[Tmp];
      Shuzi = Shuzi % Weishu;
      Weishu /= 10;
   }
   // 將每一位拆分翻譯 ↑

   Show_1602_Char(Text, "", Time);
}
*/

關閉窗口

相關文章

精品视频vs精品视频| 午夜精品福利一区二区蜜股av| 国产精品一区二区三区四区| 久久精品人人做人人爽97| 洋洋av久久久久久久一区| 91精品国产欧美一区二区| 在线观看精品国产视频| 日本不卡视频在线播放| 欧美男同性恋视频网站| 亚洲第一页中文字幕| 欧美激情综合色| 国产精品一 二 三| 久久永久免费视频| 国产精品三级一区二区| 亚洲欧美激情网| 亚洲午夜久久久久久久久红桃| 亚欧洲精品在线视频| 亚洲xxx在线| 美女被内谢流白浆高视频| 中文字幕视频在线观看| 波多野结衣视频一区二区| 欧美男男freegayvideosroom| 亚洲欧洲一区| 中文久久乱码一区二区| 欧美二区三区91| 久久99精品久久久久久噜噜| 国产精品麻豆免费版| 国产精品视频一区二区三区四区五区| 性色av蜜臀av色欲av| 国产成人av免费| 五月天丁香在线| 色大18成网站www在线观看| 在线播放成人| 99伊人成综合| 亚洲视频在线一区观看| 亚洲欧美一区二区精品久久久| 国产精品久久中文| 男的插女的下面视频| 久久久久久久久福利| 好吊色一区二区| 日av在线播放中文不卡| 日本精品免费| 波多野结衣办公室双飞| 国产精品午夜一区二区| 免费毛片在线播放| av中文字幕电影在线看| 91久久久精品国产| 欧美国产一区二区| 精品视频久久久久久| 国产剧情日韩欧美| 91视频最新入口| 久久精品国产亚洲AV无码麻豆| 欧美e片成人在线播放乱妇| av福利在线播放| 国产欧美日韩精品一区二区三区| 国产一区二区美女诱惑| 精品视频在线视频| 一级毛片在线看| 国产第一亚洲| 日韩和欧美一区二区三区| 亚洲精品视频在线观看网站| 亚洲性线免费观看视频成熟| 国产伦精品一区二区三区视频黑人 | 天天天天天天操| 国产免费不卡| 欧美亚洲三区| 一本大道av一区二区在线播放 | 久久精品国产精品亚洲精品| 黑丝美女久久久| 2019中文字幕在线免费观看| 免费的av在线| 老湿机69福利| 色内内免费视频播放| 国内精彩免费自拍视频在线观看网址| 欧美视频网站| 亚洲成av人片一区二区| 91精品国产91久久| 国产视频一区二区三区在线播放| 免费观看日批视频| 97影院在线观看| 成人h动漫免费观看网站 | 欧美另类高清视频在线| 3d动漫精品啪啪一区二区下载 | 久久99久久98精品免观看软件| 香蕉视频网站在线播放| 亚洲精品mv| 日韩成人午夜精品| 欧美一级爆毛片| 精品无码久久久久国产| 呻吟揉丰满对白91乃国产区| 国产成人亚洲欧美电影| 精品国产第一福利网站| 美女视频第一区二区三区免费观看网站| 欧美日韩一卡二卡三卡 | 国产日韩欧美亚洲| 中文字幕av一区中文字幕天堂| 亚洲国产欧美日韩| 日韩在线观看视频一区二区| 成品网站w灬+源码1| 成人av在线播放| 97久久精品人人爽人人爽蜜臀| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 久热精品视频在线观看| 免费看黄在线看| 中文字幕人妻一区二区三区视频| 中文字幕在线观| 91九色精品| 在线中文字幕一区二区| 国产日韩一区欧美| 极品颜值美女露脸啪啪| 免费观看羞羞视频网站| 精品久久综合| 欧美日韩一区二区三区| 成人做爽爽免费视频| 波多野结衣 在线| 黄瓜视频18免费观看| 日韩aaa久久蜜桃av| 亚洲无线码一区二区三区| 成人网中文字幕| 日本黄色小视频在线观看| 18激情网站| 国产欧美高清视频在线| 色国产综合视频| 欧美一区二区福利在线| 动漫精品视频| 99热精品免费| 日韩写真在线| 9国产精品视频| 亚洲国产高清自拍| 久久国产精品网| 手机看片一区二区三区| 亚洲成人激情社区| 久久精品一区二区三区四区| 26uuu亚洲伊人春色| 日本xxx在线播放| 色成人亚洲网| 女人天堂亚洲aⅴ在线观看| 欧美人狂配大交3d怪物一区| 亚洲精品免费在线看| 最新中文字幕在线观看视频| 18加网站在线| va亚洲va日韩不卡在线观看| 97视频在线观看免费高清完整版在线观看| 国产精品无码自拍| 好看的黄色网址| 99精品视频在线| 日韩一区二区在线看| 欧美人与动牲交xxxxbbbb| 亚洲精品综合网| 国产精品成人国产| 亚洲美女精品一区| 国产日韩欧美一区二区三区四区| 国产91精品一区| 调教一区二区| 久久久久亚洲综合| 91精品国产综合久久香蕉922| 中文字幕在线观看成人| 成人亚洲综合天堂| 国产成a人亚洲精| 日本久久久久久| 国产精品国产精品88| 成年网站在线| av一区二区三区在线| 国产精品精品久久久久久| 杨钰莹一级淫片aaaaaa播放| av在线收看| www.在线欧美| 成人黄色免费网站在线观看| 国产乡下妇女做爰视频| 日韩精品亚洲人成在线观看| 91亚洲男人天堂| 亚洲a一级视频| 麻豆久久久久久久久久| 黄色激情在线播放| 一区二区欧美视频| 日韩高清av电影| 天天综合天天综合| 加勒比色老久久爱综合网| 欧美日韩一本到| 任你操这里只有精品| 岛国片免费看| 亚洲综合丁香| 久久久久久久国产精品视频| 国产人妻大战黑人20p| 男人的天堂av高清在线| 波多野结衣在线一区| 成人黄色片视频网站| 国产理论片在线观看| 国产精品久久久久久久久久辛辛 | 人妻无码视频一区二区三区| 人与牲动交xxxxbbbb高清| 午夜日韩福利| 毛片精品免费在线观看| 国产又粗又长免费视频| 色a资源在线| 一区二区三区不卡视频在线观看 | 黄色成人在线播放| 男人天堂新网址| 日日夜夜视频| 国产一区二区三区久久久久久久久 | 26uuu国产日韩综合| 国产精品久久7| 空姐吹箫视频大全| 国产精品一区二区av交换| 精品成人a区在线观看| 亚洲最大视频网| 高h视频在线| 国产精品五月天| 亚洲欧洲精品在线| 国产毛片av| 国产农村妇女毛片精品久久莱园子| 孩xxxx性bbbb欧美| 国产精品人人人人| 亚洲日韩中文字幕一区| 日韩女优视频免费观看| 国产 xxxx| 成人免费网站在线观看视频| 亚洲一区在线观看免费| 免费看的黄色大片| 香港日本韩国三级| 91麻豆123| 一区二区三区四区五区精品| 午夜一级电影| 精品一二线国产| 国产一区二区免费电影| 亚洲精品国自产拍在线观看| 在线成人国产| 国产精品女主播视频| av中文字幕第一页| 999视频精品| 8x拔播拔播x8国产精品| 伊人久久国产精品| 久久91成人| 欧美激情视频在线| 一级黄色av片| 国产成人精品一区二区免费看京| 久久香蕉国产线看观看av| 青青国产在线观看| 久久香蕉网站| 久久久www成人免费精品张筱雨| 免费在线观看日韩| 日韩亚洲精品在线观看| 亚洲色图国产精品| 久久久国产精华液| www一区二区三区| 伊人av综合网| www.日本精品| 一区三区在线欧| 色综合老司机第九色激情| 探花国产精品一区二区| 大片网站久久| 欧美一区二区三区四区在线| 国产深喉视频一区二区| 这里只有精品在线| 成人福利视频在线观看| 久久一区二区免费播放| 视频一区欧美精品| 牛人盗摄一区二区三区视频| 九九热在线观看| 97aⅴ精品视频一二三区| 激情五月婷婷六月| 1024在线视频| 亚洲专区一二三| 2025中文字幕| 成人影院入口| 亚洲欧美成人精品| 亚洲天堂av片| 国产精品成人a在线观看| 国产www精品| 久久爱com| 国产乱子轮精品视频| 国产av第一区| 色视频免费在线观看| 富二代精品短视频| 一级特级黄色片| 外国成人毛片| 欧美国产视频一区二区| 欧美 日韩 国产 在线| 久久一区精品| 一区二区不卡在线观看| 羞羞视频在线免费看| 色综合天天性综合| 色欲AV无码精品一区二区久久| 人人精品久久| 欧美极品xxxx| √天堂资源中文www| 国产一区二区不卡在线| 日本wwwcom| 黄视频在线观看网站| 欧美成人一区二区三区片免费| 日本成人黄色免费看| av毛片免费看| 午夜亚洲福利老司机| 偷拍夫妻性生活| 精品国产一区二区三区不卡蜜臂| 国产69精品久久久久99| 最新版天堂资源中文官网| 成人激情小说网站| 九一精品在线观看| 欧美办公室脚交xxxx| 最近中文字幕日韩精品| 风流少妇一区二区三区91| 国产在线精品一区二区不卡了| 日本欧美视频在线观看| 色yeye免费人成网站在线观看| 亚洲精品永久免费精品| 99久久精品日本一区二区免费| 蜜臀av一区二区在线观看| 777av视频| 国产h片在线观看| 久久九九精品99国产精品| 欧美 日韩 中文字幕| 成人综合婷婷国产精品久久免费| 免费观看成人网| 暖暖成人免费视频| 久久久久久久电影一区| 99久久国产视频| 亚洲免费观看视频| 18啪啪污污免费网站| 97精品一区| 水蜜桃亚洲精品| 欧美成人高清在线| 伊人激情综合网| 久草在线免费资源| 国产精品美女久久久久久2018 | 国产探花在线视频| 99久久久国产精品美女| 日韩成人av网站| 最新国产在线拍揄自揄视频| 国产一区二区三区免费视频| 午夜视频www| 国产欧美日韩在线| 国产精品成人一区二区三区电影毛片| 日韩理论电影中文字幕| 国产精品播放| 国产永久免费高清在线观看视频| 日韩av在线最新| 国产精品无码99re| 国产精品情趣视频| 亚洲人做受高潮| 一区二区国产在线观看| 亚洲精品无码国产| 三上悠亚一区二区| 国产精品极品美女在线观看免费| 免费成人黄色网址| 日韩一区二区三区免费看 | 中文字幕av亚洲精品一部二部| 亚洲欧美精品| 国产剧情av在线播放| 51ⅴ精品国产91久久久久久| www.黄色网址| 欧美日韩免费观看一区二区三区| 一级黄色小视频| 2022国产精品视频| 精品熟妇无码av免费久久| 国产精品magnet| 日韩av资源在线| 日韩精品视频中文字幕| 精品卡一卡二| 特级毛片在线| 26uuu日韩精品一区二区| 五月伊人六月| 夜夜嗨av一区二区三区四区| 又黄又湿又爽又免费又色| 欧美日韩在线免费| 97精品人妻一区二区三区| www日韩大片| 欧美黑人猛猛猛| 国产一区二区导航在线播放| 日韩av无码一区二区三区不卡| 99久久夜色精品国产亚洲1000部| 日韩欧美猛交xxxxx无码| 日韩成人综合网站| 美国av一区二区三区| 久久精品一区二区三区资源网| 国产不卡高清在线观看视频| youjizz.com国产| 91精品一区国产高清在线gif | 中文字幕亚洲电影| 欧美精品一区二区蜜桃| 久久精品国产免费| 中文字幕狠狠干| 国产麻豆综合| 蜜桃色一区二区三区| 亚洲欧美综合| 日本超碰在线观看| 色婷婷色综合| 成年人免费在线播放| 一本色道久久综合亚洲精品酒店 | 在线一级成人| 毛片在线视频观看| 日本精品在线播放| 欧美专区一二三| 欧美精品资源| 欧美日韩电影一区二区| 欧美色999| 久久久福利视频| 成人免费在线观看视频| 免费精品视频一区二区三区| 高清在线视频不卡|