久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機直流電子負載程序+EBpro上位機工程
[打印本頁]
作者:
顏墨沉
時間:
2019-6-4 14:31
標題:
單片機直流電子負載程序+EBpro上位機工程
直流簡易電子負載
0.png
(4.13 KB, 下載次數(shù): 42)
下載附件
2019-6-7 05:34 上傳
ADC+負載+按鍵 +485+串口_最終版程序
單片機源程序如下:
#include "config.h"
#include "adc.h"
#include "delay.h"
#include "soft_uart.h"
#include "lcd.h"
#include "PWM.h"
#include "intrins.h"
#include "usart.h"
/************* 按鍵******************************************************/
sbit k1=P3^6; //定義P3.3口是k1
sbit k2=P3^5; //定義P3.3口是k1
sbit k3=P3^4; //定義P3.3口是k1
sbit k4=P3^3; //定義P3.3口是k1
sbit fan=P3^2; //定義P3.3口是k1
int results=0;
int DUTY,ierr=0,resulti=0;
int num=0;
int resultv=0;
int cusor=0;
int send_mode=0,receive_mode=0;
void modbushandle1(void);
void modbushandle2(void);
void modbushandle3(void);
void modbushandle4(void);
void modbushandle5(void);
void modbushandle6(void);
void Uart3s(void);
extern u8 ch;
extern int modflag;
extern u8 mtx[100],mrx[100];
extern u16 send_I_V_P[50]; //4 發(fā)送電流電壓功率值
extern u16 bitsend[50]; //2 讀過壓保護狀態(tài)
extern u16 bitworkflag[50]; //1 5 啟停標志位
extern u16 set_current[50]; //3 6設(shè)定電流值
unsigned int set_dis[4]={0,0,0,0};
unsigned int a[9];//={0,0}
unsigned int i;//,resultsvol,resultscur, u2summean,i2summean,u2sum,i2sum,u2num;
extern unsigned char receiver_buf;
void display(); //顯示程序聲明
void keyscan();
void voltage_test()
{
if(resultv>5500)
{
bitworkflag[0]=0;
DUTY=0;
bitsend[0]=1;
}
}
void main()
{
P2M1=0X00;
P2M0=0XFF;
P0M1=0X00;
P0M0=0XFF;
P3M1=0X00;
P3M0=0XFF;
P4M1=0X00;
P4M0=0XFF;
P5M1=0X00;
P5M0=0XFF;
P6M1=0X00;
P6M0=0XFF;
P7M1=0X00;
P7M0=0XFF;
P0M0=0xfe;
PWMInit();
LcdInit();
delay_ms(5);
ADC_config();
fan=0;//風扇
DUTY=0;
UartInit();
ch=1;
send_I_V_P[0]=7; //4
send_I_V_P[1]=15;
send_I_V_P[2]=200;
bitworkflag[0]=0; // 1 5
set_current[0]=1000;// 3 6
bitsend[0]=0;
while(1)
{
display();
keyscan();
voltage_test();
if(crcok==1)
{
// DisplayOneChar(0,0,bitworkflag[0]+0x30);
crcok = 0;
if(mrx[0]==6)
{
switch (mrx[1])
{
case 1:modbushandle1(); //讀取啟停標志
break;
case 2:modbushandle2(); //讀取過流保護的標志位
break;
case 3:modbushandle3(); //讀取設(shè)定電流值
break;
case 4:modbushandle4(); //讀電流電壓功率
break;
case 5:modbushandle5(); //啟動
break;
case 6:modbushandle6(); //設(shè)定電流值
break;
}
}
}
switch (bitworkflag[0])
{
case 0:
PWM2output(0);
fan=0;
DisplayListChar(14,0,"OF");
break;
case 1:
fan=1;
PWM2output(DUTY);
DisplayListChar(14,0,"ON");
break;
}
for(i=0;i<2;i++)
{
results = Get_ADC10bitResult(i); //參數(shù)0~7,查詢方式做一次ADC, 返回值就是結(jié)果, == 1024 為錯誤
if(i==1)
{
results=results*9.77;//9.98 放大2倍
resulti=results;
send_I_V_P[0]= resulti;
}
else
{
if(resulti>1050&resulti<1970)
results=results*9.96;//9.98 放大2倍
else if(resulti>=1970&resulti<2450)
results=results*9.98;//9.98 放大2倍
else if(resulti>=2450&resulti<3200)
results=results*10.14;//9.98 放大2倍
else
results=results*9.68;//9.705 放大2倍
resultv=results;
send_I_V_P[1]=resultv;
}
a[0+i*4]=results/1000 + '0';
a[1+i*4]=results%1000/100 + '0';
a[2+i*4]=results%100/10 + '0';
a[3+i*4]=results%10 + '0';
DisplayOneChar(0+i*7,1,a[0+i*4]);
DisplayListChar(1+i*7,1,".");
DisplayOneChar(2+i*7,1,a[1+i*4]);
DisplayOneChar(3+i*7,1,a[2+i*4]);
DisplayOneChar(4+i*7,1,a[3+i*4]);
delay_ms(250);
}
ierr = set_current[0]-resulti;
if(ierr>300)ierr=300;
if(ierr<-300)ierr=-300;
DUTY+=(ierr)/30;
}
}
void display()
{
DisplayListChar(5,1,"v");
DisplayListChar(13,1,"A");
/***********顯示設(shè)定電流值**********/
set_dis[0]=set_current[0]/1000 + '0';
set_dis[1]=set_current[0]%1000/100 + '0';
set_dis[2]=set_current[0]%100/10 + '0';
set_dis[3]=set_current[0]%10 + '0';
DisplayOneChar(2,0,set_dis[0]);
DisplayListChar(3,0,".");
DisplayOneChar(4,0,set_dis[1]);
DisplayListChar(5,0,"A");
/***********顯示光標**********/
if(cusor==1)
{
DisplayListChar(2,0," ");
delay_ms(100);
DisplayOneChar(2,0,set_dis[0]);
delay_ms(100);
}
else if(cusor==2)
{
DisplayListChar(4,0," ");
delay_ms(100);
DisplayOneChar(4,0,set_dis[1]);
delay_ms(100);
}
}
void keyscan()
{
//*******************************k1普通顯示******************************************//
if(k1==0) //檢測按鍵K1是否按下
{
delay_ms(2); //消除抖動 一般大約10ms
if(k1==0) //再次判斷按鍵是否按下
{
if(cusor==1)
{
set_current[0]+=1000;
if(set_current[0]>=4000)
set_current[0]=0;
}
else if(cusor==2)
{
set_current[0]+=100;
if(set_current[0]>=4000)
set_current[0]=10;
}
}
while(!k1); //檢測按鍵是否松開
}
//******************************k2**寫*****************************************//
if(k2==0)
{
delay_ms(2); //消抖處理
if(k2==0)
{
if(cusor==1)
{
set_current[0]-=1000;
if(set_current[0]<=0)
set_current[0]=4000;
}
else if(cusor==2)
{
set_current[0]-=100;
if(set_current[0]<=0)
set_current[0]=4000;
}
}
while(!k2);
}
//***************************k3*讀**********************************************//
if(k3==0)
{
delay_ms(2); //消抖處理
if(k3==0)
{
cusor++;
if(cusor>=3)
cusor=0;
}
while(!k3);
}
//***************************k4*啟動**********************************************//
if(k4==0)
{
delay_ms(2); //消抖處理
if(k4==0)
{
bitworkflag[0]++;
if(bitworkflag[0]>=2)
bitworkflag[0]=0;
}
while(!k4);
}
}
復(fù)制代碼
所有資料51hei提供下載:
電子負載固件以及上位機.rar
(1.42 MB, 下載次數(shù): 48)
2019-6-4 14:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2019-6-7 05:35
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者:
右走
時間:
2019-7-12 06:49
看著不錯 不錯
作者:
m182892
時間:
2019-7-12 19:30
有程序沒有原理圖不知道怎么回事。
作者:
nos001
時間:
2019-8-2 13:12
感謝分享,MODBUS始終靜不下心來仔細看一一看。
作者:
luohongguan
時間:
2019-10-22 17:56
能分享原理圖?
作者:
476455919
時間:
2020-10-9 17:39
電子負載怎么校正
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕免费在线
|
一区二区高清
|
成人免费共享视频
|
91高清视频在线观看
|
国产日韩欧美91
|
国产一区二区久久久
|
国产伦一区二区三区久久
|
2023亚洲天堂
|
国产精品成人一区二区三区夜夜夜
|
jdav视频在线观看免费
|
亚洲色图在线观看
|
99国产精品一区二区三区
|
伊人免费观看视频
|
国产目拍亚洲精品99久久精品
|
日本黄色的视频
|
毛片一区二区
|
午夜三区
|
国产欧美日韩一区二区三区
|
精品二区
|
av片免费
|
欧美精品一区在线发布
|
欧美日韩精品亚洲
|
青青久草
|
日韩中文字幕免费在线观看
|
亚洲精品女优
|
www312aⅴ欧美在线看
|
99久久精品国产一区二区三区
|
国产在线网站
|
久久香焦
|
亚洲天堂日韩精品
|
极情综合网
|
97国产精品视频人人做人人爱
|
国产美女免费视频
|
国产精品毛片久久久久久久
|
久久久久亚洲
|
日韩欧美在线视频观看
|
国产一区二区三区在线看
|
爱爱无遮挡
|
国产视频在线一区二区
|
成人在线视频免费观看
|
国产高清无av久久
|