功能

利用51单片机,加上按键、8个LED小灯、以及限流电阻,设计一个按键按下小灯循环亮灭,这里在不涉及中断的情况下,实现此功能。

1.硬件电路

在proteus中,仿真只需51单片机(80c51),8LED小灯,限流电阻,及一个按键。
首先,8LED小灯接P1口,加限流电阻后共阴极接地(共阴就是二极管低电平汇聚一起,自己的理解哈哈),然后按键在我看来随便接个P2或P3都可以(不知道仿真里面是带了上拉电阻还是其他)

proteus仿真电路图

2.点亮D1操作先查看有无问题

1.写基础程序(基础定义LED,只需点亮功能即可),其实这一个步骤是我自己思考后加的,原本是直接编最后程序,但是我觉得可以编一个小程序试试硬件电路或其他有没有用,以下为程序简单代码,尝试作用,减少后期试错成本

#include"reg52.h"
#define led P1
sbit k1=P3^2;//void delay()
//void DigKey()main()
{while(1){led=0x01;//点亮D1}
}

2.生成hex文件放入proteus软件中的单片机里,达到烧录程序进入硬件仿真的效果,点击运行后,出现如下结果,如图


D1点亮,说明proteus仿真电路有效,代码编译有效,且生成的hex文件也有效果

编辑按键循环灯程序及仿真实验(代码如下)

#include"reg52.h"typedef unsigned char u8;
typedef unsigned int u16;u8 code table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//定义数组,分别表示从LED D1到D7亮
#define led P1
sbit k1=P3^2;void delay(u16 i)//延时函数
{while(i--);
}void Deled()//循环灯函数,8个LED,循环8次后继续从D1开始
{while(1){u8 j=0;for(j;j<8;j++){led=table[j];delay(10000);//延时一定时间,才能在视觉上看出LED循环点亮}}
}void DigKey()//按键检测及消抖
{if(k1==0){delay(1000);if(k1==0){Deled();}while(!k1);}
}main()
{DigKey();return 0;//函数返回值
}

生成hex文件后放入proteus仿真的80c51单片机中,点击运行后,按下按键,灯达到循环流水亮灭效果,以下如图

问题及解决(代码)

1. 开始遇到自己写的一个函数出现如下情况,如图


虽然只是警告,但是我想看看警告问题出在哪,于是打开搜索,得到如下答案,然后加了头文件后,依然显示有这个警告,正在我左思右想之际,我个人感觉就是因为字母开头大小写问题,之前所看函数开头都是大写,而自己写的用小写出了问题,于是我把d换成D,编译之后果然没有那个警告了。我真牛哇哈哈哈


2. 第二个问题(警告)则是main()主函数返回值问题,编程序忘了加return 0;这一个语句,加上这条语句编译后警告就没了,如下图


加return 0;语句后,如下图


小小仿真任务完成,哈哈(说明一下哦,这里按键按下后灯循环,再次按下按键将没有任何作用,因为没写哈哈)

7.按键循环灯及proteus仿真相关推荐

  1. Arduino UNO + 74HC595联级+数码管实现000-999循环计数显示+ Proteus仿真

    Arduino UNO + 74HC595联级+数码管实现000-999循环计数显示+ Proteus仿真 3个74HC595联级显示000-999计数 Proteus仿真 实例代码 int latc ...

  2. 51单片机AT24C02写读流水灯实例+Proteus仿真

    51单片机AT24C02写读流水灯实例+Proteus仿真 Proteus仿真 这个流水灯的状态是通过读取AT24C02地址中的数值来改变的.(有点废AT24C02) 程序代码 #include &l ...

  3. 51单片机通过CD4051实现流水灯效果+Proteus仿真

    51单片机通过CD4051实现流水灯效果+Proteus仿真 Proteus仿真效果 CD4051 CD4051是一款八选一模拟开关电路,内置3个地址选择端(A0-A2),低有效的使能输入端( E), ...

  4. 51单片机教程:按键输入、矩阵按键(按键巧用)proteus仿真+keil

    文章目录 IO口原理 按键输入 4*4矩阵按键输入 IO口原理 (P1口最简单,所以这里只介绍P1,其他IO口原理类似) P1口原理 可以看到的是P1口的工作原理比较简单,首先用P1口做输入输出较为好 ...

  5. 基于51单片机pwm调光护眼台灯智能检测光强光控灯设计proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/模式/亮度等级 2.按'切换'键可切换四种不同的模式 a) 自动开关,自动调节亮度 b) 手动开关,自动调节亮 ...

  6. 【Proteus仿真】51单片机汇编数显大型交通灯控制

    [Proteus仿真]51单片机汇编数显大型交通灯控制 Proteus仿真 学汇编的人虽然 不多,但是还是有的,分享一个汇编的案例,给需要的人予以参考学习,有些时候我们还是需要懂一些汇编指令比较好. ...

  7. 【Proteus仿真】LCD1602+DS1307按键设置简易时钟

    [Proteus仿真]LCD1602+DS1307按键设置简易时钟 Proteus仿真演示 功能说明 通过按键设置当前时间,按键调整时间只实现了对时分秒的设置,年月日以及星期是程序代码写入的,按键不能 ...

  8. 【Proteus仿真】三极管组成的H桥驱动直流电机+按键正反转控制

    [Proteus仿真]三极管组成的H桥驱动直流电机+按键正反转控制 Proteus仿真 示例代码 #include <reg52.h> #include <intrins.h> ...

  9. 【Proteus仿真】2片CD4026联级秒脉冲2位数码管计数

    [Proteus仿真]2片CD4026联级秒脉冲2位数码管计数 相关篇<[Proteus仿真]CD4026秒脉冲0-9循环计数> Proteus仿真演示 演示的是利用CD4026驱动2片共 ...

最新文章

  1. ATS cache中的几个数据结构图收集
  2. Matlab数据的可视化 -- 简易线性函数图
  3. html class 位置,HTML class 属性 | 菜鸟教程
  4. 企业网络推广之下的“盒马鲜生”新零售逐渐“破圈”而出
  5. M2 Scrum 12.05
  6. .net5+nacos+ocelot 配置中心和服务发现实现
  7. java12/6作业1
  8. Android学习总结(5)——9个非常有用的Andorid 程序片段
  9. centos7以上系统服务管理命令-systemctl
  10. Gbase相关学习总结
  11. 【SENCHA TOUCH】picker的使用
  12. 软件工程——快速原型模型
  13. office修复找不到msi_安装Office2007,总是提示找不到OfficeMUI.msi
  14. 计算机比赛训练总结500字,比赛活动总结500字(精选7篇)
  15. php数据降序索引,MySQL 降序索引 (Descending Indexes)
  16. 空间几何变换 之 齐次坐标
  17. Android美团评分组件及消息提示框自我定制(14)
  18. 求某学生8门课的平均分
  19. Vue3 + elementplus 分页组件英文改为中文
  20. 显著性检测——GR模型

热门文章

  1. Canvas - 错误:Tainted canvases may not be exported
  2. ubuntu+appium+testng+android真机运行
  3. 使用C#进行XML文档读取
  4. python返回列表数据类型_python 数据类型之列表(list)
  5. 华为迷途:定价与品牌的差距
  6. Linux 分区方案介绍
  7. OpenCV For Unity 入门教程(一): 实现简单的抠图
  8. Bagging分类器
  9. Nginx配置ldap端口转发
  10. 四元数左乘右乘_理解四元数