微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请大家帮我看看程序,有哪些错误?谢谢

请大家帮我看看程序,有哪些错误?谢谢

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
//#include<intrins.h>
#define Databus P0
#define uchar unsigned char
#define uint unsigned int
#define page_addr 0xb8
#define line_addr 0xc0
#define column_addr 0x40
#define set_on 0x3f
#define set_off 0x3e
sbit RS=P2^2;//指令数据选择
sbit EN=P2^4;//使能端
sbit CS1=P2^0;//左屏幕选择,低电平有效
sbit CS2=P2^1;//右屏幕选择
sbit RW=P2^3;//读写控制
sbit busy=P0^7;//忙标志位

unsigned char code shang[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00,/*"上",0*/
};
void delay(uint i)
{
  while(i--);
}
void delay_xms(uint i)
{
  uchar j;
  while(i--)
    for(j=0;j<114;j++);
}
void checkstate()
{
  EN=1;
  RS=0;
  RW=1;
  P0=0xff;
  while(!busy&0x80);
  delay(2);
  EN=0;
}
void wcmd(uchar value)
{
  checkstate();
  EN=1;
  RS=0;
  RW=0;
  Databus=value;
  delay(2);
  EN=0;
}
void wdata(uchar value)
{
  checkstate();
  EN=1;
  RS=1;
  RW=0;
  Databus=value;
  delay(2);
  EN=0;
}
void clearscreen(void)
{
  uchar i,j;
  CS1=0;
  CS2=1;
  //wcmd(page_addr+0);
  //wcmd(column_addr+0);
  for(i=0;i<8;i++)
    {
          wcmd(page_addr+i);
          wcmd(column_addr);
      for(j=0;j<64;j++)
          {
            wdata(0);
          }
        }
  CS1=1;
  CS2=0;
  //wcmd(page_addr+0);
  //wcmd(column_addr+0);
  for(i=0;i<8;i++)
    {
          wcmd(page_addr+i);
          wcmd(column_addr);
      for(j=0;j<64;j++)
          {
            wdata(0);
          }
        }
}
/***********
void display_hanzi(uchar n,uchar *p)
{
  uchar i,j;  
  for(i=0;i<n;i++)
  {
    if(i<4)
        {
          CS1=0;
      CS2=1;
      wcmd(page_addr);
      //wcmd(column_addr);
          wcmd(column_addr+i*16);
            for(j=0;j<16;j++)
            {wdata(p[j+i*32]);}
          wcmd(page_addr+1);
          wcmd(column_addr+i*16);
          for(j=0;j<16;j++)
            wdata(p[i*32+(j+16)]);
        }
        else
        {
          CS1=1;
          CS2=0;
          wcmd(page_addr);
          wcmd(column_addr+(i-4)*16);
          for(j=0;j<16;j++)
          {wdata(p[j+i*32]);}
          wcmd(page_addr+1);
          wcmd(column_addr+i*16);
          for(j=0;j<16;j++)
            wdata(p[i*32+(j+16)]);
        }
  }
}
***************/
void lcdinit()
{
  checkstate();
  //wcmd(set_off);
  //CS1=0;
  //CS2=0;
  //clearscreen();
  wcmd(page_addr);
  wcmd(column_addr);
  wcmd(line_addr);
  wcmd(set_on);
}
void main()
{
  uchar i,*p;
  p=shang;
  lcdinit();
  //wcmd(set_off);
  clearscreen();
  //wcmd(set_on);
  //wcmd(line_addr);
  while(1)
  {
    CS1=0;
        CS2=1;
        //delay(50);
        wcmd(page_addr);
        wcmd(column_addr);
        for(i=0;i<16;i++)
          wdata(p);
        wcmd(page_addr+1);
        wcmd(column_addr);
        for(i=0;i<16;i++)
           wdata(p[i+16]);
        //wcmd(set_on);
        delay_xms(100);
  //display_hanzi(8,hanzi1);
  //delay_xms(400);
  //display_hanzi(6,hanzi2);
  //delay_xms(400);
  //display_hanzi(5,hanzi3);
  //delay_xms(400);
  //display_hanzi(6,hanzi4);
  //delay_xms(400);
  }
  //while(1);
}
为什么用protues仿真的时候是黑屏了
file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\364689148\QQ\WinTemp\RichOle\SKF40PV~}$M3TII)X]%]Y9Y.jpg
file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\364689148\QQ\WinTemp\RichOle\SKF40PV~}$M3TII)X]%]Y9Y.jpg

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

网站地图

Top