3.2 单片机控制LED数码管的显示

合集下载

单片机数码管显示实验总结

单片机数码管显示实验总结

单片机数码管显示实验总结单片机数码管显示实验总结一、实验目的本次实验旨在通过单片机控制数码管显示,掌握数码管的工作原理、编程控制方法以及单片机与数码管的接口技术。

通过实验,提高自己的动手能力和编程技能,为今后的学习和实际工作打下坚实的基础。

二、实验原理数码管是一种常用的电子显示器件,它由多个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.结果分析通过本次实验,我们深入了解了数码管的工作原理和编程控制方法,掌握了单片机与数码管的接口技术。

同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。

这些问题的出现可能与硬件连接、编程控制等方面有关。

基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文

基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文

基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文本篇报告将详细介绍基于单片机的按键控制LED数码管共阴极动态显示电路的设计。

一、引言LED数码管是一种常用的数字显示器件,广泛应用于各种计数器、时钟和计时器等电子设备中。

本设计旨在利用单片机实现对LED数码管的动态显示,并通过按键控制显示的数字。

二、设计方案1.系统结构本系统采用基于单片机的数字显示方案,其中包括一个单片机、数码管显示模块和按键模块。

单片机负责接收按键输入信号,并根据输入信号控制数码管显示相应的数字。

2.系统设计(1)数码管显示模块:该模块由共阴极LED数码管组成,共阴极接地,通过接通不同的端口线来控制数码管显示不同的数字。

(2)按键模块:该模块由多个按键组成,用于用户输入指定的数字。

每个按键接一个IO脚,通过按下不同的按键,触发不同的端口输入。

(3)单片机:本设计选用51单片机作为控制核心,通过IO口与数码管显示模块和按键模块连接。

单片机根据按键输入信号的变化,对数码管进行动态显示。

3.设计过程(1)针对单片机的接线设计:将单片机的IO口分别与数码管显示模块和按键模块连接。

将数码管的共阳极接电源正极,数码管的各段(即a、b、c、d、e、f、g)接单片机的IO脚。

(2)针对单片机软件设计:设计单片机程序实现按键输入的检测和数码管动态显示的控制。

首先初始化IO口,设置按键引脚为输入端口,设置数码管引脚为输出端口。

然后循环检测按键的状态。

当检测到按键被按下时,根据按键的不同选择分别显示不同的数字。

4.功能要求(1)按下不同的按键,数码管能够显示相应的数字,实现动态显示。

(2)按键输入具有去抖功能,避免误触发。

(3)程序运行稳定,能够正确响应按键输入,显示正确的数字。

三、实验结果经过实验验证,本设计实现了按键控制LED数码管共阴极动态显示的功能要求。

按下不同的按键,数码管能够正确显示相应的数字,程序运行稳定,无误触发现象。

led数码管显示控制实验报告

led数码管显示控制实验报告

led数码管显示控制实验报告实验名称:LED数码管显示控制实验实验目的:1.了解LED数码管及其工作原理。

2.学习如何控制LED数码管显示数字。

3.加强对单片机控制IO口的编程能力。

实验器材:1.STC89C52RC单片机开发板2.数码管(共阳、共阴)3.杜邦线实验原理:LED数码管是一种数字显示组件,在工业控制、计算机等领域都有广泛应用。

LED数码管在显示数字时,通过LED管来显示数字,根据不同的管脚状态,控制LED管的导通和隔离,间隔时间来控制亮和灭的时间,从而显示出不同的数字。

在STC89C52RC单片机上,通过控制IO的高低电平来控制数码管的显示。

当要显示的数字为0~9时,需要将相应的IO输出低电平,同时将其他IO输出高电平,从而实现数字的显示。

实验步骤:1.将共阳数码管的正极连接到P0口(注意极性),并将共阴数码管的负极连接到P0口(注意极性)。

2.将STC89C52RC单片机开发板连接到电源,将USB转串口线连接到电脑。

