1 / 16

实训二 数码管驱动

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

Download Presentation

实训二 数码管驱动

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实训二 数码管驱动 七段式数码管原理 1 锁存器原理 2 3 数码管的静态显示 数码管的动态显示 4 5 发挥要求

  2. 1、LED七段式数码管 公共电阻限流 各路分别限流 2 2014/11/3

  3. 2、三态双向总线收发器——74LS245原理 引脚说明: DIR:数据传输方向选择:(仿真图中为AB/ ) 为高电平时,A入B出;低电平时,B入A出。 :输出允许 高电平时,输出端为高阻态;低电平,输 出等于输入。 A1-A8:数据输入(或输出)端; B1-B8:数据输出(或输入)端; 3 2014/11/3

  4. 3、数码管的静态显示

  5. 在一个共阴极数码管上静态显示0——15(F) #include<reg51.h> #define unit unsigned int #define uchar unsigned char uchar 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;

  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--);}

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

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

  9. 数码管动态显示的原理 即几个数码管一个一个的显示,数码管之间切换时间如果较短,利用视觉暂留现象,让人感觉好像几个数码管同时显示。 数码管动态显示时,几个数码管有两种控制信号:一种是字形码控制信号,每个数码管都相同; 一种是控制哪个数码管显示的信号,相当于是每个数码管的公共(com)端: 如果是共阴极,如果要让某个数码管亮,必须加低电平; 如果是共阳极,如果要让某个数码管亮,必须加高电平。

  10. (1)在八位数码管上动态显示(一位一位显示0——9)(1)在八位数码管上动态显示(一位一位显示0——9) #include<reg51.h> #include<intrins.h> #define unit unsigned int #define uchar unsigned char uchar 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;

  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--);}

  12. 动手做做: 如果在如图中的八个数码管上依次显示12345678,即: 如何编程实现?

  13. (2)利用最后两个数码管显示秒,且到60从头开始。(2)利用最后两个数码管显示秒,且到60从头开始。 #include<reg51.h> #include<intrins.h> #define unit unsigned int #define uchar unsigned char uchar 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);

  14. 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;}

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

  16. 5、学生发挥部分 编程实现:一个能显示时、分、秒的数码管显示时钟,如1 1 - 2 3 - 3 2

More Related