51单片机控制数码管显示
前言
今天学习51单片机的数码管模块
我的学习板上面的数码管是4为一体由12个引脚控制的模块。
今天就编程控制它显示我们想要的输出。
数码管本质上是由8个LED拼接而成的,他们分别叫做a,b,c,d,e,f,g,dp(小数点)。控制这八段的亮灭显示不同的结果。以共阴极为例(阳极为1则亮),0就是abcdef亮,g和dp灭,对应8为二进制就是001 1111(a是最低位)。就是0x3f.
这里给出0-8的16进制码,可以计算印证一下。
这类数码管有一个共同的特点,就是某一极是联通的(共阴极或共阳极),通过控制另一极来控制数码管。
老规矩,先看电路图
这里可以出是共阴极的。
段选信号与一个38译码器相连,E3是使能信号,Y0到Y7是输出信号,通过SEL0,SEL1,SEL2三个信号控制输出结果。(SEL为000对应Y0,SEL为001对应Y1······SEL为111对应Y7)。
SEl又是芯片引脚P2的低三位,我们控制P2就能完成选择哪一个数码管输出,控制P1就能选择该数码管的哪几个LED灯亮,这就是基本思路。
这里面也存在一个问题,电路的这种连接方式虽然省了很多I/O接口,但同一时刻只能有一个数码管有结果。但是二极管的刷新可以很快,利用人的视觉暂留效应,只要刷新够快,我们就能看到它们“同时”亮起。(8个数码管同时亮时,我们打开手机摄像头,摄像头靠近数码管,从手机里能很明显得看到数码管在闪烁刷新,不信可以试一下)
下面放上代码:打印HNU–510
#include <STC15F2K60S2.H>void Delay(unsigned int xms) //@12.000MHz
{while(xms--){unsigned char i, j;i = 12;j = 169;do{while (--j);} while (--i);}
}unsigned char duanxuan[]={0x76,0x37,0x3e,0x40,0x40,0x6d,0x5b,0x3f};
unsigned char weixuan[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; void main(){P0M0=0xff; P0M1=0x00;P2M0=0xff;P2M1=0x00;while(1){int k=0;for( k=0;k<8;k++){P0=duanxuan[k];P2=weixuan[k];Delay(2);}}
}
这里duanxuan的数组就是想要输出字符的十六进制代码,weixuan数组从0到7控制P2的低三位。利用循环就能一直刷新,实现想要的输出。
推挽输出还是要设置的,这里是强上拉。第一次我没写推挽输出数码管显示的亮度就很低很低,设置了推挽输出就很亮。还有就是P2的引脚都用到了,所以设置推挽输出时P2M0=0xff,不同于之前只用到P2.3的P2M0=0x80。
还有就是延时2ms也有它的作用,因为刷新太快会导致这一次的段选信号和上一次的位选信号结合这种情况,数码管上一些不该亮的地方会有暗一点的光。于是我们加一个延时函数阻断这种结合,这个步骤叫“消影”。
上图就是没有消影的状况。
下面放一下我的代码跑出来的效果:
清清楚楚,白白净净,单纯、善良、可爱的数码管实在太好看了,嘿嘿!
后记
数码管显示的学习就要到此为止了,之后会持续更新的。
如果有疑问欢迎交流。
未完待续······
51单片机控制数码管显示相关推荐
- 51单片机七段数码管显示时钟无按键控制—①—74HC595版
参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...
- 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真
51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...
- c语言控制数码管显示时间,单片机 控制 数码管显示
常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...
- 51单片机实现数码管显示小数
51单片机实现数码管显示小数 要求 1 Proteus 面向编程的模型搭建 2 代码实现 2.1. 实现数码管刷新 2.2 对小数进行分解的函数 3 测试用例 4 仿真结果 要求 要求1:根据整数部分 ...
- 普中51单片机按键-数码管显示
基于普中单片机按键-数码管显示 简介 1.硬件部分 普中单片机开发板 数码管 独立按键 2.软件部分 keil软件 硬件部分 普中单片机开发板 数码管 独立按键 (这些都是开发板的最基本的配置) 软件 ...
- 基于51单片机的数码管显示方案
这一次给大家带来的项目是课堂作业级别的51单片机数码管显示,本次的项目着重于讲解原理,让大家明白单片机的io对于外界设备的控制是如何进行的. 共阳极和共阴极数码管的差异 (1)驱动方法的差异.一个数码 ...
- 51单片机 静态数码管显示
本章博客讲述使用51单片机编写程序静态数码管显示 1.新建工程,选择芯片型号,这里注意--为了防止出现在插入头文件reg时出现某些引脚不定义的情况 可尝试切换为AT89C52型号的芯片,插入头文件即为 ...
- 51单片机-控制数码管
目录 1.硬件设计 1.1.LED数码管介绍 1.2.原理图设计 2.软件设计 2.1.静态数码管显示 2.2.动态数码管显示 2.3.模块化编程(头文件) 3.知识点 3.1.数组 3.2.子函数 ...
- 二、51单片机控制数码管
1.数码管 1.1.什么是数码管 (1)数码管的外观: 数码管可分为单个的,联排的(2位.4位.8位) (2)数码管的作用: 数码管是显示器件,是用来显示数字的. 1.2.数码管的工作原理 (1)数码 ...
最新文章
- 攻防世界Reverse第九题no-strings-attached
- SpringBootSpring --- Redis 集成 Error creating bean with name 'enableRedisKeyspaceNotificationsIniti
- 佳能hdr_烧设备无止境不代表随时败家,佳能EOS 5D4“闲鱼”翻身取代200D
- 价值6000的信息分类系统源码
- 计算机编程语言的分类与python语言快速度认识
- 怎样启用win7的超级管理员账户
- VMware在RSA大会上的新发布
- sourceforge加速下载_CentOS 7下使用mwget加速wget
- 解决gitlab关闭登录选项问题
- outlook 邮件 设置延迟送信
- (转)黄金交易革命即将到来?区块链技术让你像刷卡一样“刷黄金”
- 写一个AndroidStudio有道翻译插件给大家
- mysql捕获1300的错误_pt-osc 变更时遇到 “MySQL error 1300” 报错问题解决
- worldpress 添加网站关键词和描述
- 美国国家学术出版社所有PDF图书开放免费下载
- OpenGL ES glut glew glfw glad freeglut
- 金融分析与风险管理——期权类型及到期时的盈亏
- C语言编程求小球自由落体高度
- 转载批处理之FOR语句祥解
- UE5打包安卓环境搭建