本帖最后由 佐小檸 于 2019-5-30 20:08 編輯
此圖我自己了解畫的,新人一枚,實在不會,后面附帶仿真文件
多路數據采集系統設計.zip
(129.26 KB, 下載次數: 56)
2019-5-30 15:13 上傳
點擊文件名下載附件
圖中畫的溫感是搜索得來的,可忽略,
請大神幫忙在此基礎上修改或者添加
請大神幫忙在此基礎上修改或者添加
1、功能要求利用鍵盤選擇采集的數據通道;一路為溫度,范圍為0-255攝氏度,一路為壓強,范圍為0-255Pa。
2、硬件設計
2.1硬件電路芯片的選擇
ATC89C51單片機,A/D轉換用ADC0809
原理圖
3軟件設計
c語言沒學過,半學半推中實在不會寫,但是可以看懂部分,急用!!急用!急用
下面是程序,只找到了壓感的程序,溫感不知道怎么把程序加進去
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code tab[]={0x3f ,0x06,0x5b,0x4f ,0x66,0x6d,0x7d,0x07,0x7f ,0x6f };
uchar code tab1[]={0xfe,0xfd,0xfb,0xf7};
uchar dis_buf[4];
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit AA=P3^5;
sbit BB=P3^6;
sbit CC=P3^7;
void delay()// 延時函數
{
uchar t;
for(t=0;t<250;t++);
}
void display()
{
uchar j;
for(j=0;j<4;j++)
{
P1=tab[dis_buf[j]];
P2=tab1[j];
delay();
P2=0xff;
}
}
void t1() interrupt 1 // 定時器中斷服務函數 ; 作用 : 產生 CLK 信號
{
TH0=(65536-200)/256;
TL0=(65536-200)%256;
CLK=~CLK;
}
void main()// 主函數
{
uchar sj=0,ge=0,shi=0,bai=0,qian=0;
uint temp;
TMOD=0x01;
TH0=(65536-200)/256;// 定時時間為 0.2us, 亦即 CLK 周期為 0.4us
TL0=(65536-200)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
// P3=0x0f //選擇通道0
// AA=0;// 選擇通道 0
// BB=0;
// CC=0;
ST=0;// 關閉轉換
OE=0;// 關閉輸出
ST=1;// 開啟轉換
ST=0;// 關閉轉換
while(EOC==0);// 判斷是否轉換結束 : 是則執行以下語句 , 否則等待
OE=1;// 開啟數據輸出允許
sj=P0;// 將數據取走 , 存放在變量 sj 中
OE=0;// 關閉輸出
temp=sj;// 電壓值轉換 ,5V 作為參考電壓 , 分成 256 份
qian=temp/1000; // 個位
bai=(temp-qian*1000)/100;// 十位
shi=(temp-qian*1000-bai*100)/10;// 百位
ge=temp-qian*1000-bai*100-shi*10;// 千位
dis_buf[0]=ge;
dis_buf[1]=shi;
dis_buf[2]=bai;
dis_buf[3]=qian;
display();
OE=0;
}
}
|