此程序为手把手教你学51单片机的例程。例程中实现只显示有效位(高位0不显示),实现了数码管稳定显示不抖动。

for结合break 实现只显示有效位。

switch结合i 实现数码管动态刷新


#include <reg52.h>sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;unsigned char code LedChar[] = {  0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[6] = { //数码管显示缓冲区,初值0xff启动时都不亮0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
unsigned char i = 0;   //动态扫描索引
unsigned int cnt = 0;  //记录T1中断次数
unsigned char flag1s = 0;  //1s定时标志void main()
{char j;  //循环变量unsigned long sec = 1000000;  //记录经过的秒数,倒计时为初值999999+1unsigned char buf[6];   //中间转换缓冲区EA = 1;       //总中断ENLED = 0;    //使能U3ADDR3 = 1;    //需要动态改变ADDR0-2,所以不需要再初始化TMOD = 0x10;  //设置T1为模式1TH1  = 0xFC;  //为T1赋初值0xFC67,定时1msTL1  = 0x67;ET1  = 1;     //使能T1中断TR1  = 1;     //启动T1while (1){if (flag1s == 1)  //判断1s定时标志{flag1s = 0;   //1s定时标志清零sec--;        //秒技术自减1//将sec按十进制从低到高一次提取到buf数组中buf[0] = sec%10;buf[1] = sec/10%10;buf[2] = sec/100%10;buf[3] = sec/1000%10;buf[4] = sec/10000%10;buf[5] = sec/100000%10;//从最高位开始,遇到0不显示,遇到非0退出循环for (j=5; j>=1; j--){if (buf[j] == 0)LedBuff[j] = 0xFF;elsebreak;}//将剩余的有效数字为如实转换for ( ; j>=0; j--)  //for()其实未对j操作,j既保持上个循环结束时的值{LedBuff[j] = LedChar[buf[j]];}}}
}
/* 定时器1中断服务函数 */
void InterruptTimer1() interrupt 3
{TH1 = 0xFC;  //重新加载初值TL1 = 0x67;cnt++;       //中断次数计数值加1if (cnt >= 1000)  //1000次即为1s{cnt = 0;      //清零计数值以重新开始下一秒计时flag1s = 1;   //设置1s定时标志为1}//以下代码完成数码管动态扫描刷新P0 = 0xFF;   //显示消隐switch (i){case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0]; break;case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1]; break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2]; break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[3]; break;case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[4]; break;case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5]; break;default: break;}
}

KST-51:从999999开始的倒计时程序,只显示有效位相关推荐

  1. 51单片机用c语言倒计时程序,51单片机实现100以内倒计时,求大佬指点。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define uchar unsigned char #define uint unsigned ...

  2. 51单片机编写60秒倒计时程序

    #include <reg52.h> #define guan P0 #define wei P2 #define uchar unsigned char #define uint uns ...

  3. Java黑皮书课后题第1章:1.7(求π的近似值)编写程序,显示4*(1-1/3+1/5-1/7+1/9-1/11【+1/13】)

    Java黑皮书课后题第1章:1.7(求π的近似值) 题目描述 代码 代码块 评析 修改日志 题目描述 可以使用以下公式计算π: [手动空格]π=4*(1-1/3+1/5-1/7+1/9-1/11+-) ...

  4. 单片机学习笔记————51单片机实现数码管中的倒计时程序

    一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...

  5. 数码管显示倒计时c语言程序,1~99秒倒计时数码管显示C程序+Proteus仿真

    1~99秒倒计时数码管显示C程序+Proteus仿真文件. 优化了程序,使用51单片机内部定时器,可以实现1-99秒内倒计时. 仿真效果为: 源程序为: /* 调试环境:Proteus 7.8AT89 ...

  6. 共阳极数码时钟c语言程序,基于51单片机C语言数字钟程序.doc

    基于51单片机C语言数字钟程序 基于51单片机C语言数字钟程序 数字电子钟的设计 一. 绪论 (一)引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地 ...

  7. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

  8. Python | 使用时间模块编写倒计时程序

    文章目录 一,使用Python中的时间模块编写一个简易的倒计时程序 1.程序代码 2.运行结果 一,使用Python中的时间模块编写一个简易的倒计时程序 1.程序代码 ""&quo ...

  9. 课设-51单片机+PM2.5+温湿度(程序+原理图+Protel仿真)

    51单片机PM2.5+温湿度(程序+原理图+Protel仿真) 一.功能 二.模块 三.代码程序 四.PCB原理图 一.功能 本系统以STC89C52单片机为核心,主要包括传感器温湿度采集,传感器PM ...

  10. 基于51单片机的贪吃蛇小程序(8*8LED点阵实现)by_jy

    ** 基于51单片机的贪吃蛇小程序(8*8LED点阵实现)by_jy ** 一直很想写一个贪吃蛇的小程序,这两天终于抽空完成了,这里把我的思路分享给大家,仅供参考! 代码如下: 先放段主函数压压惊 v ...

最新文章

  1. 部署tomcat环境
  2. windows篇-第四章 安装和配置Windows域
  3. 基于并联SVM支持向量机训练HOG特征提取的人员目标提取
  4. wxWidgets:你好,世界
  5. VTK:几何对象之IsoparametricCellsDemo
  6. MySQL连接方式:长连接或者短连接
  7. hadoop启动碰到java.net.UnknownHostException
  8. (八)JAVA springcloud ssm b2b2c多用户商城系统源码:配置中心服务化和高可用
  9. 如何使用移动硬盘加密
  10. ur3 aubo movit机械臂运动
  11. 动态拨号云服务器安装Ubuntu系统使用说明
  12. VM+Lamp环境搭建
  13. JAVA毕设项目html5在线医疗系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  14. win7怎么更换锁屏壁纸
  15. 轻松禁用WinRAR设置
  16. 第5章 - 二阶多智能体系统的协同控制 --> 连续时间系统编队控制
  17. 一年赚一百万很简单(穷人翻身唯一出路)
  18. 利用yolov8零售商品识别实现的智能结算系统 yolo+后端flask+数据库sqlite+前端html(从零开始,全流程教学)
  19. 选股服务器列表为空 无法执行选股,东方财富客户端如何设置自动选择服务器 设置有条件选股方法...
  20. 股市神童”胡立阳:股市赚钱的人都不“正常

热门文章

  1. 2013年计算机运算速度慢,win7电脑运行速度很慢怎么提速|三个win7提速的技巧
  2. 针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言466-476条如下:
  3. 【熊出没之雪岭熊风】下载
  4. js获取某年某月某天是一年中的第几周
  5. 重新定义高端存储架构,华为Dorado V6树立全闪存新标杆
  6. Solidity语言详解——view和pure函数的使用区别
  7. MongoDB 数据库基本操作
  8. Stata中的单位根检验
  9. java正则表达式是什么6_进阶Java编程(6)正则表达式
  10. 国产3G之父--------李世鹤