实训二 数码管驱动

16
淮淮淮淮淮淮 淮淮淮 22/2/6 1 淮淮淮 淮淮淮淮淮 淮淮淮淮淮淮淮淮 1 2 淮淮淮淮淮淮淮淮 淮淮淮淮淮 3 淮淮淮淮淮淮淮淮 4 淮淮淮淮 5

description

实训二 数码管驱动. 七段式数码管原理. 1. 锁存器原理. 2. 3. 数码管的静态显示. 数码管的动态显示. 4. 5. 发挥要求. 1 、 LED 七段式数码管. 公共电阻限流 各路分别限流. 2. 2014/11/3. 2 、三态双向总线收发器 ——74LS245 原理. 引脚说明: DIR: 数据传输方向选择:(仿真图中为 AB/ ) 为高电平时, A 入 B 出;低电平时, B 入 A 出。 :输出允许 高电平时,输出端为高阻态;低电平,输 出等于输入。 - PowerPoint PPT Presentation

Transcript of 实训二 数码管驱动

淮南联合大学 方向红23/4/20 1

实训二 数码管驱动

七段式数码管原理1

2

数码管的静态显示

锁存器原理

3

数码管的动态显示4

发挥要求5

淮南联合大学 方向红23/4/20 2

1 、 LED 七段式数码管

a

b

cd

e

f g

dp

com a bfg

com c dpde com

abfg cdp de com

abfg cdp de

P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7

89S51

abcdefgdp

com

+5V

100Ω

LED压降约1.75V

27mA

低电平约0.5V

P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7

89S51

abcdefgdp

com

+5V

680Ω×8

公共电阻限流 各路分别限流

淮南联合大学 方向红23/4/20 3

2 、三态双向总线收发器—— 74LS245 原理

OE

引脚说明:DIR: 数据传输方向选择:(仿真图中为AB/ )

为高电平时, A 入 B 出;低电平时, B 入 A出。 :输出允许 高电平时,输出端为高阻态;低电平,输 出等于输入。A1-A8 :数据输入(或输出)端;B1-B8 :数据输出(或输入)端;

BA

淮南联合大学 方向红23/4/20

3 、数码管的静态显示

淮南联合大学 方向红23/4/20 5

在一个共阴极数码管上静态显示 0——15 ( F )#include<reg51.h>#define unit unsigned int#define uchar unsigned charuchar code table[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delayms(unit x);void display(uchar y);void main(){uchar i;

淮南联合大学 方向红23/4/20 6

while(1){for(i=0;i<16;i++)display(i);}}void display(uchar y){P2=table[y];delayms(400);P2=0x00;}void delayms(unit xms){ unit i,j;for(i=xms;i>0;i--)for(j=130;j>0;j--);}

淮南联合大学 方向红

思考:

如果将数码管改为共阳极,则Proteus 仿真图及程序应相应做哪些修改?

淮南联合大学 方向红

4 、动态显示(共阳极数码管)

淮南联合大学 方向红

数码管动态显示的原理 即几个数码管一个一个的显示,数码管之间切

换时间如果较短,利用视觉暂留现象,让人感觉好像几个数码管同时显示。

数码管动态显示时,几个数码管有两种控制信号:一种是字形码控制信号,每个数码管都相同;

一种是控制哪个数码管显示的信号,相当于是每个数码管的公共( com )端:

如果是共阴极,如果要让某个数码管亮,必须加低电平;

如果是共阳极,如果要让某个数码管亮,必须加高电平。

淮南联合大学 方向红23/4/20 10

( 1 )在八位数码管上动态显示(一位一位显示 0——9 )#include<reg51.h>#include<intrins.h>#define unit unsigned int#define uchar unsigned charuchar code table[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};void delayms(unit x);void display(uchar y);void main(){ uchar aa=0x80,j;

淮南联合大学 方向红23/4/20 11

while(1){P3=aa;for(j=0;j<10;j++)display(j);aa=_cror_(aa,1);}}void display(uchar y){P0=table[y]; delayms(400);P0=0xff;}void delayms(unit xms){ unit i,j;for(i=xms;i>0;i--)for(j=130;j>0;j--);}

淮南联合大学 方向红

动手做做:

如果在如图中的八个数码管上依次显示12345678 ,即:

如何编程实现?

淮南联合大学 方向红

(2) 利用最后两个数码管显示秒,且到 60 从头开始。#include<reg51.h>#include<intrins.h>#define unit unsigned int#define uchar unsigned charuchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xc6, 0xa1,0x86,0x8e };void delayms(unit x);void display(uchar y);

淮南联合大学 方向红

void main(){uchar z,shi,ge;while(1){for(z=0;z<60;z++){shi=z/10;ge=z%10;P3=0x80;display(ge);P3=0x40;display(shi);}}}void display(uchar y){P0=table[y];delayms(60);P0=0xff;}

淮南联合大学 方向红

void delayms(unit xms){ unit i,j;for(i=xms;i>0;i--)for(j=130;j>0;j--);}

淮南联合大学 方向红

5 、学生发挥部分

编程实现:一个能显示时、分、秒的数码管显示时钟,如 1 1 - 2 3 - 3 2