智能離網逆變器,組成有eg8010,控制電壓輸出,還有個串口屏
單片機源程序如下:
- #include "come.h"
- void main()
- {
- unsigned int len=0;
- prot_mode();
- Uart2_Init();
- Uart3_Init();
- Uart4_Init();
- Timer0Init();
- RS485_init();
- queue_reset();
- wait_ms(300);
- Reset_Screen();
- while(1)
- {
- check_modbus();
- if(eg8010_button)EG8010_ctr();
- len=queue_find_cmd(buffer,CMD_MAX_SIZE);
- if(len>0){PressMessage((PCTRL_MSG)buffer);}
- if(time_count>100)
- {
- time_count=0;
- ALL_ReadText();
- EG8010_Dispose();
- }
- }
- }
- void prot_mode()
- {
- P0M1=0x00;P0M0=0x10;
- P1M1=0xc0;P1M0=0x00;
- P2M1=0xff;P2M0=0x00;
- P3M1=0x00;P3M0=0x00;
- P4M1=0x00;P4M0=0xff;
- }
- void PressMessage(PCTRL_MSG msg)
- {
- unsigned char cmd_type=msg->cmd_type;
- unsigned char ctrl_msg=msg->ctrl_msg;
- unsigned char control_type=msg->control_type;
- unsigned int screen_id=PTR2U16(&msg->screen_id);
- unsigned int control_id=PTR2U16(&msg->control_id);
- unsigned long int value=PTR2U32(msg->param);
- if(cmd_type==0xB1)
- {
- switch(control_type)
- {
- case 0x10:Button(screen_id,control_id,msg->param[1]);break;
- case 0x11:Text(screen_id,control_id,msg->param);break;
- case 0x13:Slider(screen_id,control_id,value);break;
- }
- }
- }
- void Slider(unsigned int screen_id,control_id,unsigned long int value)
- {
-
- if(screen_id==0x0004&&control_id==0x0002)
- {
- //Reset_Screen();
- SetBackLight(255-(unsigned char)value);
- }
- }
- void Button(unsigned int screen_id,control_id,state)
- {
- if(screen_id=0x0003&&control_id==0x0007&&state==0&&eg8010_flag==0)
- {
- eg8010_button=eg8010_flag=1;
- }
- }
- void Text(unsigned int screen_id,control_id,unsigned char *str)
- {
- if(screen_id=0x0003&&control_id==0x0004)
- {
- sscanf(str,"%d",vol_num);
- }
- }
- void ALL_ReadText()
- {
- ReadText(2,9);
- ReadText(2,10);
- ReadText(2,11);
- }
- void EG8010_Dispose()
- {
- unsigned int temp[2]={0};
- if(vol_num>0&&vol_num<=230)
- {
- eg8010_vol[1]=(u8)vol_num*51/75;
- temp[0]=eg8010_vol[1];
- }
- if(eg8010_flag)
- if(temp[1]!=temp[0])
- {
- eg8010_flag=0;
- eg8010_count=2;
- temp[1]=temp[0];
- }
- if(eg8010_count==0&&eg8010_flag==0)
- {
- eg8010_count=3;
- SetText(2,9,(u16)(eg_buffer[0]*75/51));
- SetText_d(2,10,(float)(eg_buffer[1]*50/255));
- SetText_d(2,11,(float)(eg_buffer[1]*50/255)*(u16)(eg_buffer[0]*75/51));
- }
- }
復制代碼
51hei.png (6.6 KB, 下載次數: 90)
下載附件
2022-3-9 06:14 上傳
Keil代碼下載:
訓練10.7z
(2.7 MB, 下載次數: 97)
2022-3-8 21:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|