📄 key4x412232.c
字号:
#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 + -