标题:
Atmega32A驱动LCD1602显示屏
[打印本页]
作者:
qq732357710
时间:
2017-5-5 05:41
标题:
Atmega32A驱动LCD1602显示屏
对于初学者来说,最烦躁的可能就是调试程序,往往小小一个问题,要找个一个小时,甚至几个小时才能解决,这个程序是刚调试完的,整整九个多小时啊,现在看着挺简单的,没调试好前根本不敢肯能调得好.高手别笑,初学者参考
编程环境Atmel Studio 7.0 和Proteus 8仿真,说明:仿真和真实电路是有点区别的,仿真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,读状态,输入:RS=L RW=H E=H 输出:D0~D7=状态字
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
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1