//完成串口通信,,数码管显示,,AD DA采样综合使用
#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit beep=P2^3;sbit csda=P3^2;sbit s2=P3^4;//sbit s3=P3^5;sbit wr=P3^6;sbit rd=P3^7;sbit wela=P2^7;sbit dula=P2^6;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar temp=0,flag=0,page=0;
void delay(uint xms) { uint i,j; for(i=xms;i>0;i--) //i=xms即延时约xms毫秒 for(j=110;j>0;j--);}
void initad(){ P0=0x7f; wela=1; wela=0; }
void display(uchar bai,uchar shi,uchar ge){ P0=0x7e; wela=1; wela=0; P0=table[bai]; dula=1; dula=0; delay(5); P0=0x7d; wela=1; wela=0; P0=table[shi]; dula=1; dula=0; delay(5); P0=0x7b; wela=1; wela=0; P0=table[ge]; dula=1; dula=0; delay(5); }
void ad(){
wr=1; wr=0; delay(5); wr=1; display(temp/100,temp/10%10,temp%10); rd=0; temp=P1; delay(5); rd=1; delay(10); }void da(){ csda=0; wr=0; delay(10); P0=temp;}
void initse(){ EA=1; SM0=0; SM1=1; REN=1; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; ES=1;}
void main(){ initad(); initse(); while(1) { if(s2==0&&flag==0) { delay(5); while(s2==0) { ad(); display(temp/100,temp/10%10,temp%10); } flag=1; P0=0x7f; wela=1; wela=0; } if(s2==0&&flag==1) { flag=0; delay(5); while(s2==0) da(); } if(page==1) { SBUF=0xff; while(!TI); TI=0; page=0; ad(); } display(temp/100,temp/10%10,temp%10); }}
void ser() interrupt 4{ RI=0; page=1;}