【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25

缘由https://ask.csdn.net/questions/7909241/54131971

cpp 复制代码
`#include "reg52.h"//四位数码管显示
sbit d=P2^1;
sbit w=P2^0;
sbit k1=P3^2;
sbit k2=P3^3;
bit x1=0,x2=0;
unsigned char code SmZiFu[]={63,6,91,79,102,109,125,7,127,111,128,0};//0-9.
unsigned char ys=0,x=0,fx=0;
void xianshi()
{
    if(++ys>174)
    {
        ys=P0=0;
        d=1;P0=SmZiFu[x+fx>7?11:x+fx];d=0;
        w=1;
        P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
        w=0;
        if(++x>7)x=0;
    }
}
void main()
{//缘由https://ask.csdn.net/questions/7909241/54131971
    unsigned char xd=0,js=0;
    while(1)
    {
        xianshi();
        if(k1==0&&++xd==0){x1=1;x2=0;while(k1==0)xianshi();}
        if(k2==0&&++xd==0){x2=1;x1=0;while(k2==0)xianshi();}
        if(ys==0&&++js==0)
        {
            if(x1==1&&x2==0)if(++fx>7)fx=0;else;
            else if(x1==0&&x2==1)if(--fx==255)fx=8;else;
            else fx=0;
        }
    }
}`
cpp 复制代码
`void xianshi()
{
        if(++ys==0)
        {//74CH273
           w=0;
           P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
           w=1;d=1;P0=SmZiFu[x+fx>7?11:x+fx];d=0;//若用2片273则d=0在先d=1在后
           if(++x>7)x=0;
        }
}`

第3位数码管无论如何都无法点亮,添加P0=255;后还是一样?还不清楚什么原因,找到标号弄错了。




cpp 复制代码
`#include "reg52.h"//四位数码管显示
sbit d=P2^1;
sbit w=P2^0;
sbit w1=P2^2;
sbit k1=P3^2;
sbit k2=P3^3;
bit x1=0,x2=0;
unsigned char code SmZiFu[]={63,6,91,79,102,109,125,7,127,111,128,0};//0-9.
unsigned char ys=0,x=0,fx=0;
void xianshi()
{
        if(++ys==0)
        {
                w=0;
                P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
                w=1;
                w1=0;
                P0=255-(x==0?1:x==1?2:x==2?4:x==3?8:x==4?16:x==5?32:x==6?64:128);
                w1=1;
                d=0;P0=SmZiFu[x+fx>7?11:x+fx];d=1;
                if(++x>7)x=0;
        }
}`

有时由于修改电路难免发生小误而奇怪现象如下





我初学编程时就到论坛1是看看别人是怎么写的,2是有机会就回复力所能及的,有一次好像是回复不怎样,有人奚落我一边呆着去,我问什么意思,答"哪凉快哪呆着去",然而这种人我觉得不值一提,没那么了不起,反而是没见识鄙陋的表现,其实学单片机我也是一样来看看别人是怎么写的,不是复制粘贴的,最重要的是自己思考推敲才要紧,其实这种驱动没什么特别的,多动脑子就有办法,很简单的,不是什么很难的时序。

相关推荐
To_OC4 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
炸膛坦客5 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
旖-旎5 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC6 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
富唯智能6 小时前
复合机器人 vs 工业人形机器人|工厂工序选型回本方案
经验分享
delishcomcn7 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹7 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术7 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划
-XWB-8 小时前
【LLM】Agent Planning 完全指南:8 种纯 LLM 范式 + 8 种混合规划模式详解(二)
人工智能·经验分享·aigc·学习方法·ai编程