单片机芯片型号 STC89C516
需求
需要知识
1.有关数码管
数码管是一种半导体发光器件,其基本单元是发光二极管。就是若干个二极管拼出来的。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点( DP),这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)可分为 1 位、 2 位、 3 位、 4 位、 5 位、6 位、7 位等数码管。
2.共阳极数码管和共阴极数码管
按单元连接方式可分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管, 共阳数码管在使用时将公共极 COM 接到一定电压(5v), 某一字段发光二极管的阴极为低电平时,相应字段就点亮, 当某一字段的阴极为高电平时, 相应字段就不亮。共阴数码管反之。
其实就是,八个条形的发光二极管焊在一起,阴极或阳极也一起连接,当另一边给出一个信号,让二极管的另一边有规律的接电,使需要的二极管亮起来,就可以组成数字了。
3.关于如何亮起来
(中间图为共阴极内部原理图,右图为共阳极内部原理图)
我们看这张图 :
一位数码管的引脚是 10 个,显示一个 8 字需要 7 个小段,另外还有一个小数点,所以其内部一共有 8 个小的发光二极管,最后还有一个公共端。多数生产商为了封装统一,单位数码管都封装 10 个引脚,其中第 3 和第 8 引脚是连接在一起的。它们的公共端又可分为共阳极和共阴极。
先看共阴极的:
8个发光二极管的阴极在数码管内部连接在一起,阳极是独立的, 通常在设计电路时一般把阴极接地。
给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。 如果想要显示出一个 8 字,并且把右下角的小数点也点亮的话,可以给 8个阳极全部送高电平,如果想让它显示出一个 0 字,可以除了给第“g,dp” 这两位送低电平外, 其余引脚全部都送高电平, 这样它就显示出 0 字了。
但共阴二极管有一些不足
首先是需要注意增加单片机 IO 口驱动电流,因为共阴数管是要靠单片机 IO 口输出电流来点亮的,但单片机 I/O 口难以输出稳定的、 如此大的电流, 所以数码管与单片机连接时需要加驱动电路,可以用上拉电阻的方法或使用专门的数码管驱动芯片,比如 74HC573、74HC245 等,其输出电流较大,电路接口简单,可借鉴使用。
其次,数码管的非公共端往往接在 IC 芯片(可以理解为单片机的CPU)的 I/O 上,而 IC 芯片的驱动电流往往是比较小的,如果采用共阴极数码管,它的驱动端在非公共端, 就有可能受限于 IC 芯片输出电流不够而显示昏暗,要外加上拉电阻或者是增加三极管加大驱动能力,更为麻烦。
而 IC 芯片的输入电流范围比较大,可以将驱动数码管的工作交到公共端(一般接驱动电源),加大驱动电源的功率自然要比加大 IC 芯片 I/O口的驱动电流简单许多,也能减轻主芯片的负担。所以共阳数码管使用更多。
再来看共阳二极管的显示原理:
其内部 8 个发光二极管的所有阳极全部连接在一起,电路连接时,公共端接高电平,因此要点亮发光管二极管,就需要给阴极送低电平,此时显示数字的编码与共阳极编码是相反的关系。
注意,数码管内部发光二极管点亮时,也需要 5mA 以上的电流,而且电流不可过大,否则会烧毁发光二极管。开发板的静态数码管使用的是共阳极数码管,不仅要防止数码管电流过大,同时要防止流经数码管的电流集中到单片机时电流不能过大,否则会损坏主芯片。
4.关于静态与动态显示
LED 数码管显示器工作方式有两种:静态显示方式和动态显示方式。
静态显示是每个数码管段必须接一个 8 位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用 CPU 时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高,比如使用 4 个静态数码管,那么就得 32 个 IO 来控制。
动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
6.开发板上的显示
开发板上使用的是一个共阳数码管,即 8 个 LED 的阳极全部并联一起引出如果要让共阳数码管显示数字0,即对应的段给低电平,其他的段给高电平。
下面给出共阴和共阳数码管的 0-F 段码数据表,如下所示:
它们的数据正好是相互取反的值。比如共阴数码管数字 0 段码:0x3f,其二进制是:0011 1111,取反后为:1100 0000,即为 0XC0。其他段码依此类推。
该段码数据由来,是将 a 段作为最低位,b 段作为次低位,其他按顺序类推,dp 段为最高位,共 8 位,正好和51 单片机的一组端口数一样,因此可以直接使用某一组端口控制数码管。
在软件设计里一般用一个数组表示,如显示0
......
//定义一个数组记录共阴数码管码表
unsigned char code faguang[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
P0=~faguang[0]; //因为单片机用的是一个共阳的数码管,这里取反,当然前面定义一个共阳的也可以
硬件设计
开发板上的数码管
静态数码管的控制管脚并未直接连接到 51 单片机的 IO 上,而是连接到 J8 端子上。由于使用的是共阳数码管,公共极接VCC,所以在数码管控制端可加一个限流电阻,阻值为 470 欧(471)。
如果要想 51单片机控制静态数码管,就必须将单片机管脚通过导线连接到 J8 端子上。因此需使用一根8Pin排线将单片机的管脚与J8端子连接。由于静态数码管模块电路是独立的, 所以使用任意单片机管脚都可以。
这里使用P0 组的 8 个 IO 管脚。
注意:要想让前面段码在静态数码管显示,就必须保证 P0 口的 P00 与 A 段到 P0 口的 P07 与 DP 段依次顺序连接,不能交叉,否则数据就会错位。
软件编程
之前学的实现点亮,for函数实现循环,延时函数实现停留1s,按键控制实现重置(把数组索引数重新赋值为0)
代码与注释如下
#include "reg52.h" //单片机头文件和一些c语言功能的头文件
#include sbit k1=P1^0; //定义p1^0端口为k1,把k1和p1^0连起来 typedef unsigned int u16; typedef unsigned char u8; //定义一些数据类型 u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; u8 i; void keydelay() //@12.000MHz 按键延迟消除抖动函数 { unsigned char i, j; i = 20; j = 113; do { while (--j); } while (--i); } void delay() //@12.000MHz 数码管显示延迟1s函数 { unsigned char i, j, k; _nop_(); i = 8; j = 154; k = 122; do { do { while (--k); } while (--j); } while (--i); } void main () { while(1) //保持循环运行 { for(i=0;i<10;++i){ P0=~smgduan[i]; //显示控制 delay(); //延迟1s if(k1==0) //这里是按键,检测按键是否落下 { keydelay(); //消除抖动 if(k1==0){ //再次检测按键是否落下 i=-1; //把数码管显示复位 } while (!k1); //检测按键松开 } } } } 效果预览 资料参考:百度百科,晋中51单片机开发攻略
上一篇:51单片机学习四 串口通信
下一篇:51单片机学习一 点亮LED实验
推荐阅读最新更新时间:2024-11-13 20:31
设计资源 培训 开发板 精华推荐
- LDK130C08R 0.8V、300mA 低静态电流极低噪声 LDO 的典型应用可调版本电路
- EVAL-AD9830EB,AD9830 直接数字合成器评估板
- ADV3200-EVALZ,用于 32 位缓冲模拟交叉点开关的评估板
- A6260高亮度LED电流调节器简单开关电源(换灯)的典型应用
- 使用 Analog Devices 的 LTC3555EUFD 的参考设计
- AM1G-1224DH30Z ±24V 1 瓦 DC-DC 转换器的典型应用
- wifi时钟+远程控制
- RD-572,参考设计 支持 600V Motion SPM 3 ver.6 系列设计,适用于空调和电机控制应用
- L7805A 高输入电压电路的典型应用(配置 2)
- #第七届立创电赛#N32G430小车
- 有奖调查|跟泰克一起了解【半导体材料与器件测试知识】(材料科学篇)
- 骏龙科技携手ADI有奖直播:隔离系统设计的隐藏成本
- 是德科技有奖直播:元宇宙测试系列研讨会之VR/AR 数字接口测试的挑战
- ADI有奖下载活动之21:ADI民用雷达解决方案
- 泰科电子工业事业部邀您云逛展 ——打破时间、空间的限制,TE Connectivity 线上工博会为您带来沉浸式VR观展体验
- 有奖直播:赋能移动电源,贝能推出1800W全数字双向电源方案
- 体积小、功耗低、安全性高,专用加密芯片ATSHA204 精彩专题,答题有好礼!
- 逛东芝电子在线展会,上百份礼品等您拿!
- 开启Altera SoC体验之旅,玩转Altera Cyclone V系列SoC