设计思路:

通过按键控制单片机的三个I/O口 P1.5 , P1.6 , P1.7,它们分别接发光二极管LED1 , LED2 , LED3。

按键不按下,三个发光二极管都不亮;

按键按下,三个发光二极管同时亮;

按键按下不松开按钮,三个二极管同时亮灭,间隔10ms。

元器件清单:

单片机STC89C51 ,电阻(RES)2个,R1为1kΩ,R2为0.2KΩ ;

电容(CAP)2个,均为30pf,电解电容(CAP-ELEC)1个,1uf;

晶体震荡器(CRYSTAL)1个,12MHz,弹性按键(BUTTON)1个;


3个发光二极管(LED)。

程序设计:

编程软件:Keil uVision5         仿真运行:Proteus 8 Professional

     #include <reg51.H>
	sbit LED1=P1^5;//p1.5端口接入并控制LED1
	sbit LED2=P1^6;//p1.6端口接入并控制LED2
	sbit LED3=P1^7;//p1.7端口接入并控制LED3
	sbit KEY=P1^0;//弹性按键连接P1.0引脚
	void Delay()//延时函数
	{
	   unsigned int i,j;
	   for(i=0;i<50;i++)
	   	for(j=0;j<1200;j++);
	}
	void main()
	{
	  LED1=0;
	  LED2=0;
	  LED3=0;

	 while(1) 
	 {
	 	KEY=1;
	 	if (KEY==0)
	 	{
	 		LED1=1;
	 		LED2=1;
	 		LED3=1;
	 		Delay();
	 		LED1=0;
	 		LED2=0;
	 		LED3=0;
	 		Delay();
	 	}
	 }
	}

开工

程序部分:

打开Keil uVision5  ,新建工程

设置命名格式,及保存的位置;

选择Atmel,点加号,找到型号AT89C51选择;

创建成功后,右键目标1,点为目标1设置选项

因为我们使用的晶体震荡器是12MHz的,这里我们要更改xtal(MHz)属性为12

这里我们需要把程序编译为HEX文件,方便到仿真上运行。

之后我们点击文件-新建

然后点击文件-另存为,重命名一个.c文件,保存

然后右击源组1,添加文件到源组1

把刚才.c文件,点击添加

 

写完程序后,F7快捷键调试,无报错无警告后,直接保存编译

仿真原理图部分:

新建工程,选择位置重命名,之后一直下一步。

点击左栏鼠标指针标志,点击蓝框p,双击添加相应的元器件

按程序连接好元器件后,双击元器件AT89C51

点击program file一栏的文件夹,找到编译好的HEX文件(与编程项目同一个文件夹)

导入无仿真提示报错后,点击最左下角开始运行仿真

成果视频: