|
對于初學者來說,最煩躁的可能就是調試程序,往往小小一個問題,要找個一個小時,甚至幾個小時才能解決,這個程序是剛調試完的,整整九個多小時啊,現在看著挺簡單的,沒調試好前根本不敢肯能調得好.高手別笑,初學者參考
編程環(huán)境Atmel Studio 7.0 和Proteus 8仿真,說明:仿真和真實電路是有點區(qū)別的,仿真Proteus 8只能用內部晶振,最大8MHz,我的DIY板是16M,所以實際電路總是比仿真的跑快好多
0.png (47.08 KB, 下載次數: 104)
下載附件
2017-5-5 16:11 上傳
0.png (58.07 KB, 下載次數: 106)
下載附件
2017-5-5 16:10 上傳
單片機源程序:
- /*
- * LCD1602_AVR.h
- *
- * Created: 2017/3/19 23:07:51
- * Author: lyl
-
- *LCD1602的基本操作時序
- 1,讀狀態(tài),輸入:RS=L RW=H E=H 輸出:D0~D7=狀態(tài)字
- 2,讀數據,輸入:RS=H RW=H E=H 輸出:D0~D7=數據
-
- 2,寫指令,輸入:RS=L RW=L D0~D7=指令碼 E=高脈沖 輸出:無
- 3,寫數據,輸入:RS=H RW=L D0~D7=數據 E=高脈沖 輸出:無
- */
- #define F_CPU 8000000UL
- #include <avr/io.h> //io端口寄存器配置文件,必須包含
- #include <util/delay.h> //GCC中的延時函數頭文件
- #define uchar unsigned char
- #define uint unsigned int
- #ifndef LCD1602_AVR_H_
- #define LCD1602_AVR_H_
- #define DataPort PORTC
- #define DataPort_DDR DDRC
- #define DataPort_PIN PINC
- #define CtrPort PORTB
- #define CtrPort_DDR DDRB
- #define CtrPort_PIN PINB
- #define RS 0
- #define RW 1
- #define EN 2
- #define LCD1602_SetRS() (CtrPort |= (1<<RS))
- #define LCD1602_ClrRS() (CtrPort &= ~(1<<RS))
- #define LCD1602_SetRW() (CtrPort |= (1<<RW))
- #define LCD1602_ClrRW() (CtrPort &= ~(1<<RW))
- #define LCD1602_SetEN() (CtrPort |= (1<<EN))
- #define LCD1602_ClrEN() (CtrPort &= ~(1<<EN))
- void LCD1602_PortInit(void); //端口初始化
- void LCD1602_CheckBusy(void); //LCD1602忙信號檢測
- void LCD1602_Init(void); //LCD1602初始化
- void LCD1602_WriteData(uchar ucData);//在液晶上寫數據或者命令,0為命令,1為數據
- void LCD1602_WriteCmd(uchar cmd);
- void LCD1602_CursorPosition(uchar x,uchar y);//將液晶的坐標移動到指定的位置
- void LCD1602_WriteChar(uchar x,uchar y,uchar ucData);//在指定的位置上顯示一個字符串;
- void LCD1602_WriteString(uchar x,uchar y,uchar *Str);//在液晶上顯示字符串
- #endif
復制代碼
完整代碼和仿真文件下載:
Atmega32A驅動LCD1602顯示屏.7z
(66.72 KB, 下載次數: 32)
2017-5-5 05:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|