乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      第七課 控制液晶屏LCD1602《中學(xué)生C51單片機(jī)易學(xué)實(shí)戰(zhàn)入門教程》

       岐岐feng 2018-03-26
      • 實(shí)驗(yàn)準(zhǔn)備

      • 課程內(nèi)容

      第七課 控制液晶屏LCD1602

      實(shí)驗(yàn)準(zhǔn)備:

      LCD1602 面包板 杜邦線

      電阻:10k 8只 或排阻(用于P0上拉)

      (或直接使用完整的開發(fā)板)

      課程內(nèi)容:

      一、 原理圖與接線

      第七課 控制液晶屏LCD1602《中學(xué)生C51單片機(jī)易學(xué)實(shí)戰(zhàn)入門教程》

      這里分析下 幾個(gè)接口信號 V0、RS、RW、EN 表示的意義:

      3腳:V0,液晶顯示偏壓信號,用于調(diào)整LCD1602的顯示對比度,一般會外接電位器用以調(diào)整偏壓信號,注意此腳電壓為0時(shí)可以得到最強(qiáng)的對比度。

      4腳:RS,數(shù)據(jù)/命令選擇端,當(dāng)此腳為高電平時(shí),可以對1602進(jìn)行數(shù)據(jù)字節(jié)的傳輸操作,而為低電平時(shí),則是進(jìn)行命令字節(jié)的傳輸操作。命令字節(jié),即是用來對LCD1602的一些工作方式作設(shè)置的字節(jié);數(shù)據(jù)字節(jié),即使用以在1602上顯示的字節(jié)。值得一提的是,LCD1602的數(shù)據(jù)是8位的。

      5腳:R/W,讀寫選擇端。當(dāng)此腳為高電平可對LCD1602進(jìn)行讀數(shù)據(jù)操作,反之進(jìn)行寫數(shù)據(jù)操作。

      6腳:E,使能信號(LCDE),其實(shí)是LCD1602的數(shù)據(jù)控制時(shí)鐘信號,利用該信號的上升沿實(shí)現(xiàn)對LCD1602的數(shù)據(jù)傳輸。

      7~14腳:8位并行數(shù)據(jù)口,使得對LCD1602的數(shù)據(jù)讀寫大為方便。

      還有就是在單片機(jī)開發(fā)板上的接線:數(shù)據(jù)線接P0,控制線用P2中的三個(gè)IO

      sbit LCD_RS = P2^6;

      sbit LCD_RW = P2^5;

      sbit LCD_EP = P2^7;

      二、 底層操作

      寫命令 RS=L,RW=L,D0—D7=命令,EN=高脈沖 H

      寫數(shù)據(jù) RS=H,RW=L,D0—D7=數(shù)據(jù),EN=高脈沖H

      三、 時(shí)序圖

      第七課 控制液晶屏LCD1602《中學(xué)生C51單片機(jī)易學(xué)實(shí)戰(zhàn)入門教程》

      這節(jié)課引入時(shí)序圖,其他器件類似,只要看懂時(shí)序圖,就可以通過編程輕松控制這些器件按自己的需求工作,注意時(shí)間軸從左往右。

      我們先不讀出它的數(shù)據(jù)的狀態(tài)或者數(shù)據(jù)本身。所以只需要看兩個(gè)寫時(shí)序:

      ① 當(dāng)我們要寫指令字,設(shè)置LCD1602的工作方式時(shí):需要把RS置為低電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫入。

      ② 當(dāng)我們要寫入數(shù)據(jù)字,在1602上實(shí)現(xiàn)顯示時(shí):需要把RS置為高電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫入。

      發(fā)現(xiàn)了么,寫指令和寫數(shù)據(jù),差別僅僅在于RS的電平不一樣而已。

      操作步驟:(要對照時(shí)序圖)

      1) RS 確定 寫數(shù)據(jù)還是命令

      2) RW寫模式 給0

      3) P0 放數(shù)據(jù)或命令,延時(shí)5微秒

      4) EN 給 1 延時(shí)5微秒 再給0 (即是給了脈沖)

      第七課 控制液晶屏LCD1602《中學(xué)生C51單片機(jī)易學(xué)實(shí)戰(zhàn)入門教程》

      這個(gè)表的命令也不需要記,在下面例程中LCD初始化部分就有廠家提供的代碼.

      還有下表是控制操作需要消耗的時(shí)間:ns表示納秒

      第七課 控制液晶屏LCD1602《中學(xué)生C51單片機(jī)易學(xué)實(shí)戰(zhàn)入門教程》

      四、 按時(shí)序圖編程

      一個(gè) _nop_(); 大約1微秒

      void lcd_cmd(BYTE cmd)

      { // 寫入指令數(shù)據(jù)到LCD

      LCD_RS = 0;

      LCD_RW = 0;

      LCD_EP = 0;

      P0 = cmd;

      _nop_();_nop_();_nop_();_nop_();_nop_();

      LCD_EP = 1;

      _nop_();_nop_();_nop_();_nop_();_nop_();

      LCD_EP = 0;

      }

      void lcd_wdat(BYTE dat)

      { //寫入字符顯示數(shù)據(jù)到LCD

      LCD_RS = 1;

      LCD_RW = 0;

      LCD_EP = 0;

      P0 = dat;

      _nop_();_nop_();_nop_();_nop_();_nop_();

      LCD_EP = 1;

      _nop_();_nop_();_nop_();_nop_();_nop_();

      LCD_EP = 0;

      }

      void lcd_init()

      { //LCD初始化設(shè)定

      lcd_cmd(0x38); //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)

      lcd_cmd(0x0c); //顯示開,關(guān)光標(biāo)

      lcd_cmd(0x06); //移動光標(biāo)

      lcd_cmd(0x01); //清除LCD的顯示內(nèi)容

      }

      BYTE code dis1[] = {' WELCOME TO '}; //要放最前面定義

      BYTE code dis2[] = {' My C51 '};//要放最前面定義

      main()

      {

      BYTE i;

      lcd_init(); // 初始化LCD

      delay(10);

      while(1)

      {

      lcd_wcmd(0x06); //向右移動光標(biāo)

      lcd_ wcmd (0x80); //設(shè)置顯示位置為第一行的第1個(gè)字符

      i = 0;

      while(dis1[ i ] != '\0') // \0 是C語言中字符串最后一個(gè)字符

      { //顯示字符'WLCOME TO'

      lcd_wdat(dis1[ i ]);

      i++;

      }

      lcd_ wcmd (0x80+0x40); //設(shè)置顯示位置為第二行第1個(gè)字符

      i = 0;

      while(dis2[ i ] != '\0')

      {

      lcd_wdat(dis2[ i ]); //顯示字符' My C51'

      i++;

      delay(30); //控制兩字之間顯示速度

      }

      }

      }

      可以修改程序 讓向左顯示 ,或者移出移入

      可以在在程序 中 需要的位置加入 延時(shí) 讓數(shù)據(jù)穩(wěn)定

      五、增補(bǔ)C語言基礎(chǔ)--數(shù)組

      簡單理解:數(shù)組是同種類型元素的集合。(特別注意:同種類型)

      1. 一維數(shù)組定義

      int a[10];

      這樣我們便定義了一個(gè)數(shù)組a,它分配10個(gè)int類型空間。

      2.?dāng)?shù)組的初始化

      例程中:

      BYTE code dis1[] = {' WELCOME TO '};

      定義了一個(gè)類型為 BYTE code 的數(shù)組,同時(shí)做初始化,這數(shù)組的各個(gè)元素都是一個(gè)字符,其中有空格,字母.

      3.數(shù)組元素的訪問

      訪問數(shù)組中的元素可以采用數(shù)組名加下標(biāo)的方式,下標(biāo)是從0開始,C語言并不檢查數(shù)組下標(biāo)是否越界,所以在訪問數(shù)組中的元素時(shí)需要注意,需要對數(shù)組下標(biāo)做判斷,防止訪問數(shù)組越界。

      例子:

      int a[10];

      int i;

      for (i = 0; i < 10;="">

      {

      a[i] = i + 1;

      }

      至于二維數(shù)組,簡單可理解為一個(gè)XX行YY列的表格,本教程現(xiàn)時(shí)還沒有用到,所以暫時(shí)不作詳解.

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多