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

📄 last5.c

📁 C8051F020的头文件
💻 C
📖 第 1 页 / 共 5 页
字号:
//=================================================
//主程序文件名:cyjlast8.c
//字库文件名  :wordlast8.h
//完成时间    :2004年5月28日上午10:00
//参加人员    :王庆宇,王洪亮,李路军
//综合调试完成!准备明天到现场做试验。
//
//=================================================

#include <c8051f020.h>
#include <stdio.h>
#include <math.h>
#include <absacc.h>
#include <wordlast8.h>

#define uchar unsigned char
#define uint  unsigned int

#define addr_commond  XBYTE[0x7fff] // 液晶命令地址
#define addr_data     XBYTE[0x7eff] // 液晶数据地址

#define WRITE 0x00         // SMBus写命令
#define READ  0x01         // SMBus读命令
#define CHIP_ROM 0xA0      // 芯片24wc256的器件地址
#define CHONGCI_NUM_MAX 15 // 设定的最大冲次数
#define CHONGCI_NUM_MIN 1  // 设定的最小冲次数
#define CHONGCHENG_SPEED_RATIO_MAX 13 // 设定的最大冲程速度比13(已经乘10)
#define CHONGCHENG_SPEED_RATIO_MIN 07 // 设定的最小冲程速度比7 (已经乘10)

#define addr_volt_max_h_set    0x0001    // 设定的电压上限高位
#define addr_volt_max_l_set    0x0002    // 设定的电压上限低位
#define addr_volt_min_h_set    0x0003    // 设定的电压下限高位
#define addr_volt_min_l_set    0x0004    // 设定的电压下限低位
#define addr_current_max_set   0x0005    // 电流上限存储地址
#define addr_current_min_set   0x0006    // 电流下限存储地址
#define addr_chongci_num_max   0x0007    // 学习或设定最大冲次数存储地址
#define addr_chongci_num_min   0x0008    // 学习或设定最小冲次数存储地址
#define addr_chongci_num_gp    0x0009    // 学习的工频冲次数存储地址
#define addr_bp_start_delay    0x000a    // 变频器加速时间存储地址
#define addr_chongci_num_set   0x000b    // 目标冲次数存储地址
#define addr_chongcheng_speed_ratio_set  0x000c // 目标冲程速度比存储地址
#define addr_bp_fault_flag     0x000d    // 变频故障标志存储地址
#define addr_wz_fault_time     0x000e    // 位置传感器超时时间存储地址(单位:秒)
#define addr_bp_study_flag     0x000f    // 变频启动学习标志存储地址
#define addr_gp_study_flag     0x0010    // 工频启动学习标志存储地址
#define addr_pwm_chongci_num_set  0x0011 // 设定冲次数对应PWM值的存储地址
#define addr_pwm_data_up       0x0012    // 上冲程冲次数对应PWM值的存储地址
#define addr_pwm_data_down     0x0013    // 下冲程冲次数对应PWM值的存储地址

#define addr_i_a_compensate    0x0014    //a相电流补偿值存储地址
#define addr_i_b_compensate    0x0015    //b相电流补偿值存储地址
#define addr_i_c_compensate    0x0016    //c相电流补偿值存储地址
#define addr_u_ab_compensate   0x0017    //ab相电压补偿值存储地址
#define addr_u_bc_compensate   0x0018    //bc相电压补偿值存储地址
#define addr_u_ca_compensate   0x0019    //ca相电压补偿值存储地址

#define addr_bp_start_flag     0x001a    //变频启动标志存储地址

sbit key_out1 = P1^0; //键盘扫描输出1
sbit key_out2 = P1^1; //键盘扫描输出2
sbit key_out3 = P1^2; //键盘扫描输出3
sbit key_in1  = P1^3; //键盘扫描输入1
sbit key_in2  = P1^4; //键盘扫描输入2
sbit key_in3  = P1^5; //键盘扫描输入3
sbit key_in4  = P1^6; //键盘扫描输入4

