搜索
bottom↓
回复: 7

1602液晶

[复制链接]

出0入0汤圆

发表于 2013-5-25 16:32:04 | 显示全部楼层 |阅读模式
不显示怎么回事啊  求指点

#include<avr/io.h>

#include <util/delay.h>
#define uchar unsigned char
#define uint  unsigned int
#define uchar unsigned char
#define uint  unsigned int
#define RS_0  PORTC &= ~(1 << PC0)        
#define RS_1  PORTC |= (1 << PC0)               
#define RS_OUT  DDRC |= (1 << PC0)               
#define RW_0  PORTC &= ~(1 << PC1)       
#define RW_1  PORTC |= (1 << PC1)       
#define RW_OUT  DDRC |= (1 << PC1)
#define EN_0  PORTC &= ~(1 << PC2)       
#define EN_1  PORTC |= (1 << PC2)               
#define EN_OUT  DDRC |= (1 << PC2)
#define P6_OUT  DDRC |= (1 << PC6)
#define P6_1  PORTC |= (1 << PC6)               

unsigned char table1[16]="0123456789876543";
unsigned char table2[16]="9876543210123456";

void lcd_cmd(uchar cmd)
{
  RS_0;
  RW_0;
  EN_0;
  //RS_0;
  RW_0;
  PORTA=cmd;
  _delay_ms(1);
  EN_1;
  _delay_ms(1);
  EN_0;
}
void lcd_dat(uchar dat)
{
  RS_1;
  RW_0;
  EN_0;
  RS_1;
  //RW_0;
  PORTA=dat;
_delay_ms(1);
  EN_1;
_delay_ms(1);
  EN_0;
}
void int_lcd(void)
{
  DDRA=0XFF;
  PORTA=0Xff;
  P6_OUT;
   P6_1;
RS_OUT;
RW_OUT;
EN_OUT;
_delay_ms(20);
lcd_cmd(0x38);
_delay_ms(5);
  lcd_cmd(0x38);
_delay_ms(10);
lcd_cmd(0x38);
lcd_cmd(0x38);
_delay_ms(10);
lcd_cmd(0x0c);
_delay_ms(10);
lcd_cmd(0x06);
_delay_ms(10);
lcd_cmd(0x01);
_delay_ms(10);
//lcd_cmd(0x0F);

}

void main(void)
{
  uchar i;
  int_lcd();
  
  lcd_cmd(0x80);
  for(i=0;i<16;i++)
  {
   lcd_dat(table1);
   _delay_ms(2);
  
   
  }
    lcd_cmd(0x80+40);
  for(i=0;i<16;i++)
  {
   lcd_dat(table2);
   _delay_ms(2);
  
   
  }
  while(1);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2013-5-25 16:34:47 | 显示全部楼层
这个图。。。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-5-25 17:59:33 | 显示全部楼层
#include"lcd.h"
//#include"key.h"
#include"control.h"
#include"instr_code.h"

/***************************************
函数功能:595 SPI写数据
传入参数:udata
芯片型号:为595,ATMEGE8
时钟    :8M
****************************************/
void write_595(U8 udata)
{U8 i;
CS595_L;
OE595_H;
for(i=0;i<8;i++)
   {SCK595_L;
    if(udata&0x80)MOSI595_H
                 else MOSI595_L;
    SCK595_H;
    udata<<=1;
    }
  OE595_L;
  CS595_H;
}

/***************************************
函数功能:LCD_1602 写命令
传入参数:udata
芯片型号:为595,ATMEGE8
时钟    :8M
****************************************/
void writecom_lcd(U8 udata)
{ delay_ms(1);
  LCDRS_L;
  LCDEN_H;
  write_595(udata);
  LCDEN_L;
  write_595(0);

}

/***************************************
函数功能:LCD_1602 写数据
传入参数:udata
芯片型号:为595,ATMEGE8
时钟    :8M
****************************************/
void writedata_lcd(U8 udata)
{ delay_ms(1);
  LCDRS_H;
  LCDEN_H;
  write_595(udata);
  LCDEN_L;
  write_595(0);

}

/***************************************
函数功能:LCD_1602 写字符串
传入参数:udata
芯片型号:为595,ATMEGE8
时钟    :8M
****************************************/
void lcd_wrstring(U8 adder,U8 *s)
{ U8 n;
   writecom_lcd(adder);
   for(n=0;*s!='\0';n++)
        {writedata_lcd(*s);
                 delay_ms(5);
                 s++;}
   }




/***************************************
函数功能:LCDInt
传入参数:
芯片型号:ATMEGE8
时钟    :8M
****************************************/
void lcd_1602Int(void)
{ U8 i=15;
  CS_in;
  OE_in;
  SCK_in;
  MOSI_in;
  LCDRS_in;
  LCDEN_in;
  LCD_ledH;
// lcdled_biao=1;
  delay_ms(10);
  writecom_lcd(0x38);//16*2显示,5*7点阵,8位数据
  delay_ms(10);
  writecom_lcd(0x80); //显示开,关光标
  delay_ms(10);
  writecom_lcd(0x06);//移动光标
  delay_ms(10);
  writecom_lcd(0x01);//清除LCD的显示内容
  delay_ms(10);
  lcd_wrstring(0x90,"Control System");
  lcd_wrstring(0xd3,"Welcome!");
  writecom_lcd(0x0c);//显示开,关光标
  while(i)
   {writecom_lcd(0x18);
    delay_ms(200);
        delay_ms(200);
        i--;
    }
  delay_ms(200);
  writecom_lcd(0x01);//清除LCD的显示内容
  }


自己对一下

出0入0汤圆

 楼主| 发表于 2013-5-25 21:02:06 | 显示全部楼层
tanguicaicai 发表于 2013-5-25 17:59
#include"lcd.h"
//#include"key.h"
#include"control.h"

不大明白   帮忙看看我写的  不胜感激

出0入0汤圆

发表于 2013-5-27 09:22:56 | 显示全部楼层
你的初始化成功不,能显示光标不?

出0入0汤圆

 楼主| 发表于 2013-5-28 16:18:30 | 显示全部楼层
tanguicaicai 发表于 2013-5-27 09:22
你的初始化成功不,能显示光标不?

不能  不知道咋回事 求指点

出0入0汤圆

发表于 2013-5-29 10:33:46 | 显示全部楼层
笑。h 发表于 2013-5-28 16:18
不能  不知道咋回事 求指点

先看硬件连接有没有问题?然后看每一个IO的输出电平有没有问题,比如 RS_0 你去量量是不 是真的是为0 ,都量一下 都没问题,那就是你的写函数有问题

出0入0汤圆

 楼主| 发表于 2013-5-29 18:28:49 | 显示全部楼层
谢谢。。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表