找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5667|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Atmega32A驅(qū)動(dòng)LCD1602顯示屏

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
對(duì)于初學(xué)者來說,最煩躁的可能就是調(diào)試程序,往往小小一個(gè)問題,要找個(gè)一個(gè)小時(shí),甚至幾個(gè)小時(shí)才能解決,這個(gè)程序是剛調(diào)試完的,整整九個(gè)多小時(shí)啊,現(xiàn)在看著挺簡單的,沒調(diào)試好前根本不敢肯能調(diào)得好.高手別笑,初學(xué)者參考
編程環(huán)境Atmel Studio 7.0 和Proteus 8仿真,說明:仿真和真實(shí)電路是有點(diǎn)區(qū)別的,仿真Proteus 8只能用內(nèi)部晶振,最大8MHz,我的DIY板是16M,所以實(shí)際電路總是比仿真的跑快好多


單片機(jī)源程序:

  1. /*
  2. * LCD1602_AVR.h
  3. *
  4. * Created: 2017/3/19 23:07:51
  5. *  Author: lyl

  6. *LCD1602的基本操作時(shí)序
  7.         1,讀狀態(tài),輸入:RS=L        RW=H        E=H                        輸出:D0~D7=狀態(tài)字
  8.         2,讀數(shù)據(jù),輸入:RS=H        RW=H        E=H                                輸出:D0~D7=數(shù)據(jù)
  9.        
  10.         2,寫指令,輸入:RS=L        RW=L        D0~D7=指令碼                E=高脈沖                輸出:無
  11.         3,寫數(shù)據(jù),輸入:RS=H        RW=L        D0~D7=數(shù)據(jù)                E=高脈沖                輸出:無
  12. */
  13. #define F_CPU 8000000UL
  14. #include <avr/io.h>        //io端口寄存器配置文件,必須包含
  15. #include <util/delay.h>       //GCC中的延時(shí)函數(shù)頭文件
  16. #define uchar unsigned char
  17. #define uint unsigned int

  18. #ifndef LCD1602_AVR_H_
  19. #define LCD1602_AVR_H_

  20. #define DataPort PORTC
  21. #define DataPort_DDR DDRC
  22. #define DataPort_PIN PINC
  23. #define CtrPort PORTB
  24. #define CtrPort_DDR DDRB
  25. #define CtrPort_PIN PINB

  26. #define RS 0
  27. #define RW 1
  28. #define EN 2

  29. #define LCD1602_SetRS()                (CtrPort |= (1<<RS))
  30. #define LCD1602_ClrRS()                (CtrPort &= ~(1<<RS))
  31. #define LCD1602_SetRW()                (CtrPort |= (1<<RW))
  32. #define LCD1602_ClrRW()                (CtrPort &= ~(1<<RW))
  33. #define LCD1602_SetEN()                (CtrPort |= (1<<EN))
  34. #define LCD1602_ClrEN()                (CtrPort &= ~(1<<EN))

  35. void LCD1602_PortInit(void);        //端口初始化
  36. void LCD1602_CheckBusy(void);        //LCD1602忙信號(hào)檢測(cè)
  37. void LCD1602_Init(void);        //LCD1602初始化
  38. void LCD1602_WriteData(uchar ucData);//在液晶上寫數(shù)據(jù)或者命令,0為命令,1為數(shù)據(jù)
  39. void LCD1602_WriteCmd(uchar cmd);
  40. void LCD1602_CursorPosition(uchar x,uchar y);//將液晶的坐標(biāo)移動(dòng)到指定的位置
  41. void LCD1602_WriteChar(uchar x,uchar y,uchar ucData);//在指定的位置上顯示一個(gè)字符串;
  42. void LCD1602_WriteString(uchar x,uchar y,uchar *Str);//在液晶上顯示字符串





  43. #endif
復(fù)制代碼


完整代碼和仿真文件下載:
Atmega32A驅(qū)動(dòng)LCD1602顯示屏.7z (66.72 KB, 下載次數(shù): 32)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表