DSP2407串行通信12864(ST7920)

2019-03-24 15:57发布

真的很急,有明白的帮帮我,我自己写了一个SPI通信的串行连接12864,程序在下面,不知道为什么就是屏幕不出字void Delay(int num);
unsigned char tab1[]={
"  电子万年历    "
"  QQ478706146   "
"  13552955121   "
"    李引科      "
};
void sendbyte(unsigned char bbyte);
void initspi(void);
void write(unsigned int start, unsigned char ddata) ;
void LCM_WriteString(unsigned char *str) ;  //写字符  例:LCM_WriteString("您好!");
void LCM_WriteDatOrCom(unsigned int b ,unsigned char a );  //(0,指令) (1,数据)
void LCM_w_byte(unsigned char bbyte);  //写一个字节给LCM
void LCM_init(void); //LCM初始化
void LCM_clr(void);  //清屏
//初始化LCM
void LCM_init(void)         
{
  write (0,0x30);  /*30---基本指令动作*/   
   write(0,0x01);  /*清屏,地址指针指向00H*/
  Delay (100);
   write (0,0x06);  /*光标的移动方向*/
  write(0,0x0c);  /*开显示,关游标*/

}
//写指令或数据  (0,指令) (1,数据)

void initspi(void)
{
    *SPICCR = 0x0007;     //  
    *SPICTL = 0x000E;     //  
    *SPIBRR = 0x0000A;     //
    *SPICCR = *SPICCR|0x0080;  //  
    *SPIPRI=0x0010;
}
void write(unsigned int start, unsigned char ddata) //写指令或数据
{
  unsigned char start_data,Hdata,Ldata;
  if(start==0) start_data=0xf800;         //写指令
    else       start_data=0xfa00;  //写数据
  Hdata=ddata&0x00f0;                  //取高四位
  Hdata<<8;
  Ldata=(ddata<<4)&0x00f0;  //取低四位
  Ldata<<8;
  sendbyte(start_data);          //发送起始信号
  Delay(100); //延时是必须的
  sendbyte(Hdata);              //发送高四位
  Delay(30);  //延时是必须的
  sendbyte(Ldata);                  //发送低四位
  Delay(30);  //延时是必须的
}

void sendbyte(unsigned char bbyte) //发送一个字节
{
          unsigned int flag;
        *SPITXBUF =bbyte;
                while (1){
                flag = *SPISTS&0x0040;
                if(flag == 0x0040) break;
}
}
void chn_disp (unsigned char *chn)
{
unsigned char i,j;
  write (0,0x30);
write (0,0x80);
  for (j=0;j<4;j++)
  {
    for (i=0;i<16;i++)
write(1,chn[j*16+i]);
  }
}
//清屏函数
void LCM_clr(void)
{
  write (0,0x30);
write (0,0x01);
  Delay (180);

}
void Delay(int num)//延时函数
{
        while(num--);
}
void main(void)
{
        ini();//初始化,不用管
             initspi(void);      //SPI参数设定

                                LCM_init();//初始化液晶显示器

    while(1)
      {                chn_disp(tab1);//显示欢迎字
        }
} 此帖出自小平头技术问答
0条回答

一周热门 更多>

相关问题

    相关文章