找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1354|回复: 0
打印 上一主题 下一主题
收起左侧

8051单片机双机传送proteus仿真与源程序

[复制链接]
跳转到指定楼层
楼主
我是电子专业的,这是我上个学期期末的大作业,8051设计,实现双机传送,有Protus电路图和keil代码

双机传送

系统设计说明:
1.    主片用来接收外部按键输入,存入SBUF,通过P3.1TxD发送给从片,同时申请4号中断。
2.    从片通过P3.0RxD接收主片传送的SBUF,选中对应的段码,送到LED共阳极数码管显示,同时申请4号中断。
3.    十个按键从上到下代表输入9~0。

系统功能说明:
实现双机传送数据。

软件设计说明:
采用中断方式,8位定时器,自动重装计数值,波特率为9600b/s,串口方式1。

调试及运行结果:
系统按设计运行,按键按下,LED数码管显示对应的数字,LED灯闪烁一次。

心得体会:
比8086简单。。。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)



单片机源程序如下:
  1. #include<STC15f2k60s2.h>
  2. #include <intrins.h>
  3. #define uint  unsigned int       
  4. #define uchar unsigned char
  5. #define  _Nop()  _nop_()
  6. uchar x;

  7. sbit KEY0=P0^0;
  8. sbit KEY1=P0^1;
  9. sbit KEY2=P0^2;
  10. sbit KEY3=P0^3;
  11. sbit KEY4=P0^4;
  12. sbit KEY5=P0^5;
  13. sbit KEY6=P0^6;
  14. sbit KEY7=P0^7;
  15. sbit KEY8=P2^1;
  16. sbit KEY9=P2^2;



  17. void delay_1(uchar x)
  18. {
  19.         uchar i,j;
  20.           for(i=0;i<=x;i++)
  21.                 for(j=0;j<=200;j++)
  22.                  _Nop();
  23. }           

  24.         void serial_ISR(void) interrupt 4
  25.         {
  26.                   P1=~0x01;
  27.           delay_1(20000) ;
  28.                   P1=0x01;
  29.                   RI = 0;
  30.         }
  31.        

  32.                 void serial_initial(void)
  33.         {
  34.         TMOD = 0x20;
  35.         TL1  = 0xfd;               
  36.         TH1  = 0xfd;       
  37.         TR1  =1;
  38.         SCON = 0x40;       
  39.     ES   = 1;
  40.         EA   = 1;
  41.         }

  42.         void Send_Byte(uchar x)
  43.         {
  44.                 SBUF=x;
  45.                 while(TI==0);
  46.                 TI=0;
  47.         }


  48.                 void main(void)
  49. {               
  50.         serial_initial();
  51.         while(1)
  52.         {
  53.       if(KEY0==0)
  54.                 {       
  55.                         while(KEY0==0);                       
  56.             Send_Byte(0);                       
  57.            }
  58.                
  59.              if(KEY1==0)
  60.                 {       
  61.                                  while(KEY1==0);                       
  62.             Send_Byte(1);                       
  63.            }
  64.                
  65.                    if(KEY2==0)
  66.                 {       
  67.                                    while(KEY2==0);                       
  68.             Send_Byte(2);                       
  69.            }
  70.                
  71.                    if(KEY3==0)
  72.                 {       
  73.                                    while(KEY3==0);                       
  74.             Send_Byte(3);                       
  75.            }
  76.                
  77.                    if(KEY4==0)
  78.                 {       
  79.                               while(KEY4==0);               
  80.             Send_Byte(4);                       
  81.            }
  82.                
  83.                     if(KEY5==0)
  84.                 {       
  85.                                while(KEY5==0);                       
  86.             Send_Byte(5);               
  87.            }
  88.                
  89.                      if(KEY6==0)
  90.                 {       
  91.                                    while(KEY6==0);                       
  92.             Send_Byte(6);               
  93.            }
  94.                
  95.                    if(KEY7==0)
  96.                 {       
  97.                                  while(KEY7==0);                       
  98.             Send_Byte(7);                       
  99.            }
  100.                
  101.                    if(KEY8==0)
  102.                 {       
  103.                                    while(KEY8==0);                       
  104.             Send_Byte(8);               
  105.            }
  106.                
  107.                   if(KEY9==0)
  108.                 {       
  109.                                  while(KEY9==0);                       
  110.             Send_Byte(9);                       
  111.            }
  112.         }  
  113. }
复制代码

所有资料51hei提供下载:
8051--双机传送.zip (58.36 KB, 下载次数: 8)





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表