首先介绍下元件
名称 | 型号 | 数量 | Proteus对应元件名称 | ||
51单片机 | STC90516RD | 1 | AT89C51 | ||
晶振 | 12MHZ | 1 | CRYSTAL | ||
电容 | 30pf | 2 | CAP | ||
电解电容 | 10uf | CAP-ELEC | |||
按键 | BUTTON | ||||
LED发光二极管 | LED-YELLOW | ||||
电阻 | 510Ω | RES | |||
电阻 | 10KΩ | RES | |||
单机三位开关 | 1 | SW-ROT-3 |
在proteus中按照如图拼接电路

在keil中编写以下代码,(keil具体操作方式,请查看以前文章)
//名称汽车转向
#include<regx51.h>
sbit LEDL1=P0^0; //定义P0.0引脚名称为LEDL1,左前转向灯
sbit LEDL2=P0^1; //定义P0.1引脚名称为LEDL1,左后转向灯
sbit LEDR1=P0^2; //定义P0.2引脚名称为LEDL1,右前转向灯
sbit LEDR2=P0^3; //定义P0.3引脚名称为LEDL1,右后转向灯
sbit S1=P1^0; //定义P1.0引脚名称为 S1 S1=0左转向灯闪烁
sbit S2=P1^1; //定义P1.1引脚名称为 S2 S2=0右转向灯闪烁
void delay(unsigned int i)
{
while(i--);
}
void main() //主函数
{
while(1) //无限循环
{
P1=0xff;
LEDL1=S1; //读取S1引脚的控制状态并赋值给左转向灯LEDL1
LEDL2=S1; //读取S1引脚的控制状态并赋值给左转向灯LEDL2
LEDR1=S2; //读取S2引脚的控制状态并赋值给右转向灯LEDR1
LEDR2=S2; //读取S2引脚的控制状态并赋值给右转向灯LEDR1
delay(20000); //延时
LEDL1=1; //将LEDL1引脚置1 熄灭LEDL1
LEDL2=1; //将LEDL2引脚置1 熄灭LEDL2
LEDR1=1; //将LEDR1引脚置1 熄灭LEDR1
LEDR2=1; //将LEDR2引脚置1 熄灭LEDR2
delay(20000); //延时
}
}
编译完成没有出现错误的话,把生成的.hex文件放到proteus中的单片机中,进行仿真测试
有疑问可以在下面评论
Comments | NOTHING