/***********************************************
**** LAUNCH PAD 学习之GPIOINT ***
**** MCU: MSP430 ***
**** 作者:孙祖祥 ***
**** ***
**** ***
**** 2012.05.24.20:16 ***
**** 实验现象:LCD ***
**** ***
****P1.0~P1.7 数据口 P2.0 P2.1 P2.2 en rs Psb ***
***********************************************/
#include "msp430g2553.h"
//#include //Grace
#define uchar unsigned char
#define uint unsigned int
unsigned char table[]="EE-LaunchPad";
unsigned char num;
void delay_1ms(void)
{
unsigned int i;
for (i=0;i<1140;i++);
}
void delay_nms(unsigned int n)
{
unsigned int i=0;
for (i=0;i
delay_1ms();
}
void write_com(unsigned int com)
{
P2OUT&= 0xfd;
P1OUT = com;
delay_nms(5);
P2OUT|= 0x01;
delay_nms(5);
P2OUT&= 0xfe;
}
void write_dat(unsigned int dat)
{
P2OUT |= 0x02;
P1OUT = dat;
delay_nms(5);
P2OUT|= 0x01;
delay_nms(5);
P2OUT&= 0xfe;
}
void disp_12864(uchar addr,const uchar *pt,uchar num)
{
uchar i;
write_com(addr);
for(i=0;i<(num*2);i++)
write_dat(*(pt++));
}
void init()
{
//PSB=1;//并口模式
P2OUT |= BIT2;
delay_nms(15);
P2OUT&= 0xfe;
delay_nms(5);
write_com(0x30);
delay_nms(1);
write_com(0x08);//清屏
delay_nms(1);
write_com(0x0c);//开显示,关光标
delay_nms(1);
write_com(0x01);//光标右移
delay_nms(1);
write_com(0x06);//第一行显示位置
delay_nms(1);
}
void main(void)
{
// CSL_init(); //Grace初始化配置,包含头文件
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1REN |= 0X0F;
P2REN = 0XFF;
P1DIR |= 0xff; // P1.2 output
P2DIR |= 0xff;
init();
while(1)
{
disp_12864(0x80,table,6);
delay_1ms();
disp_12864(0x90,"测试",6);
delay_1ms();
//while(1);
}
}
从屏幕的侧面看有微弱的显示,对光我接地,wr也接地。调好几天了,第一次用430.还有就是430系列的F 或者G 之类的寄存器都是通用的吗,如何配置外部晶振,求解?谢啦
这个是液晶驱动的电压是5v,而单片机的输出电压3.6v,所以不能驱动液晶
回复 楼主 x0310 的帖子
两种情况,第一,可能是驱动电平不够,单片机输出信号加上三极管或者场效应管再去驱动液晶。
第二,是液晶对比度的问题,调节对比度
显示微弱的话只是对比度的问题,不会因为驱动电平达不到而显示的微弱,别忘了数字信号只有有和无,没有强和弱之分。如果驱动不够根本不会显示
能够驱动就说明数字信号是好的,那么就应该是对比度没有调吧,你再看看你买的12864的供电是多大的,如果是5V而供给3.3V也是很暗的。
回复 沙发 fanqiaoyan 的帖子
不是对光的问题,我直接接地了,并且接104调了依然那样
回复 8楼 wuqingyou 的帖子
不是对光问题,是电压问题,我解板子上的VCC上了,而VCC是3.7的,所以特别暗!此楼正解,非常感谢!