【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;
		}
	}
}

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

乃至般若波羅蜜多?」

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

攝非取非捨。」

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

相关推荐
坚果派·白晓明1 小时前
鸿蒙 PC 应用集成 libhv 鸿蒙化三方库 —— AtomCode + Skills 驱动的高效集成实践
c语言·c++·ai编程·harmonyos·atomcode
触底反弹2 小时前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
aaaameliaaa2 小时前
C语言随机数函数使用全解析
c语言·笔记
Cloud_Shy6182 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第六章 Item 40 - 43)
android·开发语言·人工智能·笔记·python·学习方法
装不满的克莱因瓶2 小时前
掌握生成对抗网络(GAN)的优化目标与评估指标——从博弈函数到生成质量衡量体系
人工智能·python·深度学习·算法·机器学习
技术小黑2 小时前
CNN算法实战系列06 | InceptionV1实现猴痘病识别
深度学习·算法·cnn·inceptionv1
是个西兰花2 小时前
linux:命名管道与共享内存
linux·运维·服务器·网络·c++
凡人叶枫2 小时前
Effective C++ 条款08:别让异常逃离析构函数
java·linux·数据库·c++·嵌入式开发
chase。2 小时前
【学习笔记】Dexora:面向高自由度双臂灵巧操作的开源 VLA 系统
笔记·学习
風清掦2 小时前
【STM32学习笔记-15】FLASH 闪存(Claude)
笔记·stm32·单片机·嵌入式硬件·学习