3.打开Keil uVision5软件,创建一个新工程,配置完工程后编写控制代码(具体代码见附录)。

4.编写完成后,将代码下载到单片机中,开始实验。

实验结果:成功实现了数字0到9的显示。

通过实验,我们了解了LED数码管的工作原理,学会了控制单片机IO口进行数字的显示,加强了对单片机编程的掌握能力。

附录:代码如下:```#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula = P2^6;sbit wela = P2^7;uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=114;y>0;y--);}void Display(){uchar i;for(i=0;i<10;i++){P0 = table[i]; dula = 0;dula = 1;delay(500);}}。

单片机实验3 数码管控制实验-动态显示

单片机实验3  数码管控制实验-动态显示
/**********实验二数码管控制实验-动态显示**************/
;实验名称:数码管动态显示
;功能:4位数码管循环显示“0123”“4567”“89AB”“CDEF”,间隔0.5S。
;编写人:陈建泽
;编写时间:2010年11月2日
/**********************程序代码************************/
D1MS: MOV R2,#250 ;250*(1+1+2)=1000us=1ms
L1:NOP
NOP
DJNZ R2,L1
RET
/*****************中断服务子程序*****************/
T0_INT:MOV TH0,#(65536-50000)/256
MOV TL0,#(65536-50000)MOD 256
MOV A,R4
CJNE A,#16,L3
AJMP MAIN
L3:MOV R5,A
AJMP L1
DIS:MOV P2,R6;用A作为中间寄存器,因后面要循环显示
MOV A,R5
ACALL SQR ;查表
MOV P0,A
ACALL D1MS ;1ms
INC R5
MOV A,R6
RL A;指向下一位
MOV R6,A
RET;子程序返回
TAB: DB 0C0H,0F9H,0A4H,0B0H ;共阳极字型码表0、1、2、3
DB 99H, 92H, 82H, 0F8H;共阳极字型码表4、5、6、7
DB 80H, 90H, 88H, 83H;共阳极字型码表8、9、A、B
DB 0C6H,0A1H,86H, 8EH;共阳极字型码表C、D、E、F

单片机实验报告——LED数码管显示实验

单片机实验报告——LED数码管显示实验

单⽚机实验报告——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。

单片机数码管显示原理

单片机数码管显示原理

单片机数码管显示原理数码管是一种常见的显示元件,广泛应用于各种电子设备中,比如计算器、电子钟等。

而在这些设备中,数码管的显示原理是通过单片机来实现的。

本文将介绍单片机数码管的显示原理及其相关知识。

一、什么是单片机数码管?数码管是一种由发光二极管(LED)组成的显示元件,通常由7或8个发光二极管组成,呈现出数字、字母和符号等。

单片机数码管是指通过单片机控制的数码管。

二、单片机数码管的类型根据不同的需求,单片机数码管可以分为共阳极和共阴极两种类型。

共阳极表示数码管的阳极(正极)连接在一起,而共阴极表示数码管的阴极(负极)连接在一起。

三、单片机数码管的显示原理单片机数码管的显示原理是通过控制数码管的阳极或阴极的电平来实现。

以共阳极为例,当需要显示某个数字时,单片机会向对应的数码管的阳极引脚发送高电平信号,使得该数码管发光。

而当不需要显示该数字时,单片机会向该数码管的阳极引脚发送低电平信号,使得该数码管不发光。

四、单片机数码管的控制方法单片机数码管的控制方法一般可以分为两种:静态显示和动态显示。

1. 静态显示静态显示是指单片机通过控制数码管的每个发光二极管的状态来实现显示。

具体操作是,单片机依次给每个数码管的每个发光二极管引脚设置高电平或低电平,从而实现需要显示的数字、字母或符号。

2. 动态显示动态显示是指单片机通过频繁的切换数码管的显示来实现显示。

具体操作是,单片机会快速轮流地给每个数码管发送高电平信号,每个数码管只显示一个数字的一部分,通过快速的切换,使得人眼感觉到所有数码管都在同时显示。

五、单片机数码管的控制步骤单片机数码管的控制步骤一般包括以下几个方面:1. 初始化:首先需要对单片机进行初始化设置,包括设置引脚的工作模式、设置数码管的类型等。

2. 数码管数据转换:将需要显示的数字、字母或符号转换成对应的二进制码,然后存储到单片机的内存中。

3. 显示控制:根据转换后的二进制码,控制数码管的显示。

通过设置数码管的阳极或阴极引脚的电平,实现对应位置的数码管发光或不发光。

PIC单片机驱动LED数码管显示程序

PIC单片机驱动LED数码管显示程序

PIC单片机驱动LED数码管显示程序;*****该程序用于驱动led 数码管显示,在8 个LED 数码管上依次显示数字1、2、3、4、5、6、7、8*******;****51hei 单片机学习网经典程序已测试,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;**************初始化子程序*****************INITIAL BCF 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 ;启动发送WAIT BTFSS PIR1,SSPIFGOTO WAIT ;等待发送结束BCF PIR1,SSPIF ;清除中断标志。

单片机原理及接口技术第5章 IO口应用-显示与开关键盘输入

单片机原理及接口技术第5章  IO口应用-显示与开关键盘输入

图5-1
发光二极管与单片机并行口的连接
5
如果端口引脚为低电平,能使灌电流Id从单片机的外部流入内部,则将
大大增加流过的灌电流值,如图5-1(b)所示。所以,AT89S51单片机任 何一个端口要想获得较大的驱动能力,要采用低电平输出。 如果一定要高电平驱动,可在单片机与发光二极管之间加驱动电路,如 74LS04、74LS244等。 5.1.2 单片机I/O端口控制发光二极管的编程 发光二极管与单片机的I/O端口的连接,如图5-1(b)所示。如要点亮 某发光二极管,只需该I/O端口位写入“0”即可。下面通过一个例子介绍如
21
图5-6 4位LED静态显示的示意图
示字符。这样在同一时间,每一位显示的字符可以各不相同。但是,静态
显示方式占用I/O口线较多。 对于图5-6所示电路,要占用4个8位I/O口(或锁存器)。如果数码管 数目增多,则还需要增加I/O口的数目。在实际的系统设计中,如果显示位 数较少,可采用静态显示方式。但显示位数较多时,为了降低成本,一般 采用动态显示方式。 2. 动态扫描显示方式 显示位数较多时,静态显示所占用的I/O口多,为节省I/O口与驱动电路
单片机控制的8位I/O口锁存器输出相连。如果送往各个LED数码管所显示字 符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到
送入下一个显示字符的段码。因此,静态显示方式的显示无闪烁,亮度较
高,软件控制比较容易。 图5-6所示为4位LED数码管静态显示电路,各个数码管可独立显示,
只要向控制各位I/O口锁存器写入相应的显示段码,该位就能保持相应的显
闭合时,P3.0引脚为低电平。单片机对开关状态的检测是由程序检测
10
图5-3
开关、LED发光二极管与P1口的连接
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.3.2 LED数码管的静态显示与动态显示
2. 动态显示方式
图5-9 4位LED数码管动态显示示意图
5.3.2 LED数码管的静态显示与动态显示
2. 动态显示方式
各位数码管轮流点亮的时间间隔(扫描间隔)应根据实 际情况定。发光二极管从导通到发光有一定的延时,如果点 亮时间太短,发光太弱,人眼无法看清;时间太长,产生闪 烁现象,且此时间越长,占用单片机时间也越多。另外,显 示位数增多,也将占用单片机大量时间,因此动态显示实质 是以执行程序时间来换取I/O端口减少。下面是动态显示实 例。
void main(void)
ห้องสมุดไป่ตู้
{
P0=0xa4;
//将数字"2"的段码送P0口
P1=0xf8;
//将数字"7"的段码送P1口
while(1)
//无限循环
;
}
5.3.2 LED数码管的静态显示与动态显示
2. 动态显示方式
显示位数较多时,静态显示所占的I/O口多,这时常 采用动态显示。为节省I/O口,通常将所有显示器段码 线相应段并联在一起,由一个8位I/O口控制,各显示位 公共端分别由另一单独I/O口线控制。
// 如段码为0x01,表明一个循环显示已结束 } }
5.3.1 LED数码管显示原理
void delayms(uint j) { uchar i; for(;j>0;j--)
{ i=250; while(--i); i=249; while(--i);
} }
// 延时函数
5.3.1 LED数码管显示原理
图5-10 8只数码管分别滚动显示单个数字1~8
5.3.2 LED数码管的静态显示与动态显示
2. 动态显示方式
参考程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
对于共阴极数码管,当某发光二极管阳极为高电平时, 发光二极管点亮,相应段被显示。同样,共阳极数码管阳 极连在一起,公共阳极接+5V,当某个发光二极管阴极接 低电平时,该发光二极管被点亮,相应段被显示。
5.3.1 LED数码管显示原理
图5-5 8段LED数码管结构及外形
5.3.1 LED数码管显示原理
图5-6 控制数码管循环显示单个数字的电路及仿真
5.3.1 LED数码管显示原理
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define out P0
uchar code
3.2
单片机控制LED数码管的显示
汽车单片机应用技术
3.1 开关状态检测
CONTENTS

3.2 单片机控制LED数码管的显示

3.3 单片机控制LED点阵显示器显示
3.4 单片机控制液晶显示模块1602 LCD的显示
5.3.1 LED数码管显示原理
LED数码管: “8”字型,7段(不包括小数点)或8 段(包括小数点),每段对应一个发光二极管,共阳极和 共阴极两种,见图5-5。共阳极数码管的阳极连接在一起, 接+5V;共阴极数码管阴极连在一起接地。
下面介绍单片机如何控制LED数码管显示字符。
5.3.1 LED数码管显示原理
【例5-5】利用单片机控制 一个8段LED数码管先循环显示 单个偶数:0、2、4、6、8,再 显示单个奇数:1、3、5、7、9, 如此反复循环显示。
本例原理电路及仿真结果, 见图5-6。
参考程序如下:
5.3.1 LED数码管显示原理
5.3.2 LED数码管的静态显示与动态显示
2. 动态显示方式
图5-9:4位8段LED动态显示器电路示意图。其中单片 机发出的段码占用1个8位I/O(1)端口,而位选控制使用 I/O(2)端口中4位口线。
动态显示就是单片机向段码线输出欲显示字符的段码。 每一时刻,只有1位位选线有效,即选中某一位显示,其他 各位位选线都无效。每隔一定时间逐位轮流点亮各数码管 (扫描方式),由于数码管余辉和人眼的“视觉暂留”作用, 只要控制好每位数码管显示时间和间隔,则可造成“多位同 时亮”的假象,达到同时显示效果。
为使LED数码管显示不同字符,要把某些段点亮,就要为 数码管各段提供一字节的二进制码,即字型码(也称段码)。 习惯上以“a”段对应字型码字节的最低位。各字符段码见表 5-1。
5.3.1 LED数码管显示原理
如要在数码管显示某字符,只需将该字符字型码加到各 段上即可。
例如某存储单元中的数为“02H”,想在共阳极数码管 上显示“2”,需要把“2”的字型码“A4H”加到数码管各 段。将欲显示字符的字型码作成一个表(数组),根据显示 字符从表中查找到相应字型码,然后把该字型码输出数码管 各个段上,同时数码管的公共端接+5V,此时在数码管上显 示字符“2”。
2. 动态显示方式
动态显示电路见图5-10,P0口输出段码,P2口输出扫 描的位控码,通过由8个NPN晶体管的位驱动电路对8个数 码管位控扫描。即使扫描速度加快,由于是虚拟仿真,数码 管的余辉也不能像实际电路那样体现出来。如对本例实际硬 件显示电路进行快速扫描,由于数码管余辉和人眼 “视觉 暂留”作用,只要控制好每位数码管显示的时间和间隔,则 可造成“多位同时亮” 假象,达到同时显示效果。
5.3.2 LED数码管的静态显示与动态显示
2. 动态显示方式
但虚拟仿真做不到这一点。仿真运行下,只能是一位一 位点亮显示,不能看到同时显示效果,但本例使我们了解动 态扫描显示实际过程。如采用实际硬件电路,用软件控制快 速扫描,可看到“多位同时点亮” 效果。
5.3.2 LED数码管的静态显示与动态显示
uchar code
dis_code[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0
xc0};
//共阳数码管段码表
void delay(uint t) {
//延时函数
uchar i;
while(t--) for(i=0;i<200;i++);
5.3.2 LED数码管的静态显示与动态显示
1. 静态显示方式
图5-7 4位LED静态显示的示意图
5.3.2 LED数码管的静态显示与动态显示
1. 静态显示方式
【例5-6】单片机控制2只数码管,静态显示2个数字 “27”。 原理电路见图5-8。
单片机用P0口与P1口,分别控制加到两个数码管DS0 与DS1的段码,而共阳极数码管DS0与DS1的公共端(公共 阳极端)直接接至+5V,因此数码管DS0与DS1始终处于导 通状态。利用P0口与P1口带有的锁存功能,只需向单片机 P0口与P1口分别写入相应的显示字符“2”和“7”的段码 即可。
由于一个数码管就占用一个I/O端口。如果数码管数目 增多,则需增加I/O口,但软件编程要简单的多。
5.3.2 LED数码管的静态显示与动态显示
图5-8 2位数码管静态显示的原理电路与仿真
5.3.2 LED数码管的静态显示与动态显示
1. 静态显示方式
参考程序如下:
#include<reg51.h> //包含8051单片机寄存器定义的头文件
优惠购书 教师可以申请最低折扣 学生直接优惠购买图书
成为作者
欢迎写文章/投稿, 我们强大的编辑团队将为您 提供专业和高效的编辑出版
服务
P2=j;
//P2口输出位控码
delay(180);
//延时,控制每位显示的时间
}
}
}
学习进步
更多样书申请和资源下载需求,请登录人 邮教育社区()
海量图书方便查询
囊括各大品类,您想要 的应有尽有
免费申请样书 教师免费申请样书, 我们将安排快递迅速送达
下载配套资源 教学视频、PPT课件、 教学案例、习题答案、 模拟试卷等丰富资源免费下载
说明:语句“if(seg[i]==0x01)i=0; ” 含义:如果欲送 出的数组元素为0x01(数字“9”段码0x90的下一个元素, 即结束码),表明一个循环显示已结束,则i=0,则重新开 始循环显示,从段码数组表的第一个元素seg[0],即段码 0xc0(数字0)重新开始显示。
5.3.2 LED数码管的静态显示与动态显示
5.3.2 LED数码管的静态显示与动态显示
2. 动态显示方式
【例5-7】 8只数码管,分别滚动显示单个数字1~8。程 序运行后,单片机控制左边第1个数码管显示1,其他不显示, 延时之后,控制左边第2个数码管显示1,其他不显示,直至 第8个数码管显示8,其他不显示,反复循环上述过程。
5.3.2 LED数码管的静态显示与动态显示
seg[]={0xc0,0xa4,0x99,0x82,0x80,0xf9,0xb0,0x92,0xf8,0x
90,0x01};
//共阳极段码表
void delayms(uint);
5.3.1 LED数码管显示原理
void main(void) { uchar i; while(1)
{ out=seg[i]; delayms(900); i++; if(seg[i]==0x01)i=0;
5.3.2 LED数码管的静态显示与动态显示
1. 静态显示方式
图5-7为4位LED数码管静态显示电路,各数码管可独立 显示,只要向控制各位I/O口锁存器送相应显示段码,该位 就能保持相应的显示字符。
相关文档
最新文档