51的综合应用程序

    技术2024-07-23  65

    //完成串口通信,,数码管显示,,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;}

    最新回复(0)