sbit in_wz1      = P1^7; //位置传感器1输入检测,下死点
sbit in_wz2      = P2^0; //位置传感器2输入检测,上死点
sbit in_bp_start = P2^1; //变频启动输入检测
sbit in_gp_start = P2^2; //工频启动输入检测
sbit in_bp_fault = P2^3; //变频器故障输入检测
sbit in_add      = P2^4; //附加干节点输入检测

sbit out_rs485_control = P2^5; //RS485收发控制
sbit out_ad_select_iu1 = P2^6; //AD测量,切换选择3路电流电压
sbit out_ad_select_iu2 = P2^7; //AD测量,切换选择3路电流电压
sbit out_lcd_rst     = P3^0; //液晶复位控制
sbit out_lcd_light   = P3^1; //液晶背光灯电源开关控制
sbit out_spk_control = P3^2; //语音报警控制
sbit out_yemian_rst  = P3^3; //液面传感器复位控制
sbit out_jt          = P3^4; //急停控制
sbit out_bgt         = P3^6; //变频器停止控制
sbit out_bgq         = P3^5; //变频器启动控制
sbit out_add         = P3^7; //附加继电器输出


//----------全局变量定义----------
       
uchar bdata bit_byte1;// 进行数制转换时使用
sbit bit_byte1_7=bit_byte1^7;
sbit bit_byte1_6=bit_byte1^6;
sbit bit_byte1_5=bit_byte1^5;
sbit bit_byte1_4=bit_byte1^4;
sbit bit_byte1_3=bit_byte1^3;
sbit bit_byte1_2=bit_byte1^2;
sbit bit_byte1_1=bit_byte1^1;
sbit bit_byte1_0=bit_byte1^0;
uchar bdata bit_byte2;// 进行数制转换时使用
sbit bit_byte2_7=bit_byte2^7;
sbit bit_byte2_6=bit_byte2^6;
sbit bit_byte2_5=bit_byte2^5;
sbit bit_byte2_4=bit_byte2^4;
sbit bit_byte2_3=bit_byte2^3;
sbit bit_byte2_2=bit_byte2^2;
sbit bit_byte2_1=bit_byte2^1;
sbit bit_byte2_0=bit_byte2^0;
uchar bdata bit_byte3;// 进行数制转换时使用
sbit bit_byte3_7=bit_byte3^7;
sbit bit_byte3_6=bit_byte3^6;
sbit bit_byte3_5=bit_byte3^5;
sbit bit_byte3_4=bit_byte3^4;
sbit bit_byte3_3=bit_byte3^3;
sbit bit_byte3_2=bit_byte3^2;
sbit bit_byte3_1=bit_byte3^1;
sbit bit_byte3_0=bit_byte3^0;

uint  timer0_10ms;         // 临时计时器(主程序中使用)
uint  cycle_measure_timer; // 周期测量计时器(主程序中使用)
uint  lcd_light_timer;     // 液晶背光灯点亮时间长度计时器
uint  wz1_fault_timer;     // 位置传感器1超时检测计时器
uint  wz2_fault_timer;     // 位置传感器2超时检测计时器
bit   wz1_fault_flag;      // 位置传感器1故障标志(主程序中使用)
bit   wz2_fault_flag;      // 位置传感器2故障标志(主程序中使用)
uchar wz1_low_counter;     // 位置传感器1低电平计数器
uchar wz2_low_counter;     // 位置传感器2低电平计数器
uchar wz1_high_counter;    // 位置传感器1高电平计数器
uchar wz2_high_counter;    // 位置传感器2高电平计数器
bit   wz1_low_flag;        // 位置传感器1检测到可靠低电平标志
bit   wz2_low_flag;        // 位置传感器2检测到可靠低电平标志
bit   wz1_touch_flag;      // 位置传感器1可靠触发标志(主程序中使用)
bit   wz2_touch_flag;      // 位置传感器2可靠触发标志(主程序中使用)
uchar key_press_counter;   // 键盘消抖计数器
uchar key_value_previous;  // 上一次中断获得的键值
uchar key_value_main;      // 确定的按键返回值(主程序中使用)
uint  wz_fault_time;       // 位置传感器超时故障认定时间

