单片机实例之数码管

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

真值表:
表4-2 74LS138功能表
图4-6 数码管原理图
1、C语言程序: #include <reg51.h> #define uchar unsigned char sbit a=P0^5; sbit b=P0^6; sbit c=P0^7; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; uchar dispcount; void delay02s(void) { unsigned char i,j,k; for(i=10;i>0;i--) for(j=200;j>0;j--) for(k=248;k>0;k--); }
二、LED数码管的结构和工作原理。
图4-3 数码管结构图
数码管段码
表4-1 共阴数码管显示数字的段码表
段名称 dp G F E D C B A 对应段码
对应引脚
数字0 数字1 数字2 数字3 数字4 数字5 数字6 数字7 数字8
P1.7
0 0 0 0 0 0 0 0 0
P1.6
0 0 1 1 1 1 1 0 1
课题三(实例) 之数码管显示
任务一 单个LED数码管的静态控制显示方式 任务二 多个LED数码管的动态控制显示方式 任务三 0~99999999加法计数器


课题目标 本课题的任务是用单片机实现简易数字 显示,演示效果如图4-1所示。通过编程, 学会在单片机上实现一位数字和多位数字 的静态和动态显示控制方法,以及不同进 制计数的程序编写方法。
0 1 1 1 0 0
0 1 0 1 1 1
0 1 0 0 1 0
0 0 1 0 0 0
0 0 0 0 0 1
0 1 0 0 1 0
C0H F9H A4H B0H 99H 92H 82H F8H
1
1
0
1
0
1
0
1
0
1
0
0
1
0
0
0
数字8
数字9
1
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
80H
90H
四、程序设计
要实现0~9的显示,设 计方法与前面彩灯花样显示 类似,首先写出0~9的显示 数据(表4-1中的字型码数 据,注意电路中选用的是共 阴或共阳数码管一致),这 些数据在程序中作数组元素。 程序中将数组元素依次读出 送到端口,使数码管显示出 对应的数字。程序的设计框 图4-5 图见图4-5。
任务一
LED数码管的静态显示
本任务就是将单片机与数码管接成图 4-2所示静态显示方式,编程实现数码管 每隔0.2s的0-9数字显示。
图4-2
数码管显示电路图
一、任务分析
所谓静态显示,就是当单片机某一端口输出 一组显示数据之后,该端口一直保持该数据输出, 维持数码管的显示数字,直到端口数据改变,又 保持显示下一数据的显示方式。 在具体电路连接上,将单片机一个端口的八 个端子接在一只数码管的八个引脚上(h端为小数 点),控制数码管的七段LED的亮或熄,显示器 出数字,这种显示控制方式就是静态显示。静态 显示电路连接特点是单片机端口的每一位与数码 管的一个端相连接,相当于单片机的一个引脚外 接一只发光二极管。
void delay02s() { unsigned char i,j,k; for(i=10;i>0;i--) for(j=200;j>0;j--) for(k=248;k>0;k--); }
void main(void) { while(1) { for(dispcount=0;dispcount<10;dispcount++) { P1=table[dispcount]; delay02s(); } } }
void main(void) { while(1) { for(dispcount=0;dispcount<10;dispcount++) { a=0; b=0; c=0; P1=table[dispcount]; delay02s(); } } }
图4-6 数码管原理图
三、74LS138译码器:
74LS138 为3 线-8 线译码器,其工作原理如下: 当一个选通端(G1)为高电平,另两个选通 端(/(G2A)和/(G2B))为低电平时,可将地址端 (A、B、C)的二进制编码在一个对应的输出端 以低电平译出。
图4-4 74LS138引脚图

1、C语言程序: #include <reg51.h> #define uchar unsigned char unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispcount;
P1.5
1 0 0 0 1 1 1 0 1
P1.4
1 百度文库 1 0 0 0 1 0 1
P1.3
1 0 1 1 0 1 1 0 1
P1.2
1 1 0 1 1 1 1 1 1
P1.1
1 1 1 1 1 0 0 1 1
P1.0
1 0 1 1 0 1 1 1 1 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH
数字9
0
1
1
0
1
1
1
1
6FH
数码管段码
表4-2 共阳数码管显示数字的段码表
段名称 dp G F E D C B A 对应段码
对应引脚
数字0 数字1 数字2 数字3 数字4 数字5 数字6 数字7
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
1 1 1 1 1 1
1 1 0 0 0 0
任务二 LED数码管的动态显示
本任务就是当单片机与数码管接成动态 显示方式,编程实现数码管的0-7数字显示。
一、电路原理
动态显示的电路有很多,本课题中所选用的 电路如图4-6所示。图中用的是两只四位数码管。 每只已将所有数码管的a~h分别连接在一起,再 将两只四位数码管的a~h连接在一起,即将八只 数码管八段显示的段码控制线连接在一起,作为 整个数码管的段码控制。单片机端口驱动能力不 足,在段码上使用74LS373提高数码管亮度。对 每只数码管的公共端进行控制,使每只数码管可 以单独显示。电路中,将每个数码管的COM端接 位选信号dig,该引脚为低电平即接通显示,实现 数码管的位控制。
相关文档
最新文档