在上一讲的代码中几个数码管只能同时显示相同的数字和字母,这一讲我们实现同时3个数码管点亮但每个数码管显示的数字都不一样,所以我们做一个用来显示一个变量一秒后自加1的显示效果。

例如,此时时间过去了162秒

1.取余

先定义一个8位的变量Second,最多能计到255秒,所以我们只用到3个数码管而已,这3个数码管的显示只能显示0~9。

这里我们首先来了解一下取余。

162%10=2;

(162/10)%10=6;

(162/100)%10=1;

大家要知道Second是unsigned char无符号整型变量,比如当Second等于169时,(Second/10)是等于16的,后面的小数直接舍去,就算小数是9也照样舍去,没有四舍五入的说法。

到这里我们也就不难理解,当Second为162时,分别让3个数码管显示各自的位数,数码管2显示百位数1,数码管1显示十位数6,数码管0显示个位数2。

2.代码分析

首先要同时点亮3个数码管就必须让三八译码器的IO0~IO2轮流快速输出低电平,然后在数码管0被点亮的瞬间之后P0被赋值为LedChar[Second%10],这样数码管0就显示了这个变量的个位数。

然后又到了数码管1被点亮,马上P0被赋值为LedChar[(Second/10)%10],数码管1显示了这个变量的十位数。

接着就是到了数码管2被点亮,马上P0被赋值为LedChar[(Second/100)%10],数码管2显示了这个变量的百位数。

大家要有一个意识,那就是随着每次IO0,IO1,IO2输出低电平之后的瞬间,P0都会改变它8个IO端口输出状态以显示不同的数字。

3.代码#include

sbit ADDR2 = P1^2;

sbit ADDR1 = P1^1;

sbit ADDR0 = P1^0;

sbit ENLED = P1^4;

sbit ADDR3 = P1^3;

unsigned char code LedChar[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//数码管状态值初始化

void main()

{

unsigned int i=0,x;

unsigned char Second=0;//定义一个一秒之后自增1的变量

ADDR3 = 1;//使能三八译码器

ENLED = 0;//

while(1)

{

for(x=0;x<20627;x++)//软件调试得出这个循环耗时1秒

{

P0=0xFF;//P0端口状态全部熄灭数码管里的LED达到刷新作用

switch(i)

{

case 0:

ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;P0=LedChar[Second%10];       i++;break;

case 1:

ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;P0=LedChar[(Second/10)%10];  i++;break;

case 2:

ADDR2 = 0;ADDR1 = 1;ADDR0 = 0;P0=LedChar[(Second/100)%10]; i=0;break;

}

}

Second++;//一秒之后变量自加1

}

}

4.代码实现原理

我们知道for循环的持续时间为1秒,我们拆开代码分析就像这样

第一次for循环执行的内容为P0=0xFF;

ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;P0=LedChar[Second%10];i++;

第二次for循环执行的内容为P0=0xFF;

ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;P0=LedChar[(Second/10)%10];i++;

第三次for循环执行的内容为P0=0xFF;

ADDR2 = 0;ADDR1 = 1;ADDR0 = 0;P0=LedChar[(Second/100)%10];i=0;

一直循环下去,也就达到了三八译码器IO0~IO2轮流快速地切换输出低电平了,也就做到同时点亮的作用,直到for循环持续的时间结束就“Second++;”但这条语句执行地很快于是又重新for循环了,但是Second却改变了数字,LedChar[Second%10]也就不是之前的状态值了。

c语言中乱显示数字,同时显示不同的数字相关推荐

  1. C语言中猜数大小的实验报告,猜数字游戏实验报告

    <猜数字游戏实验报告>由会员分享,可在线阅读,更多相关<猜数字游戏实验报告(17页珍藏版)>请在人人文库网上搜索. 1.C语言课程设计报告题 目:猜数字游戏班 级:通信工程组 ...

  2. c语言某年某月的天数switch,在C语言中 使用switch语句编写“显示某年某月的天数”程序:...

    那就在进入swith语句之前先处理一下,比如先建立两个整形数组预存储闰年和非闰年的每个月的天数,再就是判断一下闰,加上一个判断条件,分入口进入switch语句就可以了. 其实,写程序是"法无 ...

  3. c语言中怎么隐藏随礼数,份子钱吉利数字怎么选 结婚随份子哪些数字是忌讳

    中国人结婚是及其讲究的一件事情,就拿结婚随份子来说,结婚份子钱一定要吉利才行.那么结婚份子钱给多少吉利呢?哪些数字是比较忌讳的呢?下面小编整理的相关内容,我们一起来看看吧! 一.随份子的吉利数字 01 ...

  4. c语言中如何将月份转化成英语,把数字月份转化成英文月份 用C++编写

    满意答案 #include"iostream.h" main() { int i,j; for(j=1;j<2;) { cout< cin>>i; if(i ...

  5. c语言中字符型变量的类型标识符是,C语言中类型标识符有哪些

    满意答案 564vlaci 2015.10.29 采纳率:48%    等级:12 已帮助:6409人 C语言中的标识符 1) 标识符由字母.数字.下划线"_"组成,并且首字母不能 ...

  6. Gox语言中进行屏幕截图并显示在Sciter图形界面中-GX38.2

    本例承接GX38.1一文中的例子,加了一些改进,在进行界面截图后,将图片展示在用Sciter包编写的图形界面上. 代码如下: // 设置github.com/kbinani/screenshot包的简 ...

  7. TF之CNN:利用sklearn(自带手写数字图片识别数据集)使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线

    TF之CNN:利用sklearn(自带手写数字图片识别数据集)使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线 目录 输出结果 设计代码 输出结果 设计代码 ...

  8. Android实战处理带+号的电话号码在Arabic语言中的正确显示

    2019独角兽企业重金招聘Python工程师标准>>> 现在有串电话号码+8613212345678(注意是带+号的),要保证在Arabic 语言中的正确显示,如何来做? 要求: 英 ...

  9. C语言中未显示声明函数返回值的类型

    C语言中如果未显示声明函数返回值的类型或函数的形式参数类型,它就默认返回整型.这种声明在C语言中叫做隐式声明.例如: / //main.c /#include<stdio.h>divide ...

