return(t*10); }
void display(uchar L1,uchar L2,uchar L3) //温度数据显示程序 { P21=0;P0=L1;delay(1); P21=1; P22=0;P0=L2;delay(1); P22=1; P23=0;P0=L3;delay(1); P23=1; if(flag==1){P20=0;P0=0x40;delay(1);P20=1;} }
void Display_Result(uchar d) //电压显示部分 {
uchar t; uchar s;
uchar w; //采集的数值为d uchar y; t=d/51; //分出百位 s=dQ; //余数存入s中 w=s/5; //分出十位 y=s%5; //分出个位
P23 = 0;
P0 = LEDData[y]; delay(1); P23=1; P22 = 0; //显示个位十位百位数值,其中百位调用有小数点的代码 P0 = LEDData[w]; delay(1); P22 = 1; P21=0;
P0 = LEDData1[t]; delay(1); P21=1; P20=0;
P0 = LEDData[0]; delay(1); P20=1; }
void main() {
uchar i,d,temp,s; EA=1; EX0=1; IT0=1; //2个中断开启,都采用跳沿触发
12
EX1=1; IT1=1;
AT=0; //初始选择通道INT0 WD=0; //初始选择读取电压 while(1) {
CLK=0;
TMOD=0x10;
TH1=(65536-100)/256; TL1=(65536-100)%6; EA=1; ET1=1; TR1=1; ST = 0;
ST = 1; //开启ADC转换 ST = 0; while(1) {
if(WD==0){do{} while(!EOC); OE = 1; //ADC输出允许 d=P1;
for(i=0;i<8;i++)
{ temp=temp<<1;s=d>>i;if(s&0x01){temp=temp|0x01; } d=temp;
Display_Result(d);//显示数值 if(AT==0) //当选择通道INT0时 { if(d>0x80) //电压超过2.5V { P35=0; // 扬声器响,LED亮 P36=0;
delay(10); //延时后LED灭,实现LED闪烁 P35=1; delay(10); } else {
P35=1; //电压未超过1.25V时,扬声器不响,LED也不亮 P36=1; } } else //若选择通道INT1 {
if(d>0xC0) //电压超过3.75V时 {
P35=0; // 扬声器响,LED亮 P36=0; delay(10);
13
} P35=1; //延时后LED灭,实现LED 闪烁 delay(10); } else {
P35=1; //电压未超过2.5V时,扬声器不响,LED也不亮 P36=1; } }
OE = 0; //输出允许关闭 ST = 0;
ST = 1; //开启ADC转换 ST = 0; }
else { uint i; P35=1; // 扬声器不响,LED也不亮 P36=1; i=ReadTemperature();
display(LEDData[i/1000],LEDData1[i00/100],LEDData[i0/10]); } } } }
void INTT0() interrupt 0 {
WD=!WD; //功能选择 的中断程序 }
void INTT1() interrupt 2 {
AT=!AT; //通道选择 的中断程序 }
void T1ZD()interrupt 3 {TH1=(65536-100)/256; TL1=(65536-100)%6; CLK=~CLK; }
14
6硬件制造流程
6.1 PCB图
6.2制板流程
洗板 热转印 腐蚀铜板 钻孔 焊元器件 涂松脂 除碳
15
相关推荐: