请大家帮我看一下程序,哪个地方出了问题,上电没有反应,我的液晶型号是12864B V2.0,还有如果大家帮我指点一下程序风格,不胜感激。
只有C币5个……全部贡献啦~
主函数
#include "main.h"
void main(void)
{
init_cpu(); //初始化芯片
init_lcdport();
init_lcd(); //初始化液晶
while(1){
write_cmd(0x80);
write_dat('A');
}
}
void init_cpu(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
BCSCTL1 = CALBC1_1MHZ; //设置DCO为1MHZ
DCOCTL = CALDCO_1MHZ;
}
液晶12864
端口定义:
DB0~DB7->P1.0~P1.7
RS ->P2.0
R/W->P2.1
E ->P2.2
RST->P2.3
#include "lcd12864b.h"
void init_lcd(void) //初始化液晶
{
delay_nms(50); //上电等待
RST_H;
delay_nms(1);
RST_L;
delay_nms(2);
RST_H;
write_cmd(0X30); //基本指令集
delay_nms(1);
write_cmd(0X30);
delay_nms(1);
write_cmd(0X0C); //显示开,游标关,反白禁止
delay_nms(1);
write_cmd(0X01); //清屏
delay_nms(10);
}
void set_textpos(unsigned char X,unsigned char Y) //设定显示坐标
{
unsigned char textpos;
switch (X){
case 0:
textpos = 0X80; //X:0-3,Y:0-7
break;
case 1:
textpos = 0X90;
break;
case 2:
textpos = 0X88;
break;
case 3:
textpos = 0X98;
break;
default:
break;
}
textpos = textpos + Y;
write_cmd(textpos);
}
void init_lcdport(void) //定义与液晶有关的端口
{
P1SEL = 0X00;
P1DIR = 0XFF;
P2SEL = 0X00; //定义为普通IO口
P1DIR |= BIT0 + BIT1 + BIT2 + BIT3; //定义IO口为输出
}
void write_cmd(unsigned char wcmd)
{
RS_L; //命令
RW_L; //写
E_L;
P1OUT = wcmd;
delay_nms(2); //等待数据稳定
E_H;
delay_nms(2); //等待写入完毕
E_L;
}
void write_dat(unsigned char wdat)
{
RS_H; //数据
RW_L; //写
E_L;
P1OUT = wdat;
delay_nms(2);
E_H;
delay_nms(2);
E_L;
}