设计思路:
通过按键控制单片机的三个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文件(与编程项目同一个文件夹)
导入无仿真提示报错后,点击最左下角开始运行仿真
成果视频:
Comments NOTHING