1.设计一个数码管动态显示程序循环显示程序,显示数值0~9.数码管动态显示程序位共阴极型.A,B,C,D,E,F,G,H,Dp为数码段码管

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
单只数码管循环显示0-9,数码管循环显示数字,数码管显示程序,数码管动态显示,单片机数码管动态显示,数码管显示,单片机数码管显示程序,数码管动态显示程序,数码管显示屏,数码管显示原理
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
单只数码管循环显示0-9
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口单片机数码管显示原理
查看: 42439|
摘要:   小灯是一种简单的LED,给我们视觉效果只能通过亮和灭来表达简单信息。而这节课我们要来学习一种表达更加明确的器件,数码管。   1、数码管的基本介绍   先给大家提供一张原理图看一下,如图1所示。
图1数码 ...
  小灯是一种简单的LED,给我们视觉效果只能通过亮和灭来表达简单信息。而这节课我们要来学习一种表达更加明确的器件,数码管。
  1、数码管的基本介绍
  先给大家提供一张原理图看一下,如图1所示。
图1&数码管原理图
  这是比较常见的数码管的原理图,我们板子上一共有6只数码管。前边有了LED小灯的学习,数码管学习就会轻松的多了。从图1能看出来,数码管共有a,b,c,d,e,f,g,dp这8个段,而实际上,这8个段每一段都是一个LED小灯,所以数码管就是由8个LED小灯所组成的。我们看一下数码管内部结构图。
图2&数码管结构图
数码管分为共阳数码管和共阴数码管,所谓的共阴数码管就是8只LED小灯的阴极是接在一起的,也就是阴极是公共端,由阳极来控制小灯是否亮灭。同理,共阳数码管就是阳极是接到一起的,大家可以仔细研究下图1。细心的同学也会发现,数码管上边有2个com,实际上就是我们数码管的公共端。为什么有2个,我个人认为,一方面有2个可以起到对称的效果,刚好是10个引脚,另外一个方面,公共端通过的电流较大,我们初中就学过,并联电路电流之和等于总电流,用2个com可以把公共电流平均到2个引脚上去,降低线路承受的电流。
从我们板子的上能看出来,我们所用的数码管是共阳数码管,如图所示。
图3&共阳数码管电路
  他们的com是接到了正极上,当然了,和LED小灯电路类似,也是由74HC138控制了的导通来控制整个数码管的电流,我们先来看DS1这个数码管。原理图上可以看出来,控制DS1的三极管是Q17,控制Q17的引脚是LEDS0,对应到74HC138上边就是Y0端的输出。
图4&74HC138控制图
  我们现在的目的是让LEDS0这个引脚输出低电平,相信大家现在可以独立根据前边学到的内容把ADDR0,ADDR1,ADDR2,ADDR3,ENLED这4个输入状态写出来,现在大家不要偷懒,都去根据138的手册去写一下,不需要你记住这些结论,但是遇到就写一次,锻炼过几次后,遇到同类芯片自己就知道如何去解决问题了。
  数码管通常是用来显示数字的,我们板子上的6个数码管,习惯上我们称之为6位,那控制位选择的就是74HC138了。而数码管内部的8个LED小灯我们称之为数码管的段,那么数码管的段选择(即该段的亮灭)是通过P0口控制,经过74HC245驱动。
  2、数码管的真值表
  数码管的8个段,我们直接当成8个LED小灯来控制,那就是a、b、c、d、e、f、g、dp一共8个LED小灯。我们通过图1可以轻而易举的看出来,如果我们点亮b和c这两个LED小灯,也就是数码管的b段和c段,其他的所有的段都熄灭的话,就可以让数码管DS1显示一个数字1,那么这个时候实际上P0的值的二进制就是0b,十六进制就是0xF9。那么我们写一个程序进去,看看让数码管显示一下看看。
