运用keil和proteus实现LED灯的点亮。(没有开发板,只能依靠仿真软件,等拥有单片机板子之后,进行实物展示)
功能1:Protues画图
功能2:Keil生成.hex文件
进入正文:
一、proteus 部分:
我们首先需要在proteus中绘制我们的图。如何绘图?步骤如下:
1)首先,我们需要新建一个项目。如果此处,不知如何使用proteus创建一个项目,请前往: Proteus和Keil分别创建单片机工程
2)在proteus中找到所需的元器件:
特别注意: 此处第三步中,本实例中,只需要搜索:AT89C51、CAP、CAP-ELEC、CRYSTAL、LED-BIBY、RES、SWITCH(其他的元器件,本实例未用到)
3)开始绘图(和此图一样即可,一些器件的参数按照此图即可):
特别注意: 在此处画图时,VDD和接地符号在:
4)Proteus绘制图完成,现在进入Keil部分。
二、Keil 部分:
我们首先需要新建一个Keil工程。如何创建?步骤如下:
1)如果此处,不知如何使用Keil5创建一个工程,请前往:
Proteus和Keil分别创建单片机工程
2)创建好我们的工程之后,就开始代码的编写:
/*************************实验例程**********************
功能:实现房间照明灯的方便控制,一个照明灯,在门口和床头各有一个(闭合式)开关控制。
开关的闭合并不直接决定灯的亮灭,而开关状态的改变才是决定灯亮灭的关键。即不管两个开关
当前的状态如何,只要有一个开关状态发生变化,都会使照明灯在打亮或者熄灭两种状态间切换。
此试验中,用P0口相连的第一个led来模拟照明灯,而用s2和s3(P1.0和P1.1)来模拟两个开关。
晶振:11.0592MHZ 测试开关有没有变化,主函数:检测到变化就控制灯,然后记录当前状态
******************************************************************/
#include sbit light=P0^0; //注意某一位表示方法,特殊功能寄存器某一位用Sbit sbit s1=P1^0; sbit s2=P1^2; bit change,s1sta,s2sta;//s1sta,s2sta为开关s1和s2前一时刻的状态,用来和当前的s1与s2状态进行对比, //进而判决两个开关的状态有无发生变化。 bit keyscan() { if((s1^s1sta)||(s2^s2sta)) //^为异或,若两者不同,则结果为1。即若两开关中,任一开关的状态发生变化,则此条件即为真。 change=1; return change; } void main() { s1sta=s1; s2sta=s2; while(1) { keyscan(); //扫描按键状态是否变化,即是否有人更改了按键状态。 if(change) { change=0; //清零 light=~light; //一旦发现有开关状态发生了变化,则灯的状态就取反。 s1sta=s1; //同时,将s1和s2的当前状态送给s1sta和s2sta,为以后的比较做准备。 s2sta=s2; } } } 3)代码完成之后,我们需要编译,生成需要的.hex文件(此文件需要烧录到Proteus中) 第一步: 第二步: 第三步: 特别注意: 我用的是Keil5,默认生成的.hex文件保存在: 4)此时,生成了需要的.hex文件,我们再重新进入Proteus中: 5)此时,.hex文件已经烧录到了Proteus上面了,点击Proteus左下角,即可开始仿真: 6)点击图中相应的按钮,即可观察效果实现: 完结,撒花… 这只是一个简单的Keil+Proteus的效果实验,持续更新更多实验项目中…
上一篇:【单片机】Keil+Proteus流水灯(模块化编程)
下一篇:【单片机】Proteus和Keil分别创建单片机工程
推荐阅读最新更新时间:2024-11-12 18:00
设计资源 培训 开发板 精华推荐
- MIC280 的典型应用:Precision Itty-bitty 热监控器
- EVAL-ADM3051EBZ,ADM3051 隔离式 CAN 收发器的评估板
- 使用 Diodes Incorporated 的 ZR78L10 的参考设计
- 基于 STBB3J 的 STEVAL-ISA141V1、2A、2 MHz、3.3 Vout、高效、双模式降压-升压 DC-DC 转换器评估板
- LT3028 的典型应用 - 具有独立输入的双通道 100mA/500mA 低压差、低噪声、微功率稳压器
- LT3755EMSE-1 50W 白光 LED 头灯驱动器的典型应用电路
- 具有模拟负载的 LT1307CS8 升压转换器的典型应用电路
- LTM9001-A/LTM9001-B、16 位中频/基带接收器子系统的典型应用
- 使用 ROHM Semiconductor 的 BU4812 的参考设计
- 使用 Diodes Incorporated 的 AH280 的参考设计