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

📄 ym12864.c

📁 YM12864液晶模块的驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/************************************************************************
程序主功能:
    本程序主要实现通过IO口控制YM12864显示瓶显示字符菜单及简单的128*64的图形
并且通过HC452读取键盘值.

主要端口连接关系如下:
 单片机           显示屏               HC452   
  PB0			  CS1                   --
  PB1             CS2                   --
  PB2             RS                    --
  PB3             R/W                   --
  PB4             E                     --
  PB5             --                    DCLK
  PB6             --                    DLOAD
  PC0             --                    DIN
  PC1             --                    DOUT
  PD0~7  		  D0~D7                 --	

宏定义内容简介:
  choosepage(t)               选择显示页
  chooseline(t)               选择开始显示行对应页上的行
  chooselei(t)                选择显示列   

编写日期:2007-08-14

编写人:黄金伟
***********************************************************************/    
#include "iom8v.h"
#include <macros.h>
/**********************************************************************
                    宏定义端口操作
***********************************************************************/					
#define CS1_1   PORTB|=0x01
#define CS1_0   PORTB&=(~0x01)
#define CS2_1   PORTB|=0x02
#define CS2_0   PORTB&=(~0x02)
#define RS_1    PORTB|=(0x04)
#define RS_0    PORTB&=(~0x04)
#define RW_1    PORTB|=(0x08)
#define RW_0    PORTB&=(~0x08)
#define E_1     PORTB|=(0x10)
#define E_0     PORTB&=(~0x10)
#define DCLK_1  PORTB|=0x20
#define DCLK_0  PORTB&=(~0x20)
#define DLOAD_1 PORTB|=0x40
#define DLOAD_0 PORTB&=(~0x40)
#define DIN_1   PORTC|=0x01
#define DIN_0   PORTC&=(~0x01)

#define choosepage(t)    (0xb8|(t&0x07))
#define chooseline(t)    (0xc0|t)
#define chooselei(t)     (0x40|t) 


int key=-1;
int MenuSelect;
char IsBusy;

/******************************************************************
显示屏显示图形数据
将数据定义成常量主要是让数据写进FLASH里					  
******************************************************************/					  
const char menu[128*2]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,
0x90,0x04,0x90,0x04,0x90,0x04,0xFC,0x1F,
0x90,0x24,0x90,0x24,0x90,0x24,0xF8,0x27,
0x10,0x20,0x00,0x38,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x0C,
0xF8,0x23,0x08,0x20,0x88,0x20,0x88,0x20,
0xE8,0x3F,0x88,0x20,0x88,0x22,0xC8,0x24,
0x8C,0x28,0x08,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x40,0x24,0x78,0x23,
0x40,0x10,0xFC,0x0F,0x50,0x04,0x50,0x23,
0xE8,0x17,0x28,0x08,0xB8,0x07,0x28,0x08,
0xEC,0x17,0x08,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x0A,0x28,0x09,
0x48,0x09,0x88,0x08,0x68,0x09,0xD8,0x09,
0x4C,0x3F,0xA8,0x09,0x48,0x09,0xA8,0x08,
0x18,0x09,0x08,0x0A,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x20,0x0C,0x20,0x03,
0x20,0x00,0xFC,0x3F,0x20,0x01,0x20,0x02,
0xF8,0x3F,0x48,0x12,0x48,0x12,0x48,0x12,
0xFC,0x3F,0x08,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,
0xF0,0x3F,0x0C,0x00,0x10,0x20,0xD0,0x20,
0x14,0x2F,0x18,0x20,0x10,0x3C,0xD8,0x23,
0x10,0x20,0x10,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x20,0x10,0x10,0x08,
0x08,0x24,0xFC,0x22,0xA8,0x27,0xA8,0x1A,
0xA8,0x12,0xA8,0x1A,0xA8,0x26,0xF8,0x20,
0x0C,0x20,0x08,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x10,
0x20,0x08,0xF0,0x07,0xAC,0x04,0xA8,0x04,
0xE8,0x3F,0xB8,0x04,0xA8,0x14,0xA0,0x24,
0xF0,0x1F,0x20,0x00,0x00,0x00,0x00,0x00	
};
const char picture[128*8]=
{


0x00,0xE0,0xE0,0xE0,0xE0,0xE1,0xFC,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,
0x3F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x3F,0xF9,0xFD,0xFF,0xFF,0xFF,0xFF,0x7F,0xF1,0xFF,
0xFF,0xFF,0xE0,0xE0,0xE0,0xE0,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x07,0x7F,0xFF,0x80,0x00,0xEF,0xFF,0xFC,0xFF,
0xFF,0xFF,0xFF,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x07,0x0F,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF,0x00,0x00,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x0F,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xC0,
0xC0,0xF3,0x79,0x3E,0x9F,0x9F,0xDF,0xEF,0xE7,0x47,0x07,0x07,0x07,0x9F,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x07,0xCF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,
0x00,0xF0,0xFF,0xE1,0xC3,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xE3,0xFF,0x3F,0x1F,0x00,0x00,
0x80,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x07,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x7F,0x3F,0x8F,0xC3,0xF0,0xF8,0x3C,0x1E,0x0F,0x87,0x87,0xC3,0xE1,0xF1,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0x00,0x7F,0x7F,0x7F,0x7F,0x7F,
0xFF,0xF1,0x00,0x00,0xC0,0xDF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0xF0,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xF0,0x00,0xC0,0xF1,0xFF,0xFF,0xFF,0x00,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,
0x00,0xFE,0xFF,0xFF,0xFC,0x00,0x00,0x7C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x07,0x00,0x00,0x00,0xC0,0xE0,
0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x87,0xE1,0xFC,0xFE,0xFF,0xFF,0xFF,0xFC,0xF8,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,
0x7F,0x7F,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0x00,0x07,0xC7,0xF9,0xFC,0xF8,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0xF1,0x00,0xE1,0xE1,
0xF0,0xF0,0x01,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x03,0x00,0x00,0x3F,0x3F,0x0F,0x87,0x01,0xC0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3E,0x00,0xF8,0xFF,0xFF,0x3F,0xFB,0xC0,0x20,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF8,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x00,0x00,0x07,0x07,
0x07,0x07,0x0F,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0xFF,0xFF,0xFF,0x0F,0x0F,0x83,0xF0,0x00,0x0F,0x3F,0xFF,0xFF,0x01,0xC0,0xFE,0xFF,0xFF,0xFF,0xFF,
0x3F,0x0F,0x00,0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xF0,0x7C,0x0F,0xC0,0x00,0xFC,0xFC,0xF8,0xFE,0xFF,0x00,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x83,0x00,0x00,0xE7,0xFF,0xFF,0xF8,0x03,0x07,0x40,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x01,0x00,0x80,0xE0,0x83,0x03,0x07,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,
0x01,0x00,0x80,0xE0,0xE0,0x00,0x08,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFE,0x00,0xFF,0xF7,0xF0,0xF8,0xDE,0x07,
0x80,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x0E,0xC0,0xF8,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xE1,0xF0,0xF0,0xC3,0x00,0x00,0xFF,0xFF,0xF1,0xE0,0xE0,0xF8,
0xF0,0xC1,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xC0,0xE0,0xF8,0xFE,0x1F,0xFF,0xFF,0xF8,0xF0,0xF0,0xF8,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xC0,0x00,0x07,0x0F,0x07,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0x1F,0x1F,
0x1F,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xF8,0xFF,0xFF,0xFF,0xF3,0xE1,0xE0,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x1F,
0x1C,0x1E,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF8,0xF8,0xF0,0xF0,0xF8,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,
0x1F,0x1F,0x1F,0x1F
};

