線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1934
推到 Plurk!
推到 Facebook!

把溫度的值如何透過RS232傳送到電腦

尚未結案
a25821346
一般會員


發表:2
回覆:3
積分:1
註冊:2013-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-09-17 13:40:08 IP:61.20.xxx.xxx 訂閱
以下是我溫度感測程式,我想把溫度傳送到電腦上要怎寫程式?

#include "reg51.h"
unsigned char xdata ADC_Port ;
int sample=5000;
char num=0;
unsigned char value;
unsigned char buffer[4]={0,0,0,0};
void convert(void);
void display(void);
main()
{
IE=0x83;
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
TCON=0x01;
TR0=1;
P1=0xff;
ADC_Port=0;
while(1);
}
void EX0_int(void)interrupt 0
{
while(--sample==0)
{
sample=4000;
value=ADC_Port;
convert();
}
ADC_Port=0;
} /*EX0_INT*/
void T0_int(void)interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
display();
}
void convert(void)
{
unsigned int temp;
temp=4*value;
buffer[0]=temp/1000;
buffer[1]=(temp00)/100;
buffer[2]=((temp00)0)/10;
buffer[3]=((temp00)0);
}
void display(void)
{
char i;
i=num;
i<<=4;
i =buffer[num];
P1=i;
num ;
if(num==4)
num=0;
}
aki
版主


發表:30
回覆:687
積分:753
註冊:2004-01-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-10-02 07:21:02 IP:111.243.xxx.xxx 訂閱

給你一個概念,你所得到的溫度應該是一個數字(value),
你只要把這個數字丟給 UART 就可以透過 UART/RS232 傳給 PC,

你可以再去參考 8051 寫 UART or RS-232 的那一段,研讀一下就可以了.
PC 端目前都是 XP, VISTA, WIN8, 所以不一定有 HyperTerminal 的這個軟體可以接收
RS232 傳來的資料,去下載一些免費的軟體, 一樣可以做到的.

===================引 用 a25821346 文 章===================
以下是我溫度感測程式,我想把溫度傳送到電腦上要怎寫程式?

#include "reg51.h"
unsigned char xdata ADC_Port ;
int sample=5000;
char num=0;
unsigned char value;
unsigned char buffer[4]={0,0,0,0};
void convert(void);
void display(void);
main()
{
IE=0x83;
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
TCON=0x01;
TR0=1;
P1=0xff;
ADC_Port=0;
while(1);
}
void EX0_int(void)interrupt 0
{
while(--sample==0)
{
sample=4000;
value=ADC_Port;
convert();
}
ADC_Port=0;
} /*EX0_INT*/
void T0_int(void)interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
display();
}
void convert(void)
{
unsigned int temp;
temp=4*value;
buffer[0]=temp/1000;
buffer[1]=(temp00)/100;
buffer[2]=((temp00)0)/10;
buffer[3]=((temp00)0);
}
void display(void)
{
char i;
i=num;
i<<=4;
i =buffer[num];
P1=i;
num ;
if(num==4)
num=0;
}
a25821346
一般會員


發表:2
回覆:3
積分:1
註冊:2013-08-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-10-07 19:42:09 IP:120.96.xxx.xxx 訂閱
改成這樣呢?? 



#include "reg51.h"
unsigned char xdata ADC_Port ;
int sample=5000;
char num=0;
unsigned char value;
unsigned char buffer[4]={0,0,0,0};
void convert(void);
void display(void);
main()
{
IE=0x93;
TMOD=0x21;
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
TH1=255;
TCON=0x01;
SCON=0x50;
TR0=1;
TR1=1;
P1=0xff;
ADC_Port=0;
TI=1;
while(1);
}
void EX0_int(void)interrupt 0
{
while(--sample==0)
{
sample=4000;
value=ADC_Port;
convert();
}
ADC_Port=0;
} /*EX0_INT*/
void T0_int(void)interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
display();
}
void SCON_int(void)interrupt 4
{
if(TI==1)
TI=0;
else
{
RI=0;
SBUF=value;
}
}
void convert(void)
{
unsigned int temp;
temp=4*value;
buffer[0]=temp/1000;
buffer[1]=(temp00)/100;
buffer[2]=((temp00)0)/10;
buffer[3]=((temp00)0);
}
void display(void)
{
char i;
i=num;
i<<=4;
i =buffer[num];
P1=i;
num ;
if(num==4)
num=0;
}
系統時間:2017-10-22 7:00:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!