uchar xdata year;   // 时钟芯片操作变量
uchar xdata month;
uchar xdata date;
uchar xdata week;
uchar xdata hour;
uchar xdata minute;
uchar xdata second;

uint  xdata measure_data16[501]; // AD采样临时存储数组

uint  volt_max_set;   // 设定的电压上限
uchar volt_max_h_set; // 设定的电压上限高位
uchar volt_max_l_set; // 设定的电压上限低位
uint  volt_min_set;   // 设定的电压下限
uchar volt_min_h_set; // 设定的电压下限高位
uchar volt_min_l_set; // 设定的电压下限低位

uchar current_max_set;// 设定的电流最大值
uchar current_min_set;// 设定的电流最小值

uint  volt_ab_present_measure;   // 电压测量的当前值
uint  volt_bc_present_measure;
uint  volt_ca_present_measure;
uchar current_a_present_measure; // 电流测量的当前值
uchar current_b_present_measure;
uchar current_c_present_measure;
uchar current_a_max_measure;     // 单周期电流峰值
uchar current_b_max_measure;
uchar current_c_max_measure;

uchar xdata volt_ab_fault_counter; // 电压故障点计数器
uchar xdata volt_bc_fault_counter;
uchar xdata volt_ca_fault_counter;
bit   volt_ab_fault_flag;          // 电压故障标志
bit   volt_bc_fault_flag;
bit   volt_ca_fault_flag;

uchar xdata current_a_low_fault_counter; // 电流过小故障点计数器
uchar xdata current_b_low_fault_counter;
uchar xdata current_c_low_fault_counter;
bit   current_a_low_fault_flag;          // 电流过小故障标志
bit   current_b_low_fault_flag;
bit   current_c_low_fault_flag;
uchar xdata current_a_high_fault_counter;// 电流过大故障点计数器
uchar xdata current_b_high_fault_counter;
uchar xdata current_c_high_fault_counter;
bit   current_a_high_fault_flag;         // 电流过大故障标志
bit   current_b_high_fault_flag;
bit   current_c_high_fault_flag;

uchar xdata current_a_fault_counter;     // 工频电流故障点计数器
uchar xdata current_b_fault_counter;
uchar xdata current_c_fault_counter;
bit   current_a_fault_flag;              // 工频电流故障标志
bit   current_b_fault_flag;
bit   current_c_fault_flag;


uchar chongci_num_max;  // 最大冲次数,PWM=255时测量

uchar chongci_num_min;  // 最小冲次数,PWM=5时测量

uchar chongci_num_set;  // 目标冲次数(已经乘10)

uchar chongcheng_speed_ratio_set; // 目标冲程速度比(已经乘10)

uchar chongci_num_down; // 计算的下冲程冲次数(已经乘10)

uchar chongci_num_up;   // 计算的上冲程冲次数(已经乘10)

uchar pwm_chongci_num_set;  // 目标冲次数对应的PWM数值
uchar pwm_data_up;          // 上冲程PWM数值
uchar pwm_data_down;        // 下冲程PWM数值

uchar bp_start_delay; // 设定的变频器加速时间

uchar chongci_num_gp;       // 测量的工频冲次数(已经乘10)
//uchar cycle_finish_counter; // 周期完成计数器

bit   bp_fault_flag; // 变频故障标志
bit   bp_start_flag; // 变频启动标志
bit   gp_start_flag; // 工频启动标志
bit   bp_study_flag; // 变频启动学习标志
bit   gp_study_flag; // 工频启动学习标志


int   xdata calculate; //参数设定时使用的步长
uint  xdata x_volt_max_set; //参数设定时使用的XDATA
uint  xdata x_volt_min_set;
uchar xdata x_current_max_set;
uchar xdata x_current_min_set;
uchar xdata x_chongci_num_min;
uchar xdata x_chongci_num_max;
uchar xdata x_chongci_num_set;
uchar xdata x_chongcheng_speed_ratio_set;
uchar xdata x_bp_start_delay;

