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

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

乃至般若波羅蜜多?」

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

攝非取非捨。」

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

相关推荐
鹿角片ljp8 小时前
LeetCode 236. 二叉树的最近公共祖先|递归后序
算法
luj_17688 小时前
大律师考核应重能力与科技素养
c语言·开发语言·c++·经验分享·算法
无定义_8 小时前
Floyd——Warshall
算法
有梦想的骇客8 小时前
PyTorch学习笔记
pytorch·笔记·学习
刃神太酷啦8 小时前
Linux 系统 MySQL 完整安装配置教程:从卸载 MariaDB 到优化 my.cnf----《Hello MySQL!》(1)
android·linux·c语言·c++·mysql·leetcode·mariadb
Capricorn19889 小时前
个人知识库接入大模型频现“幻觉引用”?排查 RAG 溯源失效问题,解析知芽构建可信第三大脑的底层架构
大数据·论文阅读·人工智能·笔记·架构·论文笔记
陈年老古董9 小时前
深度学习入门笔记:从神经元到深度神经网络
人工智能·笔记·深度学习·神经网络·学习
带多刺的玫瑰9 小时前
Leecode#9刷题之回文数
数据结构·算法
富唯智能机器人9 小时前
车间地面油污粉尘积水,会影响复合机器人导航精度吗?|富唯智能
经验分享
泯泷9 小时前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法