&&&&#include&&&&&&&&&&&&&&&//包含寄存器的库文件&&&&&&&&&&&&&&&&&&&
&&&&sbit&&ADDR0&=&P1^0;
&&&&sbit&&ADDR1&=&P1^1;
&&&&sbit&&ADDR2&=&P1^2;
&&&&sbit&&ADDR3&=&P1^3;
&&&&sbit&&ENLED&=&P1^4;
&&&&void&&main()
&&&&&&&&unsigned&char&j&=&0;
&&&&&&&&unsigned&int&&i&=&0;
&&&&&&&&ENLED&=&0;
&&&&&&&&ADDR0&=&0;
&&&&&&&&ADDR1&=&0;
& & & & &ADDR2&=&0;
&&&&&&&&ADDR3&=&1;&&&&&&&&&&&//74HC138开启三极管Q17&&&&&&&&&&&
&&&&&&&&while(1)&&&&&&&&&&&&&//程序死循环&&
&&&&&&&&&&&&&P0&=&0xF9;&&&&&&//打开数码管b和c段&&&
  大家把这个程序编译一下,下载到里会发现,最右侧的数码管成功显示1这个数字。
  同样的方法,我们可以把其他的数字都成功的在数码管上显示出来,而数码管显示的数字对应给P0的赋值,我们叫做数码管的真值表。我们来列一下我们这个电路图的数码管真值表,注意,这个真值表里显示的数字都不带小数点。
  表1&数码管真值表
  大家可以把上边那个数码管显示1的那个程序中的P0的赋值随便修改成我们表5-1中的真值表里的数字试试看,把数码管显示的数字显示出来。
  3、数码管的静态显示
  从第三课我们学习74HC138以后,我们了解到74HC138同时一次只能让一个输出口为低电平,也就是在一个时刻内,我们只能让一个数码管显示,始终选通数码管并且可以根据我们的P0总线的信号来改变这个数码管的值,我们可以理解为数码管的静态显示。
  数码管静态显示是对应动态显示而言的,静态显示对于一两个数码管还行,多个数码管,静态显示实现的意义就没有了。这节课我们先用一个数码管的静态显示来实现一个简单的秒表,为下节课的动态显示打下基础。
  先来介绍一个51单片机的关键字code。我们前边课程定义变量的时候,一般用到unsigned&char或者unsigned&int这两个关键字,这样定义的变量都是放在我们的单片机的RAM中,我们在程序中可以随意去改变这个变量的值。但是还有一种常数,我们在程序中要使用,但是却不进行对这个值的改变,这种值我们可以加一个code关键字修饰一下,修饰完毕后,这个值就会存储到我们的程序空间flash中,这样可以大大节省我们单片机的RAM的使用量,毕竟我们的RAM空间比较小,而程序空间是很大的。比如我们现在要使用的数码管真值表,我们来看一下我们下边的这个程序。
