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

相关推荐
Navigator_Z2 小时前
LeetCode //C - 1223. Dice Roll Simulation
c语言·算法·leetcode
171320330计算机毕设编程2 小时前
2027计算机毕设五大方向对比&选题推荐
java·ide·python·算法·django·php·推荐算法
单片机仿真设计2 小时前
【proteus仿真】基于 STM32 快递运输避障小车设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
lhbweilai2 小时前
工业互联网(二)——USB 设备编程(一)
单片机·嵌入式硬件
苏灵凯2 小时前
IT疑难杂症诊疗室:从故障定位到根治的技术实战指南
笔记·ai·域名·agent·deepseek
冰暮流星2 小时前
marketdown之表格
笔记
万物智能2 小时前
设备树DTS-【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
后端·算法
代码不停2 小时前
子数组问题
java·算法
小欣加油2 小时前
Leetcode2058 找出临界点之间的最小和最大距离
数据结构·c++·算法·leetcode·职场和发展
山岚的运维笔记2 小时前
mysql 专业笔记 -- 第 1 章:MySQL 入门
运维·数据库·笔记·后端·学习·mysql·dba