/********************************************************************************************
* ADC0809的工作过程是:
* 首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
* 此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。
* 下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,
* EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
* 当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上
*********************************************************************************************/
/*********************************************************************************************
//头文件定义
//
/*********************************************************************************************/
#include <reg52.h> // 包含头文件
#include <string.h> //用于指针
/*******************************************************************************************
//AD0809定义
//
/*********************************************************************************************/
sbit A=P3^4;
sbit B1=P3^5;
sbit C=P3^6; //ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路
sbit ALE=P3^3;
//ALE:地址锁存允许信号,输入,高电平有效
sbit EOC=P3^2;
//EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)
sbit OE=P2^6;
//OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量
sbit START=P2^7;
//START: A/D转换启动信号,输入,高电平有效
sbit fengji=P2^5;
sbit BEEP=P3^7;
/*********************************************************************************************
//接口定义
//
/*********************************************************************************************/
#define LCM12864_DB7_DB0 P1 // 定义LCM12864的数据总线
sbit LCM12864_CS1 = P2 ^ 3; // 定义LCM12864的CS1控制线,低电平选中
sbit LCM12864_CS2 = P2 ^ 4; // 定义LCM12864的CS2控制线
sbit LCM12864_RW = P2 ^ 2; // 定义LCM12864的RW控制线
// 读写控制信号,1为读,0为写
sbit LCM12864_RS = P2 ^ 0; // 定义LCM12864的RS控制线
// 又DI控制信号,高电平为显示数据,低电平为指令
sbit LCM12864_E = P2 ^ 1; // 定义LCM12864的E控制线
// 0为可以写入数据或指令;1为可以读DDRAM数据
sbit LCM12864_RESET = P2 ^ 6; // 定义LCM12864的RESET控制线,低电平复位
unsigned char str[11] = "0123456789a";
/*********************************************************************************************
//数据定义
//定义LCM12864的命令字
/*********************************************************************************************/
#define LCM12864_DISP_ON 0x3f // 打开LCM12864显示
#define LCM12864_DISP_OFF 0x3e // 关闭LCM12864显示
#define LCM12864_START_ROW 0xc0 //1100 0000
// 显示起始行0,可以用LCM12864_START_ROW+x设置起始行。(x<64)
#define LCM12864_PAGE_START_ADDR 0xb8 //1011 1000
// 页起始地址,可以用LCM12864_PAGE_START_ADDR+x设置当前页。(x<8)
#define LCM12864_COL_START_ADDR 0x40
// 列起始地址,可以用LCM12864_COL_START_ADDR+x设置当前列。(x<64)
//定义LCM12864的状态屏蔽码
//在BUSY和REST状态时,除读状态指令外,其他指令均不对LCM12864产生作用。
//在对LCM12864操作之前要查询BUSY状态,以确定是否可以对LCM12864进行操作。
#define LCM12864_STATUS_BUSY 0x80 // LCM12864忙状态屏蔽码
#define LCM12864_STATUS_DISP_OFF 0x20 // LCM12864显示关闭状态屏蔽码
#define LCM12864_STATUS_REST 0x10 // LCM12864复位状态屏蔽码
/*********************************************************************************************
//字符/图像定义库
//
/*********************************************************************************************/
/*-- 文字: 位 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code wei[] =
{
0x00,0xC0,0x30,0xEC,0x03,0x2A,0xC8,0x09,0x0A,0x0E,0x08,0xE8,0x48,0x08,0x00,0x00,
0x01,0x00,0x00,0x7F,0x20,0x20,0x20,0x27,0x20,0x30,0x2E,0x21,0x20,0x20,0x20,0x00
};
/*-- 文字: 数 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code shu[] =
{
0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,
0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00
};
/*-- 文字: 字 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code zi[] =
{
0x00,0x10,0x0C,0x24,0x24,0x24,0x25,0x26,0xA4,0x64,0x24,0x04,0x14,0x0C,0x00,0x00,
0x00,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00
};
/*-- 文字: 电 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code dian[] =
{
0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00
};
/*-- 文字: 压 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code ya[] =
{
0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,
0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00
};
/*-- 文字: 表 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code biao[] =
{
0x00,0x40,0x44,0x54,0x54,0x54,0xD4,0xFF,0x54,0x54,0x54,0x54,0x54,0x44,0x40,0x00,
0x08,0x08,0x04,0x04,0xFE,0x43,0x21,0x10,0x03,0x04,0x08,0x14,0x23,0x62,0x20,0x00
};
/*-- 文字: 仿 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code fang[] =
{
0x40,0x20,0x10,0xEC,0x07,0x0A,0x08,0x08,0xF9,0x8A,0x8E,0x88,0x88,0xCC,0x88,0x00,
0x00,0x00,0x00,0x7F,0x40,0x20,0x18,0x06,0x01,0x10,0x20,0x40,0x20,0x1F,0x00,0x00
};
/*-- 文字: 真 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code zhen[] =
{
0x00,0x04,0x04,0x04,0xF4,0x54,0x5C,0x57,0x54,0x54,0x54,0xF4,0x04,0x06,0x04,0x00,
0x10,0x90,0x90,0x50,0x5F,0x35,0x15,0x15,0x15,0x35,0x55,0x5F,0x90,0x90,0x10,0x00
};
/*-- 文字: 系 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code xi[] =
{
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 --*/
unsigned char code tong[] =
{
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
};
/*-- 文字: 通 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code tong1[] =
{
0x40,0x41,0xC6,0x00,0x00,0xF2,0x52,0x52,0x56,0xFA,0x5A,0x56,0xF2,0x00,0x00,0x00,
0x40,0x20,0x1F,0x20,0x40,0x5F,0x42,0x42,0x42,0x5F,0x4A,0x52,0x4F,0x40,0x40,0x00
};
/*-- 文字: 道 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code dao[] =
{
0x40,0x42,0xCC,0x00,0x04,0x04,0xE5,0xB6,0xAC,0xA4,0xA6,0xE5,0x04,0x04,0x00,0x00,
0x40,0x20,0x1F,0x20,0x40,0x40,0x5F,0x4A,0x4A,0x4A,0x4A,0x5F,0x40,0x40,0x40,0x00
};
/*-- 文字: 值 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
unsigned char code zhi[] =
{
0x80,0x40,0xF0,0x2F,0x02,0x04,0xE4,0xA4,0xB4,0xAF,0xA6,0xA4,0xE4,0x04,0x00,0x00,
0x00,0x00,0xFF,0x00,0x40,0x40,0x7F,0x4A,0x4A,0x4A,0x4A,0x4A,0x7F,0x40,0x40,0x00
};
unsigned char code T[] =
{0x18,0x00,0x08,0x00,0x08,0x20,0xF8,0x3F,0x08,0x20,0x08,0x00,0x18,0x00,0x00,0x00};/*"T",0*/
///////////////////////////////////////////////////////////////////
// ASCII字模的数据表 //
// 码表从0x20~0x7e //
// 字库:Asc8X16E.dat 纵向取模下高位 //
//////////////////////////////////////////////////////////