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

📄 lcddriver.c

📁 对摄像头用MCU进行数据采集与分析
💻 C
字号:
#include "lcddriver.h"
const uint8 hanzi816[176]=
{/*--  宽度x高度=8x16  --*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*--  文字:  0  --*/
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*--  文字:  1  --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*--  文字:  2  --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*--  文字:  3  --*/
0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,/*--  文字:  4  --*/
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*--  文字:  5  --*/
0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*--  文字:  6  --*/
0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,/*--  文字:  7  --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*--  文字:  8  --*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,/*--  文字:  9  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,/*--  文字:  .  --*/
};

/*
*******************************************************************************
** 函数名称:delay_ms()
** 函数功能:毫秒延时
** 入口参数:n:延时n毫秒
** 出口参数:无
*******************************************************************************
*/
void delay_ms(uint16 n)
{   unsigned int i;
    while (n--)
    {   for(i=0;i<7000;i++);
    }
}
/******************************************************************************
* * 名称: delay_ns()
* * 描述: 短延时
* * 入口: 延时系数 n
* * 出口: (无)
******************************************************************************/
void delay_ns(uint16 n)
{   unsigned char  i;
    while(n)
      {  for(i=0;i<2;i++);
             n--;
      }
}
/*
*********************************************************************************************************
** 函数名称 :IO_Init()
** 函数功能 :I/O口输入、输出初始化
** 入口参数 :PA、PB、PC、PD、PE、PG、PF口
*             电机使能总线:STEP_EN                                                           
*             电机高低压总线:POWER_CP                                                            
*             电机方向总线:STEP_DIR                                                          
*             沙嘴高低压总线:YARN_COTR                                                             
*             沙嘴使能总线:YARN_EN                                                            
*             摇床使能总线:RACK_CP 
** 出口参数 :
*********************************************************************************************************
*/ 
void LCD_IO_Init(void)
{  
    PINSEL0= 0x820000c5;//a0008055,a2008055//0xa2000055
    PINSEL1= 0x0c000301;//0x00000301
    /*---P1.16~P1.23口作为camer1输入---*/
    IO0DIR = 0xdfee33e0;//0x81ee3d85;0xc0ee3cc0//3bc0.0xffee33c0//0xffee33e0
    IO1DIR = 0x87000000;//0x00ff0000;                                                       //
}
/************************************************************************************************************************
** 函数名称:IO_ShuJu_P()
** 函数功能:将数据送到P口
** 入口参数:datt
** 出口参数:
*************************************************************************************************************************/
void IO_send_Data(uint8 datt)                   
{
    uint32 datt0;
    
    datt0 = ((datt&0x0f)<<25);
    datt0 |= (datt&0x10)<<2;
    datt0 |= (datt&0xe0)<<16;
    /*datt0 = (datt<<8);*/
    IO0SET = datt0;
    IO0CLR = (~datt0)&0x1ee00040;//0x00e03c40;
}
/************************************************************************************************************************
** 函数名称:IO_Snd_Date()
** 函数功能:发送数据
** 入口参数:dat
** 出口参数:
*************************************************************************************************************************/
void IO_Snd_Date(uint8 datt)                  
{   
    IO_send_Data(datt);  
    IO0CLR = WR;
    IO0SET = WR;
}
/************************************************************************************************************************
** 函数名称:IO_CMD()
** 函数功能:写命令
** 入口参数:(x,y)坐标
** 出口参数:
*************************************************************************************************************************/
void IO_CMD(uint16 x,uint16 y)             
{   
    uint16 addr;
    uint16 add_h_l[2];
    
    addr = y*320+x;
    add_h_l[0] = addr%256;
    add_h_l[1] = addr/256;
    IO0CLR = CS;
    
    IO0CLR = RS; 
    IO_Snd_Date(0x00);
    
    IO0SET = RS;
    IO_Snd_Date(add_h_l[0]);
    
    if((y>204)||((y==204)&(x>255))) 
      {
        IO0CLR = RS;
        IO_Snd_Date(0x05);
    
        IO0SET = RS;             
        IO_Snd_Date(add_h_l[1]);
    
        IO0CLR = RS;
        IO_Snd_Date(0x06);
      }
    else
      {
        IO0CLR = RS;
        IO_Snd_Date(0x01);
    
        IO0SET = RS;           
        IO_Snd_Date(add_h_l[1]);
    
        IO0CLR = RS;
        IO_Snd_Date(0x02);
      }
       
    IO0SET = CS;
}

/************************************************************************************************************************
** 函数名称:IO_Clear()
** 函数功能:清屏
** 入口参数:dat1
** 出口参数:
*************************************************************************************************************************/
void LCD_clear(uint8 dat1)                      
{   
    uint16 i,j;
    
    IO_CMD(00,00);
    
    IO0CLR = CS;
    IO0SET = RS;
    for(i=00; i<234; i++)
      for(j=0; j<320; j++)
        {             
          IO_Snd_Date(dat1);
        }
    IO0SET = CS;
}

/*******************************************************************************************
**函数名称:LCD_hz816(unsigned char x, unsigned char y,unsigned char no)
**函数功能:在显示8*16电阵字符。
**入口参数:x		指定显示字符的横坐标
*           y		指定显示字符的纵坐标
*           no          字的序号
**返 回 值:返回值为1时表示操作成功,为0时表示操作失败。
**说    明:操作失败原因是指定地址超出缓冲区范围。
*******************************************************************************************/
void LCD_hz816(uint8 x, uint8 y,uint8 no)
{  uint16  addr; 
   uint8   i,j,m,k; 
   uint8   num[16];
   for(i=0;i<16;i++)
   { num[i] = hanzi816[no*16 + i];                                              // 取出要写的汉字
   }
   addr = y*30 + (x>>3);                                                        // 计算地址
   IO0CLR = CS;                                                              // 开LCD片选
   for(i=y,k=0; i<y+16; i++,k++) 
      for(j=0; j<1; j++)
        {
          IO_CMD((x+8*j),i);
          IO0CLR = CS;
          IO0SET = RS;
          for(m=0; m<8; m++)
            {
              if((num[k]&(0x80>>m))>0)
                {
                  IO_Snd_Date(0xe0);
                } 
              else
                {
                  IO_Snd_Date(0x30);
                }
            }
        }
   IO0SET = CS;                                                              // 关片选 
}

⌨️ 快捷键说明

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