【精选】数码管闪烁显示
- 格式:doc
- 大小:104.01 KB
- 文档页数:8
数码管显示不正常的调试方法与步骤总结分类:单片机2011-10-12 21:50 1940人阅读评论(0) 收藏举报数码管显示不正常大概有以下几种现象:1,完全不显示;2,显示部分段码;3,显示部分位码;4,显示闪烁;5,以上几种综合。
解决办法:步骤:1,确定数码管是共阴还是共阳2,检查数码管每段是否完好.如果上面两条没问题,则:若完全不显示:检查电压是否加反,共阴的位选送低电平,共阳的位选送高电平若某一位只显示部分段:检查程序所送段码是否正确,注意共阴的段选送高电平,共阳的段选送低电平若有一位或几位完全不显示:(1)若静态显示(所有位显示一样的数):只需检查程序这几位送的电平是否正确(2)若动态显示(扫描显示不同的数):若数字滚动显示或闪烁,则动态扫描速度过慢,应减少延时,加快扫描若显示的数字缺胳膊少腿或三头六臂:这种现象只存在于动态扫描情况下,称为鬼影。
原因是扫描过快导致上一个字符(视觉暂留结果)显示在当前字符上产生重叠解决办法:增长延时,减慢扫描还有一种情况若采用同时送段码和位码,则注意送段码前数据口要清零,如下[cpp]view plaincopyprint?1.INT_T0:2.MOV TH0,#(65536-2000) / 256 ;2ms 2000us3.MOV TL0,#(65536-2000) MOD 2564.MOV P0,#00h;新加该程序最大的Bug在这里,之所以显示不全是因为前几次显示加在后一次显示上导致重叠5. ; 或影藏,解决办法是每次显示之前将所有段码清零6.MOV A,#DISPBUF7.ADD A,DISPBIT ;DISPBIT+DISPBUF=40H-48H8.MOV R0,A9.MOV A,@R010.M OV DPTR,#TABLE11.M OVC A,@A+DPTR12.M OV P0,A ;段选13.14.M OV A,DISPBIT15.M OV DPTR,#TAB16.M OVC A,@A+DPTR17.M OV P2,A ;位选18.19.I NC DISPBIT20.M OV A,DISPBIT21.C JNE A,#08H,KNA ;08h22.M OV DISPBIT,#00H今天帮同学调了一下这个程序,在这里记下一笔,做个小结。
数码管的动态显示原理及应用1. 数码管简介数码管是一种用于显示数字和符号的电子器件,常见的包括七段数码管、八段数码管等。
它由许多发光二极管(LED)组成,每个LED代表一个数字或符号。
数码管广泛应用于电子设备、仪器仪表等领域,具有直观、易读、低功耗等优点。
2. 数码管的工作原理数码管的工作原理主要依靠电流和电压的控制,通过控制每个LED的亮灭状态,实现数字和符号的显示。
数码管通常由多个LED组成,每个LED分别代表一个数字或符号。
在数码管中,每个LED的正极(阳极)接通位线,而负极(阴极)则分别连接到不同的控制引脚。
通过控制这些引脚的高低电平,可以控制相应的LED点亮或熄灭。
2.1 驱动方式数码管的驱动方式分为静态和动态两种。
静态驱动方式是指每个LED的亮灭状态不变,即只显示一个数字或符号。
动态驱动方式是通过快速地改变LED的亮灭状态,以达到显示多个数字或符号的效果。
2.2 动态显示原理动态显示原理是指通过快速地改变LED的亮灭状态,使人眼产生视觉暂留效应,从而在有限的时间内显示多个数字或符号。
动态显示使用了时间分片的原理,即将一个显示周期分为多个时间片段,在每个时间片段内只显示一个数字或符号。
通过控制每个时间片段内不同LED的亮灭状态,可以实现数字或符号的动态切换。
3. 数码管的应用数码管由于其直观、易读的特点,在各行各业都有广泛的应用。
3.1 仪器仪表数码管在仪器仪表领域得到广泛应用,例如数字万用表、电子测量仪器等。
它们通过控制不同的LED点亮或熄灭,可以直观地显示测量结果、电压、电流等信息。
3.2 数字时钟数码管常被用于制作数字时钟。
通过控制每个LED的亮灭状态,可以实时显示小时、分钟、秒等信息,方便人们了解当前的时间。
3.3 电子秤数码管还广泛应用于电子秤。
它们通过控制LED的亮灭状态,实时显示被称量物体的重量,方便人们进行称重工作。
3.4 电子计数器数码管常被用于制作电子计数器。
通过控制LED的亮灭状态,可以实时显示计数结果,常见于工业自动化、交通信号灯等领域。
超薄电磁炉维修手册(09B主板)超薄电磁炉维修手册注:此维修手册适用于TM-S1-09B主板电磁炉电路图图1:TM-S1-09B主板电路图图2:三洋主控芯片图3:TM-S-07E显示板电路图TM-S-09B电路板的常见故障检修1、炸机炸机:1、更换保险丝,用万用表二极管档位,先检测IGBT是否正常后再来确定桥堆、稳压二极管DW1是否损坏;2、检测驱动电路是否正常(用万用表二极管档位重点检测三极管Q1、Q2、Q3是否被击穿);3、检测同步输出电压是否正常(以220V为标准Va电压在2.7V 左右,Vb电压在2.5V左右,两电压差值在150mV左右)。
4、如上述器件及信号正常后,可上电进行老化。
2、不检锅不检锅:1、检查电源线是否插好;2、检查浪涌检测电路,电阻、电容是否有问题3、检测电流检测电路是否出现过流现象,检查电容,电阻;4、检测电压检测电路,VIN在3.0V左右。
3、有检锅声,但检不到锅有检锅滴答声,但检不到锅具:1、检查线圈盘是否装好;2、检测驱动电路是否正常(用万用表二极管档位重点检测三极管Q1、Q2、Q3是否被击穿);3、检测同步输出电压是否正常(以220V为标准Va电压在2.7V 左右,Vb电压在2.5V左右,两电压差值在150mV左右)。
4、检测电压检测电路是否正确(以220V为标准,芯片7脚电压在3.0V左右);5、检测电流检测电路是否正确(检查可调电阻、R2、R21、C27、C26、R5)。
4、风扇不转风机不转:1、检查风机插座是否安装好;2、更换风机,看是否为风机自身损坏;3、检测风机插座处18V(通常为19V左右)是否输出正常,如果偏低,检测电源电路;4、检测三极管Q5,R20是否完好;5、上电无反应上电无反应1、首先检测保险丝是否损坏,如果损坏,则按炸机进行分析;2、检查电源线、显示板是否插好;3、如果都完好,检测5V电压输出是否正常,如果不正常则检测电源模块;4、检查显示板芯片是否损坏;5、检查单片机是否连焊、损坏。
动态数码管显示原理
动态数码管显示原理是通过在特定的时间序列下,逐个刷新数码管的每一位来显示数字的。
数码管由七段LED组成,包括a、b、c、d、e、f、g七段。
根据7段LED的不同亮灭组合方式,可以显示0~9的数字,
以及一些字母和符号。
每一位数码管的显示由控制信号控制。
动态数码管的显示原理是,通过快速地逐个刷新每一位数码管的显示,给人造成多个数码管同时显示的错觉。
这需要两个关键信号:位选信号和段选信号。
位选信号是用于选择要显示的数码管的信号。
它连接到数码管的选择引脚,通过逐个地将相应的数码管的选择引脚置为低电平,来选择要显示的数码管。
段选信号是用于控制每一位要显示的数字的信号。
它连接到数码管的a、b、c、d、e、f、g七个引脚,通过对应的引脚组合,可以控制每一位显示相应的数字。
在动态数码管显示中,根据显示的需要,以一定的时间间隔连续切换不同的位选信号,同时通过段选信号控制每一位显示相应的数字。
这样,在切换速度较快的情况下,人眼会觉得多个数码管配合闪烁,呈现出完整的数字显示效果。
通过这种原理,可以实现在有限的数码管上显示多位数字,例如时钟、计时器等。
但需要注意的是,由于刷新速率较快,人
眼感觉到的是同时显示,因此要确保刷新频率足够高,以避免出现闪烁或者模糊的现象。
目录一.系统功能简介 (2)二.硬件电路设计 (2)1.Proteus原理图: (2)2.元件清单: (3)三.软件设计 (3)1.流程图: (3)2.程序: (4)四.系统调试 (6)4.1仿真: (6)4.1.1步骤: (6)4.1.2 仿真图片: (6)4.1.3 结果: (7)4.2硬件电路调试: (7)4.2.1 步骤: (7)4.2.2运行结果照片: (7)4.2.3结论: (8)4.2.4系统使用说明: (8)五.系统设计感受 (8)一.系统功能简介由P2口将所要显示的七段显示码直接输出到4位数字七段LED数码管模块,再由P1口的低四位将扫描信号直接送到七段显示模块的4个公共端,使这个七段LED数码管模块闪烁“2008”3次,再闪烁“0315”3次,如此循环不停。
二.硬件电路设计1.Proteus原理图:2.元件清单:三.软件设计1.流程图:2.程序:/* ch05-4-2.c - 直接驱动4位七节显示器实验,P1.0~3为扫描信号P2接七节显示器*///==声明区====================================#include <reg51.h> // 定义8051暂存器之标头档,P2-17~19#define SCANP P1 // 定义扫瞄码由Port 1输出#define SEG7P P2 // 定义七节显示码由Port 2输出char code TAB[10]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, //数字0-40x92, 0x83, 0xf8, 0x80, 0x98 }; //数字5-9char code disp[2][4]={ {2,0,0,8}, // 显示资料(第0组){0,3,1,5}}; // 显示资料(第1组)void delay1ms(int); // 声明延迟函数void scanner(char); // 扫瞄函数//==主程序====================================main() // 主程序开始{ char i,j; // 声明变数i,jwhile(1) // 无穷循环,程序一直跑{ for(i=0;i<2;i++) // 显示第0,1行字组,for循环(字组i)开始for(j=0;j<3;j++) // 闪烁三次{ scanner(i); // 扫瞄第i行字组SCANP=0xff; // 全灭delay1ms(480); // 延迟480 1m=0.48s}} // while循环结束} // 主程序结束//==子程序====================================/* 延迟函数,延迟约x 1ms */void delay1ms(int x) // 延迟函数开始{ int i,j; // 声明整数变数i,jfor (i=0;i<x;i++) // 计数x次,延迟x 1msfor (j=0;j<120;j++); // 计数120次,延迟1ms} // 延迟函数结束/* 扫瞄字组函数,显示第x组数字*/void scanner(char x) // 扫瞄字组函数开始{ char i,j,BCD,scan; // 声明变数for (i=0;i<30;i++) // 扫瞄30次i循环{ scan=0xf7; // 扫瞄信号初值1111 0111for (j=0;j<4;j++) // 扫瞄4个数字j循环{ SEG7P=0xff; // 关闭七段显示器(防止闪动)SCANP=scan; // 输出扫瞄信号(低4位元)BCD=disp[x][j]; // 读取第x组第j个数字之BCD码SEG7P=TAB[BCD]; // 输出至七节显示器delay1ms(4); // 延迟4msscan>>=1; // 产生下个扫瞄信号} // 结束扫瞄4个数字j循环} // 结束扫瞄30次i循环} // scanner函数结束四.系统调试4.1仿真:4.1.1步骤:1.根据功能要求与电路结构,在Keil C里编写程序并进行生成,以产生.HEX文件。
【技术分享】数码管显示常见问题总结2015-03-30吴鉴鹰(原创)一、数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
如下图。
二、数码管出现暗红现象现象描述:单片机穿行口的范式0为同步移位寄存器方式,外接一个串入并出的移位寄存器,可以扩展为一个并行口。
但是发现数码管显示数据的时候,出现暗红现象。
电路连接图原因:数据在串行输出期间,输出允许控制端没有关闭,从而导致串口输出端不稳定产生暗红现象。
三、数码管闪烁1:动态扫描驱动的时候,时间调整的不对,时间太短,就会闪烁,时间太长,就会出玩不应该亮的位微亮,所以,这是调整延时时间的事2:有可能是程序要求这样闪烁吧,别说不可能,有时候在某些系统中,还故意设有这种功能。
3:即使用专用芯片,只要是扫描式的驱动,他也会闪烁,只是我们看起来不太明显。
4:如果从程序中讲的话,即使扫描时间合理,也有可能会因为程序的不合理性而出现闪动,这种情况一般为两种失误:a中断时间影响了扫描周期的时间,即中断时间长于扫描周期,就会出现闪烁 b闪烁的常用数据内存被快速更改后又改过来,属于寄存器的重复使用,这两种情况我都碰到过。
目录
一.系统功能简介 (2)
二.硬件电路设计 (2)
1.Proteus原理图: (2)
2.元件清单: (3)
三.软件设计 (3)
1.流程图: (3)
2.程序: (4)
四.系统调试 (6)
4.1仿真: (6)
4.1.1步骤: (6)
4.1.2 仿真图片: (6)
4.1.3 结果: (7)
4.2硬件电路调试: (7)
4.2.1 步骤: (7)
4.2.2运行结果照片: (7)
4.2.3结论: (8)
4.2.4系统使用说明: (8)
五.系统设计感受 (8)
一.系统功能简介
由P2口将所要显示的七段显示码直接输出到4位数字七段LED数码管模块,再由P1口的低四位将扫描信号直接送到七段显示模块的4个公共端,使这个七段LED数码管模块闪烁“2008”3次,再闪烁“0315”3次,如此循环不停。
二.硬件电路设计
1.Proteus原理图:
2.元件清单:
三.软件设计1.流程图:
2.程序:
/* ch05-4-2.c - 直接驱动4位七节显示器实验,P1.0~3为扫描信号P2接七节显示器*/
//==声明区====================================
#include <reg51.h> // 定义8051暂存器之标头档,P2-17~19
#define SCANP P1 // 定义扫瞄码由Port 1输出
#define SEG7P P2 // 定义七节显示码由Port 2输出
char code TAB[10]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, //数字0-4
0x92, 0x83, 0xf8, 0x80, 0x98 }; //数字5-9
char code disp[2][4]={ {2,0,0,8}, // 显示资料(第0组)
{0,3,1,5}}; // 显示资料(第1组)
void delay1ms(int); // 声明延迟函数
void scanner(char); // 扫瞄函数
//==主程序====================================
main() // 主程序开始
{ char i,j; // 声明变数i,j
while(1) // 无穷循环,程序一直跑
{ for(i=0;i<2;i++) // 显示第0,1行字组,for循环(字组i)开始for(j=0;j<3;j++) // 闪烁三次
{ scanner(i); // 扫瞄第i行字组
SCANP=0xff; // 全灭
delay1ms(480); // 延迟480 1m=0.48s
}
} // while循环结束
} // 主程序结束
//==子程序====================================
/* 延迟函数,延迟约x 1ms */
void delay1ms(int x) // 延迟函数开始
{ int i,j; // 声明整数变数i,j
for (i=0;i<x;i++) // 计数x次,延迟x 1ms
for (j=0;j<120;j++); // 计数120次,延迟1ms
} // 延迟函数结束
/* 扫瞄字组函数,显示第x组数字*/
void scanner(char x) // 扫瞄字组函数开始
{ char i,j,BCD,scan; // 声明变数
for (i=0;i<30;i++) // 扫瞄30次i循环
{ scan=0xf7; // 扫瞄信号初值1111 0111
for (j=0;j<4;j++) // 扫瞄4个数字j循环
{ SEG7P=0xff; // 关闭七段显示器(防止闪动)
SCANP=scan; // 输出扫瞄信号(低4位元)
BCD=disp[x][j]; // 读取第x组第j个数字之BCD码
SEG7P=TAB[BCD]; // 输出至七节显示器
delay1ms(4); // 延迟4ms
scan>>=1; // 产生下个扫瞄信号
} // 结束扫瞄4个数字j循环} // 结束扫瞄30次i循环
} // scanner函数结束
四.系统调试
4.1仿真:
4.1.1步骤:
1.根据功能要求与电路结构,在Keil C里编写程序并进行生成,以产生.HEX文件。
然后进行软件调试/仿真,看看其功能是否正常。
若有错误或非预期的状态,则检查源程序,看看哪里出了问题,修改将它记录在实验报告里。
2.若软件调试/仿真功能正常,可按图连接线路,并使用在线仿真器加载新的程序,以仿真该电路的动作。
若非预期的状态,则检查线路的连接状态,看看哪里出了问题并将它记录在实验报告里。
3.若在线仿真功能正常,将程序刻录到89C51,再把该89C51放入实际电路,以取代刚才的在线仿真器,然后直接送电,看看是否正常。
4.编写实验报告。
4.1.2 仿真图片:
4.1.3 结果:
通过在线仿真器的仿真,实现了功能要求。
4.2硬件电路调试:
4.2.1 步骤:
根据原理图,在面包板上连接好各元件,保证焊接无错误,再把刻录好程序的89C51放入实际电路中,然后直接送电。
4.2.2运行结果照片:
4.2.3结论:
通过实际电路的运行,发现已经实现了功能要求。
4.2.4系统使用说明:
当电路送电时,LED数码管模块闪烁“2008”3次,再闪烁“0315”3次,如此循环不停,直到断电为止。
五.系统设计感受
这次的数码管闪烁显示设计,需要先用仿真器仿真,再把实际电路做出来。
在用仿真器仿真的步骤中,数码管我先采用的是7SEG-MPX4-CA,但是始终无法实现功能要求。
于是,我先考虑三极管问题,我先后采用了2N3905,2N3906,但是仍无法实现功能要求。
然后我又考虑数码管的问题,在先后尝试了多次后,终于在换成7SEG-MPX1-CA时,实现了功能要求。
在实际电路的焊接中,我先上网查找了AT89C51和LED数码管的引脚图,在焊接时,一边对照引脚图,一边小心焊接。
最后在将刻录好的AT89C51放入电路中,送电后,很好的实现了功能要求。
到此,数码管闪烁显示设计完成了。