ADC数据的显示方法

在这里插入图片描述

加上下列编码便可完成支持汉字的特性,可以支持GB2312汉字

  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPort1.DataReceived += new     
            SerialDataReceivedEventHandler(port_DataReceived);//串口数据接收事件
            serialPort1.Encoding = Encoding.GetEncoding("GB2312");//串口接收编码
            System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;  //
        }

下位机每收到一个字节的数据的时候都会中断一次,软件是4个字节中断一次

操作系统的串口是非实时性的,所以一次串口中断可能是多个字节,PC端不是实时响应的,是隔一段时间响应的

 private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) 
 //串口接收事件
        {
            if (!radioButton3.Checked)
            {
                textBox1.AppendText(serialPort1.ReadExisting()); 
                //串口类会自动处理汉字,所以不需要特别转换(缓冲区的字符推送到TEXBOX中)
            }
            else//单字节接收
            {
                //收到的字节是个数组,所以需要定义一个数组serialPort1.BytesToRead就是需要读取的中断字节数
                byte[] data = new byte[serialPort1.BytesToRead];
                //定义缓冲区,因为串口事件触发时有可能收到不止一个字节
                serialPort1.Read(data, 0, data.Length);//data.Length等同于serialPort1.BytesToRead输入的数组长度
                foreach (byte Member in data) //遍历用法
                {
                    string str = Convert.ToString(Member, 16).ToUpper();
                    textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");
                }
            }
        }

ADC数据的显示方法

在这里插入图片描述

接10K电位器

在这里插入图片描述

KILE上

void main (void){
	//unsigned char R;
	//初始程序
	UART_init();
	Read_init(7);
	while(1){
		ADC_Read ();
		UART_T (ADC_RES); //串口小秘书,在括号里放入需要观察的数值(char)
		DELAY_MS (1000);//做了1s钟的延迟
	}
}

ADC输入是P1.7(17) ,电位器左边接5V,右边接GND,中间接1.7管脚

串口波特率4800

发送间隔1秒

在这里插入图片描述

可以接光敏电阻,温度电阻之类的

串口是在另一个线性程上处理的,所以不能操作主线程序处理这个东西,加个开关可以防止跨线程操作的东西

跨线程是指在WINDOW中有好多个进程,他只有一个进程,但是内部是有线程的,主线程就好像我们看到的QQ界面或者网络通信线程,它负责在后台。就好像微信中有没有好友发消息,有没有新闻要推送。一个线程在操作另一个线程的东西的时候,容易产生一个并发错误,其实不太容易涉及到这些东西

可以百度下“并发错误”了解下

其中System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

就是默认它进行多线程的检查操作,线程间的操作检查,这样我们就可以在操作那些其他窗口

public partial class Form1 : Form
    {
        public Form1()//构造函数
        {
            InitializeComponent();
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(PortDataReceivedEvent);
            //**添加串口数据接受事件**
            System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; 
            //串口是在另一个线性cheng上处理的,所以不能操作主线程序这个东西
        }

ADC

 private void PortDataReceivedEvent(object sender, SerialDataReceivedEventArgs args)
                          //串口数据接收
        {
            byte Data = (byte)serialPort1.ReadByte();  
          //读字节
            progressBar1.Value = Data; 
               //进度条赋值
        }

按下打开串口就是要接收数据了

窗体的大小

 private void button1_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen) 
             //判断
            {
                groupBox2.Visible = false;
                //第二个框框可见
                this.Size = new Size(620, 117);
                //缩小
                serialPort1.Close();
                            //此处可不加try,catch
                button1.Text = "打开串口";
            }
            else
            {
                try
                {
                    serialPort1.PortName = comboBox1.Text;
                    //串口号
                    serialPort1.Open();                                                                            
                    //打开
                    groupBox2.Visible = true;                                                                      
                    //第二个框框可见
                    this.Size = new Size(620, 172);                                                                
                    //放大
                    button1.Text = "关闭串口";                                                                     
                    //按键标题
                }
                catch
                {
                    MessageBox.Show("串口打开错误", "错误");
                }

            }
        }
    }

设置按钮的位置,开始前按钮在右边,按下后按钮在中间

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值