2019-5-30 15:13 上傳
點(diǎn)擊文件名下載附件
圖中畫的溫感是搜索得來(lái)的,可忽略,
請(qǐng)大神幫忙在此基礎(chǔ)上修改或者添加
請(qǐng)大神幫忙在此基礎(chǔ)上修改或者添加
1、功能要求利用鍵盤選擇采集的數(shù)據(jù)通道;一路為溫度,范圍為0-255攝氏度,一路為壓強(qiáng),范圍為0-255Pa。
2、硬件設(shè)計(jì)
2.1硬件電路芯片的選擇
ATC89C51單片機(jī),A/D轉(zhuǎn)換用ADC0809
原理圖
3軟件設(shè)計(jì)
c語(yǔ)言沒(méi)學(xué)過(guò),半學(xué)半推中實(shí)在不會(huì)寫,但是可以看懂部分,急用!!急用!急用
下面是程序,只找到了壓感的程序,溫感不知道怎么把程序加進(jìn)去
#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()// 延時(shí)函數(shù)
{
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 // 定時(shí)器中斷服務(wù)函數(shù) ; 作用 : 產(chǎn)生 CLK 信號(hào)
{
TH0=(65536-200)/256;
TL0=(65536-200)%256;
CLK=~CLK;
}
void main()// 主函數(shù)
{
uchar sj=0,ge=0,shi=0,bai=0,qian=0;
uint temp;
TMOD=0x01;
TH0=(65536-200)/256;// 定時(shí)時(shí)間為 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;// 關(guān)閉轉(zhuǎn)換
OE=0;// 關(guān)閉輸出
ST=1;// 開(kāi)啟轉(zhuǎn)換
ST=0;// 關(guān)閉轉(zhuǎn)換
while(EOC==0);// 判斷是否轉(zhuǎn)換結(jié)束 : 是則執(zhí)行以下語(yǔ)句 , 否則等待
OE=1;// 開(kāi)啟數(shù)據(jù)輸出允許
sj=P0;// 將數(shù)據(jù)取走 , 存放在變量 sj 中
OE=0;// 關(guān)閉輸出
temp=sj;// 電壓值轉(zhuǎn)換 ,5V 作為參考電壓 , 分成 256 份
qian=temp/1000; // 個(gè)位
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;
}
}