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

📄 main.c.bak

📁 工厂环境污染控制数据采集器
💻 BAK
📖 第 1 页 / 共 5 页
字号:
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 + -