const char num1[10][32]=
{
{0x00,0x00,0xF0,0x07,0xF8,0x0F,0x88,0x09,
0xC8,0x08,0x68,0x08,0xF8,0x0F,0xF0,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x20,0x08,0x30,0x08,
0xF8,0x0F,0xF8,0x0F,0x00,0x08,0x00,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x10,0x0C,0x18,0x0E,0x08,0x0B,
0x88,0x09,0xC8,0x08,0x78,0x0C,0x30,0x0C,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x10,0x04,0x18,0x0C,0x88,0x08,
0x88,0x08,0x88,0x08,0xF8,0x0F,0x70,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x80,0x01,0xC0,0x01,0x60,0x01,
0x30,0x09,0xF8,0x0F,0xF8,0x0F,0x00,0x09,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0xF8,0x04,0xF8,0x0C,0x88,0x08,
0x88,0x08,0x88,0x08,0x88,0x0F,0x08,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0xE0,0x07,0xF0,0x0F,0x98,0x08,
0x88,0x08,0x88,0x08,0x80,0x0F,0x00,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x18,0x00,0x18,0x00,0x08,0x0F,
0x88,0x0F,0xC8,0x00,0x78,0x00,0x38,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x70,0x07,0xF8,0x0F,0x88,0x08,
0x88,0x08,0x88,0x08,0xF8,0x0F,0x70,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x70,0x00,0xF8,0x08,0x88,0x08,
0x88,0x08,0x88,0x0C,0xF8,0x07,0xF0,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};

const char fuhao[3][32]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x08,
0x60,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,
0xC0,0x0C,0x60,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,
0xF8,0x03,0x00,0x06,0x00,0x0C,0x00,0x06,
0xF8,0x03,0xF8,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x12,
0x00,0x12,0x00,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
/******************************************************************
延时程序段:
变量:   i,t
延时值:  200*t 个指令周期
******************************************************************/
void delay( int t)
{ 
  int i;
  for(;t>0;t--)
   for(i=0;i<200;i++)
         ;
}


/*******************************************************************
读取显示屏状态字:
变量:data      接收状态字
操作:data&0x08  读取显示屏是否处于数据处理状态
具体时序操作参考YM12864数据手册
*******************************************************************/ 
 int readstate()
{  
  int data;
      RS_0;
      RW_1;
      DDRD=0x00;
      data=PIND;
  if(data&0x80)
      IsBusy=1;
  else 	IsBusy=0;
      E_1;
      E_0;
  return IsBusy;
}



/**********************************************************************
向屏幕发送命令:
变量:data    命令内容
操作:PORTD=data     对显示器写入命令
具体命令内容及时序参考YM12864数据手册
**********************************************************************/
void sendcommnd( int data)
{ 
  for(;IsBusy;)
   {
    readstate();
	delay(1);
   }
   RS_0;
   RW_0; 
   DDRD=0xff;
   PORTD=data;
   E_1;
   E_0;
}


/*************************************************************
写单个显示数据:
变量:data       显示数据
具体命令内容及时序参考YM12864数据手册

⌨️ 快捷键说明

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