单片机实例之数码管

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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++) { a=0; b=0; c=0; P1=table[dispcount]; delay02s(); }
G
F
E
D
C
B
A
对应引脚 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
数字0 数字1 数字2 数字3 数字4 数字5 数字6 数字7 数字8 数字9
1
1
0
0
0
0
0
0
1
1
1
1
1
0
0
1
1
0
1
0
0
1
0
0
1
0
1
1
0
0
0
0
1
0
0
1
1
0
0
1
1
0
0
1
0
0
1
0
1
0
0
0
0
0
1
0
1
1
1
1
图4-6 数码管原理图
三、74LS138译码器:
74LS138 为3 线-8 线译码器,其工作原理如下: 当一个选通端(G1)为高电平,另两个选通
端(/(G2A)和/(G2B))为低电平时,可将地址端 (A、B、C)的二进制编码在一个对应的输出端 以低电平译出。
图4-4 74LS138引脚图
真值表:
} }
2、汇编语言程序: org 00h aa:mov r0,#00h mov dptr,#tab clr p0.5 clr p0.6 clr p0.7 sd:mov a,r0 movc a,@a+dptr lcall delay mov p1,a inc r0
cjne r0,#10,sd sjmp aa delay:mov r6,#5 SS:MOV R7, #200 LOOP:MOV R5, #249 DJNZ R5, $ DJNZ R7,LOOP DJNZ R6,SS ret tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end
表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;
unsigned char dispcount;
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(); }
} }
任务二 LED数码管的动态显示
本任务就是当单片机与数码管接成动态 显示方式,编程实现数码管的0-7数字显示。
一、电路原理
动态显示的电路有很多,本课题中所选用的 电路如图4-6所示。图中用的是两只四位数码管。 每只已将所有数码管的a~h分别连接在一起,再 将两只四位数码管的a~h连接在一起,即将八只 数码管八段显示的段码控制线连接在一起,作为 整个数码管的段码控制。单片机端口驱动能力不 足,在段码上使用74LS373提高数码管亮度。对 每只数码管的公共端进行控制,使每只数码管可 以单独显示。电路中,将每个数码管的COM端接 位选信号dig,该引脚为低电平即接通显示,实现 数码管的位控制。
1
1
1
1
1
1
0
0
0
0
0
1
1
0
0
1
0
1
1
0
1
1
0
1
0
0
1
1
1
1
0
1
1
0
0
1
1
0
0
1
1
0
1
1
0
1
0
1
1
1
1
1
0
1
0
0
0
0
0
1
1
1
0
1
1
1
1
1
1
1
0
1
1
0
1
1
1
1
对应段码
3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH
数码管段码
表4-2 共阳数码管显示数字的段码表
段名称
dp
程序中将数组元素依次读出
送到端口,使数码管显示出
对应的数字。程序的设计框
图见图4-5。
图4-5
1、C语言程序: #include <reg51.h> #define uchar unsigned char unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};
二、LED数码管的结构和工作原理。
图4-3 数码管结构图
数码管段码
表4-1 共阴数码管显示数字的段码表
段名称
dp
G
F
E
D
C
B
A
对应引脚 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
数字0 数字1 数字2 数字3 数字4 数字5 数字6 数字7 数字8 数字9
0
0
课题目标
本课题的任务是用单片机实现简易数字 显示,演示效果如图4-1所示。通过编程, 学会在单片机上实现一位数字和多位数字 的静态和动态显示控制方法,以及不同进 制计数的程序编写方法。
任务一 LED数码管的静态显示
本任务就是将单片机与数码管接成图 4-2所示静态显示方式,编程实现数码管 每隔0.2s的0-9数字显示。
图4-2 数码管显示电路图
一、任务分析
所谓静态显示,就是当单片机某一端口输出 一组显示数据之后,该端口一直保持该数据输出, 维持数码管的显示数字,直到端口数据改变,又 保持显示下一数据的显示方式。
在具体电路连接上,将单片机一个端口的八 个端子接在一只数码管的八个引脚上(h端为小数 点),控制数码管的七段LED的亮或熄,显示器 出数字,这种显示控制方式就是静态显示。静态 显示电路连接特点是单片机端口的每一位与数码 管的一个端相连接,相当于单片机的一个引脚外 接一只发光二极管。
1
0
ห้องสมุดไป่ตู้
0
0
1
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
对应段码
C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H
四、程序设计
要实现0~9的显示,设
计方法与前面彩灯花样显示
类似,首先写出0~9的显示
数据(表4-1中的字型码数
据,注意电路中选用的是共
阴或共阳数码管一致),这
些数据在程序中作数组元素。
相关文档
最新文档