雙機串行口通信實驗仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (29.2 KB, 下載次數: 57)
下載附件
2018-12-4 04:15 上傳
0.png (11.67 KB, 下載次數: 39)
下載附件
2018-12-4 04:17 上傳
單片機源程序如下:
- #include <reg51.h>
- #define DISPLAY P1
- #define KEY P2
- sbit key=P2^0;
- bit ACK_flag;
- unsigned char code display_code[10] = {0XC0 , 0XF9 , 0XA4 , 0XB0 , 0X99 , 0X92 , 0X82 , 0XF8 , 0X80 , 0X90 };
- unsigned char counter=0;
- unsigned char A=0;
- unsigned char key_date=1;
- void init( );
- void LED_display( );
- void delay5ms( );
- void delay5ms(void)
- {
- unsigned char i,j;
- for(i = 10; i > 0; i--)
- for(j = 248; j > 0; j--);
- }
- void LED_display()
- {
- DISPLAY = display_code[A];
- }
- void init()
- {
- SCON = 0x50;
- PCON = PCON & 0x7F;
- TMOD = 0x20;
- TH1 = 0xF3;
- TL1 = 0xF3;
- TR1 = 1;
- IE = 0x90;
- }
- void main()
- {
- init( );
- while(1)
- {
- LED_display( );
- delay5ms( );
- ACK_flag = 0;
- if( key_date!=key)
- {
- while(!key);
- {
- if(counter==9)
- counter=0;
- else
- counter++;
- SBUF = counter;
- while(!ACK_flag);
- }
- }
- }
- }
- diaoyong( ) interrupt 4 using 1
- {
- if( RI )
- {
- RI=0;
- A=SBUF;
- LED_display( );
- delay5ms( );
- key=1;
- }
- if(TI)
- {
- TI = 0;
- ACK_flag=1;
- }
- }
復制代碼
所有資料51hei提供下載:
單片機第三次實驗.zip
(59.07 KB, 下載次數: 73)
2018-12-3 17:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|