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