一位数码管两种驱动方法 原理图与程序(汇编+C语言)

合集下载

单只数码管循环显示0-9

单只数码管循环显示0-9

单只数码管循环显示0-9报告设计题目:单只数码管循环显示0~9设计要求:单片机控制1只数码管,循环显示0~9需求分析:本设计要求单只数码管循环显示0~9,这里采用的是共阴极数码管。

让数码管显示数字的步骤为:1〕使数码管的公共端接地(共阴极〕上。

2〕将显示码送到单片机的P0口,向数码管的各个段输出不同的电平,使单个数码管循环显示0-9这10个数字。

复位电路:在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。

无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。

而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。

许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机〞、“程序走飞〞等现象,这主要是单片机的复位电路设计不可靠引起的。

基本的复位方式单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。

当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,那么CPU就可以响应并将系统复位。

设计原理:一、数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。

所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。

数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。

而共阳极就是将八个LED的阳极连在一起。

其原理图如下。

其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。

一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线〔即a,b,c,d,e,f,g,dp〕连在一起,而各自的公共端称为位选线。

数码管显示电路的原理

数码管显示电路的原理

数码管显示电路的原理
数码管显示电路通过控制电压信号的高低来驱动数码管的不同段进行显示。

数码管是由多个发光二极管组成的,每个发光二极管对应显示一个数字或符号。

数码管显示电路主要由以下几个部分组成:
1. 数字信号发生器:用来产生需要显示的数字或符号的电信号。

该信号可以通过逻辑门、计数器、微控制器等方式产生。

2. 译码器:将数字信号转换为控制数码管显示的信号。

译码器一般采用BCD码(二进制编码十进制)或者7段码来表示数字。

3. 驱动电路:将译码器输出的信号转换为适合驱动数码管的电压和电流。

驱动电路一般使用三极管、开关电路等来完成。

4. 数码管:由多个发光二极管(LED)组成,每个发光二极管对应一个数字或符号的显示段。

数码管的引脚连接到驱动电路上。

5. 电源电路:为整个数码管显示电路提供工作电压。

一般使用稳压电源或者适配器来提供稳定的直流电压。

工作原理如下:
当数字信号发生器产生需要显示的数字或符号的电信号时,该
信号经过译码器转换为对应的亮灭控制信号,然后通过驱动电路产生适合数码管的控制电压和电流。

驱动电路按照控制信号的要求,通过对应的引脚将控制信号传递给数码管。

这样,数码管的不同段就会根据控制信号的高低来亮灭,从而显示出对应的数字或符号。

整个数码管显示电路在工作时,可以通过改变数字信号的输入来实现不同数字或符号的动态显示。

经过适当的控制和调节,数码管显示电路可以显示出各种数字、字母、符号等。

数码管介绍以及驱动程序

数码管介绍以及驱动程序

数码管显示原理:1.1章8字数码管简介常见的数码管是8段数码管,由8个法官二极管组成,每个发光二极管的PN结是由一种特殊的材料的半导体做成的。

当外加电压是,发光二极管把电能转换成光能。

1.1.1 8字数码管的结构:8字数码管由8个法官的二极管排列组成(包括小数点位)如右图所示:这8个独立的二极管通常被命名:a.b.c.d.e.f.g.h。

h表示小数点。

利用8段数码管能显示所有数字以及部分英文字母。

1.1.2 数码管的分类:8段数码管有2种不同的形式:一种是8个发光二极管的阳极都联在一起,成为共阳极8段数码管如图所示:共阳极8段数码管的8个发光二极管的政绩一起接VCC,要控制数码管中的某一段亮,比如A段,只须要控制数码管的A脚为低电平就可以了,反之熄灭A 段就控制A脚为高电平。

另一种是8个发光二极管的阴极都联在一起,称为共阴极8段数码管,如图所示:共阴极8段数码管的8个发光二极管的政绩一起接GND,要控制数码管中的某一段亮,比如A段,只须要控制数码管的A脚为高电平就可以了,反之熄灭A 段就控制A脚为低电平。

1.1.3 数码管的显示方式:8段数码管的显示方式由静态和动态之分。

分别介绍如下:①静态相示方式:当8段数码管显示一个字符时,该字符对应的发光二极管控制信号一直保持有效;静态显示方式的每个数码管都需要一组控制信号。

而动态的多组控制信号,轮流扫描这些数码管,十多个数码管可以同时动态显示(相对人眼)。

②动态显示方式:该字符对应的发光二极管是轮流点亮的,即控制信号按一定的周期有效,在点亮过程中,点亮时间是很短暂的,所以视觉看到的依然是很稳定的。

1.1.4 数码管驱动电路设计以共阳极数码管为例用处理器的8个GPIO分别控制数码管中的8段发光二极管,这样往GPIO的引脚送一个低电平就能点亮该引脚对应的一段数码管,由于发光二极管能承受的电流大多是毫安级的,因此还需要外接一个限流电阻。

①译码器的使用:在实际设计中,处理器一般不是直接用8个I/O脚来控制数码管的显示,而是通过外接一个译码器来控制。

数码管原理及显示单片机C编程

数码管原理及显示单片机C编程

数码管显示程序编写
数码管显示原理:通过单片机控制数码管的亮灭状态,实现数字或字符的显示。
数码管显示编程语言:C语言,常用的开发环境有Keil、IAR等。
数码管显示程序的基本结构:包括初始化、显示数据的编码与解码、数码管显示驱动函 数等部分。
数码管显示程序的实现步骤:编写代码、编译链接、下载调试等。
七段数码管
十四段数码管
八段数码管 十六段数码管
数码管的驱动方式
静态驱动:每个数码管需要一个独 立的位选信号,通过位选信号来控 制哪个数码管亮
动态扫描速度:数码管显示的速度 取决于扫描速度,速度越快,人眼 看起来就越连续
添加标题
添加标题
添加标题
添加标题
动态驱动:多个数码管共用一个位 选信号,通过扫描方式逐个点亮数 码管,实显示单片机 C编程实例
数码管静态显示程序
数码管静态显示原理 单片机C编程实例代码 数码管静态显示程序流程图 数码管静态显示程序实现步骤
数码管动态显示程序
数码管动态显示原理 单片机C编程实例 数码管动态显示程序流程 数码管动态显示程序代码
数码管多位显示程序
数码管显示原理
单片机C编程技巧:使用PWM(脉冲宽度调制)技术,通过调节占空比来控制数码管亮 度。
硬件电路设计:需要设计一个适当的硬件电路,以支持数码管亮度控制。
软件编程实现:在单片机C编程中,需要编写相应的程序来实现数码管亮度的控制。
数码管显示速度调节
数码管显示速度调 节的原理
数码管显示速度调 节的方法
数码管显示速度调 节的优缺点
数码管显示速度调 节的实例代码
数码管显示效果优化技巧
数码管显示亮度调整:通过调整单片机的PWM输出,控制数码管的亮度,使其在合适的光线 下更加清晰可见。

51单片机第四节数码管

51单片机第四节数码管

51单⽚机第四节数码管本笔记默认学习者已拥有:1.Keil5和stc 烧写⼯具 等各种软件、驱动、环境;2.有⼀个属于⾃⼰的 51单⽚机开发板及相关零件 ;3.认识C 语⾔的语法;本⼈使⽤的51开发板为 郭天祥C51 TX-1C 增强版开发板 ;本笔记根据B 站up 主:江科⼤⾃化协的教学视频 整理得到ヾ(•ω•)4-1 静态数码管显⽰上图为TX-1C 的 数码管及LED 模块 原理图138译码器和74HC245 都是⽤来控制 数码管显⽰ 的;单数码管1.上图为 ⼀位数码管,数码管有两种连接⽅式(对应 右边上下两幅图);2.右上图的原理图,8个LED的阴极都连在⼀个引脚上,称为共阴极连接;3.右下图的原理图,8个LED的阳极都连在⼀个引脚上,称为共阳极连接;TX-1C 开发板的连接⽅式是 共阴极连接;4.左下⾓的 左边图⽚ ,定义了8个LED的名称;5.左下⾓的 右边图⽚ ,定义了引脚的名称,与右图的引脚名称⼀⼀对应假设数码管连接⽅式为 共阳极连接,观察可以发现,数码管中的 LED 的引脚引出,使⽤的是就近原则;假设数码管连接⽅式为 共阴极连接,如果上数码管显⽰ 数字6 ?1.要让数码管显⽰ 数字6,让要 LED-A、C、D、E、F、G亮起;2.共阴极的公共端 要接地(给数据‘0’,或者是低电平);3.阳极(称为位选端)根据LED的亮灭需求给 数据0或1(1亮、0灭) ,称为 段码(阳码) (1011 1110 即为段码);如果 共阳极连接,共阳极端 要接到 VCC (⾼电平),阴极给 数据0或1 (1灭,0亮),称为 段码(阴码),和共阴极正好是相反关系;共阳极连接→共阳极端接VCC 并选中→阴极(位选端)传递(阴码)段码(1亮、0灭)→数码管显⽰共阴极连接→共阴极端接GND 并选中→阳极(位选端)传递(阳码)段码(1灭、0亮)→数码管显⽰四位⼀体数码管开发板上即为 四位⼀体的数码管,且有两个,正好组成了 ⼋位数码管;⽽TX-1C 上 包含的是六位数码管,⽽⾮⼋位;1.四位数码管 也有 两种连接⽅式,即 共阴极连接 和 共阳极连接 ;{Processing math: 100%2.四位数码管,(每位的公共端 单独引出来,位选端全部连在⼀起(所有A段连在⼀起、所有B段连在⼀起……),总共有12个引脚;假设数码管连接⽅式为共阴极连接,如何在第三位显⽰数字1 ?1.给第三位的公共端 赋值 0(低电平),给其他位的公共端 赋值 1(⾼电平);这样等同于 其他位的公共端(负极)接到了正极上,⽆论如何都亮不了;只有第三位能亮;2.这样给 LED-B、C 的位选端 赋值 1,其他 位选端 赋值0共阳极连接即为公共端赋值 1(⾼电平)亮,其他以此类推;3.发现这样⼀个现象,数码管⽆法在同⼀时间显⽰多个数字,其在同⼀时刻下只能有⼀个显⽰,只有⼀个数码管能被点亮,即使有多个被选中的数码管,显⽰的数字也是相同的;这种共⽤引脚的现象,是为了减少控制数码管IO⼝;(四位数码管有32个LED,如果都采⽤共阴极连接的⽅式,也要32+1(公共端)=33个引脚;)(采⽤这种链接,就只需要12个引脚即可控制四位数码管;)如何让数码管多位显⽰不同数字(动态数码管显⽰)?1.利⽤ ⼈眼视觉的暂留 和 数码管显⽰的余辉 的原理先让第⼀位数码管显⽰1,然后很快地让第⼆位数码管显⽰2,再很快地让第三位数码管显⽰3,让它不断地扫描,重复显⽰1、2、3的过程,这样三个数字就“同时”显⽰了;原理分析138译码器1.观察到 原理图右图 与数码管有关的,有138译码器(74LS138)和74HC245两枚芯⽚;TX-1C的原理图为左图,也有两个74HC573芯⽚与数码管有关;芯⽚名称与功耗、电压、说明符号有关,具体内容不做分析;2.如图,数码管连接⽅式为 共阴极连接,这样传输数据,就能让第三位显⽰ 数字1 了;3.⽽上⾯的 LED1 ~ 8,其实接在了138译码器的输出端,138译码器正好可以实现让LED1 ~ 8输出 0或1;LED1 ~ 8 对应了 TX-1C 六位数码管的SEG DS 1 ~ 6;4.138译码器可将LED 1 ~ 8的⼋个端⼝ 转化为 由 3个端⼝ (P22、P23、P24)控制,⽽G1、G2A、G2B端⼝ 被 称为 使能端;使能端相当于⼀种开关,如果电平有效,它就可以⼯作;如果电平⽆效,它就不⼯作;观察原理图发现,使能端是已经接好 VCC 和 GND 的,也就是说,其上电其实就会⼯作TX-1C的74HC573也是同理,但其并未压缩控制端⼝的数量;5.138译码器也叫“38线译码器”,是由3个线到8个线,其中C是⾼位、A是低位,CBA组成的数符合8进制,控制着Y0 ~ Y7 这8个端⼝;6.所以,138译码器的作⽤就是⽤来选中某⼀位数码管的74HC2451.74HC245是⼀种 双向数据缓冲器,VDD、GND都可视为电源,OE为使能(其 接地 就⼯作);2.DIR(direction),是⽅向的意思,它接到了VCC(⾼电平)上,将数据从左边输出到右边,从右边将数据读取回左边;DIR若接到低电平上,会将数据从右边输出到左边,从左边将数据读取回右边;3.单⽚机的⾼电平 驱动能⼒有限,其输出的最⼤电流不能太⼤;其低电平 驱动能⼒强;因此,LED模块才采⽤了低电平点亮的模式;4.如果⽤⾼电平 直接点亮 数码管,电流会很⼩,灯会很暗;所以其加⼀个缓冲器,缓冲器可以提⾼ 其驱动能⼒,如果直接将 数据 输出 给 数码管,数据就会被视为 驱动数据;现在增加了缓冲器,数据 就变成了 控制信号,控制信号 只需要很微弱,缓冲器 就可以接收到,缓冲器再通过⾃⼰接到的电源,输出 数据 到引脚上,这样控制的电流只需要⾮常⼩,就能驱动数码管 以⽐较亮的形式显⽰;2电容 是⽤来 稳定电源的,叫电源滤波;6.图右有 ⼀ 排阻,阻值为100R(即为100Ω),作⽤为 限流电阻 ,防⽌数码管的电流过⼤;TX-1C既没有电容,也没有排阻;原理总结1.⽤ 138译码器 使 数码管 的某⼀位 被选中;2.再给P0⼝⼀个 段码数据;TX-1C虽然⽤P0⼝控制段码输⼊,但也⽤P0⼝控制位选;需要先⽤ P2.6⼝和P2.7⼝控制输⼊数据是段码还是位选;P2.6⼝控制段码的输⼊;P2.7⼝控制位选的输⼊;例,给P2.6 数据1 (⾼电压)、给P2.7 数据 0 (低电压),就可以确定现在给数据是段码;1.由TX-1C的原理图可知,数码管内 LED灯 与 P0端⼝ 的顺序关系:(1)LED的名称定义是通⽤⽆疑的;(2)数码管本⾝的引脚名称不重要,重要的是 LED与哪个 P0 的 引脚 相连;2.由TX-1C的原理图可知, P0.0引脚 控制 数码管的最左位,P0.5引脚控制 数码管的最右位,剩余引脚是没有控制 数码管 位选 的作⽤的,哪个P0 的 引脚 控制 六位数码管的 哪位 很重要;代码实现静态数码管显⽰(让数码管第三位显⽰3).c#include<reg51.h>sbit D=P2^6; //段码⼝sbit W=P2^7; //位选⼝void main(){D=0;W=1;P0=0xFB;//1111 1011W=0;D=1;P0=0x4F;//0100 1111while(1);}下⾯写出了⼀个通⽤函数,可以让数码管在 第⼏个位置 显⽰ 哪个数#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;void NixieTube(uchar wei,uchar duan){ //NixieTube是数码管的英⽂uchar WEI,DUAN; //(Nixie是⼥⽔妖的意思)D=0;W=1;switch(wei){ //位选部分case 1:WEI=0xFE; break;case 2:WEI=0xFD; break;case 3:WEI=0xFB; break;case 4:WEI=0xF7; break;case 5:WEI=0xEF; break;case 6:WEI=0xDF; break;}P0=WEI;W=0;D=1;switch(duan){ //段码部分case 0:DUAN=0x3F; break;case 1:DUAN=0x06; break;case 2:DUAN=0x5B; break;case 3:DUAN=0x4F; break;case 4:DUAN=0x66; break;case 5:DUAN=0x6D; break;case 6:DUAN=0x7D; break;case 7:DUAN=0x07; break;case 8:DUAN=0x7F; break;case 9:DUAN=0x6F; break;case 10:DUAN=0x77; break; //Acase 11:DUAN=0x7F; break; //Bcase 12:DUAN=0x39; break; //Ccase 13:DUAN=0x3F; break; //Dcase 14:DUAN=0x79; break; //Ecase 15:DUAN=0x71; break; //Fcase 16:DUAN=0x80; break; //.}P0=DUAN;}void main(){NixieTube(3,3);while(1);}运⾏结果如下:4-2 动态数码管显⽰1.如果只是单纯让其显⽰完⼀个再显⽰⼀个,代码如下:#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};//将两个switch改进为数组void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:2.这是⼀个数码管的常见问题,称为 数码管的消影 ;位选-->段选-->位选-->段选-->位选-->......在这⼀位的段选(输⼊段码)结束,进⾏下⼀位的位选时,很短的时间内,上⼀位的数据会串到下⼀位数据⾥⾯去;所以我们在段选和位选之间,增加⼀个 P0 清零的操作;动态数码管显⽰(数码管同时显⽰123).c#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};void Delayms(unsigned int x){unsigned int j;for(;x>0;x--) for(j=110;j>0;j--);}void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];Delayms(1); //让数码管稳定显⽰,⽴刻清零会让数码管显⽰较暗P0=0; //清零操作}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:相关知识1.在运⾏某些代码时,TX-1C的LED点阵模块会乱闪2.将左下⾓ DOT-OE旁的跳线帽 拔下来即可 断开LED点阵模块,3.拔下来的跳线帽不要乱丢,可以 只插⼀个脚放在原处,也可以妥善保管在其他地⽅上图即为拔下来的跳线帽1.此元件为电容;2.104的数量规则与 第⼆节 所讲的电容是相同的,其单位是pF1000pF=1nF, 1000nF=1uF, 1000uF=1000mF, 1000mF=1FF 是⼀个很⼤的单位,正常电容都是uF、nF级别的;超级电容能达到1 ~ 2 F,其⼀般作为备⽤电池;3.TX-1C的原理图上,电容的量都是直接⽤单位标记好的。

项目3-P0口驱动一个数码管显示

项目3-P0口驱动一个数码管显示
ห้องสมุดไป่ตู้
由于P0每个端口的灌电流达20mA,数码管每段LED 正常显示5mA即可,因此电路中需要R2~9八个电阻用来
限制数码管每一段电流,以防止驱动电流过大而烧毁器件。
利用Proteus软件仿真时,数码管采用Optoelectronics元 件库中7-Segment Displays下的7-SEG-COM-ANODE元 件,可以不接限流电阻。
数字显示 0 dot 1 g 1 f 0 e 0 d 0 c 0 b 0 a 0 16进制 0xc0
1
2 3
1
1 1
1
0 0
1
1 1
1
0 1
1
0 0
0
1 0
0
0 0
1
0 0
0xf9
0xa4 0xb0
4
5 6
1
1 1
0
0 0
0
0 0
1
1 0
1
0 0
0
0 0
0
1 1
1
0 0
0x99
0x92 0x82
7
8 9
P0 = seven_seg[i]; delay(); } }
/*输出0~9到共阳七段显示器*/ /*调用时间延迟函数delay*/
} /*************************************************************************/
二、程序说明 (1)当程序中使用常量数据时,如共阳数码管数字显
3.2数码管的显示原理
单片机系统常用的数码管有共阳型和共阴型两种类型, 它是单片机常用的外围显示器件。两种类型的数码管外形
和结构类似,只是数码管内部组成数码段和标点的LED接

数码管的几种驱动方式汇总

数码管的几种驱动方式汇总
数码管的显示方式可以分为动态和静态的。
动态的也叫扫描方式,是利用发光二极管的余辉效应和人眼的视觉暂留效应来实现的,只要在在一定时间内数码管的笔段亮的频率够快,人眼就看不出闪烁,一般外围硬件较少,但是对单片机资源耗用巨大。
静态的也较锁存方式,单片机送出数据后控制外围锁存器件锁存数据,这样数码管笔段里的电流不变,数码管稳定显示,这样单片机可以干别的活不用管数码管了。这种方案的优点是对单片机的P口资源和时间耗用很少,但是数码管的外围辅助电路复杂。
●支持段电流上限调整,可以省去所有限流电阻。
●扫描极限控制,支持1到8个数码管,只为有效数码管分配扫描时间。
(二)键盘控制
●内置64键键盘控制器,基于8×8矩阵键盘扫描。
●内置按键状态输入的下拉电阻,内置去抖动电路。
●键盘中断,低电平有效输出。
●提供按键释放标志位,可供查询按键按下与释放。
(三)其它
特点
I2C串行接口,提供键盘中断信号,方便于处理器接口;
可驱动8位共阴数码管或64只独立LED和64个按键;
可控扫描位数,可控任一数码管闪烁;
提供数据译码和循环,移位,段寻址等控制;
8个功能键,可检测任一键的连击次数;
无需外接元件即直接驱LED,可扩展驱动电流和驱动电压;
提供工业级器件,多种封装形式PDIP24,SO24。
●高速的4线串行接口,支持多片级联,时钟速度从0到10MHz。
●串行接口中的DIN和DCLK信号线可以与其它接口电路共用,节约引脚。
●完全内置时钟振荡电路,不需要外接晶体或者阻容振荡。
●内置上电复位和看门狗Watch-Dog,提供高电平有效和低电平有效复位输出。
●支持3V~5V电源电压。
●提供SOP28和DIP24S两种无铅封装,兼容RoHS。

实验二 数码管显示

实验二 数码管显示

实验二数码管显示本实验的目的是掌握数码管的工作原理与使用,实现数码管的静、动态显示。

静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。

不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。

数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。

而它们的公共端又可分为共阳极和共阴极,中间图为共阴极内部原理图,右图为共阳极内部原理图。

上图展出了常用的两种数码管的引脚排列和内部结构。

总所周知,点亮发光二极管就是要给予它足够大的正向压降。

所以点亮数码管其实也就是给它内部相应的发光二极管正向压降。

如上图左(一共a、b、c、d、e、f、g、DP 八段),如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮a、b、c、e、f、g 这六段LED;我们还知道,既然LED 加载的是正向压降,它的两端电压必然会有高低之分:如果八段LED 电压高的一端为公共端,我们称之为共阳极数码管(如上图中);如果八段LED 电压低的一段为公共端,则称之为共阴极数码管(上图右)。

所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电平。

对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。

当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。

如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g, dp”这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。

第3节-数码管驱动(项目3)

第3节-数码管驱动(项目3)

}
void main (void)
{
unsigned char i;
ห้องสมุดไป่ตู้
// 变量 i 作为数组的0~9编号
P2 = 0;//P2.0 = 0,通过反相器反相后,加在数码管公共端上的电压
while (1)
{ P0 = seven_seg[i]; delay(50000); i++;
//输出0~9到共阳七段显示器 //调用时间延迟函数delay()
在程序设计时,库函数可以很方便的被用户程序调用。 例如,利用库函数实现的跑马灯程序为
/************************/
#include<reg51.h> #include<intrins.h>//库函数的头文件
void delay(unsigned int x)
while (1)
{ …….. delay(1000); …… }
}
//调用时间延迟函数,实参为1000
三、有返回值函数
如果函数中要返回数值时,必须使用return命令。 并且返回值的类型必须与函数的类型一致。如把8位8421二 进制码转换成8421BCD码函数。
unsigned char DEC_BCD_conv(unsigned char x)
if(i == 10)
i = 0;
}
}
当程序中使用常量数据时,如共阳数码管数字显示编 码、液晶显示器的汉字编码等,一般希望这些数据当程序 下载到单片机时存放在单片机的ROM区,对此类数据声明前 面需要加上关键字code或const,如数码管的显示编码。
利用数码管也可以显示日期和时间,但是在本项目中, 数字变化时间是由延时函数实现的,由于C语言程序进过编 译后的生成的汇编程序与直接采用汇编语言编写的程序