最新文章

  1. java property异常_Java常见的异常和解决的办法
  2. vivo手机计算机错误怎么弄,手机计算器出错,原因竟是人性化设计
  3. Proguard源码分析(五) ConfigurationParser.keep参数
  4. oracle索引sys_nc,通过dba_ind_columns表查到索引所在列的名字为SYS_NC00133$
  5. MyEclipse10下开发第一个Hibernate小程序
  6. Python No Module name cv2解决方案
  7. gulp的安装和配置详解
  8. jad的用法(反编译某目录下所有class)
  9. html学术模板,用Latex写学术论文(一): IEEE模板和\documentclass
  10. C语言链表翻转的三种实现方式(栈、头插法、递归法)
  11. 哈哈,用FlexGrid做开发,轻松处理百万级表格数据
  12. win10系统下,屏幕录制专家如何录制耳机里面的声音
  13. 实体门店的促销活动该如何策划才能成功?
  14. 对郭天祥老师的一些知识点的解读
  15. Java poi api插入文字水印到docx文件
  16. vue开发APP使用微信分享和QQ分享功能
  17. 银联在线php支付接口,ecshop银联在线支付接口插件(官方版)
  18. 怎么更新opengl.dll文件_微信又更新了:群接龙怎么玩?文件如何备份?怎么发高清大视频?...
  19. docx转换html(mammoth)
  20. 个人微信小程序可以使用微信支付的解决方法

热门文章

  1. 锋利的Jquery摘要
  2. ios swift 实现饼状图进度条,swift环形进度条
  3. PHPCMS之 列表和内容页
  4. 多源最短路径---Floyd-Warshall算法
  5. 最小生成树:Kruskal算法 和 Prim算法(第23章)
  6. d).关于steal lock
  7. 部署war包后,新增tomcat服务器,启动tomcat服务器报错解决方法
  8. FreeImage编译及遇到问题解决
  9. 文字两侧加横线的解决方案
  10. 【报告分享】中国零售业公私域运营手册暨实施指引.pdf(附下载链接)