#include "stm32f10x_lib.h"
#include "common.h"
//#include "stdlib.h"
//#include "math.h"
u8 jiaozhun_flag=1; //这个标志是调程序时临时定义的
u8 BCD_REG0[6]; //存放密码
u32 mima=000000;
u16 tq_flag=0xfffe; //d0 电流速断投入 d1 反时限过流投入 d2 负序过流投入
// d3 零序过流投入 d4 堵转保护投入 d5 热过载保护投入
//d6 过电压保护投入 d7 欠电压保护投入 d8 联锁保护1投入 d9 联锁保护2投入
//d10 自启动投入 d11 确认是否保存(这个保存是询问是否保存到EEPROM里)
unsigned char count_flag; //d0 主菜单首次进入(即设置、校准、合闸、通讯画面)d1 主画面,即默认页面含有图的那个页面首次进入标志 d2 设置首次进入(即保护菜单1整定画面) d3 设置首次进入(即保护菜单2整定画面)
// d4设置首次进入(即保护菜单3整定画面) d5通讯设置首次进入
//d6 d7 密码修改画面首次进入
int key_vol;
const unsigned int Ip=2000,Up=2000, Pp=400;
extern const unsigned char *p;
u16 f0ct[29]; // 0: addr; 1: baud; 2: CT_f; 3: PT_f; 4: 速断; 5:速断时间 6: GL;
// 7: 过流时间常数; 8:负序; 9:负序时间 10: 零序; 11:零序时间;12:DZ(堵转)13:过载 14:过压 15:过压时间
// 16:欠压 17:欠压时间 18:联锁1时间 19:联锁2时间 20:群启时间
//21:Ia_f; 22:Ib_f;23:Ic_f;24:I0_f; 25:Ua_f; 26:Ub_f; 27:Uc_f;28:U0_f;
extern const unsigned char shezhi[],jiaozhun[],fenzhaC[],hezhaC[],tongxun[],jiantou[],qingjian[],qingmima[],qingxiahuaxian[],xiahuaxian[],baohucaidan11[],baohucaidan22[],baohucaidan33[],
qingxiahuaxian1[],zhengzaijiaozhun[],jiaozhunwancheng[],jindutiao[],qingjindutiao[],dizhi[],botelv[],xiahuaxian1[];
extern u8 opt_input; //d0 空开位置 d1 接触器位置 d3 联锁1输入 d3 联锁2输入
unsigned char Tsdata[8]; //Temporary storage data 暂时保存数据
unsigned char zdbcflag; //zhengdingbaocunflag 整定数据保存标志
unsigned char Yzks[25]={0}; //yuanzhikaishi,即从下划线移到时的值开始增加,防止菜单中按键移动时key_vol的值覆盖所有下划线移动到的地方
struct
{
char key_ind; //键值标志
char com1; //设置键标志
int com2; //右移键标志
char com3; //保护菜单三个页面切换标志
char count1; //进入保护菜单次数标志,即是初始化进入还是修改参数进入
char count2;
char count3;
char count4;
char ack;
}flag;
void down_key()
{
if(flag.com1<6) // 保证进入子菜单后,再按向上键,屏幕不在翻屏,而是修改固定位置的值
{
flag.com3++;
if(flag.com3>2)
flag.com3=0;
}
key_vol++; //如果一开机就先按一或多次down键,则会造成进入设置画面后,箭头首次移动时不按顺序移动
if((flag.com1>0)&&(flag.com1<0x60))
main_menu();
}
void right_key()
{
if((flag.com1>0)&&(flag.com1<0x60))
{
flag.com2++;
main_menu();
}
}
void set_key()
{
//if(flag.com1>=0x40)
// flag.com1=0x50;
//else
//{
flag.com1++;
main_menu();
//}
}
void quit_key()
{
clr_dislay();
flag.com1=0;
count_flag&=0x01; //0x7c;
count_flag|=3;
mu_dis(); //用来显示电压电流及界面图形
}
void KEY_scan()
{
switch(flag.key_ind)
{
case 1: right_key(); flag.key_ind = 0;break;
case 2: down_key();flag.key_ind =0; break;
case 3: set_key();flag.key_ind = 0;break;
case 4: quit_key();flag.key_ind = 0;break;
}
}
void main_menu() //用于显示主菜单画面,一共四行,分别为设置;校准;分闸或合闸;通讯
{
if(count_flag&1)
{
clr_dislay();
p=shezhi;
LCD_draw_OUT(8,0,32,2 );
p=jiaozhun;
LCD_draw_OUT(8,2,32,2 );
if(opt_input&2)
p=fenzhaC;
else
p=hezhaC;
LCD_draw_OUT(8,4,32,2 );
p=tongxun;
LCD_draw_OUT(8,6,32,2 );
p=jiantou;
LCD_draw_OUT(0,0,8,2 );
count_flag&=0xfe; //保证下次按下设置键时不再是显示这个主画面,而是执行下面的程序,进入相应的子菜单
count_flag|=0x20; //用于通讯首次进入设置,显示固定位置的值,防止刷屏
}
else if((flag.com1==1)||(flag.com1==0x11)||(flag.com1==0x21)||(flag.com1==0x31)) //这个else以及紧接着下面的switch语句主要是用来清箭头和显示箭头,在else里清箭头,在switch里显示箭头
{
if(key_vol>3)
key_vol=0;
p=qingjian;
LCD_draw_OUT(0,0,8,2 );
p=qingjian;
LCD_draw_OUT(0,2,8,2 );
p=qingjian;
LCD_draw_OUT(0,4,8,2);
p=qingjian;
LCD_draw_OUT(0,6,8,2 );
switch(key_vol)
{
case 0:p=jiantou;
LCD_draw_OUT(0,0,8,2 );
flag.com1=1; //这个标志设定是保证箭头移到那,按下设置键时,正好是进入相应的子菜单
break;
case 1:p=jiantou;
LCD_draw_OUT(0,2,8,2 );
flag.com1=0x11;
break;
case 2:p=jiantou;
LCD_draw_OUT(0,4,8,2 );
flag.com1=0x21;
break;
case 3:p=jiantou;
LCD_draw_OUT(0,6,8,2 );
flag.com1=0x31;
}
}
if((flag.com1>=2)&&(flag.com1<0x10)) //上面程序退出时正好把flag.com1设置为1,所以当再次按下设置键时flag.com1加1,正好就进不了上面else语句,而是执行下面的进入相应子菜单程序
shezhi_menu();
if((flag.com1>=0x12)&&(flag.com1<0x20))
jiaozhun_menu();
if((flag.com1>=0x20)&&(flag.com1<0x30))
fenhezha_menu();
if((flag.com1>=0x32)&&(flag.com1<0x40))
tongxun_menu();
}
void shezhi_menu()
{
if((flag.com1>=2)&&(flag.com1<5)) //等于2时首次进入密码设置画面,当再次按下设置键时flag.com1为3,这是再进入midfi_pro(),之后调用password
midfi_pro();
if(flag.com1>=5)
baohucaidan();
}
void jiaozhun_menu()
{
u8 i;
clr_dislay();
while(jiaozhun_flag)
{
p=zhengzaijiaozhun; //显示正在校准
LCD_draw_OUT(32,1,64,2 );
for(i=0;i<6;i++)
{
switch(i)
{
case 0:p=jindutiao;
LCD_draw_OUT(32,4,8,1 );
Delay(0x1fffff);
break;
case 1:p=jindutiao;
LCD_draw_OUT(43,4,8,1 );
Delay(0x1fffff);
break;
case 2:p=jindutiao;
LCD_draw_OUT(54,4,8,1 );
Delay(0x1fffff);
break;
case 3:p=jindutiao;
LCD_draw_OUT(65,4,8,1 );
Delay(0x1fffff);
break;
case 4:p=jindutiao;
LCD_draw_OUT(76,4,8,1 );
Delay(0x1fffff);
break;
case 5:p=jindutiao;
LCD_draw_OUT(87,4,8,1 );
Delay(0x1fffff);
p=qingjindutiao;
LCD_draw_OUT(32,4,65,1 );
break;
}
}
}
p=jiaozhunwancheng;
LCD_draw_OUT(32,3,64,2 );
}
void fenhezha_menu()
{
}
void tongxun_menu()
{
if(count_flag&=0x20)
{
flag.com2=0; //保证下划线出现在第一个位置
count_flag&=0xdf; //防止刷屏,下次第二次进来时不在显示该固定位置的值
clr_dislay();
p=dizhi;
LCD_draw_OUT(0,1,48,2 );
p=botelv;
LCD_draw_OUT(0,4,48,2 );
disp_vd(78,2,f0ct[0]);
if(f0ct[1]<2400)
f0ct[1]=2400;
disp_vd(78,5,f0ct[1]);
}
if(flag.com1==0x33)
{
p=qingxiahuaxian;
LCD_draw_OUT(78,3,35,1 );
p=qingxiahuaxian;
LCD_draw_OUT(78,6,35,1 );
if(key_vol>9)
key_vol=0;
if(flag.com2>3)
flag.com2=0;
switch(flag.com2)
{
case 0:p=xiahuaxian; //修改通讯地址值
LCD_draw_OUT(90,3,5,1 );
Yzks[0]++;
if(Yzks[0]==1)
key_vol=f0ct[0]/100;
if(key_vol>2)
key_vol=0;
LCD_ascii5x8(90,2,key_vol|0x30);
Tsdata[0]=key_vol;
zdbcflag=0;
Tsdata[1]=(f0ct[0]%100)/10;
Tsdata[2]=f0ct[0]%10;
Yzks[3]=0;
break;
case 1:p=xiahuaxian;
LCD_draw_OUT(96,3,5,1 );
Yzks[1]++;
if(Yzks[1]==1)
key_vol=(f0ct[0]%100)/10;
LCD_ascii5x8(96,2,key_vol|0x30);
Tsdata[1]=key_vol;
break;
case 2:p=xiahuaxian;
LCD_draw_OUT(102,3,5,1 );
Yzks[2]++;
if(Yzks[2]==1)
key_vol=f0ct[0]%10;
LCD_ascii5x8(102,2,key_vol|0x30);
Tsdata[2]=key_vol;
break;
case 3:p=xiahuaxian1; //修改波特率值
没有合适的资源?快使用搜索试试~ 我知道了~
caoxian.rar_装置_装置菜单
共135个文件
o:30个
d:25个
crf:25个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 72 浏览量
2022-09-19
18:17:27
上传
评论
收藏 1.73MB RAR 举报
温馨提示
这是一个智能操显装置的程序,包括已经实现的中断,菜单等功能
资源推荐
资源详情
资源评论
收起资源包目录
caoxian.rar_装置_装置菜单 (135个子文件)
yejing.axf 235KB
stm32f10x_it.c.bak 35KB
24c02.c.bak 6KB
yejing_Opt.Bak 5KB
yejing_Uv2.Bak 4KB
TTCX_Uv2.Bak 3KB
TTCX_Opt.Bak 2KB
yejing_sct.Bak 479B
TTCX_sct.Bak 479B
key_pro.C 36KB
stm32f10x_it.c 35KB
key_pro(老板写好的).C 11KB
system_int.c 11KB
lcd_dis.c 9KB
protection.c 8KB
24c02.c 6KB
usart.c 5KB
Initialize.C 4KB
display.c 3KB
Inverter.c 2KB
ad.c 2KB
main.c 445B
main.C 160B
protection.crf 160KB
usart.crf 158KB
ad.crf 157KB
main.crf 156KB
key_pro.crf 154KB
stm32f10x_it.crf 151KB
main.crf 151KB
lcd_dis.crf 151KB
24c02.crf 148KB
display.crf 148KB
system_int.crf 148KB
converter.crf 147KB
inverter.crf 146KB
initialize.crf 145KB
stm32f10x_lib.crf 144KB
stm32f10x_tim.crf 74KB
stm32f10x_adc.crf 49KB
stm32f10x_usart.crf 45KB
stm32f10x_dma.crf 42KB
stm32f10x_gpio.crf 42KB
stm32f10x_gpio.crf 42KB
stm32f10x_rcc.crf 40KB
stm32f10x_rcc.crf 40KB
stm32f10x_flash.crf 38KB
stm32f10x_nvic.crf 36KB
stm32f10x_it.d 2KB
protection.d 2KB
stm32f10x_lib.d 2KB
system_int.d 2KB
converter.d 2KB
inverter.d 2KB
usart.d 2KB
display.d 2KB
key_pro.d 2KB
lcd_dis.d 2KB
main.d 2KB
24c02.d 2KB
ad.d 2KB
initialize.d 2KB
main.d 2KB
stm32f10x_usart.d 509B
stm32f10x_gpio.d 500B
stm32f10x_dma.d 491B
stm32f10x_tim.d 491B
stm32f10x_adc.d 491B
stm32f10x_gpio.d 458B
stm32f10x_flash.d 438B
stm32f10x_nvic.d 430B
stm32f10x_rcc.d 422B
stm32f10x_rcc.d 386B
yejing_Target 1.dep 21KB
TTCX_TTCX.dep 5KB
TTCX_Target 1.dep 221B
zm.h 21KB
common.h 848B
24c02.h 405B
Initialize.h 116B
yejing.htm 129KB
ExtDll.iex 19B
JLinkArm_Target 1.ini 205B
yejing.lnp 644B
TTCX.lnp 329B
stm32f10x_vector.lst 40KB
stm32f10x_vector.lst 40KB
STM32F10x.lst 36KB
cortexm3_macro.lst 27KB
cortexm3_macro.lst 27KB
yejing.map 111KB
TTCX.map 56B
key_pro.o 190KB
stm32f10x_it.o 187KB
protection.o 182KB
usart.o 179KB
ad.o 177KB
lcd_dis.o 175KB
display.o 174KB
main.o 173KB
共 135 条
- 1
- 2
资源评论
朱moyimi
- 粉丝: 65
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功