基础知识数码管驱动与程序设计

基础知识数码管驱动与程序设计

一个数码管只能显示1位数字,如果要 显示多位数字怎么办? 方法一:将多只单个数码管并接在一起。 缺 点:4位并列的数码管就需要4 ×8=32根段 选信号,管脚过多,连线复杂。 方法二:动态扫描方式进行数码管显示。 优 点:不增加段选信号线,利用人眼的视觉暂 留效应,使数字轮流显示来实现。
实验步骤: 第1个数码管显示1; 第2个数码管显示2; 第3个数码管显示3; 第4个数码管显示4。
根据段码表,拨到显示字符“1”的位置1111 1001
与com1相连
根据段码表,拨到显示字符“2”的位置1010 0100
与com2相连
根据段码表,拨到显示字符“3”的位置1011 0000
与com3相连
P3.0置1,三极管Q11关闭,第1位数码管的所有笔段全部熄灭
第1位数码管显示“1”
熄灭第1位数码管
第2位数码管显示“2”
熄灭第2位数码管
第3位数码管显示“3”
熄灭第3位数码管
第4位数码管显示“4”
熄灭第4位数码管
流程图
1 0 0 1 1 1 1 1
10011111
0
1
1
0
数码管的动态扫描显示——实验现象
段码表的生成
数码管的动态扫描显示
数字符号与数值的关系
笔段与数值的对应关系
a
b
c
d
e
f
g
h
+5V
hgfedcba
+ -
共阳极数码管
11111110
数码管有8个笔段,每个笔段有亮和灭两种状态,则每个数码管有28 = 256种显示组合,去掉“点(h)”,其余7个笔段有27 = 128种显示组合。

