|
甲机
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define Data_ADC0809 P1 //????P1???Data_ADC0809 ???????????Data_ADC0809??????P1???
- uchar temp; //??????ADC????
- //ADC0809
- sbit ST=P3^3;
- sbit EOC=P3^6;
- sbit OE=P3^2;
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- sbit led0=P0^0;
- sbit led1=P0^3;
- sbit key=P3^5;
- uchar count,a;
- extern uchar ADC0809();
- void delay(uint z)
- {
- uint i,j;
- for(i=z;i>0;i--)
- for(j=120;j>0;j--);
- }
- void put(uchar c)
- {
- SBUF=c;
- while(!TI);
- TI=0;
- }
- void init()
- {
- TMOD=0x20;
- TH1=0XFD;
- TL1=0XFD;
- SCON=0X50;
- TR1=1;
- EA=1;
- ES=1;
- }
- //ADC0809??????
- uchar ADC0809()
- {
- uchar temp_=0x00;
- //??????????
- OE=0;
- //????????
- ST=0;
- //??????
- ST=1;
- ST=0;
- //???ж???AD???????
- while(EOC==0)
- //????????AD?
- OE=1;
- temp_=Data_ADC0809;
- OE=0;
- return temp_;
- }
- void main() //??????
- {
- P2=0x00;
- init();
- while(1)
- {
-
- temp=ADC0809(); //????????
-
-
- if(key==0)
- {
- delay(10);
- if(key==0)
- {
- put(temp);
- }
- }
-
- delay(100);
- }
- }
- void ser() interrupt 4 //????
- {
- if(RI==1)
- {
- a=SBUF;
- RI=0;
- P2=table[a];
- }
- }
复制代码
乙机
- #include<reg51.h> //????
- #define uchar unsigned char
- #define uint unsigned int
- sbit key =P3^6; //????
- sbit spwm =P1^0; //pwm????
- uchar a,pwm,flag,t; //???????????
- uint num=0;
- uchar count=-1;
- void delay(uint z)
- {
- uint i,j;
- for(i=z;i>0;i--)
- for(j=110;j>0;j--);
- }
- /**************************************
- 1602???
- **************************************/
- sbit RS = P2^5; //lcd??????????
- sbit RW = P2^6;
- sbit E = P2^7;
- /**************************************
- ?????
- **************************************/
- void delay5ms()
- {
- uchar i,v,k;
- for(i=1;i>0;i--)
- for(v=168;v>0;v--)
- for(k=22;k>0;k--);
- }
- /**************************************
- д???
- **************************************/
- void lcd_Write_com(uchar com)
- {
- RS=0; //???????????
- RW=0; //д????
- P0=com; //д???
- delay5ms(); E=1; //????????
- delay5ms(); E=0; //?????????
- }
- /**************************************
- д????
- **************************************/
- void lcd_write_date(uchar date)
- {
- RS=1; //????????????
- RW=0; //д????
- P0=date; //д????
- delay5ms(); E=1; //????????
- delay5ms(); E=0; //?????????
- }
- /**************************************
- ???????
- **************************************/
- void dis_lcd1602(uchar x,uchar y,uchar dat)
- {
- uchar add;
- if(y==1) add=(0x80+x);
- if(y==2) add=(0xc0+x);
- lcd_Write_com(add); //д???
- lcd_write_date(dat); //д????
- }
- /**************************************
- ????????
- **************************************/
- void lcd1602_init()
- {
- lcd_Write_com(0x38); //????8λ?????2?У?5*7
- lcd_Write_com(0x01); //????
- lcd_Write_com(0x0c); //??????????????????
- lcd_Write_com(0x06); //?趨???????????????λ
- lcd_Write_com(0x80); //???????
- }
- /**************************************
- ?????????????
- **************************************/
- void hz_lcdDis(uchar x,uchar y,uchar *p) //???????
- {
- uchar i=0,temp;
- if(x)temp = 0x40; else temp = 0;
- for(i=y;*p!='\0';i++,p++)
- {
- lcd_Write_com(i|0x80+temp);
- lcd_write_date(*p);
- delay5ms();
- }
- }
- /**************************************
- ?????????????
- **************************************/
- void num_lcdDis(uchar X,uchar Y,uint num,uchar n)
- {
- uint i=0,temp,hang;
- n +=1;
- if(X)hang = 0x40;else hang = 0;
- for(i=(n-1);i>0;i--)
- {
- lcd_Write_com((i+Y-1)|0x80+hang); //???λ??????
- temp = num%10+0x30;
- lcd_write_date(temp);
- delay5ms();
- num/=10;
- }
- }
- void put(uchar c) //???????c
- {
- SBUF=c;
- while(!TI);
- TI=0;
- }
- void init() //?????PWM?????
- {
- TMOD=0X20;
- TH0=236;
- TL0=235;
- TH1=0XFD;
- TL1=0XFD;
- TR0=1;
- TR1=1;
- ET0=1;
- SM0=0;
- SM1=1;
- REN=1;
- SCON=0X50;
- EA=1;
- ES=1;
- spwm=1;
- }
- void main()
- {
- lcd1602_init();//????????
- hz_lcdDis(0,1,"Welcome"); //?????
- init();
- while(1) //??????????????????????????
- {
-
- // if(flag==1)
- // {
- // flag=0;
- // ES=0;
- // pwm=SBUF;
- // while(!TI);
- // TI=0;
- // ES=1;
- // }
-
- delay(100);
- }
- }
- void to()interrupt 1 //pwm?ж?
- {
- t++;
- if(t==255)
- {
- t=0;
- spwm=0;
- }
- if(pwm==t)
- {
- spwm=1;
-
- }
- }
- void ser() interrupt 4 //???????
- {
- if(RI==1)
- {
- num++;
- RI=0;
- a=SBUF;
- // flag=1;
- pwm=SBUF;
- num_lcdDis(1,0,a,3); //AD?????2λ
- put(num);
- if(num==9){
- num=0;
- }
- }
- }
复制代码
|
-
乙机代码图
-
甲机代码图
-
文件图
-
波形图
-
电路图
-
-
单片机大作业双机通讯.rar
731.66 KB, 下载次数: 17, 下载积分: 黑币 -5
文件夹 包括仿真 代码 文档
评分
-
查看全部评分
|