工具箱中添加progressBar
添加一个事件函数,用于串口接收数据,并显示电压值。
private void PortDataReceivedEvent(object sender, SerialDataReceivedEventArgs args) //串口数据接收
{
// string str = Convert.ToString(serialPort1.ReadByte());
string Data = serialPort1.ReadExisting();
int tempdata = Convert.ToInt32(Data);
progressBar1.Value= tempdata;
Int32 num = tempdata, numint = num / 1000, numf = num - numint * 1000;
label3.Text = Convert.ToString(numint)+"."+Convert.ToString(numf);
}
事件函数需要在窗口函数中添加注册,这样窗口加载后就可以直接进行数据接收
private void Form1_Load(object sender, EventArgs e)
{
SearchAndAddSerialToComboBox(serialPort1, comboBox1);
//for (int i=1;i<21;i++)
//{
// comboBox1.Items.Add("COM" + i.ToString());
//}
//comboBox1.Text = "COM4";
comboBox2.Text = "115200";
serialPort1.DataReceived += new SerialDataReceivedEventHandler(PortDataReceivedEvent);
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
}
由于C#中数据类型转换比较繁琐,所以这里采集到的电压值进行小数点分开赋值给labei3,
当处于3.3V,0V,以及浮空状态时候结果如下:
这里STM32部分采用ADC进行扫描,其中主函数和ADC函数如下:
#include "main.h"
int main(void)
{
u16 i=1,voltage;
u16 adcx;
float temp;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
LCD_Init();
Adc_Init(); //ADC初始化
KEY_Init();
POINT_COLOR=RED;//设置字体为红色
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");
LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
temp=(float)adcx*(3.3/4096);
adcx=temp;
LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,170,temp,3,16,0X80);// 小数部分
LED0=!LED0;
delay_ms(250);
int
voltage=1000*adcx+temp;
printf("%d\r\n",voltage);
// for( i=0;i<100;i++)
// {
// printf("%d",i);
// delay_ms(1000);
// }
// printf("1");
}
}
ADC的采样函数:
u16 Get_Adc_Average(u8 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
delay_ms(5);
}
return temp_val/times;
}
STM32F103带有三路ADC通道,其中CH是采样通道,times是采样时间。
原工程文件放在这里
有需要可以自取。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)