0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

让小灯交替闪烁的单片机程序

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2021-02-20 14:34 次阅读

例:让该端口输出高电平的语句是:

SETB P1.0

让该端口输出低电平的语句是:

CLR P1.0

好了,现在我们将小灯接在单片机的P1.0端口上,如下图所示:

d36201ca-71b8-11eb-8b86-12bb97331649.jpg

由上图可知,当端口P1.0输出高电平时,小灯D不亮,因为小灯中不会有电流通过;当端口P1.0输出低电平时,小灯就亮,因为此时小灯中有电流通过。

要让小灯亮一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让小灯亮一会儿、灭一会儿,交替闪烁的程序:

MAIN:;程序开始

SETB P1.0;让P1.0输出高电平

LCALL DELAY;这一行是调用延时子程序

;目的是让P1.0保持高电平

;多停留一段时间

CLR P1.0;让P1.0输出低电平

LCALL DELAY;这一行也是调用延时子程序

;和刚才一样,让P1.0保持低

;电平停留一段时间,其实就

;是让它多亮一会儿再熄灭

LJMP MAIN;跳转到MAIN处执行(循环)

;以下是延时子程序,有关该延时程序的内容以后再学

DELAY: MOV R7,#250

D1: MOV R6,#250

D2:DJNZ R6,D2

DJNZ R7,D1

RET

END

在以上汇编程序中,延时子程序每一行的具体含义先不管他,以后慢慢学到,上面的程序需要在一个名为“Keil uVision2”的软件中汇编完成,汇编后得到一个*.hex文件,这就是目标文件,然后用编程器将该文件“写”到单片机89s51中,这样该89s51就具有自动控制小灯闪烁的功能了。

在实验的时候,通常用发光二极管LED代替小灯,由于LED工作电压小,由此LED要串接一个小电阻,用220欧姆——1k之间的都行,我用的是510欧姆的。

d3b74b62-71b8-11eb-8b86-12bb97331649.jpg

这样还不够,单片机工作还需要两个条件,一是需要加上一定的工作电压,AT89S51工作电压为5V,第20脚接负极,第40脚接正极;另外还要给单片机安装一个心脏起搏器,就是振荡器,通常叫做时钟,只要在18脚和19脚之间接一个石英晶体就行了,我用的是12MHz的,另外为了保证振荡器稳定工作,还要在18脚、19脚分别接一个27PF的小电容到地(就是接到负极),此外,89s51的第9脚为复位端,要接一个10uF电容到正极,再接一个10K电阻到负极,最后,第31脚也要和电源的正极接起来,关于31脚,以后再说,这样一台由单片机控制的会自动闪烁的小灯就做好了。下面是完整的电路图:

d3eee478-71b8-11eb-8b86-12bb97331649.jpg

没有使用的管脚空着就行了,什么也不用接。一通上电,小灯就开始不停的闪烁了。大约1秒钟闪烁3——4次。

原文标题:跟我来编一个最简单的单片机程序

文章出处:【微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5997

    文章

    43947

    浏览量

    620528

原文标题:跟我来编一个最简单的单片机程序

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    pic单片机汇编程序实例

    以下是一个简单的PIC单片机汇编程序示例,这个程序将实现一个LED闪烁的功能。 首先,我们需要了解PIC单片机的结构和指令集。PIC
    的头像 发表于 12-14 11:01 651次阅读

    S3C2410A GPB端口低两位与次低两位两个反逻辑LED指示交替闪烁

    各位大神求指导, S3C2410AGPB端口低两位与次低两位两个反逻辑LED指示交替闪烁,这个当初没好好学,求指导
    发表于 11-14 20:22

    如何使得单片机的LED闪烁又不影响主程序运行?

    51单片机问题,紧急求助! 怎样使得单片机的LED闪烁又不影响主程序运行??? 我想通过单片机
    发表于 11-06 07:18

    51单片机如何led闪烁

    51单片机如何led闪烁
    发表于 11-01 06:32

    LED闪烁(标准库)任务解析#单片机

    单片机STM32
    未来加油dz
    发布于 :2023年08月11日 16:29:54

    基于89C51单片机的不同频率闪烁1个LED灯源程序

    基于89C51单片机的不同频率闪烁1个LED灯源程序
    发表于 05-16 09:44 6次下载

    基于89C51单片机的不同频率闪烁多个LED灯源程序

    基于89C51单片机的不同频率闪烁多个LED灯源程序
    发表于 05-16 09:43 0次下载

    基于89C51单片机的多位数按键加减(不闪烁)数码管显示源程序

    基于89C51单片机的多位数按键加减(不闪烁)数码管显示源程序
    发表于 05-16 09:10 0次下载

    基于89C51单片机闪烁1个LED源程序

    基于89C51单片机闪烁1个LED源程序
    发表于 05-15 10:35 3次下载

    基于89C51单片机的数码管局部闪烁程序

    基于89C51单片机的数码管局部闪烁程序
    发表于 05-15 10:30 0次下载

    基于89C51单片机的数码管闪烁程序

    基于89C51单片机的数码管闪烁程序
    发表于 05-15 10:29 3次下载

    基于89C51单片机的多位数按键加减(闪烁)数码管显示源程序

    基于89C51单片机的多位数按键加减(闪烁)数码管显示源程序
    发表于 05-12 17:21 1次下载

    基于89C51单片机的定时器扫描数码管(不闪烁)源程序

    基于89C51单片机的定时器扫描数码管(不闪烁)源程序
    发表于 05-12 17:16 1次下载

    基于ATmega8单片机闪烁灯设计Proteus仿真源程序

    基于ATmega8单片机闪烁灯设计Proteus仿真源程序
    发表于 05-05 09:25 0次下载

    基于ATmega8单片机位定义闪烁灯设计Proteus仿真源程序

    基于ATmega8单片机位定义闪烁灯设计Proteus仿真源程序
    发表于 05-04 18:23 0次下载