注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
brett1753的个人空间 https://home.eeworld.com.cn/space-uid-465659.html [收藏] [复制] [分享] [RSS]
日志

求大神指导一下这段lcd5110程序错在哪里了

已有 1242 次阅读2013-3-16 22:29 |

我现在在用MSP430launchpad做东西,显示液晶用的是5110,这段程序我在做智能车的时候实现过,能让液晶正常显示,现在移植到launchpad上,我修改了一下,但总是什么也没有或只有一道横线,请大神看一下错在哪了。
#include<msp430g2553.h>
#define SCE_1     P2OUT |= BIT0
#define SCE_0     P2OUT &= ~BIT0
#define RST_1    P2OUT |= BIT1
#define RST_0    P2OUT &= ~BIT1
#define DC_1     P2OUT |= BIT2
#define DC_0     P2OUT &= ~BIT2
#define DIN_1    P2OUT |= BIT3
#define DIN_0    P2OUT &= ~BIT3
#define SCLK_1    P2OUT |= BIT4
#define SCLK_0    P2OUT &= ~BIT4
unsigned char num[]={
/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

};
void IO_init(void)
{
 P2DIR =  BIT0+BIT1+BIT2+BIT3+BIT4;
}
void delay()
{
 unsigned int i;
 for(i=600;i>0;i--);
}
void lcd_write_byte(unsigned char data,unsigned char command)
{
 unsigned char i;
 SCE_0;
 if(command==0)
  DC_0;  //写命令
 else
  DC_1;  //写数据
 for(i=0;i<8;i++)
 {
  if(data&0x80)
   DIN_1;
  else
   DIN_0;
  SCLK_0;
  data = data<<1;
  SCLK_1;
 }
 SCE_1;
}
void lcd_set_xy(unsigned char X,unsigned char Y)
{
 lcd_write_byte(0x40|Y,0);
 lcd_write_byte(0x80|X,0);
}
void lcd_clear(void)
{
 unsigned char i,j;
 lcd_set_xy(0,0);
 for(i=0;i<6;i++)
 {
  for(j=0;j<84;j++)
  {
   lcd_write_byte(0x00,1);
  }
 }
}
void lcd_init(void)
{
 RST_0;
 delay();
 RST_1;
 lcd_write_byte(0x21, 0);
 lcd_write_byte(0xd0, 0);
    lcd_write_byte(0x06, 0);
    lcd_write_byte(0x20, 0);
    lcd_write_byte(0x0c, 0);
    lcd_clear();
}
void lcd_write_num(unsigned char row,unsigned char page,unsigned char c) //列,页,字
{
 unsigned char i;
 lcd_set_xy(row*4,page);
 for(i=0;i<8;i++)
  lcd_write_byte(num[c*16+i],1);
 lcd_set_xy(row*4,page+1);
 for(i=8;i<16;i++)
  lcd_write_byte(num[c*16+i],1);
}
void lcd_write_number(unsigned char hang,unsigned char lie,unsigned int num)
{
 unsigned char bai,shi,ge;
 bai = num/100;
 shi = num/10%10;
 ge  = num%10;
 lcd_write_num(lie,hang,bai);
 lcd_write_num(lie+1,hang,shi);
 lcd_write_num(lie+2,hang,ge);
}
void main()
{
 IO_init();
 lcd_init();
 lcd_write_num(0,0,110);
}
全部作者的其他最新日志
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章