3195|8

2781

帖子

417

TA的资源

五彩晶圆(中级)

楼主
 

为什么我的1602接收不到430发出的时钟信号呢?1602不能正常显示 [复制链接]




采用四线驱动的方式:

#include
#define uchar unsigned char
#define uint  unsigned int
const uchar tab_1[16]="Hello Msp430";
const uchar tab_2[16]=" 1602test ";

/*********函数声明区***********/
void lcd_dis();                                 // LCD显示函数
void lcd_init();                                 // LCD初始化函数
void write_com(uchar);                         // 写命令函数
void write_data(uchar);                 // 写数据函数

/*********主函数***********/

void main()
{
P1DIR|=BIT0+BIT1+BIT2;
P2DIR|=BIT0+BIT1+BIT2+BIT3;
lcd_init();
while(1)
{
  lcd_dis();
}
}

/*********lcd显示函数******/
void lcd_dis()
{
uchar n;
write_com(0x80);                                 // 设置光标位置
for(n=0;n<16;n++)
  {
        write_data(tab_1[n]);
  }
write_com(0xc0);                                 // 设置光标位置
for(n=0;n<16;n++)
  {
        write_data(tab_2[n]);
  }
}

/*********LCD初始化函数****/
void lcd_init()
{
_delay_cycles(40000);
P1OUT|=BIT2;                                        //LCDEN=1;
write_com(0x33);                                 // 三次显示模式设置
_delay_cycles(5000);
write_com(0x32);
_delay_cycles(5000);
write_com(0x28);                                 // 设置显示模式
write_com(0x08);                                // 关闭显示
write_com(0x01);                                 // 显示清屏
write_com(0x06);                                 // 地址指针及光标自动加1
write_com(0x0c);                                 // 显示开及光标设置
_delay_cycles(5000);
}

/*********写命令函数开始*******/
void write_com(uchar com)
{
  P1OUT&=~(BIT0+BIT1);                                         //LCDRS=0; 低电平写命令
                                                                                          //LCDRW=0;  写有效
  P1OUT|=BIT2;                                                          //LCDEN=1;
  P2OUT&=~(BIT3+BIT2+BIT1+BIT0);
  P2OUT|=(com>>4)&(BIT3+BIT2+BIT1+BIT0);                // 命令字高4位
  P1OUT&=~(BIT2);                                                                  //LCDEN=0;LCD使能端置低电平
  _delay_cycles(1);                                                            //delay(1);
  P1OUT|=BIT2;                                                                     //LCDEN=1;
  P2OUT&=~(BIT3+BIT2+BIT1+BIT0);
  P2OUT|=(com)&(BIT3+BIT2+BIT1+BIT0);//P2=com<<4;         // 命令字低4位
  P1OUT&=~(BIT2);                                                                //LCDEN=0;  LCD使能端置低电平
  _delay_cycles(1);
  P1OUT|=BIT2;                                                                       //LCDEN=1;
}

/*********写数据函数开始*******/
void write_data(uchar dat)
{
  P1OUT|=BIT0;                              // LCDRS=1; 高电平写数据
  P1OUT&=~(BIT1);                       // LCDRW=0; 写有效
  P2OUT=dat;                                                // 数据高4位
  P1OUT&=~(BIT2);                          //LCDEN=0; LCD使能端置低电平
  _delay_cycles(1);
  P1OUT|=BIT2;                              //LCDEN=1;
  P2OUT=dat<<4;                                 // 数据低4位
  P1OUT&=~(BIT2);                       //  LCDEN=0; LCD使能端置低电平
  _delay_cycles(1);
  P1OUT|=BIT2;                              //LCDEN=1;
}

问题就是1602没有反应,怎么回事呢?

最新回复

https://bbs.eeworld.com.cn/thread-342638-1-4.html 他說他成功了,照著抄他的程式看看 不行的話,就是你的硬體線路問題了  详情 回复 发表于 2012-8-3 10:23
 
点赞 关注

回复
举报

32

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
建議先用八線驅動方式
等有反應了
再改用四線驅動

点评

八线驱动方式也试过了,也不行啊:Sad:  详情 回复 发表于 2012-8-1 15:21
 
 

回复

2781

帖子

417

TA的资源

五彩晶圆(中级)

板凳
 

回复 沙发 scott123 的帖子

八线驱动方式也试过了,也不行啊
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

4
 
我覺得你的init怪怪的
八線比較簡單,給你參考



#define LCD_RS 0x08     //P2.3
#define LCD_RW 0x10     //P2.4
#define LCD_EN 0x20     //P2.5

#define LCD_RS_1 P2OUT|=LCD_RS
#define LCD_RW_1 P2OUT|=LCD_RW
#define LCD_EN_1 P2OUT|=LCD_EN

#define LCD_RS_0 P2OUT&=~LCD_RS
#define LCD_RW_0 P2OUT&=~LCD_RW
#define LCD_EN_0 P2OUT&=~LCD_EN
#define LCD_DB_P P3OUT            

#include
#include "LCM.h"
/*******************************************************
Input:                     
output:void
說明:
*******************************************************/
void write_data(unsigned char value)
{
   
    LCD_EN_0;
    LCD_RS_1;
    delay(10);
    LCD_RW_0;
    delay(10);
    LCD_DB_P=value;
    delay(10);
    LCD_EN_1;
    delay(10);
    LCD_EN_0;
    delay(10);

}
/*******************************************************
Input:                     
output:void
說明:
*******************************************************/
void write_command(unsigned char value)
{
    LCD_EN_0;
    LCD_RS_0;
    delay(10);
    LCD_RW_0;
    delay(10);
    LCD_DB_P=value;
    delay(10);
    LCD_EN_1;
    delay(10);
    LCD_EN_0;
    delay(10);

}
/*******************************************************
Input:                     
output:void
說明:
*******************************************************/
void lcm_init(void)
{
    _NOP();
    _NOP();
    delay(1000);
    _NOP();
    write_command(0x38);  //8位元 雙列 5x10點矩陣
  write_command(0x38);  //8位元 雙列 5x10點矩陣
  delay(100);
    write_command(0x0C);  //字幕顯示 游標不顯示 不閃爍
  delay(100);
    write_command(0x01);  //清除螢幕
  delay(100);
    write_command(0x02);  //游標歸零
  delay(100);
    write_command(0x06);  //游標右移 字幕不動
  delay(100);
}/*******************************************************
Input:需要DELAY的倍數
output:void
說明:       1MHz  40us
*******************************************************/
void delay(unsigned int value)
{
    while(value>0)
    {
        value--;
        _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP();
        _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP();
        _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP();
        _NOP(); _NOP(); _NOP(); _NOP(); _NOP();

    }
}

点评

谢了:kiss:  详情 回复 发表于 2012-8-1 15:43
 
 
 

回复

2781

帖子

417

TA的资源

五彩晶圆(中级)

5
 

回复 4楼 scott123 的帖子

谢了
 
 
 

回复

2781

帖子

417

TA的资源

五彩晶圆(中级)

6
 
还是不行啊
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(中级)

7
 
我说几个常见的问题吧,第一是不是对比度的问题;第二是不是公地的问题,第三是不是软件工程的设置问题,第四个是不有的管脚你没有插好,然后你再看看是不是程序的问题吧。
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

8
 
不行也說出個哪邊不行
po上代碼,電路圖讓我們看看
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

9
 
https://bbs.eeworld.com.cn/thread-342638-1-4.html
他說他成功了,照著抄他的程式看看
不行的話,就是你的硬體線路問題了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表