单片机用的是AVR系列的Atmega64 LCD1602源程序+proteus仿真
仿真原理图如下
单片机源程序如下:
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define RS_H PORTE|=BV(0)
#define RS_L PORTE&=~BV(0)
#define RW_H PORTE|=BV(1)
#define RW_L PORTE&=~BV(1)
#define EN_H PORTE|=BV(2)
#define EN_L PORTE&=~BV(2)
void delay(uint ms)
{
uint i,j;
for(i=0;i
{
for(j=0;j<1141;j++);
}
}
void write_com(uchar com) //写命令函数
{
RS_L; //RS置低,写指令
RW_L; //RW置低,写操作
PORTD=com;
delay(1);
EN_H; //使能端拉高
delay(1);
EN_L; //使能端拉低
}
void write_dat(uchar dat) //写数据函数
{
RS_H;
RW_L;
PORTD=dat;
delay(1);
EN_H;
delay(1);
EN_L;
}
void Lcd1602_init()
{
DDRD=0XFF;
DDRE|=BV(0)|BV(1)|BV(2);
EN_L;
write_com(0X38);
delay(1);
write_com(0X01);
delay(1);
write_com(0X06);
delay(1);
write_com(0X0c);
delay(1);
}
void Lcd1602_Display(uchar addr,uchar num,uchar dat)
{
write_com(addr+num);
write_dat(dat);
}
void main()
{
uchar i;
Lcd1602_init();
//write_com(0X80+n); n=0,1,2...15 第一行显示
//write_com(0x80+0x40+n); n=0,1,2...15 第二行显示
Lcd1602_Display(0x80,0,'5');
Lcd1602_Display(0x80+0x40,0,'5');
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』