【51单片机】1-LED灯的点亮(位操作与字节操作)Proteus 8.6 仿真

前言:

       学习51单片机已经有些年,之前写的程序比较简单。后来因为专业发展,接触到微控制器接口技术,突然悟了,个人觉得51单片机的功能还是比较强大。51单片机的网络资源多、价格便宜、比较友好适合新人入门。结合近几年学习中遇到的一些坑,把学习记录整理成册分享网络。从点灯开始到通信应用,若有错误地方还请各位网友批评指点,也感谢金善愚老师分享的学习资料。

一、51单片机简介

        51单片机是对兼容英特尔8051指令系统单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内许多高校用其进行单片机入门教学。摘自-百度

        目前使用最多的就是89C51系列芯片,在网上有很多介绍该芯片的功能和结构,在记录中不在做详细描述。

二、开发工具

       工具下载链接:

       链接:https://pan.baidu.com/s/1UQufew9mu0lof7irHLVqfg

       提取码:n2wj

       1、编程工具

       (1)keil uvision4

       该软件安装方式在网上有很多资料,最重要的是安装之后需要进行破解,只要学过单片机编程的朋友都会使用。

安装与破解网址:(也可以自行查找相关资源)

https://www.bilibili.com/video/BV1rj411q7NU/?vd_source=a417a413eb1de53da3169fec31668718

       (2)keil uvision5

       该软件开发ARM比较方便,同时也能兼容51单片机开发。具体安装方式与破解目前网上也有很多相关资料。 

       安装与破解网址:

https://www.bilibili.com/video/BV1Mb411e7re?p=2&vd_source=a417a413eb1de53da3169fec31668718

        (3)注册机

       2、仿真工具

       PROTEUS 8.6 编程记录中使用该版本,仿真软件只能由高向低兼容,不能从低向高兼容,比如8.12版本可以打开8.6版本仿真电路,8.6版本不能开8.12版本,所以在使用时尽量保持一个版本。

      遇到过的问题:Proteus对计算机名称中文不兼容的仿真出错,这个网站可以解决该问题:https://www.bkqs.com.cn/content/03dkvrzrn.html

三、仿真软件使用

       首先要了解构成51单片机的最小系统有哪些电路,电源电路、时钟电路、复位电路。那么构成这些电路的元器件有:51单片机(AT89C51)、晶振(CRYSTAL)、电阻(3WATT 100R)、按键(BUTTON)、电容(CERAMIC)、电解电容(CAP-ELEC)、排阻(RESPACK-8)。前面是元器件名称后面是仿真对应器件名称。

        1、新建一个工程

       (1)在电脑桌面找到仿真软件图标,下图所示,点击鼠标右键“以管理员身份运行”本人使用Proteus 8.6版本。因电脑原因每次打开仿真软件都需要这样操作,有点麻烦。

        (2)点击新建按钮

        (3)在下图中填写工程名称,并选择工程存放路径,默认新工程选项。点击下一步进入下一个选项。

       (4)保持下图默认状态,点击下一步 

       (5)保持下图默认状态,点击下一步

       (6)保持下图默认状态,点击下一步

       (7)保持下图默认状态,点击完成

       (8)下图为仿真电路绘制界面。

       2、添加51单片机最小系统需要的元器件

       最小系统需要的元器件全部选择完毕后如下图所示

       3、绘制51单片机最小系统仿真电路

       注意:在仿真中51单片机VCC默认接电源,GND默认接地所以第20和40引脚没有。

四、LED仿真电路搭建

       最小系统绘制完成,单片机可以正常工作。学习单片机一般会从点亮一个灯开始,接下来绘制LED控制电路。单片机的高电平驱动功能比较弱,所以采用低电平驱动,根据LED导通特性,限流电阻取值范围在:150欧-3K。下图中的限流电阻阻值取470欧。

五、在Keil中创建一个LED点亮工程

       1、打开软件,选择菜单中的“Project”,然后点击该按键,进入下图中的选项,点击“New μVision Project..”选项进入新建工程界面

       2、找到工程存放文件夹,填写工程文件名,点击保存。如下图所示

       3、选择单片机型号“AT89C51”,点击“OK”按钮,如下图所示

       4、点击“否”。

       5、工程创建完成,如下图所示

       6、工程创建完成,接下来创建源码文件,根据下图所示,点击新建按钮

       7、点击保存,弹出对话框,文件名改成:main.c(可以随便起名字,但是不能写中文,为了后面编程需要,请以main.c文件名,请注意后面需要加 .c ),点击保存按钮。

       8、单击鼠标右键“Source Group 1”

       9、在弹出对话框中选择下图中“main.c”文件,添加到“Source Group 1”中。

       10、根据下图中四步设置单片机能够识别的文件

       11、点亮LED灯代码如下:

      (1)按位操作IO口

       (2)按字节操作IO口

       12、编译程序生成 hex文件

六、程序导入仿真中

       双击仿真电路中的单片机模型,在编辑元件选项中点击下图中文件夹按钮

       在弹出的文件中找到生成的 .hex文件,点击打开

       选中 .hex 文件,点击确定按钮

       仿真软件下图中4个按钮功能

       1:运行;2:单步;3:暂停;4:停止

       点击下图中运行按钮,可以看到P1^0端口的LED灯点亮。

恭喜,成功点亮一个灯!

大部分初学者觉得单片机学习比较难,主要原因平时代码量不够,练习少。本人刚接触单片机也是一脸懵,多花时间练习,学习好的案例,多写多练慢慢就悟了。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Proteus软件中进行51单片机仿真时,我们可以使用8个LED来实现一个循环点亮的流水效果。具体步骤如下: 1.首先,我们需要在Proteus的工作区中添加一个51单片机,并连接好其供电和晶振。 2.接下来,我们需要添加8个LED,以模拟8个流水的效果。将它们连接到单片机的输出引脚上。为了简化连接,我们可以使用一个扩展芯片(如74595)来控制这些LED。 3.对于循环点亮的效果,我们需要在程序中设置一个循环来不断变化LED的亮灭状态。可以通过移位运算来控制LED的亮灭状态。 4.在程序中,我们可以使用一个变量来表示LED的状态,假设取值范围为0-7。通过对该变量的处理,可以实现循环点亮的效果。 5.在Proteus中,我们可以使用Proteus VSM来调试和验证程序的正确性。通过仿真,我们可以观察到LED依次点亮的效果,完成了流水的循环显示。 以流水以顺序点亮的方式为例,程序的基本思路如下: ``` #include <reg51.h> unsigned char led_status = 1; // 定义一个变量表示LED的状态,初始为第一个LED点亮 void delay(unsigned int t) // 定义一个延时函数 { unsigned int i, j; for (i = 0; i < t; i++) for (j = 0; j < 120; j++) ; } void main() { while (1) { P1 = ~(1 << (led_status - 1)); // 点亮对应的LED,其他LED熄灭 delay(1000); // 延时1秒,控制LED点亮的速度 led_status++; // 将LED状态+1,实现流水的效果 if (led_status > 8) led_status = 1; // 当LED状态超过8时,重新从1开始 } } ``` 通过以上的操作步骤和程序设计,我们可以在Proteus中实现一个8个LED依次循环点亮的流水效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值