欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求大神指點兩單片機串口傳輸數據的程序 [打印本頁]

作者: ll66m    時間: 2020-7-10 15:59
標題: 求大神指點兩單片機串口傳輸數據的程序
要做一個數據采集傳輸系統,采集以做出,不知道怎樣實現串口通信。下面是找的相似的程序,不知怎么改

#include<reg51.h>
unsigned char code Tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
void Send(unsigned char dat)
{
SUBF=dat;
while(TI==0);
TI=0;
}
void dely(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
;
}
void main{void}
{
unsigned char i;
TMOD=0x20;
SCON=0x40;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TR1=1;
while(1)
{
for=(i=0;i<8;i++)
{
Send(Tab[ i]);
dely();
}
}
}


作者: hsl32    時間: 2020-7-10 15:59
// 1.不要 Tab[]
// 2 while(1) 改成:
while(溫度讀好)
{
    //清溫度讀好標志;
    P23 = 1; //置485發送模式
    Send(溫度低字節);
    dely();
    Send(溫度高字節);
}
// 接收那邊 U3P20 = 0 ; 置485發送模式
// 串口接收數據,2個字節,判斷一下高低字節。送顯示。
// 這個只是簡單的通訊測試。實際應用是要有通訊協議的,一般RS485用Modebus通訊協議。
作者: xianfajushi    時間: 2020-7-10 16:25
這是發送程序,接收的?
作者: hsl32    時間: 2020-7-10 17:30
如果數據比較多,可以保留Tab[],數據放Tab[]里面
while(溫度讀好)
{
    //清溫度讀好標志;
    for=(i=0;i<個數;i++)
   {
      Send(Tab[i]); // 你的文件少了 [i]
     dely();
   }
}
作者: s8824803    時間: 2020-7-10 17:53
void Send(unsigned char dat) { SUBF=dat; while(TI==0); TI=0; }
作者: s8824803    時間: 2020-7-10 17:57
如果不想保存在單片機內部的話可以直接將得到的數據直接通過串口發出去
void Send(unsigned char 采集到的數據)
{
SUBF=采集到的數據;
while(TI==0);
TI=0;
}
將send函數放到你程序中的while(1)函數中不斷輪詢,串口初始化就不用再說了,在程序初始化時加上
作者: ll66m    時間: 2020-7-10 17:57
hsl32 發表于 2020-7-10 17:21
// 1.不要 Tab[]
// 2 while(1) 改成:
while(溫度讀好)

溫度讀好用代碼怎么表示呀,還有溫度低字節,高字節,清溫度讀好標志,
作者: xianfajushi    時間: 2020-7-11 07:58
2個蛋騙雞加載同一個程序,本程序甲乙蛋騙雞互發數字在數碼管中顯示。




作者: hsl32    時間: 2020-7-11 08:14
ll66m 發表于 2020-7-10 17:57
溫度讀好用代碼怎么表示呀,還有溫度低字節,高字節,清溫度讀好標志,

你不是讀了溫度,在LCD1液晶上顯示了嘛,把這個溫度發出去就好了。MAX6675讀出來的溫度是12位的,一般占用2個字節,而串口一次只能發送一個字節,所以要發兩次。先發高還是低字節自己定義。串口不是一直發數據,而是讀出MAX6675的溫度一次,就發一次數據,我要一個讀好標志是因為讀溫度和串口發送是獨立分開的,所以要一個標志告訴串口發送程序可以發送了(標志要清除,不然會一直發不停)。如果讀溫度和串口發送合在一起就不用標志了,也就是讀溫度程序和串口發送都放在while()里面(還有LCD顯示),讀溫度然后接著串口發送,一直循環。
作者: ll66m    時間: 2020-7-11 10:29
hsl32 發表于 2020-7-11 08:14
你不是讀了溫度,在LCD1液晶上顯示了嘛,把這個溫度發出去就好了。MAX6675讀出來的溫度是12位的,一般占 ...

好的,我試試
作者: ll66m    時間: 2020-7-11 11:16
hsl32 發表于 2020-7-11 08:14
你不是讀了溫度,在LCD1液晶上顯示了嘛,把這個溫度發出去就好了。MAX6675讀出來的溫度是12位的,一般占 ...

怎樣把我測得的十二位數據放在Tab里啊
作者: ll66m    時間: 2020-7-11 12:02
ll66m 發表于 2020-7-11 11:16
怎樣把我測得的十二位數據放在Tab里啊

會放了。
作者: hsl32    時間: 2020-7-11 12:36
ll66m 發表于 2020-7-11 12:02
會放了。

如果只有這12位可以不用Tab,直接發兩個字節就好了。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1