sbit DE_RE=P3^4;
long tvalue; //温度值 为传送信号声明 uchar bai,shi,ge; uchar zhi2m,zhi2n;
void txdata(unsigned char dat) {
DE_RE=1; SBUF=dat; while(!TI);
//等待数据发送完毕 TI=0; DE_RE=0; }
main() {
int i=0,j=0; init_1602(); while(1) {
if(flag==1) {
TR0=0; //EX0=0; //ET0=0; SCON=0X50; //串口工作方式初始化 PCON=0X00; TMOD|=0X20; EA=1; TL1=0XFD;
TH1=0XFD; //波特率9600 TR1=1;
DE_RE=0; //接收数据模式 txdata(0x66); RI=0;
while(!RI); RI=0;
delay(20); zhi2m=SBUF; txdata(0x77); RI=0;
while(!RI); RI=0;
delay(20); zhi2n=SBUF;
tvalue=zhi2m*256+zhi2n;
35
if(tvalue>0) {
bai=tvalue/100;
shi=tvalue0/10; ge=tvalue; }
display1(1,0,'w'); display1(1,1,'e'); display1(1,2,'n'); display1(1,3,'d'); display1(1,4,'u'); display1(1,5,0x3a); display1(1,6,bai+48); display1(1,7,shi+48); display1(1,8,0X2e); display1(1,9,ge+48); display1(1,10,0xdf); display1(1,11,0x43); flag=0; } else {
TR1=0; EX0=1; ET0=1; IT0=1;// TMOD|=0x01; EA=1; TH0=0x3c; TL0=0xaf; TR0=1;
h=jishu()*6/14; delay(40); if(h!=0) {
r=(320000/h-330)/2; } else {
r=0; }
/*display1(2,7,table2[h/10000]);//获取计数值的万位 display1(2,8,table2[h/1000]); // 获取计数值的千位 display1(2,9,table2[h/100]); // 获取计数值的百位 display1(2,10,table2[h/10]); // 获取计数值的十位
36
display1(2,11,table2[h]); // 获取计数值的个位 */
display1(2,0,'s'); display1(2,1,'h'); display1(2,2,'u'); display1(2,3,'i'); display1(2,4,'z'); display1(2,5,'h'); display1(2,6,'i'); display1(2,7,0x3a);
display1(2,8,table2[r/10000]);//获取计数值的万位 display1(2,9,table2[r/1000]); // 获取计数值的千位 display1(2,10,table2[r/100]); // 获取计数值的百位 display1(2,11,table2[r/10]); // 获取计数值的十位 display1(2,12,table2[r]); // 获取计数值的个位 flag=1; } } }
void external0() interrupt 0 //外部中断0中断程序 {
num++; }
void timer0() interrupt 1 //定时器0中断程序 {
TH0=0x3c; TL0=0xaf; l++; }
jishu() {
while(l==20) //定时器定时50ms,故20次中断就表示1秒钟到达 {
f=num; num=0; l=0; }
if(f>0) return f; }
37
附录(4).作品图片
38