📄 main.c
字号:
#include "lcd.h"
#include "font.h"
#include "key.h"
#include "I2c.h"
#include <math.h>
#include <absacc.h>
#include <string.h>
Ushort16 Cursor_num; //在数据表格中,光标的位置
Uchar8 Screen_num = 0; //显示的屏幕
Uchar8 Key_Code = 0; //按键值
Uchar8 Enter_mode = 0; //进入数据显示模式
Uint32 Scan_num; //扫描次数
Str_Setup Parameter_Setup; //测试设置
Str_Date Scan_Time_Data; //扫描所用时间
Str_Date Time_Data; //时间
Ushort16 Temper_num; //温度
Uchar8 password_buf[8]; //密码
Uchar8 AutoPreferences_buf[2]; //自动参数
Uchar8 TestManName_buf[10]; //测试人员名称
Uchar8 TestAddress_buf[10]; //测试地点名称
Uchar8 EquipmentName_buf[10]; //设备编号
Str_HisIndex His_Index; //历史数据索引
Str_Save Save_His; //何存历史数据
Uchar8 num_buf[10]; //临时数据处理缓存器
Uchar8 Disp_buf[9]; //临时显示数据处理缓存器
Uint32 Hv_Data_buf[19][4]; //高压侧显示数据的缓存器
Uint32 Lv_Data_buf[17][4]; //低压侧显示数据的缓存器
Uint32 Testing_Data_buf[3][3]; //测试数据
/*********************************************************************************************************
** 函数名称: void mian(void)
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 作 者:
** 日 期:
** 功能描述: 主函数
********************************************************************************************************/
void DELAY(Uint32 yy)
{
int i,j;
for(i=0;i<2000;i++)
{
for(j=1;j<yy;j++)
{
;
}
}
}
/*********************************************************************************************************
** 函数名称: void mian(void)
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 作 者:
** 日 期:
** 功能描述: 主函数
********************************************************************************************************/
void Init_Data(void)
{
Uchar8 temp_buf[4], n;
Uchar8 temp_Data;
Ushort16 m;
Ushort16 temp_addr;
I2c_Mode = I2c_ModeRead; //设置读的模式
I2c_ReadData(first_finger_Addr, temp_buf, 5);
I2c_Mode = I2c_ModeStop;
if((temp_buf[0] != 0xaa) || (temp_buf[1] != 0x55) || (temp_buf[2] != 0x55) || (temp_buf[3] != 0xaa))
{
for(m = 0; m < 64; m++)
{
temp_addr = m * 512;
temp_Data = 0xff;
I2c_Mode = I2c_ModeWr;
I2c_WriteData(temp_addr, &temp_Data, 64); //写初始化EEPROM条件
I2c_Mode = I2c_ModeStop;
}
temp_buf[0] = 0xaa;
temp_buf[1] = 0x55;
temp_buf[2] = 0xaa;
temp_buf[3] = 0x55;
I2c_Mode = I2c_ModeWr;
I2c_WriteData(first_finger_Addr, temp_buf, 4); //写初始化EEPROM条件
I2c_Mode = I2c_ModeStop;
Time_Data.YE = 2008;
Time_Data.MO = 9;
Time_Data.DD = 11;
Time_Data.HH = 17;
Time_Data.MI = 50;
Time_Data.SS = 1;
Temper_num = 12345;
for(m = 0; m < 19; m++) //初始化显示的数据,当为0xffffffff时不显示
{
for(n = 0; n < 4; n++)
{
Hv_Data_buf[m][n] = 0xffffffff; //初始化高压侧显示数据的缓存器
if(m < 17)
{
Lv_Data_buf[m][n] = 0xffffffff; //低压侧显示数据的缓存器
}
}
}
for(m = 0; m < 3; m++) //初始化显示的数据,当为0xffffffff时不显示
{
for(n = 0; n < 3; n++)
{
Testing_Data_buf[m][n] = m;
}
}
for(m = 0; m < 10; m++) //初始化显示的数据,当为0xffffffff时不显示
{
TestManName_buf[m] = 65; //测试人员名称
TestAddress_buf[m] = 65; //测试地点名称
EquipmentName_buf[m] = 65; //设备编号
}
password_buf[0] = 'h'; //密码
password_buf[1] = 'z'; //密码
password_buf[2] = 'h'; //密码
password_buf[3] = 'd'; //密码
password_buf[4] = 'd'; //密码
password_buf[5] = 'd'; //密码
I2c_Mode = I2c_ModeWr;
I2c_WriteData(password_Addr, password_buf, 6); //保存密码
I2c_Mode = I2c_ModeStop;
for(m = 0; m < 80; m++) //初始化显示的数据,当为0xffffffff时不显示
{
His_Index.EquipmentName_buf[m][0] = 0xff; //设备编号
His_Index.EquipmentName_buf[m][1] = 0xff; //设备编号
His_Index.Save_Current = 0;
}
Parameter_Setup.Hv_Channels = 1; //三通道与单通道选择, 0表示单通道,1表示多通道
Parameter_Setup.Lv_Channels = 1; //三通道与单通道选择, 0表示单通道,1表示多通道
Parameter_Setup.Hv_tap_num = 3; //高压的分接数
Parameter_Setup.Lv_tap_num = 5; //高压的分接数
Parameter_Setup.Hv_Ampen =5; //高压侧测试电流
Parameter_Setup.Lv_Ampen = 5; //高压侧测试电流
Parameter_Setup.Work_Mode = 0; //工作模式, 0表示手动,1表示自动
His_Index.Save_Used = 80;
I2c_Mode = I2c_ModeWr;
I2c_WriteData(Parameter_Setup_Addr, (Uchar8 *)&Parameter_Setup.Hv_Channels, 6); //保存参数
I2c_Mode = I2c_ModeStop;
}
else
{
I2c_Mode = I2c_ModeRead; //设置读的模式
I2c_ReadData(first_finger_Addr, temp_buf, 5);
I2c_Mode = I2c_ModeStop;
}
}
/*********************************************************************************************************
** 函数名称: void INTERRUPT_Init(void)
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 作 者:
** 日 期:
** 功能描述: 主函数
*******************************************************************************************************/
void INTERRUPT_Init(void)
{
VICIntSelect = 0x00000000; //所有中断通道设置为IRQ中断
VICIntEnable = 0x00000000; //清除所有中断使能
// VICDefVectAddr = (Uint32)Key_IRQ;
// VICIntEnable |= Interrupt_AD0; //AD0中断使能
// VICVectCntl0 = 0x20 | 21; //串口0中断通道分配最高优先级(向量近制器1)
// VICVectAddr0 = (Uint32)Key_IRQ; //设置UART0向量地址
// VICIntEnable = Interrupt_AD1; //设置串口0中断使能
VICVectCntl0 = 0x20 | VIC_I2C0; //I2C0中断通道分配最高优先级(向量近制器1)
VICVectAddr0 = (Uint32)I2c_IRQ; //设置I2C0向量地址
VICIntEnable = Interrupt_I2C0; //设置I2C0中断使能
/*
VICVectCntl2 = 0x00000026; //串口0中断通道分配最高优先级(向量近制器1)
VICVectAddr2 = (unsigned int)UART2_IRQ; //设置UART0向量地址
VICIntEnable |= Interrupt_UART0; //设置串口0中断使能
VICVectCntl3 = 0x00000027; //串口1中断通道分配最高优先级(向量近制器2)
VICVectAddr3 = (unsigned int)UART1_IRQ; //设置UART1向量地址
VICIntEnable |= Interrupt_UART1; //设置串口1中断使能
VICVectCntl1 = 0x00000024; //TIMER0中断通道分配最高优先级(向量近制器3)
*/
EXTINT = 0x0f; //清除所有中外部中断标志位
}
/*********************************************************************************************************
** 函数名称: void mian(void)
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 作 者:
** 日 期:
** 功能描述: 主函数
********************************************************************************************************/
int main(void)
{
Uchar8 m;
Init_Data();
I2C0_Init();
INTERRUPT_Init();
Key_init();
LCD_Init();
Dis_Lcd_Start();
DELAY(10000);
LCD_CLR();
Screen_num = 2; //选显示测试设置界面
LCD_CLR();
Dis_Lcd_Data(0);
Dis_Lcd_Data_Wr(0x8000, Testing_Data_buf[0]);
Dis_Lcd_Data_Wr(0x8001, Testing_Data_buf[0]);
Dis_Lcd_Data_Wr(0x8002, Testing_Data_buf[0]);
// LCD_CLR();
// Time_Data.YE = 2008;
// Time_Data.MO = 9;
// Time_Data.DD = 20;
// Time_Data.HH = 17;
// Time_Data.MI = 50;
// Time_Data.SS = 1;
// Dis_Lcd_Test();
// Dis_Lcd_Test_Wr(0x8002, Testing_Data_buf[0]);
// Testing_Data_buf[0][0] = 10;
// Testing_Data_buf[0][1] = 100;
// Testing_Data_buf[0][2] = 100;
// Dis_Lcd_Test_Wr(0x8000, Testing_Data_buf[0]);
// LCD_WriteCMD(CSRFORM); //CSRFORM = 0x5d 该指令设置了光标的显示方式及其形状
// LCD_WriteData(0x07); //设置参数光标指针低8位
// LCD_WriteData(0x8f); //设置参数光标指针低8位
for(m = 0; m < 10; m++)
{
TestManName_buf[m] = m;
}
while(1)
{
if(Screen_num == 0) //显示数据界面
{
LCD_CLR();
Dis_Lcd_Set(0);
Deal_Lcd_set_data(Enter_mode);
}
else if(Screen_num == 1) //显示启动界面
{
LCD_CLR();
Dis_Lcd_Set(1);
Deal_Lcd_set_Test();
}
else if(Screen_num == 2) //显示启动系统设置界面
{
LCD_CLR();
Dis_Lcd_Set(2);
Deal_Lcd_set_system();
}
else if(Screen_num == 3) //显示数据界面
{
LCD_CLR();
Dis_Lcd_Data(0);
Deal_Lcd_Data();
}
else if(Screen_num == 4) //显示测试界面
{
LCD_CLR();
Dis_Lcd_Test();
Deal_Lcd_Testing();
//Testing_Data_buf[0][0] = 99;
//Testing_Data_buf[0][1] = 98;
//Testing_Data_buf[0][2] = 97;
//Dis_Lcd_Test_Wr(0x8000, Testing_Data_buf[0]);
}
else if(Screen_num == 5) //显示提界面,是否保存当前数据
{
LCD_CLR();
Dis_Lcd_SaveLable();
Deal_Lcd_SaveLable(Enter_mode);
}
else if(Screen_num == 6) //显示历史数据界面
{
LCD_CLR();
Dis_Lcd_Data(1);
Deal_Lcd_HisData();
}
else if(Screen_num == 7) //册除历史数据界面
{
LCD_CLR();
Dis_Lcd_DelLable();
Deal_Lcd_DelLable(Enter_mode);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -