数码管显示不正常的调试方法与步骤总结
- 格式:docx
- 大小:39.99 KB
- 文档页数:4
单片机数码管实验报告单片机数码管实验报告引言:单片机作为一种重要的嵌入式系统,被广泛应用于各个领域。
在本次实验中,我们将探索单片机与数码管的结合,通过编程控制数码管的显示,实现不同的功能。
本文将详细介绍实验的背景、目的、方法和结果,并对实验过程中遇到的问题进行讨论和总结。
一、实验背景数码管是一种常见的输出设备,用于显示数字和字母等信息。
而单片机则是一种集成了微处理器、存储器和输入输出接口等功能的芯片,具有高度集成、灵活性强的特点。
将单片机与数码管结合起来,可以实现对数字的显示和控制,为实际应用提供了很大的便利。
二、实验目的本次实验的目的是通过编程控制单片机,实现对数码管的显示和控制。
具体包括以下几个方面:1. 学习单片机的基本原理和编程方法;2. 掌握数码管的工作原理和接口电路;3. 理解数码管的编码方式和显示原理;4. 实现基本的数码管显示功能,如显示数字、字母、符号等;5. 探索数码管的扩展应用,如时钟、计时器等。
三、实验方法1. 实验器材准备:本次实验所需的器材包括单片机开发板、数码管、连接线等。
2. 实验步骤:(1)搭建实验电路:将数码管与单片机开发板连接,并根据实验要求进行接线。
(2)编写程序:使用C语言编写程序,通过单片机的GPIO口控制数码管的显示。
(3)下载程序:将编写好的程序下载到单片机开发板上。
(4)实验验证:通过观察数码管的显示情况,验证程序的正确性。
四、实验结果经过实验验证,我们成功实现了对数码管的显示和控制。
通过编写不同的程序,我们可以实现以下几种功能:1. 显示数字:通过控制数码管的不同段点亮,可以显示0-9的数字。
2. 显示字母:通过控制数码管的不同段点亮,可以显示A-Z的字母。
3. 显示符号:通过控制数码管的不同段点亮,可以显示一些常见的符号,如"+"、"-"、"*"等。
4. 显示动画:通过快速切换数码管的显示内容,可以实现简单的动画效果,如闪烁、滚动等。
单片机数码管显示实验总结单片机数码管显示实验总结一、实验目的本次实验旨在通过单片机控制数码管显示,掌握数码管的工作原理、编程控制方法以及单片机与数码管的接口技术。
通过实验,提高自己的动手能力和编程技能,为今后的学习和实际工作打下坚实的基础。
二、实验原理数码管是一种常用的电子显示器件,它由多个LED组成,通过控制各个LED的亮灭来显示不同的数字或字符。
本次实验采用的是共阴极数码管,它由8个LED组成,通过单片机控制每个LED的亮灭状态来显示不同的数字或字符。
三、实验步骤1.硬件准备(1)选择合适的单片机开发板,如Arduino、STM32等。
(2)购买数码管及相应的驱动电路。
(3)准备杜邦线、电阻、电容等电子元件。
2.硬件连接(1)将数码管与单片机开发板连接起来。
(2)根据数码管驱动电路的要求,连接电源、地线和控制信号线。
(3)连接电源后,打开开发板电源,观察数码管的显示效果。
3.编程控制(1)在开发板上编写程序,控制数码管显示不同的数字或字符。
(2)使用相应的编译器将程序编译成可执行文件,上传到开发板上。
(3)观察数码管的显示效果,调试程序,使其达到预期效果。
4.测试与评估(1)在不同情况下测试数码管的显示效果,如按键输入、传感器数据等。
(2)对程序进行优化和改进,提高程序的效率和稳定性。
(3)总结实验过程中的问题和解决方法,为今后的学习和实际工作提供参考。
四、实验结果及分析1.实验结果在实验过程中,我们成功地实现了对数码管的编程控制,使其能够根据不同的输入显示不同的数字或字符。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
经过调试和改进,我们解决了这些问题,使数码管的显示效果更加理想。
2.结果分析通过本次实验,我们深入了解了数码管的工作原理和编程控制方法,掌握了单片机与数码管的接口技术。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
这些问题的出现可能与硬件连接、编程控制等方面有关。
一、实训目的1. 理解数码管的基本工作原理和驱动方式。
2. 掌握数码管驱动电路的设计方法。
3. 提高动手能力和实际操作技能。
二、实训内容1. 数码管的结构及工作原理2. 数码管驱动电路的设计3. 数码管驱动电路的搭建与调试三、实训过程1. 数码管的结构及工作原理数码管是一种常用的显示器件,主要由七个笔画组成,分别为a、b、c、d、e、f、g,以及一个小数点dp。
数码管根据内部连接方式的不同,可分为共阴型和共阳型两种。
(1)共阴数码管:当对应笔画所在的阴极接地时,笔画会点亮;当阴极接高电平时,笔画熄灭。
(2)共阳数码管:当对应笔画所在的阳极接地时,笔画会点亮;当阳极接高电平时,笔画熄灭。
2. 数码管驱动电路的设计(1)共阴数码管驱动电路:以74HC595为例,介绍共阴数码管驱动电路的设计。
① 电路原理:74HC595是一款8位串行输入、并行输出的移位寄存器,其内部包含一个8位的移位寄存器和3个8位的锁存器。
通过将数据从串行输入端输入,经过移位寄存器传递,最后由并行输出端输出。
② 电路设计:将数码管的阴极与地相连,阳极分别与74HC595的8个并行输出端相连。
同时,将74HC595的串行输入端、时钟端、复位端与单片机相应端口相连。
(2)共阳数码管驱动电路:以CD4017为例,介绍共阳数码管驱动电路的设计。
① 电路原理:CD4017是一款10进制计数/分配器,具有10个输出端,可依次输出高电平。
当计数到10时,输出端重新从0开始计数。
② 电路设计:将数码管的阳极与地相连,阴极分别与CD4017的10个输出端相连。
同时,将CD4017的时钟端、复位端与单片机相应端口相连。
3. 数码管驱动电路的搭建与调试(1)搭建电路:按照设计好的电路图,将元器件连接到实验板上。
(2)调试电路:通过单片机编写程序,控制数码管显示相应的数字。
调试过程中,注意观察数码管显示效果,确保电路正常工作。
四、实训结果与分析1. 实训结果通过本次实训,成功搭建了共阴数码管和共阳数码管驱动电路,并实现了数字显示功能。
1. 理解数码管的工作原理及显示方法。
2. 掌握单片机与数码管之间的接口连接方法。
3. 学会使用C语言编写单片机控制程序,实现数码管的动态显示。
4. 提高动手实践能力和分析问题、解决问题的能力。
二、实训器材1. 单片机开发板(如STC89C52RC、AT89C51等)2. 数码管(共阴极或共阳极)3. 电阻、电容等电子元件4. 连接线、面包板等5. 编译器(如Keil、IAR等)6. Proteus仿真软件三、实训原理数码管是一种用于显示数字和字符的半导体显示器件。
根据显示段数的不同,可分为七段数码管和十六段数码管。
本实训采用七段数码管,由七个发光二极管(LED)组成,分别代表数字0-9。
数码管的显示原理:通过控制数码管各个段对应的引脚的高低电平,使相应的LED点亮或熄灭,从而显示数字或字符。
四、实训内容1. 数码管识别与测试2. 单片机与数码管的连接3. 编写单片机控制程序4. 实现数码管的动态显示5. Proteus仿真与调试1. 数码管识别与测试(1)识别数码管的段码,共阴极数码管的段码为1,共阳极数码管的段码为0。
(2)测试数码管各段LED的正负极,确定段码。
2. 单片机与数码管的连接(1)将数码管的段引脚与单片机的I/O口相连。
(2)将数码管的共阴极或共阳极引脚与单片机的地或正电源相连。
3. 编写单片机控制程序(1)定义数码管段码,如共阴极数码管的段码为0x3F(01111111B)。
(2)编写延时函数,实现延时功能。
(3)编写显示函数,根据需要显示的数字,选择相应的段码。
(4)编写主函数,实现数码管的动态显示。
4. 实现数码管的动态显示(1)初始化数码管,设置段码和位选。
(2)循环遍历数码管,依次显示每个数字。
(3)根据需要调整显示速度。
5. Proteus仿真与调试(1)打开Proteus软件,新建一个项目,添加单片机和数码管。
(2)连接单片机与数码管的引脚。
(3)编写Proteus仿真程序,实现数码管的动态显示。
第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
单⽚机实验报告——LED数码管显⽰实验(此⽂档为word格式,下载后您可任意编辑修改!)《微机实验》报告LED数码管显⽰实验指导教师:专业班级:姓名:学号:联系⽅式:⼀、任务要求实验⽬的:理解LED七段数码管的显⽰控制原理,掌握数码管与MCU的接⼝技术,能够编写数码管显⽰驱动程序;熟悉接⼝程序调试⽅法。
实验内容:利⽤C8051F310单⽚机控制数码管显⽰器基本要求:利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
提⾼要求:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:yyyy (年份)mm.dd(⽉份.⽇).asm;Description: 利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
;Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000H ;复位⼊⼝AJMP MAINORG 000BH ;定时器0中断⼊⼝AJMP TIME0MAIN: ACALL Init_Device ;初始化配置MOV P0,#00H ;位选中第⼀个数码管MOV R0,#00H ;偏移指针初值CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#06HMOV TL0,#0C6H ;赋初值,定时1sLOOP: MOV A,R0ADD A,#0BH ;加偏移量MOVC +PC ;查表取,段码MOV P1,A ;段码给P1显⽰SETB TR0 ;开定时LOOP1: JNB PSW.1,LOOP1 ;等待中断CLR PSW.1INC R0 ;偏移指针加⼀CJNE R0,#0AH,LOOP3MOV R0,#00H ;偏移指针满10清零AJMP LOOP ;返回DB 0FCH,60H,0DAH,0F2H,66H ;段码数据表:0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H; 5、6、7、8、9 ;***************************************************************** ; 定时器0中断;***************************************************************** TIME0: SETB PSW.1 ;标志位置⼀MOV TH0,#06H ;定时器重新赋值MOV TL0,#0C6HLOOP3: CLR TR0 ;关定时RETI;***************************************************************** ;初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 -Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 -Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend提⾼部分:;*********************************************************;Filename: shumaguan2.asm;Description:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:; 2012 (年份); 12.07(⽉份.⽇); 12.34(⼩时.分钟);Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000HAJMP MAINORG 000BHAJMP TIME0MAIN: ACALL Init_DeviceMOV R0,#00H ;⽤于位选MOV R1,#00H ;⽤于段选MOV R2,#22H ;置偏移量,⽤于控制模式MOV R4,#8MOV R5,#250CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#0FFHMOV TL0,#0C0H ;定时器赋初值1msBACK: MOV P0,R0 ;位选MOV A,R0ADD A,#40H ;选下⼀位MOV R0,AMOV A,R1ADD A,R2 ;加偏移量MOVC +PC ;查表取段码MOV P1,A ;段码给P1显⽰LOOP: SETB TR0 ;开定时HERE: JNB PSW.1,HERE ;等待中断CLR PSW.1DJNZ R5,BACKMOV R5,#250DJNZ R4,BACKMOV R4,#8 ;循环2000次(2s)MOV A,R2ADD A,#04H ;偏移量加04H,到下⼀模式段码初值地址 MOV R2,ACJNE R2,#2EH,LOOP2MOV R2,#22H ;加三次后偏移量回到初值LOOP2: AJMP BACK ;返回进⼊下⼀模式;段码数据表:DB 0DAH,60H,0FCH,0DAH ; 2102DB 0E0H,0FCH,61H,60H ; 701. 1DB 66H,0F2H,0DBH,60H ; 432. 1;*****************************************************************; 定时器0中断;***************************************************************** TIME0: MOV TH0,#0FFH MOV TL0,#0C0HCLR TR0SETB PSW.1INC R1 ;偏移指针加⼀CJNE R1,#04H,LOOPMOV R1,#00H ;偏移指针满04H清零RETI;***************************************************************** ; 初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Open-Drain, Digital; P0.3 - Unassigned, Open-Drain, Digital; P0.4 - Unassigned, Open-Drain, Digital; P0.5 - Unassigned, Open-Drain, Digital; P0.6 - Unassigned, Open-Drain, Digital; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Open-Drain, Digital; P1.1 - Unassigned, Open-Drain, Digital; P1.2 - Unassigned, Open-Drain, Digital; P1.3 - Unassigned, Open-Drain, Digital; P1.4 - Unassigned, Open-Drain, Digital; P1.5 - Unassigned, Open-Drain, Digital; P1.6 - Unassigned, Open-Drain, Digital; P1.7 - Unassigned, Open-Drain, Digital; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital; P2.2 - Unassigned, Open-Drain, Digital; P2.3 - Unassigned, Open-Drain, Digitalmov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend六、程序测试⽅法与结果、软件性能分析软件调试总体截图:基础部分:软件运⾏时,我们发现P0端⼝为00H,P1端⼝以依次为FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H。
51单片机矩阵键盘控制数码管显示过程中出现的问题及解决方法在使用51单片机控制矩阵键盘同时驱动数码管显示的过程中,可能会遇到一些常见的问题。
以下是一些可能的问题及相应的解决方法:按键无法正常响应:* 问题可能原因:接线错误、按键损坏、软件扫描不到按键信号。
* 解决方法:检查按键连接是否正确,确保按键没有损坏。
在软件中进行适当的按键扫描,确保能够正确检测到按键的状态。
数码管显示异常或不亮:* 问题可能原因:数码管接线问题、数码管损坏、数码管驱动程序错误。
* 解决方法:仔细检查数码管的接线是否正确,确保数码管没有损坏。
检查数码管的驱动程序,确保它按照正确的顺序和时序进行驱动。
按键重复响应或漏按现象:* 问题可能原因:按键抖动、软件扫描速度过快。
* 解决方法:在软件中增加适当的按键抖动延时,确保在按键按下或抬起时只响应一次。
调整软件扫描速度,避免扫描间隔过短导致的重复响应。
矩阵键盘的多个按键同时按下导致混乱:* 问题可能原因:矩阵键盘硬件连接错误、软件扫描算法问题。
* 解决方法:检查矩阵键盘的硬件连接,确保矩阵行和列没有短路或断路。
调整软件扫描算法,确保同时按下多个按键时能够正确识别。
数码管显示不正常的数字或乱码:* 问题可能原因:程序错误、数码管接线错误。
* 解决方法:仔细检查程序,确保数码管段选和位选的控制逻辑正确。
检查数码管的接线,确保每个数码管的连接都正确。
在解决问题时,建议逐步排除可能的原因,通过调试工具、逻辑分析仪或输出调试信息的方式来定位问题。
另外,仔细查阅51单片机的数据手册和相关文档,以确保硬件连接和软件设计都符合标准。
如何进行故障排除与调试故障排除与调试是在技术领域中非常重要的一项工作。
无论是在电子领域还是计算机领域,故障排除与调试的技巧都是必不可少的。
本文将介绍如何进行故障排除与调试,并提供一些实用的方法和技巧。
1.了解故障现象在进行故障排除与调试之前,首先需要对故障现象进行准确定义和了解。
通过与用户沟通或观察设备的异常行为,可以初步判断故障的性质和范围。
了解故障现象有助于确定进一步的排除方向和方法。
2.检查硬件连接故障往往是由于硬件连接问题引起的。
因此,检查和验证硬件连接是解决故障的第一步。
确保所有电缆、线路、插头等连接良好,排除可能的松动或腐蚀问题。
如果可能,可以使用测试仪器来验证连接是否正常。
3.查看错误日志在许多设备或系统中,都会有错误日志功能,记录了设备的运行状态和可能的错误信息。
查看错误日志可以提供有关故障原因的线索。
仔细分析错误日志,寻找与故障现象相关的错误代码或异常记录。
4.逐层排除当发现故障现象时,可以逐层排除来确定故障发生的具体位置。
从系统层逐步向下排查,检查各个组件和模块的正常性。
可以使用测试工具对各个模块进行单独测试,判断其是否正常工作。
5.分析代码或电路如果故障发生在程序或电路中,需要仔细分析代码或电路图,找出可能的异常或错误。
逐行或逐段进行代码或电路的检查和调试,注意可能的语法错误、逻辑错误或电路连接错误。
对于复杂的程序或电路,可以使用调试工具来辅助定位问题。
6.测试、验证与复现在对故障进行修复后,需要进行测试、验证与复现,确保故障已经解决。
使用合适的测试方法和测试工具,验证故障修复的有效性。
如果故障是偶发性的或依赖于特定条件发生的,需要尽可能复现故障,以便确认是否已完全解决。
7.记录与总结在完成故障排除与调试后,需要进行记录与总结。
记录故障原因、排除方法和结果,以供以后参考。
同时,进行总结和反思,从故障中汲取经验教训,以提高自身的排除与调试能力。
总结:故障排除与调试是一项需要耐心和经验的工作。
一、实训目的本次数电数码管显示实训的主要目的是通过实际操作,让学生掌握数码管的基本原理、工作方式以及动态扫描显示电路的设计方法。
通过实训,学生能够熟练使用数码管进行数字显示,了解数码管驱动电路的设计和调试方法,并能够运用Verilog HDL语言进行层次化设计电路。
二、实训环境1. 实训仪器:数码管、数据选择器、可编程芯片(如FPGA/CPLD)、仿真软件(如ModelSim)、开发平台(如Quartus)等。
2. 实训内容:设计一个3位数码管动态扫描显示电路,显示学生学号的后3位数字。
提高性实验包括增加一个功能切换控制开关,以实现数码管显示数字的自动循环移位,以及其他显示功能。
三、实训原理数码管是一种常用的数字显示器件,分为七段数码管和十四段数码管。
本实训采用七段数码管,由七个LED灯组成,分别代表数字“0”至“9”以及部分字符。
数码管显示数字时,通过控制LED灯的亮灭来实现。
动态扫描显示电路利用了分时扫描技术,通过轮流点亮数码管的各个段,使得人眼感觉数码管同时显示多个数字。
动态扫描显示电路的关键在于控制各个数码管的显示时间以及段选信号的分配。
四、实训过程1. 设计电路原理图根据实训要求,设计一个3位数码管动态扫描显示电路的原理图。
电路包括数码管、数据选择器、可编程芯片以及时钟信号发生器等部分。
2. 编写Verilog HDL代码使用Verilog HDL语言编写数码管动态扫描显示电路的代码,实现电路的功能。
代码主要包括以下部分:(1)数码管段选信号发生器:产生数码管的段选信号,控制LED灯的亮灭。
(2)数码管位选信号发生器:产生数码管的位选信号,实现动态扫描。
(3)数据选择器:选择要显示的数字,并将其输出到数码管。
(4)时钟信号发生器:产生时钟信号,控制动态扫描的速度。
3. 仿真实验使用仿真软件对编写的Verilog HDL代码进行仿真实验,验证电路的功能。
观察仿真波形,确保电路能够正常工作。
数码管显示不正常的调试方法与步骤总结
分类:单片机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 2000us
3.MOV TL0,#(65536-2000) MOD 256
4.MOV P0,#00h;新加该程序最大的Bug在这里,之所以显
示不全是因为前几次显示加在后一次显示上导致重叠
5. ; 或影藏,解决办法是每次显示之前
将所有段码清零
6.MOV A,#DISPBUF
7.ADD A,DISPBIT ;DISPBIT+DISPBUF=40H-48H
8.MOV R0,A
9.MOV A,@R0
10.M OV DPTR,#TABLE
11.M OVC A,@A+DPTR
12.M OV P0,A ;段选
13.
14.M OV A,DISPBIT
15.M OV DPTR,#TAB
16.M OVC A,@A+DPTR
17.M OV P2,A ;位选
18.
19.I NC DISPBIT
20.M OV A,DISPBIT
21.C JNE A,#08H,KNA ;08h
22.M OV DISPBIT,#00H
今天帮同学调了一下这个程序,在这里记下一笔,做个小结。