运行VI程序。
(1)启动采样。通道号设置为1,采样间隔设置为1-255范围的数,命令类型设置为0,单击下发命令。下位机收到命令后,启动采样定时器,以设置的采样间隔读取AIN1通道,并上报。
(2)设置采样间隔。通道号设置为1,采样间隔设置为1-255范围的数,命令类型设置为2,单击下发命令。观察收到数据的频率,验证采样间隔是否改变。
(3)停止采样。通道号设置为1,采样间隔设置为1-255范围的任意数,命令类型设置为1,单击下发命令。
下位机上报数据为通道号+A/D转换值,所以截取字符串函数每次取一个字符,通道号对应偏移量为0的字符,A/D转换值为偏移量为1的字符。对于通道为1时,A/D转换值为NTC热敏电阻的电压,需要转换为电阻,最终转换为温度,并用数值显示控件和波形图表显示出来
51单片机部分代码:完整代码见附件
- #include<reg52.h>
- #include "pcf8591.h"
- #define uchar unsigned char
- #define COMMAND_ACTIVE 0 //开始采样命令
- #define COMMAND_DEACTIVE 1 //停止采样命令
- #define COMMAND_CONFIG 2 //配置采样间隔
- #define TL0_X (65536-50000)%256 //T0定时50ms
- #define TH0_X (65536-50000)/256
- uchar interval = 1; //采样间隔,单位:s,默认为1,范围:1~255
- uchar is_enable = 0; //通道使能标志:1-使能 0-禁止
- sbit led_uart_rx = P1^7; //串口RX指示灯,收到字节数据取反
- sbit led_uart_tx = P1^6; //串口TXD发送指示灯,发送2个字节取反
- sbit led_ad_is_working = P1^5; //AD0使能指示
- void init_timer0(); //初始化T0
- void init_uart(); //初始化串口
- void send_ad_data(uchar channel, uchar *pData); //通过串口发送采样数据
- void uart_sendonechar(unsigned char c); //串口发送一个字节数据函数声明
- void delayms(unsigned int n); //ms级延时函数声明
- void main()
- {
- uchar channel_tick = 0;
- uchar nTick = 0; //中断计数
- uchar nChannel = 1; //通道号 通道号: 0-光敏电阻 1-热敏电阻NTC 2-分压电阻W5 3-分压电阻W6
- uchar start = 0; //启动转换标志,1-启动,0-禁止
- uchar ADtemp; //采样数据
- init_uart(); //初始化串口
- init_timer0(); //初始化T0,但不启动
- while(1)
- {
- while(TF0==0);
- TF0 = 0;
- TL0 = TL0_X; //赋初值
- TH0 = TH0_X;
- nTick = nTick + 1; //中断次数+1
- if(nTick==20) //1s定时到
- {
- nTick = 0; //清零
- if(is_enable == 1) //如果使能,则判断采样间隔是否到,到则启动一次采样
- {
- channel_tick = channel_tick + 1;
- if(interval == channel_tick)
- {
- start = 1; //启动一次采样
- channel_tick =0; //清零计数
- }
- }
-
- if(start == 1) //启动采样
- {
- start = 0; //清零采样启动标志
- ADtemp = ReadADC(1); //读取采样数据
- send_ad_data(1,&ADtemp); //发送采样数据
- led_uart_tx = ~led_uart_tx; //串口发送指示灯亮
- delayms(1); //延时1ms ADC一次转换时间为90us,必须等待转换完成,在读取
- //单片机机器周期为1us@12MHz,速度比ADC块,必须等待
复制代码
51单片机程序uart-ADC.zip
(50.13 KB, 售价: 2 E币)
labview工程.zip
(39.24 KB, 售价: 2 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|