数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 384|回复: 11

[工仪] CD40110(十进制一位数码管计数器)测试

[复制链接]
发表于 2025-6-12 16:39:30 来自手机浏览器 | 显示全部楼层 |阅读模式
电路及接线(下图)



9脚一个上升沿数码管显示+1(如下)






以此类推
7脚一个上升沿数码管显示-1(如下)




以此类推
5脚一个上升沿,清零(如下)


如果不能加、减、清零,或者数码管显示不全,则可能芯片有问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 2家元 +90 收起 理由
zzy_85569381 + 30 謝謝分享
家睦 + 60

查看全部打赏

发表于 2025-6-12 17:38:31 来自手机浏览器 | 显示全部楼层
简化字暴露年龄了
回复 支持 反对

使用道具 举报

发表于 2025-6-12 17:42:18 | 显示全部楼层
有趣的实验,这个比简单亮灯又有意思些,看到数字变化
回复 支持 反对

使用道具 举报

发表于 2025-6-12 21:26:11 | 显示全部楼层
接线太麻烦了,能不用单片机+继电器搞成自动的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-13 05:49:17 来自手机浏览器 | 显示全部楼层
11651189 发表于 2025-6-12 17:38
简化字暴露年龄了

哈哈,80后来的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-13 05:49:56 来自手机浏览器 | 显示全部楼层
fqazwsx12 发表于 2025-6-12 17:42
有趣的实验,这个比简单亮灯又有意思些,看到数字变化

嗯,这个芯片就是专门驱动数码管的
回复 支持 反对

使用道具 举报

发表于 2025-6-13 08:47:18 | 显示全部楼层
最近我也迷上数码管,试试用代码描述电路,用C语言指挥电路工作,这是其中一个9999倒计时的完整程序,还不能独立编辑,借助人工智能进度快了不少,有再高的人指点最终还得自己动手
include <reg52.h>
//数码闪烁解决,调整显示函数的延时时间150,有再高的人指点最终还得自己动手
// 共阳数码管段码表 (0-9)
unsigned char code SegCode[] = {
0xC0,  //"0"
                0xFC,  //"1"
                0x92,  //"2"
                0x98,  //"3"
                0xAC,  //"4"
                0x89,  //"5"
                0x81,  //"6"
                0xDC,  //"7"
                0x80,  //"8"
                0x88,  //"9"
};

//数码管位选定义
sbit DIG4 = P2^0; // 个位
sbit DIG3 = P2^1; // 十位
sbit DIG2 = P2^2; // 百位
sbit DIG1 = P2^3; // 千位

//全局变量
unsigned int count = 9999;   //倒计时计数器(9999秒)
unsigned int tmrCount = 0;   //  定时器中断计数器
unsigned char digit = 0;     // 当前显示位
unsigned char digits[4];     // 存储各位数字

// 函数声明
void Timer0_Init(void);
void Display(void);
void DelayUs(unsigned int us);
void UpdateDigits(void);

void main() {
// 初始化定时器
       Timer0_Init();
   
// 初始化位选
    P2 &= 0xF0; // 关闭所有数码管,
   
    while(1) {
    UpdateDigits(); //         更新各位数字
Display();      //         显示数码管
}
    }

//定时器0初始化
void Timer0_Init() {
   TMOD = 0x01;        //  定时器0,模式1有再高的人指点最终还得自己动手
TH0 = (65536 - 46080) /     256;// 50ms定时初值  (11.0592MHz)
TL0 = (65536 - 46080) %     256;
   ET0 = 1;            //  允许定时器0中断
EA  = 1;            //     开启总中断
   TR0 = 1;            // 启动定时器0
}

//定时器0中断服务函数
void Timer0_ISR() interrupt 1 {
   TH0 = (65536 - 46080) / 256; // 重装初值
TL0 = (65536 - 46080) %     256;
   
tmrCount++;
       if(tmrCount >= 2) { // 1秒到达  (20× 50ms = 1000ms)
tmrCount = 0;
               
       if(count > 0) {
            count--; // 秒计数器减1
} else {
        count = 9999; //             重置为9999秒
}
        }
    }

//更新各位数字
void UpdateDigits() {
   digits[0] = count / 1000;       // 千位
    digits[1] = (count % 1000) /  100; // 百位
   digits[2] = (count % 100) /  10;   // 十位
   digits[3] = count % 10;          // 个位
}

//数码管显示函数,有再高的人指点最终还得自己动手
void Display() {
// 关闭所有位选
    DIG1 = DIG2 = DIG3 = DIG4 = 1
    ;
        
   // 根据当前位显示对应数字
    switch(digit) {
        case 0: // 显示千位,有再高的人指点最终还得自己动手
            P0 = SegCode[digits[0]];
            DIG4 = 0;
break;
                   case 1: // 显示百位
P0 =             SegCode[digits[1]];
DIG3 = 0;
            break;
                   case 2: // 显示十位
P0 =             SegCode[digits[2]];
DIG2 = 0;
            break;
                   case 3: // 显示个位
P0 =             SegCode[digits[3]];
DIG1 = 0;
            break;
               }
   
// 延时保持显示
    DelayUs(150);
        
   // 移动到下一位
digit = (digit + 1) % 4;
}

    // 简单微秒延时函数
void DelayUs(unsigned int us) {
while(us--) {
           unsigned char i = 2;
        while(i--);
    }
}

打赏

参与人数 1家元 +60 收起 理由
侯闲 + 60 感谢分享

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2025-6-13 09:20:19 | 显示全部楼层
谢谢分享,制作帖
熟悉的分立元件味道
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-13 09:44:31 来自手机浏览器 | 显示全部楼层
段智刚 发表于 2025-6-13 08:47
最近我也迷上数码管,试试用代码描述电路,用C语言指挥电路工作,这是其中一个9999倒计时的完整程序,还不 ...

谢谢分享,我对这个还不懂,10年前买的单片机开发板还在睡觉,买了C语言的书都不知道放哪儿去了,那段时间研究没多久C语言就去研究PS去了
回复 支持 反对

使用道具 举报

发表于 2025-6-14 07:54:39 | 显示全部楼层
侯闲 发表于 2025-6-13 09:44
谢谢分享,我对这个还不懂,10年前买的单片机开发板还在睡觉,买了C语言的书都不知道放哪儿去了,那段时 ...

我的开发板也10多年了,点亮一个灯,点亮一个数码管,四个数码管倒计时,按键时钟闹铃,点亮一块屏幕......不明白找论坛问,希望你也能重拾梦想,不断进步
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-14 08:37:46 来自手机浏览器 | 显示全部楼层
段智刚 发表于 2025-6-14 07:54
我的开发板也10多年了,点亮一个灯,点亮一个数码管,四个数码管倒计时,按键时钟闹铃,点亮一块 ...

哈哈,加油。从命上来说,流年逢到科甲星,人的学习能力就很强,逢到财星就只顾忙着赚钱,世间诸事,皆有定数。
回复 支持 反对

使用道具 举报

发表于 2025-6-17 12:27:16 来自手机浏览器 | 显示全部楼层
数电的,玩的人少,可以玩玩荧光管,那个比数码管漂亮
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-30 05:18 , Processed in 0.249600 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表