实训二 数码管驱动
Post on 02-Jan-2016
125 Views
Preview:
DESCRIPTION
TRANSCRIPT
淮南联合大学 方向红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 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--);}
淮南联合大学 方向红
数码管动态显示的原理 即几个数码管一个一个的显示,数码管之间切
换时间如果较短,利用视觉暂留现象,让人感觉好像几个数码管同时显示。
数码管动态显示时,几个数码管有两种控制信号:一种是字形码控制信号,每个数码管都相同;
一种是控制哪个数码管显示的信号,相当于是每个数码管的公共( 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--);}
淮南联合大学 方向红
(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;}
top related