【51单片机数码管驱动2位显示0-99按键3短按+1长按+10按键4短按-1长按清零,按键不影响数码管显示】2023-8-16

缘由51单片机按键控制数码管从0---99-编程语言-CSDN问答

可以帮忙看一下吗?

数码管最右边两位作为一个0-99s的计时器(从0开始),按键3短按计时器加1(最多只能加到99),按键3长按计时器加10

按键4短按计时器减1(不能减到负数),按键4长按计时器清零

cpp 复制代码
#include <reg52.h>
unsigned char code ShuMaGuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
0x00,0X80,118,121,56,63};//0~9隐.HELO
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
void smgxs(unsigned char w,unsigned char sz)
{
	P2=P1=0;//写数码管段消隐,位关闭。
	P2=255-w;//写2位数码管动态位驱动
	P1=ShuMaGuan[w==1?sz/10:w==2?sz%10:10];
}//写数码管段驱动,并拆分整数送相应位,以及不想显示的数码管关闭。
void main()
{//缘由https://ask.csdn.net/questions/7989107
	unsigned char w=0,sy=0,sz=0,js=0,can=0,m=0,xd=0;
	while(1)
	{
		if(++sy==0)//写数码管显示延时
		{
			if(!w)w=1;else w*=2;//数码位驱动
			smgxs(w,sz);//送数码管显示的值
			if(w>2)w=0;//控制显示位
		}
		if(!k3&&++xd==0)//按键消抖处理
		{
			while(!k3){if(++js==0)if(++m==0)if(can<8)++can;}//按键长短按处理
			if(can>2&&sz<89)sz+=10;else if(sz<99)++sz;
			can=js=m=0;
		}
		if(!k4&&++xd==0)
		{
			while(!k4){if(++js==0)if(++m==0)if(can<8)++can;}
			if(can>2)sz=0;else if(sz)--sz;
			can=js=m=0;
		}
	}
}

改进为按键不影响数码管显示,并使用了指针变量。

cpp 复制代码
#include <reg52.h>
unsigned char code ShuMaGuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0X80,118,121,56,63};//0~9隐.HELO
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
void smgxs(unsigned char *w,unsigned char sz)
{
	if(!*w)*w=1;else *w*=2;//数码位驱动
	P2=P1=0;//写数码管段消隐,位关闭。
	P2=255-*w;//写2位数码管动态位驱动
	P1=ShuMaGuan[*w==1?sz/10:*w==2?sz%10:10];//写数码管段驱动,并拆分整数送相应位,以及段关闭。
	if(*w>2)*w=0;//控制显示位
}
void main()
{//缘由https://ask.csdn.net/questions/7989107
	unsigned char w=0,sy=0,sz=0,js=0,can=0,m=0,xd=0;
	while(1)
	{
		if(++sy==0)//写数码管显示延时
		{
			smgxs(&w,sz);//送数码管显示的值
		}
		if(!k3&&++xd==0)//按键消抖处理
		{
			while(!k3){if(++js==0){smgxs(&w,sz);if(++m==0)if(can<8)++can;}}//按键长短按处理
			if(can>2&&sz<89)sz+=10;else if(sz<99)++sz;
			can=js=m=0;
		}
		if(!k4&&++xd==0)
		{
			while(!k4){if(++js==0){smgxs(&w,sz);if(++m==0)if(can<8)++can;}}
			if(can>2)sz=0;else if(sz)--sz;
			can=js=m=0;
		}
	}
}

具壽善現復白佛言:「云何菩薩摩訶薩安住安忍波羅蜜多引攝布施

乃至般若波羅蜜多?」

佛告善現:「若菩薩摩訶薩安住安忍波羅蜜多,從初發心乃至安坐

妙菩提座,於其中間,設有種種有情之類,非理毀罵輕蔑凌辱,乃

至分割支節持去,菩薩爾時都無忿恚,但作是念:『此諸有情深可

憐愍,為煩惱毒擾亂身心不得自在,無依無護貧苦所逼,我當施彼

