在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將16x2 LCD與Atmega16 AVR連接并顯示簡單的歡迎消息

科技觀察員 ? 來源:circuitdigest ? 作者:Abhimanyu Pandit ? 2022-11-11 17:29 ? 次閱讀

顯示器是任何機器的必要部分,無論是任何家用電器還是工業機器。顯示屏不僅顯示操作機器的控制選項,還顯示該機器執行的任務的狀態和輸出。電子產品中使用的顯示器類型很多,如 7 段顯示器、16x2 LCD 顯示器、TFT 觸摸屏顯示器、OLED 顯示器等。

16x2 LCD顯示器是最基本的顯示模塊,也用于一些小型電子設備,如計算器,數字儀表等。

在本教程中,我們將了解如何將16x2 LCD 與 Atmega16 AVR 微控制器連接并顯示簡單的歡迎消息。

所需組件

阿特梅加16

16x2液晶模塊

運動員

面包板

poYBAGNuFgCAPtxzAAApmrSZMRU395.png

電路圖

poYBAGNuFgKAMsfuAABRYjVSthU814.png

poYBAGNuFgeAFMPNAAE4hBZh9uI552.jpg

用于 16x2 LCD 顯示器的 Atmega16 編程

編程不需要任何外部庫。在這里,

Atmega16使用USBASP和Atmel Studio7.0進行編程

。項目結束時會給出

完整的程序和工作視頻

,只需在 Atmega16 中上傳程序并旋轉 10k POT 即可調整 LCD 的亮度。

首先定義 CPU 頻率,并包含 Atmel Studio 軟件包附帶的必要庫,例如用于訪問 IO 引腳的 和用于在程序中生成延遲的 。

#include

#include

在程序中定義LCD的RS和EN引腳。RS 引腳用于選擇數據和命令寄存器。使能引腳鎖存數據。

#define en PA3

#define rs PA2

還要定義Atmega16的哪個端口將用于連接LCD。這里,使用了PORTA。

#define lcdDirection DDRA

#define lcdPort PORTA

下一步是構造一個函數,該函數將通過傳遞參數來接受命令。有許多液晶屏十六進制命令。十六進制命令用于定義LCD的功能。由于我們使用LCD的4位模式,因此字節(8位)將以兩個數據包發送。一個數據包將是上半字節(4位),另一個數據包將是下半字節(4位)。

void lcdCommand( unsigned char commands )

