国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標(biāo)題:
LabVIEW讀取和顯示溫度曲線 51單片機(jī)做下位機(jī)
[打印本頁]
作者:
coolfire
時(shí)間:
2020-12-12 23:09
標(biāo)題:
LabVIEW讀取和顯示溫度曲線 51單片機(jī)做下位機(jī)
運(yùn)行VI程序。
(1)啟動(dòng)采樣。通道號(hào)設(shè)置為1,采樣間隔設(shè)置為1-255范圍的數(shù),命令類型設(shè)置為0,單擊下發(fā)命令。下位機(jī)收到命令后,啟動(dòng)采樣定時(shí)器,以設(shè)置的采樣間隔讀取AIN1通道,并上報(bào)。
(2)設(shè)置采樣間隔。通道號(hào)設(shè)置為1,采樣間隔設(shè)置為1-255范圍的數(shù),命令類型設(shè)置為2,單擊下發(fā)命令。觀察收到數(shù)據(jù)的頻率,驗(yàn)證采樣間隔是否改變。
(3)停止采樣。通道號(hào)設(shè)置為1,采樣間隔設(shè)置為1-255范圍的任意數(shù),命令類型設(shè)置為1,單擊下發(fā)命令。
下位機(jī)上報(bào)數(shù)據(jù)為通道號(hào)+A/D轉(zhuǎn)換值,所以截取字符串函數(shù)每次取一個(gè)字符,通道號(hào)對(duì)應(yīng)偏移量為0的字符,A/D轉(zhuǎn)換值為偏移量為1的字符。對(duì)于通道為1時(shí),A/D轉(zhuǎn)換值為NTC熱敏電阻的電壓,需要轉(zhuǎn)換為電阻,最終轉(zhuǎn)換為溫度,并用數(shù)值顯示控件和波形圖表顯示出來
1.png
(58.14 KB)
下載附件
2020-12-12 23:07 上傳
2.png
(12.1 KB)
下載附件
2020-12-12 23:07 上傳
51單片機(jī)部分代碼:
完整代碼見附件
#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定時(shí)50ms
#define TH0_X (65536-50000)/256
uchar interval = 1; //采樣間隔,單位:s,默認(rèn)為1,范圍:1~255
uchar is_enable = 0; //通道使能標(biāo)志:1-使能 0-禁止
sbit led_uart_rx = P1^7; //串口RX指示燈,收到字節(jié)數(shù)據(jù)取反
sbit led_uart_tx = P1^6; //串口TXD發(fā)送指示燈,發(fā)送2個(gè)字節(jié)取反
sbit led_ad_is_working = P1^5; //AD0使能指示
void init_timer0(); //初始化T0
void init_uart(); //初始化串口
void send_ad_data(uchar channel, uchar *pData); //通過串口發(fā)送采樣數(shù)據(jù)
void uart_sendonechar(unsigned char c); //串口發(fā)送一個(gè)字節(jié)數(shù)據(jù)函數(shù)聲明
void delayms(unsigned int n); //ms級(jí)延時(shí)函數(shù)聲明
void main()
{
uchar channel_tick = 0;
uchar nTick = 0; //中斷計(jì)數(shù)
uchar nChannel = 1; //通道號(hào) 通道號(hào): 0-光敏電阻 1-熱敏電阻NTC 2-分壓電阻W5 3-分壓電阻W6
uchar start = 0; //啟動(dòng)轉(zhuǎn)換標(biāo)志,1-啟動(dòng),0-禁止
uchar ADtemp; //采樣數(shù)據(jù)
init_uart(); //初始化串口
init_timer0(); //初始化T0,但不啟動(dòng)
while(1)
{
while(TF0==0);
TF0 = 0;
TL0 = TL0_X; //賦初值
TH0 = TH0_X;
nTick = nTick + 1; //中斷次數(shù)+1
if(nTick==20) //1s定時(shí)到
{
nTick = 0; //清零
if(is_enable == 1) //如果使能,則判斷采樣間隔是否到,到則啟動(dòng)一次采樣
{
channel_tick = channel_tick + 1;
if(interval == channel_tick)
{
start = 1; //啟動(dòng)一次采樣
channel_tick =0; //清零計(jì)數(shù)
}
}
if(start == 1) //啟動(dòng)采樣
{
start = 0; //清零采樣啟動(dòng)標(biāo)志
ADtemp = ReadADC(1); //讀取采樣數(shù)據(jù)
send_ad_data(1,&ADtemp); //發(fā)送采樣數(shù)據(jù)
led_uart_tx = ~led_uart_tx; //串口發(fā)送指示燈亮
delayms(1); //延時(shí)1ms ADC一次轉(zhuǎn)換時(shí)間為90us,必須等待轉(zhuǎn)換完成,在讀取
//單片機(jī)機(jī)器周期為1us@12MHz,速度比ADC塊,必須等待
復(fù)制代碼
51單片機(jī)程序uart-ADC.zip
(50.13 KB, 售價(jià): 2 E幣)
2020-12-12 23:08 上傳
點(diǎn)擊文件名下載附件
售價(jià): 2 E幣
[記錄]
[
購買
]
labview工程.zip
(39.24 KB, 售價(jià): 2 E幣)
2020-12-12 23:08 上傳
點(diǎn)擊文件名下載附件
售價(jià): 2 E幣
[記錄]
[
購買
]
歡迎光臨 ELEOK (http://www.afoofa.cn/)
Powered by Discuz! X5.0