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

📄 key4x412232.c

📁 12232液晶驱动和时间显示。矩阵键盘源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "reg51.h"
#include"intrins.h"
#define  uchar unsigned char
#define  uint  unsigned int
#define nop  _nop_()                    /*定义空操作指令*/
#define DATE P0     //数据口
//键盘扫描
#define x(n)	{if(n) PIN_KEY1=1; else PIN_KEY1=0;}
#define y(n)	{if(n) PIN_KEY2=1; else PIN_KEY2=0;}
#define z(n)	{if(n) PIN_KEY3=1; else PIN_KEY3=0;}

sbit E1 = P1^6;
sbit E2 = P1^7;
sbit A0 = P2^7;
sbit cs1=P1^4;
sbit PIN_BUZZER=P3^5;
unsigned char temp,num1;
unsigned char key;
unsigned char i,j;
uint count,num;
static  uchar code *  data pzm;
static  uchar code *  data pzm1;
uchar code zm[]={
 /*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

/*--  文字:  8  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,

};
uchar code zm1[]={
/*--  文字:  欢  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,
0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00,

/*--  文字:  迎  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00,

/*--  文字:  使  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00,
0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00,

/*--  文字:  用  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,

/*--  文字:  本  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x08,0x08,0x08,0x08,0xC8,0x38,0xFF,0x18,0x68,0x88,0x08,0x08,0x08,0x08,0x00,
0x08,0x08,0x04,0x02,0x05,0x04,0x04,0x7F,0x04,0x04,0x04,0x03,0x06,0x0C,0x04,0x00,

/*--  文字:  系  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,
0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00,

/*--  文字:  统  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x20,0x30,0x2C,0xA3,0x60,0x10,0x84,0xC4,0xA4,0x9D,0x86,0x84,0xA4,0xC4,0x84,0x00,
0x20,0x22,0x23,0x12,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x41,0x70,0x00,

};
sbit PIN_KEY4=P0^4;
sbit PIN_KEY5=P0^5;
sbit PIN_KEY6=P0^6;
sbit PIN_KEY7=P0^7;

sbit PIN_KEY1=P2^5;
sbit PIN_KEY2=P2^4;
sbit PIN_KEY3=P2^3;
uchar keyscan();
#define LCD_DISPLAYON 0xaf      //af 开显示,
#define LCD_DISPLAYOFF 0xae      //ae 关显示,
#define LCD_DRIVERON 0xa5      //a5 静态显示驱动
#define LCD_DRIVEROFF 0xa4      //a4正常驱动
#define LCD_DUTY16 0xa8          //占空比1/16
#define LCD_DUTY32 0xa9          //占空比1/32
//
#define LCD_END 0xee          /*关闭“读-修改-写”模式,并把列地址指针
                              恢复到打开“读-修改-写”模式前的位置。*/

#define LCD_RESET 0xe2          /*初始化。① 设置显示初始行为第一行;
                              ②页地址设置为第三页。*/

#define LCD_RWMODE 0xe0          /*“读-修改-写”模式 。执行该指令以后,
                              每执行一次写数据,指令列地址自动加1;
                              但执行读数据指令时列地址不会改变。
                              这个状态一直持续到执行“END”指令。
                              注意:在“读-修改-写”模式下,
                              除列地址设置指令之外,其他指令照常执行。 */
#define LCD_STARTLINE0 0xc0      //设置显示起始行 可以加0-31
#define LCD_PAGE0 0xb8          //页地址设置        可以加0-3
#define LCD_COLUMNADDR0 0x00  //列地址设置     可以加0-60

#define LCD_ON() LCD_Command(LCD_DISPLAYON)
#define LCD_OFF() LCD_Command(LCD_DISPLAYOFF)
#define LCD_StaticON() LCD_Command(LCD_DRIVERON)
#define LCD_StaticOFF() LCD_Command(LCD_DRIVEROFF)
#define LCD_Select16() LCD_Command(LCD_DUTY16)
#define LCD_Select32() LCD_Command(LCD_DUTY32)
#define LCD_StartRW() LCD_Command(LCD_RWMODE)
#define LCD_EndRW() LCD_Command(LCD_END)
#define LCD_Reset() LCD_Command(LCD_RESET)
#define LCD_SetStartLine(i) LCD_Command(LCD_STARTLINE0|i)
#define LCD_SetPage(i) LCD_Command(LCD_PAGE0|i)
#define LCD_SetColumn(i) LCD_Command(LCD_COLUMNADDR0|i)
 void delay1s();
 void LCD_Command(uchar);
 void LCD_SetRam(bit zhucongmian,uchar ndata);
 void LCD_Init();
 void clrscr(void);
 drawword(uchar liedizhi,uchar layer,uchar wenzi);
/******************************************************************************************
* 函数名称    :LCD_Command
* 功能描述    :写命令
* 参数        :  参数名称:	输入/输出?	类型		描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void delay1()
{    ; ;
 }
void LCD_Command(uchar nCommand)
{
  	A0=0;

  	E1=1;

  	E2=1;

  	DATE=nCommand;

  	E1=0;

  	E2=0;

}
/******************************************************************************************
* 函数名称    :LCD_SetRam
* 功能描述    :送显示数据ndata,setMS为0主,1从
* 参数        :  参数名称:	输入/输出?	类型		描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LCD_SetRam(bit zhucongmian,uchar ndata)
{
      A0=1;

      E1=!zhucongmian;

      E2=zhucongmian;


      DATE=ndata;

      E1=0;

      E2=0;

}
/******************************************************************************************
* 函数名称    :LCD_Init
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LCD_Init()
{
	P1=0xff;
 	P2=0xff;
  	LCD_OFF();               //关闭显示
         LCD_Command(LCD_RESET);  //复位
  	LCD_Command(0xa0);       //列与段驱动反方向
  	LCD_Command(LCD_DUTY32); //1/32
  	LCD_Command(0xa4);       //关闭静态显示    打开正常驱动
  	LCD_EndRW();             //关闭自动列加1
  	LCD_SetStartLine(0);     //设置起始行
  	LCD_SetColumn(0);        //起始列
  	LCD_SetPage(0);         //起始页
  	LCD_ON();                //开显示
}

/******************************************************************************************
* 函数名称    :clrscr
* 功能描述    :清屏
* 参数        :  参数名称:	输入/输出?	类型		描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:

⌨️ 快捷键说明

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