標題: Atmega32A驅(qū)動LCD1602顯示屏 [打印本頁]

作者: qq732357710    時間: 2017-5-5 05:41
標題: Atmega32A驅(qū)動LCD1602顯示屏
對于初學者來說,最煩躁的可能就是調(diào)試程序,往往小小一個問題,要找個一個小時,甚至幾個小時才能解決,這個程序是剛調(diào)試完的,整整九個多小時啊,現(xiàn)在看著挺簡單的,沒調(diào)試好前根本不敢肯能調(diào)得好.高手別笑,初學者參考
編程環(huán)境Atmel Studio 7.0 和Proteus 8仿真,說明:仿真和真實電路是有點區(qū)別的,仿真Proteus 8只能用內(nèi)部晶振,最大8MHz,我的DIY板是16M,所以實際電路總是比仿真的跑快好多


單片機源程序:

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

  6. *LCD1602的基本操作時序
  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ù)頭文件
  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忙信號檢測
  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);//將液晶的坐標移動到指定的位置
  41. void LCD1602_WriteChar(uchar x,uchar y,uchar ucData);//在指定的位置上顯示一個字符串;
  42. void LCD1602_WriteString(uchar x,uchar y,uchar *Str);//在液晶上顯示字符串





  43. #endif
復制代碼


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







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1