51单片机+4位数码管计时器按键可调节

51单片机+4位数码管计时器按键可调节


  • 4位数码管秒计时,采用定时器

  • proteus仿真
    在这里插入图片描述

  • 源代码

#include<reg51.h>          //单片机头文件
 
#define uint unsigned int
#
  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
以下是一个使用C51单片机控制3数码管动态显示000~100的示例代码: ```c #include <reg52.h> // 定义数码管连接的IO口 #define DATA P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; // 定义计数变量 unsigned int cnt = 0; // 数码管显示的数字 unsigned char code DisplayData[17] = { // 0~9 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, // A~F 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x3d, 0x76 }; // 延时函数 void Delay(unsigned int i) { while(i--); } // 数码管动态扫描函数 void DigDisplay() { unsigned char i; unsigned char buf[3]; buf[0] = cnt / 100; // 百 buf[1] = cnt / 10 % 10; // 十 buf[2] = cnt % 10; // 个 for(i = 0; i < 3; i++) { DATA = DisplayData[buf[i]]; switch(i) { case(0): LSA = 0; LSB = 0; LSC = 0; break; // 第一,选择第一个数码管 case(1): LSA = 1; LSB = 0; LSC = 0; break; // 第二,选择第二个数码管 case(2): LSA = 0; LSB = 1; LSC = 0; break; // 第三,选择第三个数码管 } Delay(100); // 扫描间隔 DATA = 0x00; // 清空数据口 } } // 主函数 void main() { while(1) { DigDisplay(); // 数码管动态扫描 cnt++; // 计数器加1 if(cnt == 101) cnt = 0; // 计数器清零 } } ``` 该程序中,使用P0口连接了3个数码管,使用P2.2、P2.3、P2.4三个IO口控制数码管选择。程序中使用了一个计数变量cnt,每次数码管扫描时将其转换为三个数字,并在对应的数码管上显示。同时,程序使用一个循环,每次计数器加1并进行数码管扫描,当计数器达到101时,将其清零重新开始计数。 注意,在实际使用中,需要根据具体的硬件连接情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值