51单片机并行口驱动LED数码管显示电路及程序

51单片机并行口驱动LED数码管显示电路及程序

51单片机并行口驱动LED数码管显示电路及程序介绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。

1 硬件电路多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。

本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法,图1所示是该电路的硬件原理图。

其中,74LS138是3线-8线译码器,74LS164是8位并行输出门控串行输入移位寄存器,LED采用L05F型共阴极数码管。

显示时,其显示数据以串行方式从89C52的P12口输出送往移位寄存器74LS164的A、B端,然后将变成的并行数据从输出端Q0~Q7输出,以控制开关管WT1~WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1~LED8。

位选码由89C52的P14~P16口输出并经译码器74LS138送往开关管Y1~Y8的基极,以对数码管LED1~LED8进行位选控制,这样,8个数码管便以100ms的时间间隔轮流显示。

由于人眼的残留效应,这8个数码管看上去几乎是同时显示。

<51单片机并行口驱动LED数码管显示电路>2 软件编程该系统的软件编程采用MCS-51系列单片机汇编语言完成,并把显示程序作为一个子程序,从而使主程序对其进行方便的调用。

图2所示是其流程图。

具体的程序代码如下:<51单片机并行口驱动LED数码管显示程序>pic单片机驱动led数码管显示程序;*****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1、2、3、4、5、6、7、8*******;**** 单片机学习网经典程序已测试,led数码管共阴和共阳不同请修改码值转换表部分LIST P=18F458INCLUDE "P18F458.INC";所用的寄存器XIANR EQU 0X20ORG 0X00GOTO MAINORG 0X30;****************以下为码值转换表******************** CONVERT ADDWF PCL,1RETLW 0XC0 ;0,显示段码与具体的硬件连接有关RETLW 0XF9 ;1RETLW 0XA4 ;2RETLW 0XB0 ;3RETLW 0X99 ;4RETLW 0X92 ;5RETLW 0X82 ;6RETLW 0XD8 ;7RETLW 0X80 ;8RETLW 0X90 ;9RETLW 0X88 ;ARETLW 0X83 ;BRETLW 0XC6 ;CRETLW 0XA1 ;DRETLW 0X86 ;ERETLW 0X8E ;FRETLW 0X7F ;"."RETLW 0XBF ;"-"RETLW 0X89 ;HRETLW 0XFF ;DARKRETURN;**************初始化子程序*****************INITIALBCF TRISA,5 ;置RA5为输出方式,以输出锁存信号BCF TRISC,5BCF TRISC,3 ;设置SCK与SDO为输出方式BCF INTCON,GIE ;关闭所有中断MOVLW 0XC0MOVWF SSPSTAT ;设置SSPSTAT寄存器MOVLW 0X30MOVWF SSPCON1 ;设置SPI的控制方式,允许SSP方式,并且时钟下降;沿发送数据,与"74HC595当其SCLK从低到高电平;跳变时,串行输入数据(DI)移入寄存器"的特点相对应MOVLW 0X11 ;显示值寄存器赋初值,每个值占两个字节,MOVWF XIANR ;从8开始显示RETURN ;返回;***************led数码管显示子程序******************;SPI发送显示子模块DISPLAYTRANSMIT CLRF PORTA ;LACK送低电平,为锁存做准备MOVWF SSPBUF ;启动发送WAITBTFSS PIR1,SSPIFGOTO WAIT ;等待发送结束BCF PIR1,SSPIF ;清除中断标志NOPBSF PORTA,5 ;最后给一个锁存信号,代表一显示任务完成RETURN;*****************pic单片机驱动led显示程序的主程序开始*************** MAIN NOPCALL INITIAL ;调用系统初始化子程序LOOP MOVF XIANR,WCALL CONVERT ;查出XIANR的显示段码值CALL DISPLAYDECF XIANRDECF XIANR ;显示值减2,因为按字存放,按字节读取MOVF XIANR,WSUBLW 0X01BTFSS STATUS,ZGOTO LOOP ;若送完显示的数,则退出显示HERE GOTO HEREENDC语言源程序如下:/*************************************************程序名称:8位数码管移位显示0-F简要说明:使用共阳型数码管P0口输出数码管段码,P2口输出数码管位码编写:时间:2008-8-21*************************************************/#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define duan P0 //定义段码输出#define wei P2 //定义位码输出uchar a=0,b=0; //全局变量。

