程序设计目标及程序运行结果说明
本程序是动态扫描所有的数码管,从左到右8个数码管分别显示1、2、3、4、5、6、7、8。

程序相关电路及工作原理说明
1.LED数码管电路

段选信号:P0[7…0]
位选信号:P2[2…0]
译码使能:P2.3非

2.LED数码管引脚定义

3.工作原理
P0口的8位输出分别控制1个LED数码管的7段和一个小数点;而P2.3经反相器U4C控制74HC138的使能信号E3,结合P2.0、P2.1、P2.2这3个位选控制信号确定8个LED数码管中的哪个被点亮;电阻R15~R22为限流电阻。当段选为高、使能信号有效时,对应的LED管将会发光。通过以一定频率扫描位选信号,修改段选信号进行数码管点亮一段时间,从而给人视觉上几个数码管几乎同时显示的效果。

控制信号
段选信号:一位数码管包含8个二极管,a-g,如图:

8个二极管共阴极,以位选信号作为使能信号
位选信号
位选信号为SEL P2[2…0],如果位选信号为101,结果译码器译码得到0001 0000(单热点编码方式),选择第五位数码管

点亮一位数码管
通电:每一位数码管的8个二极管阳极P0[7…0],共阴极,P0置1
使能:位选信号有效,3-8译码器使能有效,即P2.3=1
模式:I/O模式设置为推挽输出模式(设置P0M1、P0M0、P2M1和P2M0)

扫描频率:8位数码管不可能同时亮起来,我们需要设置扫描频率,使数码管类似流水灯诸葛亮起,知识此时扫描频率很高,我们可以定义一个空循环,在主函数中设置n值来得到合适的扫描频率。

代码如下:

#include<STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
//定义位选段选信号的十六进制常量
uchar duanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f};//段选信号
uchar weixuan[]={0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};//位选信号
void Init()
{P2M0=0xff;P2M1=0x00;P0M0=0xff;P0M1=0x00;
}
void Delay(int n)       //延时函数
{while(n--);
}
uint i=0;
void main()
{Init();while(1){for(i=0;i<8;i++){P0=0;P2=weixuan[i];//位选信号P2[2..0],下一周期扫描下一个数码管P0=duanxuan[i+1];//段选,设置下一个数码管显示的数值Delay(600);}}
}

STC学习:八位数码管动态扫描相关推荐

  1. 【萌新向】STC8A8K64S4A12开发学习(三)——数码管动态扫描

    数码管动态扫描 一.多位一体数码管 开发板上使用的是两个四位一体数码管,并且带有小数点,一个四位一体数码管共有12个引脚,各个位数码管共用一组a,b,c,d,e,f,g,dp引脚,通过另外4个引脚进行 ...

  2. 51单片机使用定时器进行数码管动态扫描程序

    数码管是51单片机学习中比较基础的一个模块,为简化电路连接,提高系统可靠性,降低制造成本,多位数码管广泛采用动态扫描的方式进行显示.如果程序编写不当,数码管动态扫描容易出现亮度不均匀.亮度过低.重影等 ...

  3. FPGA项目五:数码管动态扫描

    文章目录 第五章 数码管动态扫描 第 1 节 项目背景 第 2 节 设计目标 第 3 节 设计实现 3.1 顶层信号 3.2 信号设计 3.3 信号定义 第四节 综合和上板 4.1 新建工程 4.2 ...

  4. 数字系统实验—第13周任务(3位数码管动态扫描显示实验含工程与优化)

    数字系统实验--第13周任务 任务书 0.简介 1. 实验操作:1周 2. 完成并在线提交文档(100%) 日志(系统功能描述) 报告(目的 设计 实现 总结) 3. 三位数码管数据显示实验在线验收 ...

  5. c语言数码管流动显示一个数,51单片机数码管动态显示 - 数码管动态扫描显示01234567程序(三种方案)...

    数码管动态扫描显示01234567程序二--51单片机动态显示共阳数码管01234567 原理图 c语言程序 程序如下: #include #define uint unsigned int #def ...

  6. 【Proteus仿真】8位数码管动态扫描显示变化数据

    [Proteus仿真]8位数码管动态扫描显示变化数据 Proteus仿真 示例代码 /*-----------------------------------------------名称:8位数码管动 ...

  7. linux 动态扫描 数码管,数码管动态扫描显示01234567程序(三种方案) - 全文

    数码管由于价格便宜,使用简单,在电器特别是家电领域(比如空调.热水器和冰箱等)得到了极为广泛的应用.在高校电子信息类专业单片机的教学过程中,数码管动态显示及实现方法是学生普遍反映较难掌握的内容.鉴于此 ...

  8. 实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计

    实验三 基于FPGA的数码管动态扫描电路设计 源文件的链接放在最后啦 实验目的: (1) 熟悉7段数码管显示译码电路的设计. (2) 掌握数码管显示原理及静态.动态扫描电路的设计. 实验任务: (1) ...

  9. 单片机学习笔记 —— 8位数码管动态扫描

    我们知道,依次只能让一个数码管/led灯亮起来,但是我们可以通过高频动态扫描得到8位数码管同时亮起来,这里介绍如何实现. 一.八位数码管 1.八位数码管原理图 下图为原理图: 段选信号:P0[7-0] ...

  10. 共阳极数码管动态扫描c语言,《C语言编程实训》实训指导书三

    1 C 语言编程实训语言编程实训 实训指导书三实训指导书三 适应专业 应用电子技术适应专业 应用电子技术 广州康大职业技术学院自动化系广州康大职业技术学院自动化系 二二 0 一一 0 年十一月年十一月 ...

最新文章

  1. iPhone重回5千档!苹果浴霸三摄新机发布,吊打华为上代芯,绝口不提5G
  2. python中协程与函数的区别_深入浅析python 协程与go协程的区别
  3. IIS 7.5关闭.net程序DEBUG
  4. oracle消耗内存的查询,在AIX中计算ORACLE消耗的私有内存总数
  5. 作者:邹本友,男,中国人民大学信息学院博士生, CCF学生会员。
  6. 大三学生独自破解逆天AI模型:我只是把撩妹的时间,都用来研究机器学习了...
  7. 使用RequireJS优化Web应用前端
  8. php post 传递数组参数,php提交post数组参数实例分析
  9. php 中echo命令详解,DOS中的ECHO命令详解
  10. python怎么注释作者_python作者注释
  11. 类和对象6:相关内置函数
  12. D语言(dlang)编写单片机(cortex-m系列)应用需要用到的技巧
  13. 长江后浪推前浪, “趣出行”死在“火牛”的沙滩上
  14. phpstorm安装jquery插件库
  15. Pnadas学习day-01
  16. Gitlab Runner 部署
  17. ReentrantLock源码分析
  18. 笔记本电脑移动办公平台网络解决方案
  19. 你的微信朋友圈被直升机与多啦a梦动图结合动量守恒定律刷屏了吗
  20. Excel表从多期报表取数中INDIRECT公式的万金油作用

热门文章

  1. angular2-swiper的使用
  2. BZOJ2286 [Sdoi2011]消耗战
  3. Python操作IHTMLDocument2用于自动化测试
  4. 怎么看软件的编写代码
  5. Mininet实验 自定义拓扑结构
  6. 查看最大的10个文件
  7. 使用监控宝监控php-fpm状态
  8. 我的2006总结:一个结束和一个开始
  9. 图形绘制——pygame之旅
  10. sxssfworkbook 设置单元格大小_Offset属性和Resize属性相结合,完美实现选择区域大小的改变...