{

lcdPort = (lcdPort & 0x0F) | (commands & 0xF0);

lcdPort &= ~ (1<

lcdPort |= (1<

_delay_us(1);

lcdPort &= ~ (1<

_delay_us(200);

lcdPort = (lcdPort & 0x0F) | (commands << 4);

lcdPort |= (1<

_delay_us(1);

lcdPort &= ~ (1<

_delay_ms(2);

}

下一步是接受字符并將其鎖定到LCD端口。接收到的字符然后通過半字節發送到液晶屏半字節。該函數使用傳遞參數獲取字符,然后獲取上下半字節。對于數據寄存器,“rs”引腳設置為高電平,然后發送一個上升脈沖以鎖存數據。類似地,通過更改使能值并發送使能的上升脈沖來發送較低的半字節。

void lcdChar( unsigned char string )

{

lcdPort = (lcdPort & 0x0F) | (string & 0xF0);

lcdPort |= (1<

lcdPort|= (1<

_delay_us(1);

lcdPort &= ~ (1<

_delay_us(200);

lcdPort = (lcdPort & 0x0F) | (string << 4); ??

lcdPort |= (1<

_delay_us(1);

lcdPort &= ~ (1<

_delay_ms(2);

}

此函數只是將字符轉換為字符串,以后可以在需要寫入字符串的程序中使用。

void lcdString (char *str)

{

int j;

for(j=0;str[j]!=0;j++)

{

lcdChar (str[j]);

}

}

現在編寫一個函數只是為了清除屏幕。您只需要在十六進制中發送命令 01,然后將光標設置為初始位置即可。

void lcdClear()

{

lcdCommand (0x01);

_delay_ms(2);

lcdCommand (0x80);

}

現在在主功能中,LCD已初始化。最初將液晶屏的端口方向設置為接口。在這里,端口設置為輸出,因此設置 FF。

lcdDirection = 0xFF;

_delay_ms(20)

然后通過以十六進制發送 02 將 LCD 設置為 4 位模式。同時以十六進制發送 28,以將其設置為 4 位模式下的 2 行 15x7 矩陣像素。

lcdCommand(0x02);

lcdCommand(0x28);

命令 0c 和 06 用于控制光標位置。最后只需通過發送十六進制 01 來清除屏幕。這將完成LCD的初始化。

lcdCommand(0x0c);

lcdCommand(0x06);

lcdCommand(0x01);

初始化完成后,只需發送字符串來測試液晶屏。在這里,我們在 1 中發送一個字符串“接口 LCD”圣排。

lcdString("Interfacing LCD");

然后通過發送十六進制命令 c0 將光標移動到下一行。最后在這個位置上,寫下字符串“With Atmega16”。

lcdCommand(0xC0);

lcdString("With Atmega16");

pYYBAGNuFgmAFENKAACLRmO1FOo452.jpg

關于將16x2 LCD與Atmega16接口的完整教程到此結束。請注意,如果您沒有得到任何圖像或像素,請根據代碼和電路圖檢查接線,或者更改連接到LCDV0引腳的POT的值。

/*

LCD16x2 4 bit ATmega16 interface

CircuitDigest(www.circuitdigest.com)

*/



#define F_CPU 16000000UL // Define CPU Frequency here it 16MHz

#include // Include AVR std. library file

#include // Include Delay header file



#define en PA3 // Define Enable pin

#define rs PA2 // Define Register Select pin

#define lcdDirection DDRA // Define LCD data direction port

#define lcdPort PORTA //Define LCD data port







void lcdCommand( unsigned char commands ) // commands will be sent from this function

{

lcdPort = (lcdPort & 0x0F) | (commands & 0xF0); // send upper nibble of 8 bit

lcdPort &= ~ (1<
lcdPort |= (1<
_delay_us(1);

lcdPort &= ~ (1<


_delay_us(200);



lcdPort = (lcdPort & 0x0F) | (commands << 4); // sending lower nibble of 8 bit i.e 1byte

lcdPort |= (1<
_delay_us(1);

lcdPort &= ~ (1<
_delay_ms(2);

}



void lcdChar( unsigned char string )

{

lcdPort = (lcdPort & 0x0F) | (string & 0xF0); // send upper nibble

lcdPort |= (1<
lcdPort|= (1<
_delay_us(1);

lcdPort &= ~ (1<


_delay_us(200);



lcdPort = (lcdPort & 0x0F) | (string << 4); //send lower nibble?

lcdPort |= (1<
_delay_us(1);

lcdPort &= ~ (1<
_delay_ms(2);

}





void lcdString (char *str) // convert char to string fucntion

{

int j;

for(j=0;str[j]!=0;j++)

{

lcdChar (str[j]);

}

}



void lcdClear()

{

lcdCommand (0x01); // send hex 01 to Clear display

_delay_ms(2);

lcdCommand (0x80); // send hex 80 to Cursor at home position

}



int main()

{

// start Initializing 16x2 LCD

lcdDirection = 0xFF; // set LCD port direction in output

_delay_ms(20); // keep LCD Power ON delay >15ms always



lcdCommand(0x02); // send for 4 bit initialization of LCD

lcdCommand(0x28); // 2 line, 5*7 matrix in 4-bit mode

lcdCommand(0x0c); // Display on cursor off

lcdCommand(0x06); // take curson to next position (shift cursor to right)

lcdCommand(0x01); // Clear display screen

_delay_ms(2); //little delay



lcdString("Interfacing LCD"); // Write string on 1st row of 16x2 LCD

lcdCommand(0xC0); // move to 2nd row

lcdString("With Atmega16"); // write string on second line

}


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7553

    瀏覽量

    151426
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4426

    瀏覽量

    167509
  • ATmega16
    +關注

    關注

    5

    文章

    154

    瀏覽量

    45824
收藏 人收藏

    評論

    相關推薦

    16x2 LCD與ARM7-LPC2148連接顯示文字

    在本教程中,我們將了解如何將 16x2 LCD 與 ARM7-LPC2148 微控制器連接顯示
    的頭像 發表于 10-28 17:12 ?1961次閱讀
    <b class='flag-5'>將</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>與ARM7-LPC2148<b class='flag-5'>連接</b><b class='flag-5'>并</b><b class='flag-5'>顯示</b>文字

    如何將GSM模與ATmega16連接實現發送和接收消息

    在本教程中,我們學習如何將GSM模塊(SIM900A)與AVR微控制器ATmega16連接
    的頭像 發表于 11-10 15:57 ?2249次閱讀
    <b class='flag-5'>如何將</b>GSM模與<b class='flag-5'>ATmega16</b><b class='flag-5'>連接</b>實現發送和接收消息

    如何將DHT11與樹莓派連接16x2 LCD屏幕上顯示溫度和濕度的值

    在本教程中,我們學習如何將流行的DHT11傳感器與Raspberry Pi連接,并在16x2 LCD屏幕上
    的頭像 發表于 11-14 16:53 ?4309次閱讀
    <b class='flag-5'>如何將</b>DHT11與樹莓派<b class='flag-5'>連接</b>在<b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>屏幕上<b class='flag-5'>顯示</b>溫度和濕度的值

    MPU6050與Raspberry Pi連接顯示16x2 LCD值的步驟

    今天在本文中,我們將將此MPU6050與Raspberry Pi連接顯示16x2 LCD上的值。
    的頭像 發表于 11-17 16:42 ?3468次閱讀
    <b class='flag-5'>將</b>MPU6050與Raspberry Pi<b class='flag-5'>連接</b><b class='flag-5'>并</b><b class='flag-5'>顯示</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>值的步驟

    串行顯示LCD 16x2監視器

    描述串行顯示 LCD 16x2 監視器這是一個小項目,我需要能夠通過串行將簡單文本顯示到便宜的 LCD
    發表于 08-19 06:16

    基于ATmega16的簡易示波器設計

    介紹了以AVR單片機ATmega16為核心,采用前端信號調理電路、程控增益放大器以及波形顯示LCD(GDM12864A)實現的一個簡易示波器。
    發表于 12-25 16:12 ?276次下載

    AVR atmega16各功能程序

    AVR單片機中atmega16各功能程序,大家可以借鑒,都是自己積累的 希望可以幫助到大家
    發表于 07-29 15:32 ?17次下載

    ATmega16教程:鍵盤原理與應用(2)

    ATmega16教程5-2
    的頭像 發表于 07-11 00:18 ?3321次閱讀

    ATmega16教程:DA,AD (2

    ATmega16教程8-2
    的頭像 發表于 07-11 00:49 ?3991次閱讀

    ATmega16教程:UART(2

    ATmega16教程10-2
    的頭像 發表于 07-11 00:29 ?4058次閱讀

    ATmega16教程(AVR單片機概述)

    ATmega16教程2
    的頭像 發表于 07-10 04:16 ?1.5w次閱讀

    基于ATMEGA16單片機實現LCD128x64顯示程序的資料合集免費下載

    本文檔的主要內容詳細介紹的是基于ATMEGA16LCD128x64顯示程序資料合集免費下載。
    發表于 10-16 09:29 ?8次下載
    基于<b class='flag-5'>ATMEGA16</b>單片機實現<b class='flag-5'>LCD128x</b>64<b class='flag-5'>顯示</b>程序的資料合集免費下載

    如何連接和使用16x2 I2C LCD的教程

    電子發燒友網站提供《如何連接和使用16x2 I2C LCD的教程.zip》資料免費下載
    發表于 11-22 14:36 ?0次下載
    如何<b class='flag-5'>連接</b>和使用<b class='flag-5'>16x2</b> I<b class='flag-5'>2</b>C <b class='flag-5'>LCD</b>的教程

    如何將16x2 LCD與Raspberry pi4連接

    電子發燒友網站提供《如何將16x2 LCD與Raspberry pi4連接.zip》資料免費下載
    發表于 06-19 11:45 ?0次下載
    <b class='flag-5'>如何將</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>與Raspberry pi4<b class='flag-5'>連接</b>

    如何連接16x2 LCD顯示

    電子發燒友網站提供《如何連接16x2 LCD顯示器.zip》資料免費下載
    發表于 07-12 09:21 ?0次下載
    如何<b class='flag-5'>連接</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b><b class='flag-5'>顯示</b>器
    主站蜘蛛池模板: 最近新韩国hd视频| 天堂a| 色多视频| wwwwww色| 亚洲女人小便| 五月婷丁香| 都市激情亚洲综合| 欧美在线小视频| 一级美女视频| 国产精品夜色7777青苹果| 特黄特色三级在线观看| 丁香花在线观看免费观看| 222aaa天堂| 四虎国产精品永久在线| bt在线www天堂资源网| 欧美三级网址| 国产一区在线mmai| 午夜精品视频任你躁| 丁香花小说| 午夜在线亚洲男人午在线| 天堂在线www| 亚洲午夜综合网| 亚州一级毛片| 久久久久青草| 午夜精品福利视频| 日本一级成人毛片免费观看 | 日本免费人成在线网站| 天天影视亚洲| 爱爱帝国亚洲一区二区三区| 精品久久久久久中文字幕欧美| 操天天操| 日韩视频 中文字幕 视频一区| 国产高清在线| dy888午夜秋霞影院不卡| 欧美色视频日本| 国产精品午夜国产小视频| 四虎影视网站| 欧美影院| 四虎影视网址| 特黄特黄一级高清免费大片| 在线天堂bt中文www在线|