数码管单片机c语言程序设计

数码管单片机c语言程序设计
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
Delay(5);
dula=1;
P0=table2[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
numwe++;
}
}
}
void exter0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
void main(void)
{
dispd display(uint temp)
{
uint bai,shi,ge;
bai=temp/100 ;
shi=temp%100/10;
ge=temp%10;
#define uint unsigned int
#define uchar unsigned char
sbit Wela=P2^1;
sbit Dula=P2^2;
uchar tt,numdu,numwe;
uchar code table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void Delay_Us(uchar t)
{
while(--t);
}
void Delay_Ms(uint t)
{
while(t--){
Delay_Us(245);

单片机实例之数码管PPT课件

单片机实例之数码管PPT课件

unsigned char dispcount; void delaynms(unsigned char n) { unsigned char i,j;
for(i=n;i>0;i--) for(j=250;j>0;j--);
}
void main(void) { while(1)
{ for(dispcount=0;dispcount<8;dispcount++) { P1=tabledu[dispcount]; P0=tablewe[dispcount]; delaynms(20); //10ms,12MHz }
void main(void) void delay02s(void) unsigned char x=0,a,b;
数码管段码
表4-2 共阳数码管显示数字的段码表
四、程序设计
要实现0~9的显示,设
计方法与前面彩灯花样显示
类似,首先写出0~9的显示
数据(表4-1中的字型码数
据,注意电路中选用的是共
图4-6 数码管原理图
动态显示达到一定速度时,由于人眼的视觉暂
留特性,在观察时,数码管所有内容如同静态显 示一样,不会产生闪烁。所以,对动态扫描的频 率有一定的要求,频率太低,LED数码管将出现 闪烁现象。如频率太高,由于每个LED数码管点 亮的时间太短,LED数码管的亮度太低,无法看 清。所以,显示时间一般取几个ms左右为宜。在 编写程序时,常采用调用延时子程序来达到要求 的保持时间。程序工作时,使电路选通某一位数 码管后,该数码管被点亮后并保持一定的时间。
{ while(1) 本任务是实现0~99999999的加1计数显示。 静态显示电路连接特点是单片机端口的每一位与数码管的一个端相连接,相当于单片机的一个引脚外接一只发光二极管。 图4-7 动态显示流程图 例如:显示一个“3”字,那么应当是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、dp不亮。 mov r6,#5 程序的设计框图见图4-5。 24进制计数和前面的十进制计数不同的是,当计数到24时,个位数要变为0,同时十位数也要变为0。 SS:MOV R7, #200 共阴极就是将8个LED的阴极连接到一起组成公共端COM,接负极,当相应字段为高电平“1”时,可以点亮该字段; for(k=248;k>0;k--); void delay02s(void) void main(void) mov r6,#5 2s的0-9数字显示。

一位数码管两种驱动方法 原理图与程序(汇编+C语言)

一位数码管两种驱动方法 原理图与程序(汇编+C语言)

6
实验 2 汇编语言代码
ORG 0H JMP MAIN ORG 30H MAIN: MOV P2,#0 MOV R5,#10 X4: CALL DELAY INC P2 DJNZ R5,X4 JMP MAIN
DELAY: MOV R2,#20 X3:MOV R3,#40 X2:MOV R4,#250 DJNZ R4,$ DJNZ R3,X2 DJNZ R2,X3 RET END 注意:在上述程序中,直接对 P2 口进行了加 1 操作,P2 口的值从 0 开始,增加 10 次后,对 P2 口进行清零,P2 口的值经过 7446 译码后,驱动数码管显示指定
实验 1 汇编语言代码 2(直接赋值方法):
ORG 0H JMP MAIN ORG 30H MAIN: MOV P2,#0C0H CALL DELAY
3
MOV P2,#0F9H CALL DELAY MOV P2,#0A4H CALL DELAY MOV P2,#0B0H CALL DELAY MOV P2,#99H CALL DELAY MOV P2,#92H CALL DELAY MOV P2,#82H CALL DELAY MOV P2,#0F8H CALL DELAY MOV P2,#80H CALL DELAY MOV P2,#90H CALL DELAY JMP MAIN
void delay()
//延时函数
{ unsigned int i,j;
for(i=0;i<100;i++)
for(j=0;j<1000;j++)
_nop_;
4
} void main() { unsigned char a[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; unsigned m;

按键控制1位LED数码管显示0-9

按键控制1位LED数码管显示0-9

单片机课程设计姓名:陈素云班级:09电力方向2班学号:200920305340设计题目:按键控制1位LED数码管显示0-9设计要求:通过单片的I/O口与LED数码管所构成的单片机系统的软件编程,使学生掌握简单的单片机系统的设计,同时初步学全用汇编语言和C语言两种方式编程的基本方法。

学生必须采用单片机AT89C51为LED显示屏的控制为核心,分别置“1”或“0”,让某些段的LED 发光,其它的熄灭,然后达到显示不同的字符和图符号的目的. 学生根据前期设计的步骤按照设计报告内容的具体要求,选择前期设计的一个典型题目,写出详尽的课程设计报告,重点内容包括方案论证、完整的电路图、软件系统流程图及开发程序、组装调试内容和总结等。

目录第1节引言 (3)1.1 LED数码显示器概述 (3)1.2 设计任务 (5)1.3设计目的 (6)第2节 AT89C51单片机简介 (6)2.1 AT89C51单片机 (6)2.2 单片机管脚图 (7)2.3管脚说明 (7)2.4振荡器特性 (9)第3节设计主程序与硬件电路设计 (9)3.1设计的主程序 (10)3.2系统程序所需硬件 (10)3.2.1所需的硬件 (10)3.2.2所需硬件的结构图 (11)3.3 硬件电路总连接图 (12)第4节程序运行过程 (12)4.1分析步骤 (12)4.2 程序执行过程 (13)第5节程序运行结果 (13)总结参考文献第1节引言还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。

在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。

LED 数码显示器是单片机嵌入式系统中经常使用的显示器件。

一个“8”字型的显示模块用“a、b、c、d、e、f、g、h” 8 个发光二极管组合而成。

每个发光二极管称为一字段。

LED 数码显示器有共阳极和共阴极两种结构形式。

由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

数码管原理及显示_51单片机C编程ppt课件

数码管原理及显示_51单片机C编程ppt课件

.
4 一个共阴数码管循环显示0~9---单片机驱动
景德镇学院机电系
.
4 一个共阴数码管循环显示0~9---单片机驱动
景德镇学院机电系
第一步 用仿真软件Proteus画出上图。
第二步 用程序员书写软件UltraEdit将源程序书写完成。
第三步 用keil软件建立一个工程(用到上一步源程序),产生hex文件。
.
景德镇学院机电系
共阳数码管
3 数码管的显示段码---共阳
unsigned char seg7code[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳
.
4 一个共阴数码管显示一个数字编程---手动控制
第四步 将hex文件导入Proteus的单片机中,仿真运行看结果。
详细见具体操作!
.
STC micro
宏晶科技
.
景德镇学院机电系
3 数码管的显示段码----共阴
共阴数码管
unsigned char code seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//共阴
.
景德镇学院机电系
1 数码管的结构
外型及引脚.2 数码管的分源自---共阴景德镇学院机电系
❖ 共阴数码管 共阴数码管是指将所有发光二极管的阴极接到一起
形成公共阴极(COM)的数码管。 共阴数码管在应用时应将公共极 COM接到地线
GND 上,当某一字段发光二极管的阳极为高电平时, 相应字段就点亮。当某一字段的阳极为低电平时,相应 字段就不亮。共阴数码管内部连接如图3所示。

单片机数码管显示原理

单片机数码管显示原理

单片机数码管显示原理数码管是一种常见的数字显示器件,它可以用来显示数字、字母、符号等信息。

在单片机应用中,数码管常用于显示各种数据,如温度、电压、时间等。

本文将介绍单片机数码管显示的原理。

一、数码管的基本结构数码管是由多个发光二极管(LED)组成的,每个发光二极管都可以发出不同颜色的光。

常见的数码管有共阳极和共阴极两种类型。

共阳极数码管的阳极连接在一起,共阴极数码管的阴极连接在一起。

数码管的结构如下图所示:二、数码管的工作原理数码管的工作原理是通过控制各个发光二极管的亮灭来显示数字、字母、符号等信息。

以共阳极数码管为例,当某个数字需要显示时,单片机会将该数字对应的发光二极管的阳极接通,使其发出光亮。

其他数字对应的发光二极管的阳极则被断开,使其不发光。

这样就可以显示出需要的数字。

三、单片机控制数码管显示的方法单片机控制数码管显示的方法有两种:直接驱动和间接驱动。

1. 直接驱动直接驱动是指单片机的输出端口直接连接到数码管的各个发光二极管上,通过控制输出端口的电平来控制数码管的亮灭。

直接驱动的优点是控制简单,缺点是需要消耗大量的I/O口资源。

2. 间接驱动间接驱动是指单片机的输出端口连接到数码管的驱动芯片上,由驱动芯片来控制数码管的亮灭。

间接驱动的优点是可以节省I/O口资源,缺点是需要额外的驱动芯片。

四、数码管显示的应用数码管广泛应用于各种电子设备中,如计算器、电子钟表、温度计、电压表等。

在单片机应用中,数码管常用于显示各种数据,如温度、电压、时间等。

通过单片机控制数码管的亮灭,可以实现各种数字显示功能。

单片机数码管显示原理是通过控制各个发光二极管的亮灭来显示数字、字母、符号等信息。

单片机控制数码管显示的方法有直接驱动和间接驱动两种。

数码管广泛应用于各种电子设备中,是一种非常实用的数字显示器件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
据所设计的单片机控制系统的特点,选择不同的数码管驱动方式。
实验 1 汇编语言代码
汇编语言代码 1(查表法): ORG 0H JMP MAIN ORG 30H MAIN: MOV DPTR,#TABLE MOV R5,#10 X1: CLR A MOVC A,@A+DPTR MOV P2,A CALL DELAY INC DPTR DJNZ R5,X1 JMP MAIN DELAY: MOV R2,#20 X3:MOV R3,#40 X2:MOV R4,#250 DJNZ R4,$ DJNZ R3,X2 DJNZ R2,X3 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END 注意:该方法明显比直接赋值法要简洁,但是在上述程序段中,用了查表指令 “MOVC”以及向 ROM 中写入表格数据的伪指令“DB”,该方法建议掌握直接 赋值法后,再使用。
图 2 实验 2 仿真原理图 在仿真软件 Proteus 中绘制仿真原理图如上图所示。(注意事项:在仿真过程 中,数码管并没有串联降压电阻,而在实际电路中,最好根据实际的数码管的型 号串联相应的电阻。仿真时如果想使用 P0 口,则需要添加上拉电阻。另外也要 注意数码管的极性,共阴极和共阳极的段码是不同的。) 仅仅从原理图角度来看,实验 1 的原理图较实验 2 原理图要简单一些,在实 验 1 中单片机直接驱动数码管,而实验 2 单片机通过 7446 芯片来驱动数码管。 不过从所占用 I/O 口方面来看,实现数码管显示功能,实验 2 所占用的单片机 I/O 口要比实验 1 所占用单片机 I/O 口要少很多。因此读者在实际应用过程中,要根
一位数码管两种驱动方法(入门级实验)
目录
实验介绍:.................................................................................................................... 1 实验目的:.................................................................................................................... 1 仿真原理图:................................................................................................................ 2 实验 1 汇编语言代码....................................................................................................3 实验 1 汇编语言代码 2(直接赋值方法):..................................................................3 实验 1 C 语言代码........................................................................................................4 实验 2 汇编语言代码....................................................................................................5 实验 2 C 语言代码........................................................................................................6
在此次实验中,主要介绍两种数码管的驱动方式,①单片机直接驱动,②通 过数码管驱动芯片来驱动。 实验目的:
该实验的主要目的是通过实验 1 对 P 口的灵活控制每一位的状态,从而控制 数码管的相应“段”的亮灭状态,从而实现数码管数字的显示。通过实验 2,理 解数码管驱动芯片的实用方法。
1
仿真原理图:
图 1 实验 1 仿真原理图
DELAY: MOV R2,#20 X3:MOV R3,#40 X2:MOV R4,#250 DJNZ R4,$ DJNZ R3,X2 DJNZ R2,X3 RET
END 注意:该程序段变成思路简单,易于理解,适合初学者编程时使用,但是略显冗 长。
实验介绍: 数码管(这里所说的数码管一般指 8 段数码管,下文中的数码管都是指 8
段数码管)在我们生活中以使用。另外,数码管也可以用于简单字母或符号显示的场合,例如 数码管可以显示十六进制中的 A~F。
数码管按极性的不同可以分为共阳极和共阴极的数码管,所谓共阳极数码管 可以简单理解为数码管的公共端需要连接电源正极才可以正常使用,共阴极数码 管可以理解为数码管的公共端需要连接电源负极才可以正常使用。在使用采用单 片机驱动数码管时,由于单片机引脚的灌电流能力较强,因此常采用共阳极数码 管。
实验 1 汇编语言代码 2(直接赋值方法):
ORG 0H JMP MAIN ORG 30H MAIN: MOV P2,#0C0H CALL DELAY
3
MOV P2,#0F9H CALL DELAY MOV P2,#0A4H CALL DELAY MOV P2,#0B0H CALL DELAY MOV P2,#99H CALL DELAY MOV P2,#92H CALL DELAY MOV P2,#82H CALL DELAY MOV P2,#0F8H CALL DELAY MOV P2,#80H CALL DELAY MOV P2,#90H CALL DELAY JMP MAIN
相关文档
最新文档