char  xdata i_a_compensate;  // a相电流补偿值
char  xdata i_b_compensate;  // b相电流补偿值
char  xdata i_c_compensate;  // c相电流补偿值
char  xdata u_ab_compensate; //ab相电压补偿值
char  xdata u_bc_compensate; //bc相电压补偿值
char  xdata u_ca_compensate; //ca相电压补偿值


//函数说明
void  delay(uint i);//软件循环延时
void  sp_out(uchar shu);//串口发射1字节
uchar hex_askii(uchar data_hex);//十六进制数转换成ASKII码
void  change2_hex_askii(uchar shu_byte);//将1字节拆分成2个ASKII码
void  sp_out2(void);//串口发射拆分后的2个ASKII码
void  write_com_lcd(int n);//液晶写命令
void  write_data_lcd(int m);//液晶写数据
void  clear_lcd(int csrl,int csrh,int datal);//液晶清屏
void  init_lcd(void);//液晶初始化
void  displaych(int x,int y,uchar *d);//显示1个汉字
void  ad_channel_select(uchar ad_channels_select);//ADC0通道选择: 0x00电流,0x01电压
void  iu_channel_select(uchar iu_channels_select);//模拟开关通道切换
uint  ad_sampling(void);//AD采样,去坏点后求均值
uchar reverse_byte_hl(uchar clock_data);//将时钟数据从高位到低位颠倒
void  read_time(void);//读时钟
void  write_time(void);//写时钟
uchar SM_Receive (char chip_select, uint byte_address);//从24WC256读1字节
void  SM_Send (char chip_select, uint byte_address, char out_byte);//向24WC256写1字节
uint  change_2byte_1word(uchar datah,uchar datal);//将高位和低位字节合成1个字
void  init_cpu(void);//初始化CPU
void  init_program_parameter(void);//从24WC256里读数据初始化程序运行参数
void  switch_bp_gp(void);//控制变频运行切换到工频运行
uchar change_bcd_hex(uchar shu);//BCD到HEX转换
uchar change_hex_bcd(uchar shu);//HEX到BCD转换
void  xianshi_hanzi_chuan(int hang,int lie,uchar nei_rong[]);//显示汉字串,hl edit
void  xianshi_hanzi_dan(int hang,int lie,uchar order);//显示单个汉字,hl edit
void  xianshi_shuzi_dan(int hang,int lie,uchar order);//显示单个数字,hl edit
void  xianshi_fuhao_dan(int hang,int lie,uchar order);//显示单个符号,hl edit
void  xianshi_spaces_hanzi(int hang,int lie,uchar nei_rong[],uchar space_longth);
                                                      //对指定区域刷新后显示文本信息
void  xianshi_spaces_data(int hang, int lie, uchar area_long, uchar dot, uint split_data, uchar zf);
                                                      //对指定区域刷新后显示数字信息

void  menu_selftest(void);     //显示文本“系统正在自检···”
void  menu_bp_before_run(void);//显示文本“变频启动监测···”
void  menu_gp_before_run(void);//显示文本“工频启动监测···”
void  menu_wait(void);         //显示“启动前循环监测静态界面”
void  menu_bp_run(void);       //显示“变频运行监测静态界面”
void  menu_gp_run(void);       //显示“工频运行监测静态界面”
void  menu_setup_static(void); //显示“设置静态界面”

void  menu_setup(void); //参数设置,hl edit

//void  key_set_dispose(void);
//void  key_look_dispose(void);
//void  key_browse_page_dispose(void);
//void  key_password_dispose(void);

//==============================================================================================
//                                          主程序
//==============================================================================================
void main (void)
{
  uchar wqy,key_flag;
  uint  i;

  init_cpu(); // CPU资源初始化
  init_lcd(); // LCD初始化
              // 变量初始化

//-----------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -