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

📄 xs.c

📁 OCM128-9的参考程序
💻 C
字号:
#include <reg52.h>
#include <intrins.h>

sbit LCD_RS   =P2^4;		//L:COMMAND;   H:DATA
sbit LCD_RW   =P2^3;		//L:WRITE;     H:READ
sbit LCD_E    =P2^2;		//INPUT ENABLE
sbit LCD_CS1  =P2^1;		//CHIP ENABLE L有效
sbit LCD_RES  =P2^0;		//RESET SIGNAL,L有效

#define data_bus  P0
#define uchar        unsigned char
#define uint         unsigned int

//=====延时N微秒==============
void delay_nus(uint n)
{
  while(n--);
  return;
}
//=====延时N毫秒==============
void delay_nms(uint n)
{
  int i;
  for(i=0;i<n;i++)
    delay_nus(123);
}
//=====忙检测=================
void check_busy(void)
{
  uchar read_data=0xff;
  data_bus=0xff;
  LCD_RS=0;
  LCD_RW=1;               //读命令
  LCD_CS1=0;              //片使能
  while((read_data&0x80)==0x80)
  {
    LCD_E=1;
    _nop_();
    _nop_();
    read_data=data_bus;	
    LCD_E=0;
  }
  LCD_E=0; 
  LCD_CS1=1;              //片禁能 
}
//=====写命令到寄存器=========
void send_cmd(uchar cmd) small
{
  check_busy();
  LCD_RS=0;
  LCD_RW=0;               //写命令
  LCD_CS1=0;              //片使能
  data_bus=cmd;
  LCD_E=1;
  _nop_();
  _nop_();
  LCD_E=0;
  _nop_();
  _nop_();
  LCD_CS1=1;              //片禁能 
}
//=====写数据到DDRAM=========
void send_dat(uchar dat) small
{
  check_busy();
  LCD_RS=1;
  LCD_RW=0;               //写数据
  LCD_CS1=0;              //片使能
  data_bus=dat;
  LCD_E=1;
  _nop_();
  _nop_();
  LCD_E=0;
  _nop_();
  _nop_();
  LCD_CS1=1;              //片禁能 
}//=======初始化==============
void lcd_initial(void) small
{
  LCD_RES=1;
  LCD_E=0;
  delay_nms(50);
  send_cmd(0xA0);
  send_cmd(0xC8);
  send_cmd(0xA2);
  send_cmd(0x2C);
  send_cmd(0x2E); 
  send_cmd(0x2F);
  send_cmd(0x25);
  send_cmd(0x81);
  send_cmd(0x14); 
  send_cmd(0xAF);
  send_cmd(0xE0);
  send_cmd(0x40);
}
//=======写页地址==============
void Set_Page_Address(unsigned char dat)
{
    send_cmd(0xb0|dat);
}
//=======写列地址==============
void Set_Colume_Address(unsigned char dat)
{
    unsigned char tmp;
	tmp=dat>>5;
    send_cmd(0x10|tmp);  //送列地址高三位
	tmp=0x0f&dat; 
    send_cmd(tmp);       //送列地址低四位
}
//=======显示点阵==============
void Display_Grid(uchar data1,uchar data2)
{
  uchar i,j;
  for(i=0;i<8;i++)
  {
    Set_Page_Address(i);
    Set_Colume_Address(0x00);
    for(j=0;j<64;j++)
    {
      send_dat(data1);
      send_dat(data2);
    }
  }
}
//=======显示图形===============
void Display_Picture(uchar code *pic)
{
  unsigned char i,j;
  for(i=0;i<8;i++)
  {
	Set_Page_Address(i);
    Set_Colume_Address(0x00);
    for(j=0;j<0x80;j++)
    {
       send_dat(*(pic+0x80*i+j));
	}
  }
}

/*---指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小8xl*yl)---*/
void chn_disp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
{
  uchar i,j,k,l,a;
  wr_lcd (comm,disp_on);
  for(l=0;l<row_xl;l++)
  {
    for(k=0;k<row_yl;k++)
    {
      for(j=0;j<xl;j++)
      {
        wr_lcd (comm,disp_x+x+l*xl+j);
        wr_lcd (comm,disp_z);
        wr_lcd (comm,disp_y+y+k*yl);
        a=l*xl*yl*row_yl+k*xl*yl+j*yl;
        for(i=0;i<yl;i++)
          wr_lcd (dat,chn[a+i]);
      }
    }
  }
}

uchar code pic[]={
0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x48,0xD4,0xB4,0x62,0xC2,0x82,0x02,
0x02,0x02,0x02,0x84,0xC4,0xE0,0xA0,0xE0,0x60,0x20,0x20,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x04,0x0D,0x1B,0x36,0x6D,0xDB,0xF6,0xED,0xFB,
0xFE,0xFE,0xFF,0x7F,0x1F,0x07,0x01,0x00,0x10,0x10,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x08,0x10,0x20,0x40,0x40,0x80,0x83,0xFF,0xFF,
0xFF,0xFF,0x83,0x40,0x40,0x20,0x10,0x08,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x7C,0x44,0xEC,0x00,0x7C,0x44,0x7C,0x00,0x7C,0x40,0x40,0x00,0x7C,0x44,0x38,0x00,
0x7C,0x14,0x1C,0x00,0x78,0x24,0x78,0x00,0x7C,0x40,0x40,0x00,0x7C,0x18,0x18,0x7C};

uchar code pic1[]={
/*--  宽度x高度=32x32  --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xB7,0x2B,0x4B,0x9D,0x3D,0x7D,0xFD,
0xFD,0xFD,0xFD,0x7B,0x3B,0x1F,0x5F,0x1F,0x9F,0xDF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x01,0xFE,0xFF,0xFB,0xF2,0xE4,0xC9,0x92,0x24,0x09,0x12,0x04,
0x01,0x01,0x00,0x80,0xE0,0xF8,0xFE,0xFF,0xEF,0xEF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFB,0xF7,0xEF,0xDF,0xBF,0xBF,0x7F,0x7C,0x00,0x00,
0x00,0x00,0x7C,0xBF,0xBF,0xDF,0xEF,0xF7,0xFB,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x83,0xBB,0x13,0xFF,0x83,0xBB,0x83,0xFF,0x83,0xBF,0xBF,0xFF,0x83,0xBB,0xC7,0xFF,
0x83,0xEB,0xE3,0xFF,0x87,0xDB,0x87,0xFF,0x83,0xBF,0xBF,0xFF,0x83,0xE7,0xE7,0x83};
//=====主程序===================
void main (void)
{
  lcd_initial();
  while(1)
  {
	send_cmd(0xa6);
	Display_Picture(pic);
	delay_nms(2000);
	send_cmd(0xa7);
	delay_nms(2000);
	send_cmd(0xa6);
	Display_Picture(pic1);
	delay_nms(2000);
	send_cmd(0xa7);
        delay_nms(200);
	send_cmd(0xa6);
	Display_Grid(0xff,0x00);
	delay_nms(2000);
	send_cmd(0xa7);
	delay_nms(2000);
  }
}

⌨️ 快捷键说明

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