MSP430G2553 1602显示字符

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/HopesunIce/article/details/78710301
在网上查了 好多 ;好多都说下载进去就好用  然并卵  这个就写给自己以后看吧    不是很规范 仅供参考吧  下载进去应该就可以  但是3.3V供电的情况下很暗    还有2553毕竟就真么几个IO口  如果条件允许的话  可以这么浪费  这个代码数据端口是用P1传送的 但是P1端口 有各种常用的其他功能 所以实在要用的话 用P2作为数据口 比较好 把代码的中的端口改一下就可以了 不过 忠告一下:一定去手册里面仔细看看  IO的配置    虽然这个程序中问题不大
先直接附上代码:
# include "msp430G2553.h"
# define uchar unsigned char 
# define uint unsigned int 
# define LCD1602_RS_H  P2OUT|=BIT0
# define LCD1602_RS_L  P2OUT&=~BIT0
# define LCD1602_RW_H  P2OUT|=BIT1
# define LCD1602_RW_L  P2OUT&=~BIT1
# define LCD1602_EN_H  P2OUT|=BIT2
# define LCD1602_EN_L  P2OUT&=~BIT2
/****************************************************************************
函数名称 :Delay_Nms
函数功能: 延时Nms  (默认的内部DCO 貌似1MHZ)
函数参数:n
函数返回值:无
额外说明:此延时函数  并不精确  大概估算回了一下指令执行的时间 推算出来的
****************************************************************************/
void Delay_Nms(uint n)
{
  uint  i,j;
  for(i=250;i>0;i--)
    for(j=n;j>0;j--);
}
/****************************************************************************
函数名称 :Write_1602_Cmd
函数功能: 向1602写一个字节的指令
函数参数:uchar :Cmd
函数返回值:无
额外说明:看时序图的水平还差的太远 理解的还远不够  写的时候加上了下面的注释的话 
结果死活就是不显示!!!
****************************************************************************/
void Write_1602_Cmd(uchar Cmd)
{
  LCD1602_RS_H;//RS为低  写指令
  LCD1602_RW_H;
  LCD1602_EN_L;
    
  LCD1602_RS_L;
  LCD1602_RW_L;
  P1OUT=Cmd;
  Delay_Nms(5);
  LCD1602_EN_H;
  Delay_Nms(5);
  LCD1602_EN_L;
  //LCD1602_RW_L;
  //LCD1602_RS_H;
}
/****************************************************************************
函数名称 :Write_1602_Data
函数功能: 向1602写一个字节的数据
函数参数:uchar :Data
函数返回值:无
额外说明:看时序图的水平还差的太远 理解的还远不够  写的时候加上了下面的注释的话 
结果死活就是不显示!!!
****************************************************************************/
void Write_1602_Data(uchar Data)
{
  LCD1602_RS_L;
  LCD1602_RW_L;
  LCD1602_EN_L;
  
  LCD1602_RS_H;
  LCD1602_RW_L;
  P1OUT=Data;
  Delay_Nms(5);
  LCD1602_EN_H;
  Delay_Nms(5);
  LCD1602_EN_L;
 //LCD1602_RS_L;
 //LCD1602_RW_L;
}
/****************************************************************************
函数名称 :Init_1602
函数功能: 初始化1602和IO端口
函数参数:无
函数返回值:无
额外说明:一定去手册里面仔细的看 IO的配置
****************************************************************************/
void Init_1602()
{
  P1DIR|=0xff;
  P1SEL=0;
  P1SEL2=0;
  P2DIR|=BIT0+BIT1+BIT2;
  P2SEL&=~(BIT0+BIT1+BIT2);//默认为0 可不写
  P2SEL2&=~(BIT0+BIT1+BIT2);//同上 可不写 查手册IO配置即可
  Write_1602_Cmd(0x38);
  Delay_Nms(5);
  Write_1602_Cmd(0x0c);
  Delay_Nms(5);
  Write_1602_Cmd(0x06);
  Delay_Nms(5);
  Write_1602_Cmd(0x01);
}
void main()
{
  WDTCTL = WDTPW + WDTHOLD;    //经常自己忘记关闭看门狗  
  Init_1602();
  while(1)
  {
    Write_1602_Cmd(0x80) ;//	显示屏命令写入函数
    Write_1602_Data('2');//	显示屏数据写入函数
  }
}
展开阅读全文

1602 不能显示字符的问题咨询

10-11

我自己做了一个STC单片机的1602显示的板子,等元器件焊接好了之后,1602显示出了一点问题。值闪烁光标,不显示字符了。 我就对照了开发板量了一下他的管脚电压。rnrn那个一个板子的RW是4.96 RS E是0.02 VO是0.89, 没有问题的板子的RS 为4.96 RW E 是0.03 VO是1.28 其它的都一样 这个有什么问题没有。 还有一个我两个板子的RW 和E管脚定义的接口不一样,但是我烧录的时候都在软件里面给改过来了的。rn这个是什么原因呢,知道的同学麻烦给我讲一讲 谢谢rn[img=https://img-bbs.csdn.net/upload/201310/11/1381462702_862531.jpg][/img]rnrn[img=https://img-bbs.csdn.net/upload/201310/11/1381462714_499873.jpg][/img]rnrn#include //头文件rn#define uchar unsigned char rn#define uint unsigned intrnrnsbit lcden=P2^5;rnsbit lcdrs=P2^6;rnsbit lcdrw = P2^7;rn/*******************************************************************/rn/* */rn/* 延时子程序 20M晶振 1MS */rn/* */rn/*******************************************************************/rnvoid delay(uint time)rnrn int a,y;rn for(a=time;a>0;a--)rn for(y=206;y>0;y--);rnrnvoid write_com(uchar com)rnrn lcdrs=0;rn lcdrw=0;rn lcden=0;rn delay(5);rn P0=com;rn delay(5);rn lcden=1;rn delay(5);rn lcden=0;rnrnrnvoid write_data(uchar date)rnrn lcdrs=1;rn lcdrw=0;rn lcden=0;rn delay(5);rn P0=date;rn delay(5);rn lcden=1;rn delay(5);rn lcden=0;rnrnrnvoid init()rnrn delay(5);rn lcden=0;rn write_com(0x38);rn delay(1);rn write_com(0x0f);rn delay(1);rn write_com(0x06);rn delay(1);rn write_com(0x01);rn delay(1);rnrnrnrnrnvoid main()rnrn init();rn delay(10);rn write_com(0x80+0x43);rn write_data('1');rn while(1); rnrnrn这个是我写的程序 本应该在光标前面显示一个数字 1的 但是没有显示rn我把这个程序烧到开发板上面就没有问题 论坛

没有更多推荐了,返回首页