⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd3.c

📁 小车跷跷板源程序
💻 C
字号:
#include<reg51.h> 
#define uchar unsigned char
sbit sclk=P1^6;//LCD显示。时钟输入
sbit std=P1^7;//LCD显示。数据输入
/*-----------------------------------*/

uchar code tab1[]={
"%%%%欢迎使用%%%%"
"循迹、避障、跷跷"
"                "
"板平衡智能小车。"
};
uchar code tab32[]={
/*--     调入了一幅图像:F:\梁\画图\HOCO12832.bmp     --*/
/*--     宽度x高度=128x32     --*/
"小组成员:       "
"          廖俊博"
"          谭德超"
"          朱沛远"
};

uchar code tab5[]={
/*--     调入了一幅图像:F:\梁\画图\COCK.bmp     --*/
/*--     宽度x高度=128x64     --*/
"初始化完成,    "
"可以使用!       "
"                "
"                "
};

//**************************************
/*---------------------------------------*/
//我发现在读指令码的时候,程序先调用了6位的低电平,然再在1调用了10位的指令码 。总共调用了16位的数据。
void wr_lcd (uchar dat_comm,uchar content)
{
     uchar a,i,j;
     a=content;
     sclk=0;
     std=1;
     for(i=0;i<5;i++)
     {
       sclk=1;
       sclk=0;
     }
     std=0;
     sclk=1;
     sclk=0;
     if(dat_comm)
       std=1;      //data
     else
       std=0;      //command
     sclk=1;
     sclk=0;
     std=0;
     sclk=1;
     sclk=0;
     for(j=0;j<2;j++)
     {
       for(i=0;i<4;i++)
       {
         a=a<<1;
         std=CY;
         sclk=1;
         sclk=0;
       }
       std=0;
       for(i=0;i<4;i++)
       {
         sclk=1;
         sclk=0;
       }
     }
}
//******************************************
/*------------------初始化-----------------*/
void init_lcd (void)
{
     wr_lcd (0,0x30);     /*30---基本指令动作*/   
     wr_lcd (0,0x01);     /*清屏,地址指针指向00H*/
     delay1ms (100,0);
     wr_lcd (0,0x06);     /*光标的移动方向*/
     wr_lcd (0,0x0c);     /*开显示,关游标*/
}
//*******************************************
/*--------------显示点阵----------------*/
//经过调试发现显示点阵是非常有意思的,最主要的在于data1,data2上的两组数据的取值,
//不同的取值对应着不同的点阵效果。
void lat_disp (uchar data1,uchar data2)
{
     uchar i,j,k,x;
     x=0x80;
     for(k=0;k<2;k++)
     {
       for(j=0;j<16;j++)
       {
         for(i=0;i<8;i++)
         {
           wr_lcd (0,0x34); //扩充指令操作。
           wr_lcd (0,0x80+j*2);
           wr_lcd (0,x+i);
           wr_lcd (0,0x30);
           wr_lcd (1,data1);
           wr_lcd (1,data1);
         }
         for(i=0;i<8;i++)
         {
           wr_lcd (0,0x34);
           wr_lcd (0,0x80+j*2+1);
           wr_lcd (0,x+i);
           wr_lcd (0,0x30);
           wr_lcd (1,data2);
           wr_lcd (1,data2);
         }
       }
       x=0x88;
     }
     wr_lcd (0,0x36);
}
/*-----------------------------------------------*/
/*---------------显示汉字或字符----------------*/
void chn_disp (uchar code *chn)
{
     uchar i,j;
     wr_lcd (0,0x30);
     wr_lcd (0,0x80);
     for (j=0;j<4;j++)
     {
       for (i=0;i<16;i++)
       wr_lcd (1,chn[j*16+i]);
     }
}

//*****************************************************
/*--------------清DDRAM------------------*/
void clrram (void)
{
     wr_lcd (0,0x30);
     wr_lcd (0,0x01);     //清除显示指令。
     delay1ms (180,0);
}


kaiji()
{	
     init_lcd ();
      lat_disp (0x00,0x00);/**/
delay1ms(50,0);
       chn_disp (tab1);
delay1ms(50,0);
       delay1ms (200,1000);
       clrram();
       lat_disp (0x00,0x00);
      chn_disp (tab32);
      delay1ms(150,1000);
      clrram();
	  lat_disp (0x00,0x00);
      chn_disp (tab5);
      delay1ms (50,1000); 
	  clrram();
	  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -