社区
单片机/工控
帖子详情
在单片机编程中如何记住led的状态(亮度),只靠标志位
tianqi911
2018-06-13 12:47:40
有一个单片机问题,单按键,短按就是开,然后短按一次进入一个状态(一种亮度);长按2秒或以上就关机;
问题来了,再短按,开机还是长按结束之前的状态(亮度是之前的)。不使用rom,flash什么的,就是靠程序。
高人指点下吧,给点思路也是好的。
搞了一天了,没实现。
...全文
1253
9
打赏
收藏
在单片机编程中如何记住led的状态(亮度),只靠标志位
有一个单片机问题,单按键,短按就是开,然后短按一次进入一个状态(一种亮度);长按2秒或以上就关机; 问题来了,再短按,开机还是长按结束之前的状态(亮度是之前的)。不使用rom,flash什么的,就是靠程序。 高人指点下吧,给点思路也是好的。 搞了一天了,没实现。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tianqi911
2018-06-25
打赏
举报
回复
用case if-else 加标志位实现了。就是状态机。不用存储功能。就到哪一档了,靠标志位记住pwm的参数。
of123
2018-06-15
打赏
举报
回复
如果你坚持不能用 Flash 或 EPROM 这一类非易失性存储器的话,那就在关机时不要使芯片下电,仅仅关掉 LED 等显示性外设。 常见的设备关机时是使芯片下电的,轻触开机仅仅是采用上电自锁机制,保持供电。
of123
2018-06-15
打赏
举报
回复
看了好多遍,总算把楼主的问题看明白了。 楼主讨论的,实际上是关机(下电)后信息的保留问题。从信息论的角度看,其实他要保留的只不过是 1 bit 信息。 但是,这信息必须保留在非易失性存储器中。因为重新上点后,无论易失性存储器、寄存器还是程序状态,全都复位了。也就是说,无法保持原有的信息。你必须借助 Flash 或 EEPROM 这一类非易失性存储器保存最新的状态。 你可以在长按 2 秒的事件处理流程中,加入信息保存的操作。 如果你的芯片中集成的是 NOR Flash,那它是块擦除、字节写的。你可以用 2 比特表示当前的状态。 11 Null,也就是尚未写入信息。 01 初始状态。 00 高亮状态。 使用 2-bit,是因为我们需要附加的信息,即最后写入信息的位置。 每次写入时,找到 2-bit 序列的第一个 11,写入你的当前状态。当一块已经写满时,擦除块,在最低地址的最前 2-bit 写入状态。 上电后,查找最后一个不是 11 的 2-bit 单元。这就是你要找到的最新的关机前状态。 当然,你也可以选择每次都可能需要擦除块的方案,记录永远写在块的固定位置,例如开头。这样,你可以用 1-bit 信息:1 表示初始状态,0 表示高亮状态。 当你要写入时,如果新状态与原来写入的状态相同,就什么都不做。(其实上一个方案也可以这样做。) 如果原来是 1,现在要写 0,就直接写入。 如果原来是 0,现在要写 1,就擦除块。不用写,擦后就是 1。 此方案擦除的概率较高,会缩短 Flash 的寿命,同时也会使完成保存关机的时间加长。
笨狗先飞
2018-06-14
打赏
举报
回复
如果关机只是休眠模式的话,状态记在内存里就可以了, 如果关机会掉电的话,没有eeprom flashrom这些存储器的话,记忆肯定是丢失了.
of123
2018-06-14
打赏
举报
回复
我控制循环切换的方法,就是与 1 异或,自动从 1 变 1,再从 1 变 0。都不用标志变量,直接对控制寄存器中的位异或。
dceacho
2018-06-14
打赏
举报
回复
楼主问题没说明白 两个问题,你现在想要解决哪一个? 1. PWM控制LED亮度 2.掉电存储
tianqi911
2018-06-14
打赏
举报
回复
使用PWM做。
ckc
2018-06-13
打赏
举报
回复
关机的时候单片机是什么状态?如果是掉电之类的状态ram不丢数据的,那就用一个状态标记一下就行了 如果关机的时候ram丢 数据,那就只能写到eeprom之类的东西里
fly 100%
2018-06-13
打赏
举报
回复
用pwm控制的亮度?
蓝桥杯
单片机
第九届省赛-彩灯控制器
蓝桥杯
单片机
第九届省赛-彩灯控制器 Notes1:动态
LED
亮度
等级 Notes2:EEPROM第一次上电读取数据的处理 Notes3:
LED
流水灯的实现方法 Notes4:暂态与稳态 Notes5:数码管闪烁的问题再发现 Notes6:通过设置
标志位
/计数单位让某段程序只执行一次 基本原理依旧是PWM输出控制
LED
亮度
,????PWM控制
LED
基本原理 可在没有对EEPROM写入任何数据(默认为0)或者写入其他不合理的数据时,读取到的 流转间隔 时间是不合理的(不在400~1200ms范围内或者
led
乱闪
PIC
单片机
高效
LED
驱动:SPI/I2C通信、
中
断与EEPROM应用实战
在嵌入式系统开发
中
,串行通信和
中
断处理是构建高效、实时应用的核心基础。串行通信接口(如SPI和I2C)作为微控制器与外围设备的数据通道,其原理在于通过少数几根线实现高速或灵活的数据交换,从而解放CPU资源,提升系统整体性能。
中
断系统则允许CPU即时响应外部事件,是实现多任务和实时控制的关键技术。这些技术的工程价值在于能够构建稳定可靠、响应迅速的嵌入式系统,广泛应用于工业控制、智能家居和显示驱动等领域。例如,在
LED
点阵屏或智能调光系统
中
,通过SPI高速传输显示数据,结合定时器
中
断实现精准的扫描刷新,并利用E
江科大51
单片机
笔记
假定
单片机
时钟频率的最大值为1000kHz,此时周期为1us,说明
单片机
能捕捉到比1us长的数据,在1us内来的若干数据就捕捉不到了,因为
单片机
最快1us翻转一次,周期肯定比1us大,所以,置高后立马置低的这个信号,
单片机
是可以捕捉到的。学习过程
中
没怎么记过笔记,想复习的时候发现只能挨行看代码,老师讲的东西当时好像看着挺简单能
记住
,其实过两天也忘得干干净净,现已学到6-2,特开此贴记录一下往后的课堂笔记,供个人复习使用,也希望能对各位网友有一定帮助~,类似触发器,速度最快,cpu里面用这个。
STM32定时器PWM实现
LED
呼吸灯效果
本文详细介绍了如何使用STM32定时器的PWM功能实现
LED
呼吸灯效果。通过配置定时器参数和GPIO复用功能,结合代码实现占空比平滑变化,创造出自然的呼吸视觉效果。文章包含硬件连接指南、工作原理详解和常见问题解决方案,为STM32开发者提供实用指导。
STC8H1K28
单片机
入门:从GPIO控制到串口通信的六个核心实验
本文详细介绍了STC8H1K28
单片机
的六个核心实验,从GPIO控制到串口通信,涵盖开发环境搭建、
LED
控制、定时器应用、
中
断处理、数码管显示及ADC应用。通过实战案例和调试技巧,帮助初学者快速掌握STC8H1K28
单片机
的开发要点,提升嵌入式系统开发能力。
单片机/工控
27,522
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章