隨意所須飲食、衣服及餘資具。』復持如是布施善根,與諸有情平

等共有迴向無上正等菩提,以無所得而為方便。如是迴向大菩提時

遠離三心,謂誰迴向?何所迴向?以何迴向?是為菩薩摩訶薩安住

安忍波羅蜜多引攝布施波羅蜜多。

「若菩薩摩訶薩安住安忍波羅蜜多,從初發心乃至安坐妙菩提座,

於其中間,乃至為救自命因緣,於諸有情終不損害,乃至不起諸惡

邪見。菩薩如是修淨戒時,不求聲聞、獨覺等地,復持如是淨戒善

根,與諸有情平等共有迴向無上正等菩提,以無所得而為方便。如

是迴向大菩提時遠離三心,謂誰迴向?何所迴向?以何迴向?是為

菩薩摩訶薩安住安忍波羅蜜多引攝淨戒波羅蜜多。

「若菩薩摩訶薩安住安忍波羅蜜多,發起勇猛增上精進,常作是

念:『若一有情在一踰繕那外,或十、或百乃至無量踰繕那外,或

在一世界外,或十、或百乃至無量諸世界外應可度者,我定當往方

便教化,令其受持或八學處、或五學處、或十學處、或具學處,或

令住預流果,或令住一來果,或令住不還果,或令住阿羅漢果,或

令住獨覺菩提,或令安住諸菩薩地乃至無上正等菩提,尚不辭勞,

況為教化無量無數無邊有情,皆令獲得利益安樂而當懈倦!』復持

如是精進善根,與諸有情平等共有迴向無上正等菩提,以無所得而

為方便。如是迴向大菩提時遠離三心,謂誰迴向?何所迴向?以何

迴向?是為菩薩摩訶薩安住安忍波羅蜜多引攝精進波羅蜜多。

「若菩薩摩訶薩安住安忍波羅蜜多,攝心不亂,離欲惡不善法,有

尋有伺,離生喜樂,入初靜慮,廣說乃至入滅想受定,此諸定中隨

所生起心、心所法及諸善根,一切和合與諸有情平等共有迴向無上

正等菩提,以無所得而為方便。如是迴向大菩提時遠離三心,謂誰

迴向?何所迴向?以何迴向?於諸靜慮及靜慮支都無所得。是為菩

薩摩訶薩安住安忍波羅蜜多引攝靜慮波羅蜜多。

「若菩薩摩訶薩安住安忍波羅蜜多,修行般若波羅蜜多,於諸法中

住循法觀,雖以遠離行相,或以寂靜行相,或以無盡行相,或以永

滅行相觀一切法,而於法性能不作證,乃至能坐妙菩提座,證得無

上正等菩提,從此座起轉妙法輪,利益安樂諸有情類。復持如是妙

慧善根,與諸有情平等共有迴向無上正等菩提,以無所得而為方

便。如是迴向大菩提時遠離三心,謂誰迴向?何所迴向?以何迴

向?是為菩薩摩訶薩安住安忍波羅蜜多引攝般若波羅蜜多,如是引

攝非取非捨。」

(继续宇宙游戏,过去佛游戏得,未来佛游戏得,现在佛游戏得,我们也游戏得。就如一条道无过、现、未时,人人走得,感恩佛告诉我们宇宙真理:自性空。如實觀色、受、想、行、識廣說乃至諸有漏法及無漏法皆是虛妄,皆非堅實,皆無自性,於一切法深生信解,皆以無性而為自性。正因为自性空才能智慧不妄执有正道,才能圆满六度智慧,才能圆满慈悲喜捨,由此因緣,自他益乐皆得圓滿,乃至圓滿諸佛無上正等菩提。)

相关推荐
vibecoding日记14 小时前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr213816 小时前
Verilog参数化游程编码RLE模块
算法
望易16 小时前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络20 小时前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
HjhIron1 天前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩2 天前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹2 天前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
vivo互联网技术2 天前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc