分享

avr lcd1602 驱动程序

 共同成长888 2015-07-06
#include
#include
#include"delay.h"
#define uchar unsigned char
#define uint  unsigned int

uchar table[]="i like you!";

void a1602_int(void)
{
  DDRC|=0x07;//控制为 设置为输出
  
  PORTA=0XFF;//很重要 哦 要不数据无法传输 默认为高阻态 不能流通 不用设置为输入
  DDRA=0XFF;
  
  PORTC|=BIT(6);//pc6设置为输出高  这样显示器才亮哦
  DDRC&=~BIT(6);
  
  PORTC&=~BIT(2);//使能端初始化为低
  
  delay_nms(10);
  
  a1602_write_com(0x38);//显示设置命令
  delay_nms(10);
  a1602_write_com(0x0f);//开显示光标闪烁
  delay_nms(10);
  a1602_write_com(0x06);//光标加1
  delay_nms(10);
  a1602_write_com(0x01);//清屏
  delay_nms(10);
  a1602_write_com(0x80);//数据指针初始化
  delay_nms(10);

}

void a1602_write_com(uchar com)
 
 {
 
  PORTC&=~BIT(0);//RS LOW  写指令
  
  PORTC&=~BIT(1);//选择 为写
    PORTA=com;//将a传送给数据口
  PORTC|=BIT(2);//使能端 设置为高 开始发送数据
  
 
  
 // delay_nms(10);//延时5ms
  
  PORTC&=~BIT(2);//使能端 设置为低 发送数据结束

  delay_nms(10);//延时5ms
}

void a1602_write_dat(uchar dat)
{
 
  PORTC|=BIT(0);//RS high  写数据
  
  PORTC&=~BIT(1);//选择 为写
    PORTA=dat;//将a传送给数据口
  PORTC|=BIT(2);//使能端 设置为高 开始发送数据
  

  
  //delay_nms(10);//延时5ms
  
  PORTC&=~BIT(2);//使能端 设置为低 发送数据结束2);//使能端 设置为低 发送数据结束

  delay_nms(10);//延时5ms

}
//x为第几位开始0-15 y=0第一行 其他第二行  *s=“abc”要写入的字母 数字
void lcd_write_str(uchar x,uchar y,uchar *s)//指针形式 读取字符串哦!
{

  if(y==0)
  {
    a1602_write_com(0x80+x);
  }
  else
  {
   a1602_write_com(0xc0+x);
  }
  
  while(*s)
  {
   a1602_write_dat(*s);
   
   //delay_nms(500);//实现延时输入哦
   s++;
   
  }

}

//单个字符输入 实现延时输入
void lcd_write_char(uchar x,uchar y,uchar dat)//指针形式 读取字符串哦!
{

  if(y==0)
  {
    a1602_write_com(0x80+x);
  }
  else
  {
   a1602_write_com(0xc0+x);
  }
  
  a1602_write_dat(dat);

}

void main(void)
{
  uchar i;
  a1602_int();
  //a1602_write_dat('s');
  lcd_write_str(0,0,"123456789");
   lcd_write_char(0,1,'1');
}
  


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多