使用proteus实现51单片机的串口通讯仿真

1. 程序需求:

  • 通过上位机控制单片机的八个LED灯的开关

2. 开发中用到的软件

  • pycharm : 开发上位机
  • VSPD : 虚拟串口
  • Proteus : 仿真电路
  • keil C51 : 写51单片机程序

3. 具体步骤

  • 首先在Proteus中连接电路:
    在这里插入图片描述

  • 在keil中编写单片机代码,并将生成Hex的目标文件下载到preteus的单片机内,代码如下:

    #include<reg51.h>
    
    #define ON 	0;
    #define OFF 1;
    
    sbit LED1 = P2^0;
    sbit LED2 = P2^1;
    sbit LED3 = P2^2;
    sbit LED4 = P2^3;
    sbit LED5 = P2^4;
    sbit LED6 = P2^5;
    sbit LED7 = P2^6;
    sbit LED8 = P2^7;
    
    unsigned char DATA = 0;
    
    void delay(unsigned int a)
    {
         
    	while(a--);
    }
    
    void Usat_Init()
    {
         
    	EA = 1;       // 打开中断总开关
    	
    	ES = 1;       // 打开串口中断开关
    	SCON = 0x50;  // 选择方式1
    	PCON = 0x80;  // 波特率加倍
    	
    	TH1 = 0xF3;   // 芯片频率为12MHz, 设置波特率为2400, 在SMOD作用下加倍,4800
    	TL1 = 0xF3;   // 重载值
    	TMOD = 0x20;  // 选择计时器1,方式2
    	TR1 = 1;      // 启动计时器1
    }
    
    
    void main(void)
    {
         
    	unsigned char num = 3;
    	Usat_Init();
    	//LED1 = ON;
    	while(1)
    	{
         
    		
    	}
    }
    
    void Usat_Func() interrupt 4
    {
         
    	//delay(0xfff);
    	while(RI == 0);
    	RI = 0;
    	DATA = SBUF;
    	switch (DATA)
    	{
         
    		case 0x01:
    			LED1 = ~LED1;
    			break;
    		case 0x02:
    			LED2 = ~LED2;
    			break;
    		case 0x03:
    			LED3 = ~LED3;
    			break;
    		case 0x04:
    			LED4 = ~LED4;
    			break;
    		case 0x05:
    			LED5 = ~LED5;
    			break;
    		case 0x06:
    			LED6 = ~LED6;
    			break;
    		case 0x07
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值