社区
单片机/工控
帖子详情
在单片机编程中如何记住led的状态(亮度),只靠标志位
tianqi911
2018-06-13 12:47:40
有一个单片机问题,单按键,短按就是开,然后短按一次进入一个状态(一种亮度);长按2秒或以上就关机;
问题来了,再短按,开机还是长按结束之前的状态(亮度是之前的)。不使用rom,flash什么的,就是靠程序。
高人指点下吧,给点思路也是好的。
搞了一天了,没实现。
...全文
1214
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控制的亮度?
单片机
C语言程序设计实训100例--基于AVR+PROTEUS仿真(源程序)
4.25 用带SPI接口的数模转换芯片MAX515调节
LED
亮度
4.26 正反转可控的直流电机 4.27正反转可控的步进电机 4.28 DS18B20温度传感器测试 4.29 SPI接口温度传感器TC72应用测试 4.30 SHT75温湿度传感器应用 4.31 ...
基础
单片机
编程
:实现
LED
流水灯控制项目
简介:
LED
流水灯是通过
单片机
编程
控制
LED
灯按特定顺序点亮或熄灭,形成流水效果的项目。项目旨在教授硬件接口、定时器
中
断及I/O端口控制等基础知识。介绍包括
单片机
基础、
LED
工作原理、定时器和
中
断控制,以及如何...
单片机
:实现
LED
亮度
等级控制(附带源码)
LED
亮度
控制是
单片机
应用
中
的一种常见功能,通常通过调节
LED
的电流来实现不同的
亮度
等级。在嵌入式开发
中
,**PWM(脉宽调制)**信号常用于实现对
LED
亮度
的控制。通过改变PWM信号的占空比(duty cycle),可以调节
LED
...
单片机
:实现PWM
LED
灯
亮度
调节及Proteus仿真(附完整源码)
单片机
:实现PWM
LED
灯
亮度
调节及Proteus仿真(附完整源码)
光敏电阻控制
led
亮度
程序_
单片机
开发系统学习
LED
亮度
控制原理
早期控制
LED
亮度
的方法一般是采用模拟电路来调节
LED
的工作电流来实现,这种方式灵活性较差,很难达到智能控制的效果。本文将介绍如何通过一个普通MCS51
单片机
来产生PWM信号,达到调节
LED
的
亮度
的目的。一、硬件的...
单片机/工控
27,518
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章