📄 main.c.bak
字号:
const unsigned char char_88_N[8]=
{0x48,0x68,0x68,0x58,0x58,0x48,0x48,0x00};/*"N",39*/
const unsigned char char_88_O[8]=
{0x78,0x48,0x48,0x48,0x48,0x48,0x78,0x00};/*"O",40*/
const unsigned char char_88_P[8]=
{0x70,0x48,0x48,0x70,0x40,0x40,0x40,0x00};/*"P",41*/
const unsigned char char_88_Q[8]=
{0x30,0x48,0x48,0x48,0x68,0x58,0x38,0x00};/*"Q",42*/
const unsigned char char_88_R[8]=
{0x70,0x48,0x48,0x70,0x60,0x50,0x48,0x00};/*"R",43*/
const unsigned char char_88_S[8]=
{0x30,0x48,0x40,0x30,0x08,0x48,0x30,0x00};/*"S",44*/
const unsigned char char_88_T[8]=
{0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x00};/*"T",45*/
const unsigned char char_88_U[8]=
{0x48,0x48,0x48,0x48,0x48,0x48,0x30,0x00};/*"U",46*/
const unsigned char char_88_V[8]=
{0x48,0x48,0x48,0x48,0x30,0x30,0x30,0x00};/*"V",47*/
const unsigned char char_88_W[8]=
{0x48,0x48,0x48,0x48,0x78,0x78,0x48,0x00};/*"W",48*/
const unsigned char char_88_X[8]=
{0x48,0x48,0x30,0x30,0x30,0x48,0x48,0x00};/*"X",49*/
const unsigned char char_88_Y[8]=
{0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x00};/*"Y",50*/
const unsigned char char_88_Z[8]=
{0x78,0x08,0x10,0x30,0x20,0x40,0x78,0x00};/*"Z",51*/
/////////////
#define BUS_DIR FIO2DIR0
#define BUS_SET FIO2SET0
#define BUS_CLR FIO2CLR0
#define BUS_PIN FIO2PIN0
#define IO_INPUT_1 6 //P0.6
#define IO_INPUT_2 7 //P0.7
#define IO_INPUT_3 8 //P0.8
#define IO_INPUT_4 9 //P0.9
/////////////////////
#define AD7265_OUTA 20 //P1.20
#define AD7265_OUTB 21 //P1.21
#define AD7265_SCLK 22 //P1.22
#define H_AD7265_SCLK() IOSET1=(uint32)0x01<<AD7265_SCLK
#define L_AD7265_SCLK() IOCLR1=(uint32)0x01<<AD7265_SCLK
#define AD7265_CS 23 //P1.23
#define H_AD7265_CS() IOSET1=(uint32)0x01<<AD7265_CS
#define L_AD7265_CS() IOCLR1=(uint32)0x01<<AD7265_CS
#define AD7265_A0 24 //P1.24
#define H_AD7265_A0() IOSET1=(uint32)0x01<<AD7265_A0
#define L_AD7265_A0() IOCLR1=(uint32)0x01<<AD7265_A0
#define AD7265_A1 25 //P1.25
#define H_AD7265_A1() IOSET1=(uint32)0x01<<AD7265_A1
#define L_AD7265_A1() IOCLR1=(uint32)0x01<<AD7265_A1
#define AD7265_A2 26 //P1.26
#define H_AD7265_A2() IOSET1=(uint32)0x01<<AD7265_A2
#define L_AD7265_A2() IOCLR1=(uint32)0x01<<AD7265_A2
///////////
#define AT24C_SDA 27 //P0.27 //P1.24
#define H_AT24_SDA() IOSET0=(uint32)0x01<<AT24C_SDA
#define L_AT24_SDA() IOCLR0=(uint32)0x01<<AT24C_SDA
#define AT24C_SCL 28 //P0.28
#define H_AT24_SCL() IOSET0=(uint32)0x01<<AT24C_SCL
#define L_AT24_SCL() IOCLR0=(uint32)0x01<<AT24C_SCL
////////////////////////////////////////////
#define BEEP_CTRL 10 //P2.10
#define H_BEEP_CTRL() FIO2SET=(uint32)0x01<<BEEP_CTRL
#define L_BEEP_CTRL() FIO2CLR=(uint32)0x01<<BEEP_CTRL
#ifndef LCM12864Drive_H
#define LCM12864Drive_H
/* 定义颜色数据类型(可以是数据结构)*/
#define TCOLOR uint8
/* 定义LCM像素数宏 */
#define GUI_LCM_XMAX 128 // 定义液晶x轴的像素数
#define GUI_LCM_YMAX 64 // 定义液晶y轴的像素数
/* 定义RS控制 */
#define LCM12864_RS 25 //P0.25 //P0.28 //18
#define H_LCM12864_RS() IOSET0=(uint32)0x01<<LCM12864_RS
#define L_LCM12864_RS() IOCLR0=(uint32)0x01<<LCM12864_RS
/* 定义RW控制 */
#define LCM12864_RW 31 //P1.31 //19
#define H_LCM12864_RW() IOSET1=(uint32)0x01<<LCM12864_RW
#define L_LCM12864_RW() IOCLR1=(uint32)0x01<<LCM12864_RW
/* 定义E控制 */
#define LCM12864_E 8 //P2.8
#define H_LCM12864_E() FIO2SET=(uint32)0x01<<LCM12864_E
#define L_LCM12864_E() FIO2CLR=(uint32)0x01<<LCM12864_E
/* 定义D0数据线 */
#define LCM12864_D0 0 //P2.0
#define H_LCM12864_D0() FIO2SET=(uint32)0x01<<LCM12864_D0
#define L_LCM12864_D0() FIO2CLR=(uint32)0x01<<LCM12864_D0
/* 定义D1数据线 */
#define LCM12864_D1 1 //P2.1
#define H_LCM12864_D1() FIO2SET=(uint32)0x01<<LCM12864_D1
#define L_LCM12864_D1() FIO2CLR=(uint32)0x01<<LCM12864_D1
/* 定义D2数据线 */
#define LCM12864_D2 2 //P2.2
#define H_LCM12864_D2() FIO2SET=(uint32)0x01<<LCM12864_D2
#define L_LCM12864_D2() FIO2CLR=(uint32)0x01<<LCM12864_D2
/* 定义D3数据线 */
#define LCM12864_D3 3 //P2.3
#define H_LCM12864_D3() FIO2SET=(uint32)0x01<<LCM12864_D3
#define L_LCM12864_D3() FIO2CLR=(uint32)0x01<<LCM12864_D3
/* 定义D4数据线 */
#define LCM12864_D4 4 //P2.4
#define H_LCM12864_D4() FIO2SET=(uint32)0x01<<LCM12864_D4
#define L_LCM12864_D4() FIO2CLR=(uint32)0x01<<LCM12864_D4
/* 定义D5数据线 */
#define LCM12864_D5 5 //P2.5
#define H_LCM12864_D5() FIO2SET=(uint32)0x01<<LCM12864_D5
#define L_LCM12864_D5() FIO2CLR=(uint32)0x01<<LCM12864_D5
/* 定义D6数据线 */
#define LCM12864_D6 6 //P2.6
#define H_LCM12864_D6() FIO2SET=(uint32)0x01<<LCM12864_D6
#define L_LCM12864_D6() FIO2CLR=(uint32)0x01<<LCM12864_D6
/* 定义D7数据线 */
#define LCM12864_D7 7 //P2.7
#define H_LCM12864_D7() FIO2SET=(uint32)0x01<<LCM12864_D7
#define L_LCM12864_D7() FIO2CLR=(uint32)0x01<<LCM12864_D7
/* 定义CSA控制 */
#define LCM12864_CSA 24 //P0.24 //P0.27
#define H_LCM12864_CSA() IOSET0=(uint32)0x01<<LCM12864_CSA
#define L_LCM12864_CSA() IOCLR0=(uint32)0x01<<LCM12864_CSA
/* 定义CSB控制 */
#define LCM12864_CSB 26 //P0.26
#define H_LCM12864_CSB() IOSET0=(uint32)0x01<<LCM12864_CSB
#define L_LCM12864_CSB() IOCLR0=(uint32)0x01<<LCM12864_CSB
/* 定义RST控制 */
#define LCM12864_RST 4 //P0.4
#define H_LCM12864_RST() IOSET0=(uint32)0x01<<LCM12864_RST
#define L_LCM12864_RST() IOCLR0=(uint32)0x01<<LCM12864_RST
/* 定义BLK控制 */
#define LCM12864_BLK 5 //P0.5
#define H_LCM12864_BLK() IOSET0=(uint32)0x01<<LCM12864_BLK
#define L_LCM12864_BLK() IOCLR0=(uint32)0x01<<LCM12864_BLK
// 定义HC595_DS
#define HC595_DS 20 //P1.20
#define H_HC595_DS() IOSET1=(uint32)0x01<<HC595_DS
#define L_HC595_DS() IOCLR1=(uint32)0x01<<HC595_DS
// 定义HC595_STCP
#define HC595_STCP 21 //P1.21
#define H_HC595_STCP() IOSET1=(uint32)0x01<<HC595_STCP
#define L_HC595_STCP() IOCLR1=(uint32)0x01<<HC595_STCP
// 定义HC595_DS
#define HC595_SHCP 22 //P1.22
#define H_HC595_SHCP() IOSET1=(uint32)0x01<<HC595_SHCP
#define L_HC595_SHCP() IOCLR1=(uint32)0x01<<HC595_SHCP
/* 定义LCM12864操作的命令字 */
#define LCM12864_DISPON 0x3f // 打开LCM12864显示
#define LCM12864_STARTROW 0xc0 // 显示起始行0,可以用LCM12864_STARTROW+x设置起始行。(x<64)
#define LCM12864_ADDRSTRX 0xb8 // 页起始地址,可以用LCM12864_ADDRSTRX+x设置当前页(即X)。(x<8)
#define LCM12864_ADDRSTRY 0x40 // 列起始地址,可以用LCM12864_ADDRSTRY+x设置当前列(即Y)。(x<64)
/******************************************************************************************************************
* 函数名称:GUI_FillSCR()
* 功 能:全屏填充。填充显示缓冲区及LCM12864。
* 入口参数:data 填充的数据
* 出口参数:无
*******************************************************************************************************************/
extern void GUI_FillSCR(uint8 data);
/******************************************************************************************************************
* 函数名称:GUI_ClearSCR()
* 功 能:清屏。
* 入口参数:无
* 出口参数:无
*******************************************************************************************************************/
#define GUI_ClearSCR() GUI_FillSCR(0x00)
/******************************************************************************************************************
* 函数名称:GUI_Initialize()
* 功 能:初始化显示缓冲区及LCM12864并清屏。
* 入口参数:无
* 出口参数:无
*******************************************************************************************************************/
extern void GUI_Initialize(void);
/******************************************************************************************************************
* 函数名称:GUI_Point()
* 功 能:在指定位置上画点。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* color 对于黑白色或蓝白色LCM12864,为0时灭,为1时显示
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
*******************************************************************************************************************/
extern uint8 GUI_Point(uint8 x, uint8 y, uint8 color);
/******************************************************************************************************************
* 函数名称:GUI_ReadPoint()
* 功 能:读取指定点的颜色。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* ret 保存颜色值的指针
* 出口参数:返回0表示指定地址超出缓冲区范围。
* 说 明:对于单色,设置ret的d0位为1或0
*******************************************************************************************************************/
extern uint8 GUI_ReadPoint(uint8 x, uint8 y, uint8 *ret);
/******************************************************************************************************************
* 函数名称:GUI_HLine()
* 功 能:画水平线。
* 入口参数:x0 水平线起点所在列的位置
* y0 水平线起点所在行的位置
* x1 水平线终点所在列的位置
* color 显示颜色(对于黑白色或蓝白色LCM12864,为0时灭,为1时显示LCM12864,为0时灭,为1时显示)
* 出口参数:无
*******************************************************************************************************************/
extern void GUI_HLine(uint8 x0, uint8 y0, uint8 x1, uint8 color);
/******************************************************************************************************************
* 函数名称:GUI_RLine()
* 功 能:画竖直线。根据硬件特点,实现加速。
* 入口参数:x0 垂直线起点所在列的位置
* y0 垂直线起点所在行的位置
* y1 垂直线终点所在行的位置
* color 显示颜色(对于黑白色或蓝白色LCM12864,为0时灭,为1时显示LCM12864,为0时灭,为1时显示)
* 出口参数:无
*******************************************************************************************************************/
extern void GUI_RLine(uint8 x0, uint8 y0, uint8 y1, uint8 color);
/******************************************************************************************************************
* 函数名称:GUI_CmpColor()
* 功 能:判断颜色值是否一致
* 入口参数:color1 颜色值1
* color2 颜色值2
* 出口参数:返回1表示相同;返回0表示不相同
*******************************************************************************************************************/
#define GUI_CmpColor(color1,color2) ((color1&0x01)==(color2&0x01))
/******************************************************************************************************************
* 函数名称:GUI_CopyColor()
* 功 能:颜色值复制
* 入口参数:color1 目标颜色变量
* color2 源颜色变量
* 出口参数:无
*******************************************************************************************************************/
#define GUI_CopyColor(color1,color2) *color1=color2&0x01
#endif
/////////////////////////////////////////////
TCOLOR gui_disp_buf[GUI_LCM_YMAX/8][GUI_LCM_XMAX];// 定义显示缓冲区
// 注意:由于LCM12864液晶模块的显示单元是按垂直方向排列的,即1字节
// 数据表示某一列的8个点,所以定义显示缓冲区时就使用了"列宽/8"
// 作为第1维数组的大小。
/******************************************************************************************************************
* 函数名称:LCM12864_Delay()
* 功 能:软件延时函数。用于LCM12864显示输出时序控制。
* 入口参数:无
* 出口参数:无
*******************************************************************************************************************/
void LCM12864_Delay(void)
{
uint8 i;
//for(i=0; i<100; i++); //正常
///for(i=0; i<5; i++); //测试
for(i=0; i<15; i++); //测试 25
}
/******************************************************************************************************************
* 函数名称:OutData()
* 功 能:输出总线数据/命令。
* 入口参数:dat 8位数据/命令
* 出口参数:无
*******************************************************************************************************************/
void OutData(uint8 dat)
{
unsigned char i;
unsigned char var1;
var1=dat;
/*if((dat & 0x01)==1) H_LCM12864_D0(); else L_LCM12864_D0();
if((dat & 0x02)==2) H_LCM12864_D1(); else L_LCM12864_D1();
if((dat & 0x04)==4) H_LCM12864_D2(); else L_LCM12864_D2();
if((dat & 0x08)==8) H_LCM12864_D3(); else L_LCM12864_D3();
if((dat & 0x10)==16) H_LCM12864_D4(); else L_LCM12864_D4();
if((dat & 0x20)==32) H_LCM12864_D5(); else L_LCM12864_D5();
if((dat & 0x40)==64) H_LCM12864_D6(); else L_LCM12864_D6();
if((dat & 0x80)==128) H_LCM12864_D7(); else L_LCM12864_D7();
*/
/////////FOR HC595 OUTPUT
L_HC595_STCP();
for(i=0;i<8;i++)
{
if((dat&0x80)==0)
{
L_HC595_DS();
}
else
{
H_HC595_DS();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -