|
發布時間: 2020-7-10 15:59
正文摘要:要做一個數據采集傳輸系統,采集以做出,不知道怎樣實現串口通信。下面是找的相似的程序,不知怎么改 #include<reg51.h> unsigned char code Tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} void S ... |
|
如果只有這12位可以不用Tab,直接發兩個字節就好了。 |
ll66m 發表于 2020-7-11 11:16 會放了。 |
hsl32 發表于 2020-7-11 08:14 怎樣把我測得的十二位數據放在Tab里啊 |
hsl32 發表于 2020-7-11 08:14 好的,我試試 |
ll66m 發表于 2020-7-10 17:57 你不是讀了溫度,在LCD1液晶上顯示了嘛,把這個溫度發出去就好了。MAX6675讀出來的溫度是12位的,一般占用2個字節,而串口一次只能發送一個字節,所以要發兩次。先發高還是低字節自己定義。串口不是一直發數據,而是讀出MAX6675的溫度一次,就發一次數據,我要一個讀好標志是因為讀溫度和串口發送是獨立分開的,所以要一個標志告訴串口發送程序可以發送了(標志要清除,不然會一直發不停)。如果讀溫度和串口發送合在一起就不用標志了,也就是讀溫度程序和串口發送都放在while()里面(還有LCD顯示),讀溫度然后接著串口發送,一直循環。 |
2個蛋騙雞加載同一個程序,本程序甲乙蛋騙雞互發數字在數碼管中顯示。
|
hsl32 發表于 2020-7-10 17:21 溫度讀好用代碼怎么表示呀,還有溫度低字節,高字節,清溫度讀好標志, |
|
如果不想保存在單片機內部的話可以直接將得到的數據直接通過串口發出去 void Send(unsigned char 采集到的數據) { SUBF=采集到的數據; while(TI==0); TI=0; } 將send函數放到你程序中的while(1)函數中不斷輪詢,串口初始化就不用再說了,在程序初始化時加上 |
| void Send(unsigned char dat) { SUBF=dat; while(TI==0); TI=0; } |
|
如果數據比較多,可以保留Tab[],數據放Tab[]里面 while(溫度讀好) { //清溫度讀好標志; for=(i=0;i<個數;i++) { Send(Tab[i]); // 你的文件少了 [i] dely(); } } |
| 這是發送程序,接收的? |
|
// 1.不要 Tab[] // 2 while(1) 改成: while(溫度讀好) { //清溫度讀好標志; P23 = 1; //置485發送模式 Send(溫度低字節); dely(); Send(溫度高字節); } // 接收那邊 U3P20 = 0 ; 置485發送模式 // 串口接收數據,2個字節,判斷一下高低字節。送顯示。 // 這個只是簡單的通訊測試。實際應用是要有通訊協議的,一般RS485用Modebus通訊協議。 |