微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助求助!

求助求助!

时间:10-02 整理:3721RD 点击:
那位大神帮我看一下我写的12864串口三线的程序啊,怎么改都不用啊、、、、
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ma[] ={"  汉字显示LCD   "};
uchar code ma2[]={"自带字库图文混排"};
uchar code ma3[]={"控制IC:ST7920  "};
uchar code ma4[]={"功能强大使用方便"};
sbit cs=P2^0;
sbit sid=P2^1;
sbit sclk=P2^2;
sbit psb=P2^3;
uchar i;
void write_com(uchar com); //一wei数据
void inint();        //初始化
void write_dat(bit start, uchar ddata);        //发送三维数据
void delay10us()
{
unsigned char a,b,c;
for(a=0;a<1;a++)
for(b=0;b<1;b++)
for(c=0;c<1;c++);
}
void delay50us(uint t)
{          uchar j;
         for(;t>0;t--)
          for(j=19;j>0;j--);
}
void delay1ms(uint i)
{
        uchar j;
         while(i--)
         {
         for(j=0;j<115;j++)
         {;}
         }                                                                                 
}
void main()
{
        inint();
       
        while(1)
                 {
                  write_dat(0,0x80); for(i=0;i<16;i++)  write_dat(1,ma[i]);
                  write_dat(0,0x90); for(i=0;i<16;i++)  write_dat(1,ma2[i]);
                  write_dat(0,0x88); for(i=0;i<16;i++)  write_dat(1,ma3[i]);
                  write_dat(0,0x98); for(i=0;i<16;i++)  write_dat(1,ma4[i]);
                //  while(1);
                 }
}
void write_com(uchar com)
{
        cs=1;
    for(i=0;i<8;i++)
        {
                sclk=1;
                delay10us();
                sclk=0;
                sid=com&0x80;
                com<<=1;   
                delay50us(2);
                sclk=1;
        }
}
void write_dat(bit start, uchar ddata) //写指令或数据
{
  unsigned char start_data,Hdata,Ldata;
  if(start==0)
            start_data=0xf8;         //写指令
    else
          start_data=0xfa;  //写数据
  Hdata=ddata&0xf0;                  //取高四位
  Ldata=(ddata<<4)&0xf0;  //取低四位
  write_com(start_data);          //发送起始信号
  delay1ms(5); //延时是必须的
  write_com(Hdata);              //发送高四位
  delay1ms(1);  //延时是必须的
  write_com(Ldata);                  //发送低四位
  delay1ms(1);  //延时是必须的
}
void inint()        //初始化
{
        delay1ms(100);
        write_dat(0,0x30);
        delay50us(4);
        write_dat(0,0x30);
        delay50us(2);                               
        write_dat(0,0x0f);
        delay50us(4);
        write_dat(0,0x01);
        delay1ms(20);
        write_dat(0,0x06);
        delay1ms(1);
}

我自己找到错误了,,,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top