首页 > 其他分享 >8051单片机实现呼吸灯

8051单片机实现呼吸灯

时间:2023-07-15 21:55:45浏览次数:36  
标签:10 8051 RPT MOV 呼吸 单片机 DT DIR CT

电路连接:灯由P2口控制,引脚输出高电平则熄灭,输出低电平则点亮;MCU时钟6兆赫兹。

占空比从0%,10%,20%,……到100%共11级。定时器设置为固定间隔,例如一毫秒触发一次中断,那么输出一个占空比40%的10毫秒方波的逻辑可以是:

Timer0_ISR: 1、重装计数器;2、计数值加一,若大于等于10说明一个周期结束,计数值归零(***);、3、若计数值大于等于4则输出“0”,否则输出“1”;4、结束。

若每种亮度等级的方波重复N次,则从完全熄灭到完全点亮再到完全熄灭的用时是:T=方波周期×N×(2倍等级个数-1),若重复10次,则T=10ms×10×21=2.1秒。

为了让每种方波各重复10次,需要修改上面的逻辑。即在(***)处添加一个针对计数值记录当前方波已经重复了几次,如果计数值达到N,则修改亮度等级(占空比)。这样,灯就会有“呼吸”的效果了。

DIR BIT 00H;亮度等级变化方向,0代表下一次占空比要增加10%,1代表要减少10%
CT DATA 30H;定时器计数值
DT DATA 31H;占空比
RPT DATA 32H;一种方波的重复次数

ORG 00H
JMP START
ORG 0BH
T0ISR:
MOV TL0,#0CH
MOV TH0,#0FEH
;IF ++CT >= 10 THEN CT=0
MOV A,CT
INC A
MOV CT,A
CLR C
SUBB A,#10
JC L1
MOV CT,#0
; IF ++RPT >= 10 THEN RPT=0
MOV A,RPT
INC A
MOV RPT,A
CLR C
SUBB A,#10
JC L1
MOV RPT,#0
; IF DIR=0 ++DT IF DUTY=10 DIR=1, ELSE DT=DT-1 IF DUTY=0 DIR=0 (BLOCK L4)
JB DIR,L4
MOV A,DT
INC A
MOV DT,A
CJNE A,#10,L1
SETB DIR
JMP L1
L4: MOV A,DT
DEC A
MOV DT,A
JNZ L1
CLR DIR
L1: ;IF CT<DT THEN TURN ON LED ELSE TURN OFF
MOV A,CT
CLR C
SUBB A,DT
JC L2
MOV P2,#0FFH
JMP L3
L2: MOV P2,#0F0H
L3: RETI

START:
MOV SP,#40H
CLR DIR
MOV CT,#0
MOV DT,#0
MOV RPT,#0
MOV TMOD,#01H
MOV TL0,0CH ;1MS @6MHZ
MOV TH0,#0FEH
SETB EA
SETB ET0
SETB TR0
JMP $
END

用Proteus仿真看不出效果,得用逻辑分析仪接到引脚上看波形。实物证明上述代码可以正常工作。

标签:10,8051,RPT,MOV,呼吸,单片机,DT,DIR,CT
From: https://www.cnblogs.com/tingzhouduruo/p/8051mcu-led-breathe.html

相关文章

  • 什么是AVR单片机,AVR单片机的特点优势有哪些
    一、AVR单片机简介1.1、AVR的诞生AVR单片机是ATMEL公司在1997年研发的增强型内置Flash的RISC精简指令集高速单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。1.2、AVR的特点采用RISC精简指令系统RISC(精简指令系统计算机)是......
  • 51单片机入门
    1.软件安装:Keil5C51和Keil5MDK区别:前者用来开发51单片机,后者用来开发ARM系列,比如STM32。2.单片机介绍(MCU)2.1为什么叫51单片机?因为内核是Intel开发的8051内核 课程使用STC89C52单片机。 RAM和ROM是两种存储器,RAM是randomaccessmemory(随机存储器),ROM是readonlymem......
  • 51单片机数码管
      二进制与十六进制互转-在线工具(toolhelper.cn)0x3f--00111111110x06-000001100x5b-010110110x4f-010110110x66-011001100x6d-011011010x7d-011111010x07-000001110x7f-011111110x6f-011011110x77-011101110x7c-01111100比如5,0x6d-01101101a是最低位,所以是......
  • 51单片机-跑马灯例子
    #include"reg52.h"#include"intrins.h"#include<stdio.h>typedefunsignedintu16;typedefunsignedcharu8;typedefunsignedintuint;typedefunsignedcharuchar;#defineLED_PORTP2#defineSMG_A_DP_PORTP0u8gsmg_code[17]......
  • 单片机扫描矩阵键盘
    采用分时复用的方法,定时置位行,检测列,确定按下的按键,输出不同的按键值。voidKbScanProcess(void){//uint8_tRow=0;//按键所在行//uint8_tCol=0;//按键所在列//uint8_tRowCount=0;//按键触发行的个数,用于判断多个按键按下uint8_tColCount=0;//按键触发列的个数,用......
  • labview温度采集,上位机,stc单片机无线稳定采集
    labview温度采集,上位机,stc单片机无线稳定采集ID:3652638005460606......
  • LED灯呼吸实现过程突然闪烁
    出现现象:当设置呼吸灯的效果时,发现灯慢慢的亮突然闪烁一下。代码如下voiddelay(uint8_tt){inta; for(a=0;a<t;a++){}} for(i=0;i<2000;i++) { HAL_GPIO_WritePin(GPIOB,LED2_Pin,GPIO_PIN_SET); delay(i); HAL_GPIO_WritePin(GPIOB,LED2_Pin,GPIO_......
  • 论单片机中时钟的重要性
    1.单片机内部需要储存器、累加器,这些都需要逻辑门电路。比如锁存器就是一个D触发器,而触发器的置1、清0、置数的功能都需要跳变沿。D触发器就是上升沿后存入数据,而这个上升沿就得外部提供脉冲,这就是脉冲信号,而这个脉冲信号就是我们稳定的时钟信号。2.单片机运行需要时钟支持-----......
  • 基于51单片机的智能鱼缸设计
    基于51单片机的智能鱼缸设计。有原理图,程序,原文,可代做实物。才用STC12C5A60S2,最新款国产51单片机。本系统设计的主要是基于单片机为核心,设计一款集温度检测、恒温控制、步进电机控制、继电器控制、矩阵键盘设计于一身的智能鱼缸控制系统,理论联系实际达到期望的效果。本系统的信......
  • 基于STM32单片机的差分升级和增量升级算法源码,这些源码可以在不同平台上进行移植
    基于STM32单片机的差分升级和增量升级算法源码,这些源码可以在不同平台上进行移植。此外,IAP升级和OTA升级技术,这些技术在物联网和车联网领域中得到广泛应用。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/653978935134.html提取的知识点和领域范围:1.单片机(STM32):单片机是一......