#include&&&&&&&&&&&&&&&//包含寄存器的库文件&&&&&&&&&&&&&&&&&&&
sbit&&LED&=&P0^0;
sbit&&ADDR0&=&P1^0;
sbit&&ADDR1&=&P1^1;
sbit&&ADDR2&=&P1^2;
sbit&&ADDR3&=&P1^3;
sbit&&ENLED&=&P1^4;
unsigned&char&code&LedChar[]&=&{
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
&&&&0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8e
};&&&&&&&&&&&&&&&&&&//用数组来存储数码管真值表,下一课详细介绍数组
void&main()
&&&&unsigned&char&counter&=&0;
&&&&unsigned&char&j&=&0;
&&&&ENLED&=&0;&ADDR0&=&0;&ADDR1&=&0;
& & &ADDR2&=&0;&ADDR3&=&1;&P0&=&0XFF;&&//74HC138和P0初始化部分
& & &TMOD&=&0x01;&&& & & & & & & & &&//设置定时器0为模式1
& & &TH0&&=&0xB8;
&&&&TL0&&=&0x00;& & & & & & & & & &//定时值初值
& & &TR0&&=&1;& & & & & & & & & & & //打开定时器0
&&&&while(1)
&&&&&&&&if(1&==&TF0)& & & & & & & & &//判断定时器0是否溢出
&&&&&&&&&&&&TF0&=&0;
&&&&&&&&&&&&TH0&=&0xB8;& & & & & & &&//溢出后,重新赋值
&&&&&&&&&&&&TL0&=&0x00;
&&&&&&&&&&&&counter++;
&&&&&&&&&&&&if(50&==&counter)&&&&&&//判断定时器0溢出是否达到50次
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&counter&=&0;&&&&&&&&//counter清0,重新计数
&&&&&&&&&&&&&&&&P0&=&LedChar[j++];&//把数组里的对应值送给P0
&&&&&&&&&&&&&&&&if(16&==&j)&&&&&&&&&//当显示到F后,归0重新开始
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&j&=&0;
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&}
&&&&&&&&&}
上一篇:下一篇:
看过《单片机数码管显示原理》的人还看了以下文章:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:用VHDL语言,设计一个数码管显示的程序_百度知道
用VHDL语言,设计一个数码管显示的程序
我的思路是,先用161计数器,然后再用七段数码管不知道对不对,还有就是怎么开始写这个程序,完全不知道从何出下手。
我有更好的答案
七段数码管显示数字需要自定义一个译码器。把二进制数字转换为对应显示的abcdefgh。例如:想显示‘1’需要给七段数码管(共阴极)输入,‘2’需要等等。如果你设计的译码器能够显示0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f的话,计数器直接把输出送给译码器就可以了。如果只想显示十进制数,计数器就需要设计成十进制的,然后把二进制数送给译码器就好啦!希望能采纳!
采纳率:86%
用VHDL语言,设计一个数码管显示的程序这个真的有。
数码管显示程序内容肯定
为您推荐:
其他类似问题
vhdl语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。数码管1-8循环显示数字
08/18 23:48
你家里是否有DVD或电视机遥控器呢,大多数遥控器都可以哦..... 按遥控器任意键数码管加1--- 0--9循环显示 平凡的实验板加一个接收头直接使用,如下图所示: 程序如下: ;******************************************************************** ; * ; 遥控器按任意键数码管加1,显示0--9依次循环 * ; * ; 作者:LK811011 QQ: * ; * ; 请各位大虾多多指点 * ; * ;***
11/18 05:58
单只数码管循环显示0-9 8个数码管滚动显示同一个数字 8个数码管显示多个不同的字符 8个数码管闪烁显示 8个数码管滚动显示数字串 #include &pIC.h& __CONFIG(0x3B31); unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7C,0x39,0x5E,0x79,0x71};//0-F--共阴极数码管 #define LED PORTB void delay1ms(
05/09 23:20
0 引言 目前,控制仪表经常使用的显示面板主要有LCD和LED两种类型,其中LCD比较美观,省电,显示方式灵活,但是价格比较昂贵,最重要的是它的醒目程度较低,可视角度也比较小;而LED数码管虽然功耗较大,但它亮度高,用作工业现场指示时更醒目,而且价格低.因此,用LED作为工业现场的指示器,具有更好的性价比. 本文介绍一种采用 LED数码管 作为显示元件的通用型智能数字显示面板的设计方法.该面板根据80×160 ×160标准仪表机箱设计,采用AT98C5X单片机作为控制器.它既可作为其他仪表的显示
05/02 15:18
当你家手表遇到这样的问题:水表不显示数字该怎么办呢?首先介绍下水表的读法 读法 抄表到户居民使用的机械水表,表盘上一般有8个指针示值标盘.如图1所示,右侧四个红色指针示值标盘:×0.1.×0.01--都是小于1立方米的示值,因为自来水的计量单位是&立方米&,这些标盘一般不具实际指导意义,可以不用认读.左侧的四个黑色指针示值标盘×1.×10--是自来水计量和收费的依据,读者应该学会认读. 再认指针 认读时首先要弄清四个黑色指针的单位和它们的进位关系.图1中四个黑色指针示值标盘按逆时针从上
05/07 16:06
观察此机开机全无,查保险丝已断,全桥BD301击穿短路.更换保险丝和全桥后,检查ICBT301大功率管及C301.C302.C303等正常,开机能工作,但数码显示缺笔画,显示不变化.开始以为是IC19( DM74LS164N)集成电路有故障,但实测不是此块的问题.将面板显示板更换后一切正常,说明显示板有故障.经细查发现显示板ICI的(8)脚经Jl短路线到CNN1连接插头,从板边第三根线印刷电路线烧断,焊上恢复正常.
12/08 17:52
开机全无,查保险丝已断且全桥BD301击穿短路.更换保险丝和全桥后,检查IGBT301大功率管及C301.C302.C303等正常,开机能工作,但数码显示缺笔画,显示不变化.实测ICl9(DM74LS64N)集成电路正常,而将面板显示板更换后一切正常,说明显示板有故障.经仔细查看发现显示板ICl的⑧脚经J1短路线到CNNl连接插头中间印刷电路线烧断,焊上恢复正常.
08/27 15:10
开机全无,查保险丝已断,全桥BD301击穿短路.更换保险丝和全桥后,检查ICBT301大功率管及C301.C302.C303等正常,开机能工作,但数码显示缺划,显示不变化.开始以为是IC19(DM74LS164N)集成电路有故障,但实测不是此块的问题.将面板显示板更换后一切正常,说明显示板有故障.经细查发现显示板ICI的8脚经J1短路线到CNN1连接插头,从板边第三根线重价印刷电路线烧断,焊上恢复正常.
06/05 23:21
#include&reg51.h& #define uint unsigned int uint DIDA=0,SEC=0,MIN=0,HOUR=0,h=0; code char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f}; void timer0() interrupt 1 using 1 { TR0=0; TH0=0x3c; TL0=0xb0; DIDA++; TR0=1; } main() { uint p,k;
02/03 11:17
首先检查电源单元有无5V电压输出(检查时可参看图4).取下机器的上盖板,用三用表测量电源单元的输出插座的对地电压,该脚电压为O.再量3.3V.12V.12V.18V的对地电压,这几脚的电压也为O.初步判断故障发生在逆变器以前.接着检查电源输入端的保险管,发现保险丝烧断,用三用表测量输入电路,未发现短路现象.继续检查后续电路.发现整流二极管D104击穿.更换后故障排除.
02/06 20:12
该故障现象很像电源单元的故障,因此先检查电源.打开机盖,用万用表测量各输出端.测得输出的各路电压均正常.但机器无一点动静.怀疑CPU未工作.或FLASH中的程序丢失.接上示波器检查主芯片输出的地址.数据信号及输出到SDRAM的CLK信号,发现无任何信号输出.说明CPU没工作.再量输入主芯片的时钟信号为高电平.故判断产生系统时钟的27MHz晶体损坏,将其更换后故障排除.
08/08 00:11
将消毒柜底部朝上,拆去底盖及螺钉,取出电路板组件.检查发现电容器C5已短路,造成A/D转换集成电路工作失误,数码显示为&1&,比较器输出使VD5导通,N2的⑦.⑧脚输出为低电平,继电器线圈失电,主电路触点KV断开,两只300W石英电热管停止加热,导致上述故障.更换电容器C5后,通电试验,电子消毒柜工作正常,故障排除.
01/01 05:51
检查发现激光头无进给复位动作,也无聚焦搜索,按进出仓键时有对应显示,但无动作. 有显示可初步判定CPU及解压部分基本正常.估计问题可能在伺服电路.测伺服DSP W88631F的供电端子电压正常,当测时钟端38.39脚电压时,有时可启动工作,并能正常播放.但关掉电源后再开机,又不能工作,疑38.39脚外接的33.868MHz晶振不良,但换新后仍如前一样.检查发现,不论是在正常播放还是在不工作状态,W脚电压都各为2.25V和2.4V,并且用 UT70B可以测到33.87MHz振
09/09 10:44
监测开关电源的各输出电压均有很大的波动:+9V电压在指针式万用表上的5V-17V之间波动,+5V电压在3V-9V之间波动,+3.3V电压在1.5V~5V之间波动,由此断定开关电源电路处于保护和自动重启动状态. 查U2光耦电路和U3稳压基准电路两部分的元件均无损坏:当用替换法换到+3.3V输出一路的滤波电容C5时,各路输出电压随即稳定下来,整机恢复正常.该机C5.C6.C7.C8四只电解电容均为同一品牌.同一批次.同一规格型号的,故将这四只470μF/16V的电解电容全都换成470μF/25V的,
12/10 12:27
首先测量N1的供电引脚①.②脚电压为OV.逐步顺电路往前查找,一直到电阻R25下端才有市电电压220V,由此判定是降压电阻R25开路. 用指针万用表R×10K挡测量阻值为无穷大,换为同规格参数的电阻试表,该电阻立即冒烟烧毁.说明后级负载电路有短路现象.逐一测量检查,是稳压二极管V4击穿短路而损坏了降压电阻R25.将以上损坏的元件一一更换后,试表一切功能恢复.
07/25 09:29
首先检查电源单元的输出电压是否正常.结果发现电源单元输出电压为0V,查输入端的保险管,发现保险丝并没有烧断.通电检查测量输入端交流电压,结果也是0V,说明交流电压没有送到电源单元.关机后用万用表测量电源单元输入端与电源开关.电源开关与电源插座之间的通路.发现电源单元输入端与电源开关之间有一条连接线不通,将这条线更换后,故障排除.
12/10 06:56
测V306的c极电压为9V(正常应为0V),说明V306截止,焊下V306测量正常.怀疑不良,使行逆程脉冲叠加电视行同步脉冲的识别信号不能通过VD307使V306导通.更换VD307并断开MN15287 29脚接地连线后,试机,故障排除.
02/04 19:22
在故障出现时,用万用表检测+5V.+8V.-12V.-25V各组电压均正常,但无+12V电压,经查为7812损坏,用新件代换后试机,图声俱佳. 小结:在检修碟机类似故障时应先从检修电源入手,这样往往能收到事半功倍的效果.
05/30 00:17
数码管是一种常见的显示器件,广泛应用在家用电器.仪器仪表.自动控制领域.下图是数码管的实物照片. 下图(a)中是各种各样的数码管,(b)中是常用的7段式数码管,由7个发光二极管组成7段,形成一个日字形,还有一个发光二极管显示小数点.点亮若干段发光二极管,能够组合出阿拉伯数字0-9. 下图(a)中将7段数码管的每段分别命名为A-G,小数点命名为DP:下图(b)是P1口8条口线控制数码管的等效图,图中8个发光二极管分别对应(a)中的7段和小数点.每个发光二极管分别由单片机P1口8条口线控制,P1.7
11/26 06:53
现在让我们用实验板上的两个数码管来做一个循环显示00-99数字的实验,先来完成必要的硬件部分, 数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同,并且相应的0-9的显示代码也正好相反. 首先我们来介绍两位共阳数码管的单片机驱动方法,电路如下图: 网友可以看到:P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示
03/13 12:21
数码由分布在同一平面上若干段发光的笔画组成,如半导体显示器.半导体数码管--BS201A半导体数码管是分段式半导体显示器件,其基本结构是PN结,即用发光二极管(LED)组成字型来来显示数字.这种数码管的每个线段都是一个发光二极管,因此也称LED数码管或LED七段显示器. BCD---七段显示译码器(74LS48) 因为计算机输出的是BCD码,要想在数码管上显示十进制数,就必须先把BCD码转换成 7 段字型数码管所要求的代码.我们把能够将计算机输出的BCD码换成 7 段字型代码,并使数码管显示出十快乐学电子
作业描述:
七段数码管显示实验
1、掌握七段LED数码管的结构及工作原理。
2、掌握共阴极LED数码管连接方法、及其静态和动态显示方法。
3、进一步掌握并行接口芯片8255A的使用方法。
二、实验预习要求
1、&请参阅“七段数码管显示电路”以及本节内容,了解实验台上LED0和LED1的段码(8位)和位码(1位,8个数码管的公共端)的概念及使用方法,掌握七段LED数码管的有关知识。
2、复习at89c51的工作原理及编程方法。
3、预先编写好实验程序。
三、实验原理
如图1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。LED数码管中的发光二极管共有两种连接方法:
1)&共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的LED显示器为共阴极接法
2)&共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。若a、b、c、d、e、f、g、dp&8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。
表1&共阴极LED数码管字形代码
共阴极字形代码
共阴极字形代码
共阴极字形代码
四、实验内容
1、&静态显示
按图2(a)连接线路,将键盘输入的一位十进制数用LED1静态显示出来。由第3章可知,实验台上的两个LED为共阴极结构,而位码用反相驱动器驱动,因此,S1接+5V使LED1被选中,S0接地使LED0未被选中(不工作)。要显示字符的字形码经8255A的PA0~PA6输出到七段数码管的段码驱动器输入端a~g,dp接地(不显示小数点)。编程实现将键盘输入的一位十进制数(或一位十六进制数)在LED1上显示,程序流程图如图3(a)所示。
2、动态显示
按图2(b)连接线路,通过交替选中LED1和LED0循环显示两位十进制数。七段数码管段码连接不变,位码驱动输入端S1、S0接8255A&C口的PC1、PC0,通过C口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。请编程实现在两个LED数码管上循环显示00~99,程序流程图如图3(b)所示。
五、实验报告要求
1、&根据流程图编写实验程序,并说明在实验过程中遇到了哪些问题,是如何处理的。
2、&总结共阴极LED数码管显示器的使用方法。
3、&写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。
开始时间:结束时间:
满分:100分重复提交: 不允许
作业提交信息
作业提交列表
所属机构:
所在城市:湖南 长沙
联系方式:
在线状态:离线}

我要回帖

更多关于 stm32数码管显示程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信