八个数码管显示当前日期
- 格式:doc
- 大小:161.50 KB
- 文档页数:4
八段数码管的显示实验是一个程序语句长,编程设计的结构相对复杂的实验。但是电类专业目一般在第4个实验就要编制八段数码管程序,因为该实验是其它后续大量实验的基础。该实验是否能掌握,成为整个单片机实验课程能学习取得效果的转折点。
这样一个复杂的实验指望在2个学时的实验课上掌握是不可能的,采用如下的步骤和方法逐步推进会事半功倍!
1.首先将八段数码管的实验箱电路在理论课程中作为例题出现,并且应该成为典型例题!
图9-12是某实验箱的键盘和数码显示的部分电路,试回答下列问题:
(1.)试写出8255的PA\PB\PC\及控制寄存器的地址;
(2.)设置8255的控制寄存器,并初始化8255(88H);
(3.)试写出键盘扫描程序一般应具有的功能;
(4.)试编写在两位数码管上显示数字20编程思路(2段码为A4;0段选码为C0);
(5).试写出用手按下键盘后,在八段数码管上显示对应键值的思路。
2. 实验课程内容必须分解
2.1 首先完成能够在数码管上显示一个字符
2.2 其次要求在数码管上能显示两个字符,动态显示
2.3 最后要求在数码管上轮流显示0~F.
3.教师应该提供2.1实验的参考程序作为引导,否则实践证明2个学时后编程程序的不超过10%
4.附件 2.1程序
cs8255 equ 0ffffh ;8255命令控制口
outseg equ 0fffch ;字形控制口
outbit equ 0fffdh ;字位/键扫控制口
LEDBuf equ 60h ;显示缓冲
Num equ 70h ;显示的数据
DelayT equ 75h ;延迟参数
用数码管(8位)显示的数字时钟程序
用数码管(8位)显示的数字时钟,由于是在开发板上写的程序,所以51单片机的一些I/O口设定并不完全一样,以下程序仅供参考
#include<reg52.h>
sbit dula=P2^6; //段选锁存器
sbit wela=P2^7; //位选锁存器
sbit key1=P3^2; //INT0 选择键
sbit key2=P3^4; //T0 时间增加
sbit key3=P3^6; //S4 时间减少
char a=0,hour=0,minute=0,seconed=0;
char h1,h2,m1,m2,s1,s2;
char num=0;
char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(char z)
{
char x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display_hour(char h) //显示小时
{
h1=h/10;
h2=h%10;
wela=1;
P0=0xfe; //1111 1110
wela=0;
P0=0xff;
dula=1;
P0=table[h1];
dula=0;
delay(5);
wela=1;
P0=0xfd; //1111 1101
wela=0;
P0=0xff;
dula=1;
P0=table[h2];
delay(5);
}
void display_minute(char m) //显示分钟{
8位数码管显示电子时钟c51单片机程序 /*
8位数码管显示时间格式 055000 标示05点50分00秒
S1 用于小时加1操作
S2 用于小时减1操作
S3 用于分钟加1操作
S4 用于分钟减1操作
*/
#includereg52.h
sbit KEY1=P3^0; //定义端口参数
sbit KEY2=P3^1;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
sbit LED=P1^2; //定义指示灯参数
code unsigned char
tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管09
unsigned char StrTab[8]; //定义缓冲区
unsigned char minute=19,hour=23,second; //定义并初始化为12:30:00
void delay(unsigned int cnt)
{
while(cnt);
}
/********************************************************** ********/
/* 显示处理函数 */
/********************************************************** ********/
void Displaypro(void)
{
StrTab[0]=tab[hour/10]; //显示小时
StrTab[1]=tab[hour%10];
StrTab[2]=0x40; //显示
8位数码管
一、概述
8位数码管是一种用于显示数字的电子元件,通常由8个LED组成。每个LED 可以显示0到9之间的数字,以此来组合显示各种数字。在数字显示领域,8位
数码管被广泛应用于各种设备和仪器中,如计时器、温度计、电子秤等。本文将介绍8位数码管的工作原理、应用场景和未来发展方向。
二、工作原理
8位数码管内部由多个LED灯组成,每个LED代表一个数字。通过控制不同LED的点亮状态,可以实现显示不同数字的功能。常见的8位数码管有两种类型:共阴极和共阳极。共阴极的数码管,当给LED提供正电流时,LED点亮;而共阳
极的数码管则是给予负电流时,LED点亮。控制8位数码管显示数字的关键是通
过微控制器或驱动芯片来控制各个LED的点亮状态。
三、应用场景
8位数码管在各个行业有着广泛的应用,下面列举了一些常见的应用场景:
1.电子秤: 用于显示称重结果。
2.计时器: 用于显示时间或倒计时。
3.电子游戏机: 用于显示玩家得分。
4.仪器仪表: 用于显示各种数据。
5.电子产品: 用于显示各种状态信息。
四、未来发展方向
随着科技的不断进步,8位数码管的应用也在不断拓展和升级。未来,我们可
以期待以下方向的发展:
1.高清晰度: 开发更高分辨率的数码管,提高显示效果。
2.更低功耗: 降低数码管的功耗,延长电池寿命。
3.多功能显示: 实现数码管显示多种信息,如图标、文字等。
4.智能控制: 结合传感器技术,实现自动调节显示内容。
五、结语
总的来说,8位数码管作为一种数字显示设备,在各种行业中发挥着重要作用。未来随着技术的不断发展和创新,我们有信心数码管将会有更加广泛的应用和更出
单⽚机----数码管(138译码器)显⽰⽇期单⽚机–数码管(138译码器)显⽰⽇期
软件部分
#include "reg52.h" //此⽂件中定义了单⽚机的⼀些特殊功能寄存器
typedef unsigned int u16; //对数据类型进⾏声明定义
typedef unsigned char u8;
typedef unsigned long u32;
sbit BZ=P1^5;
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
u32 s=0;
u16 Second=60,Miunte=59,Hour=23; //秒分时变量
u16 count;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//显⽰0~F的值
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函数名 : keyscan
* 函数功能 : 设置时钟数;k1分加,k2分减,k3秒加,k4秒减
*******************************************************************************/
硬件实验十 八段数码管显示
一、实验要求
利用实验仪提供的显示电路,动态显示一行数据.
二、实验目的
1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示
三、实验线路及连线
四、实验说明
1.本实验仪提供了6 位8段码LED 显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H ,位码输出地址为 0X002H 。此处X 是由KEY/LED CS 决定,参见地址译码。做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。
位选通信号 (0x002H)
段码输出 (0x004H)
数据总线
连线 连接孔1 连接孔2 1 KEY/LED_CS CS0
七段数码管的字型代码表如下表:
五、程序框图
程序代码
OUTBIT equ 08002h ; 位控制口
OUTSEG equ 08004h ; 段控制口
LEDBuf equ 60h ; 显示缓冲
Num equ 70h ; 显示的数据
DelayT equ 75h ;
ljmp Start
LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
8段led数码管的段码表
8段LED数码管的段码表是用于描述数码管各段亮灭状态的一种编码方式。根据LED数码管的连接方式不同,段码表也会有所不同。以下是两种常见的连接方式(共阳和共阴)下的段码表示例:
1. 共阳连接方式:
0:0C0
1:0F9
2:0A4
3:0B0
4:99(或099)
5:92(或092)
6:82(或082)
7:0F8
8:80(或080)
9:90(或090)
注意:这里的编码是16进制表示,且由于不同的制造商或不同的应用,编码可能会略有不同。
2. 共阴连接方式:
0:3F
1:06
2:5B
3:4F
4:66
5:6D
6:7D
7:07
8:7F
9:6F
注意:这里的编码也是16进制表示,与共阳方式相似,编码可能会因制造商或应用而异。
在使用段码表时,需要注意以下几点:
1. 确认LED数码管的连接方式(共阳或共阴),以便选择正确的段码表。
2. 确认段码表的编码方式(通常是16进制),并正确解码以设置数码管各段的亮灭状态。
3. 根据具体的应用需求,可能需要调整段码表的编码以满足特定的显示要求。
4. 在实际应用中,还需要考虑数码管的驱动电路和控制方式等因素。
让8个数码管全部显⽰数字8个数码管分别显⽰ 1,2,3,4,5,6,7,8,9
//静态显⽰数码管,所有数码管显⽰从零到1
#include<reg52.h>
sbit wei = P2^7;
sbit du = P2^6;
//数组的类型指的是每⼀个元素的类型, code则指定存储在代码区
unsigned int code data1[10] = {
0x3F,//0
0x06,//1
0x5B,//2
0x4F,//3
0x66,//4
0x6D,//5
0x7D,//6
0x07,//7
0x7F,//8
0x6F//9
};
void delay(unsigned int);
void main()
{
//定义记录的变量
unsigned char i=0;
while(1)
{
//打开段选
du = 1;
//构造段选
P0 = data1[i];
//关闭段选
du = 0;
//打开位选
wei = 1;
//构造位选
P0 = 0;
//关闭位选
wei = 0;
i++;
if(i == 10)
{
//再次初始化0
i=0;
}
//保持⼩灯亮⼏秒
delay(1000);
}
}
void delay(unsigned int x)
{
unsigned a, b;
for(a=x;a>0;a--)
{
for(b=120;b>0;b--);
}
}
八位数码管显示原理
八位数码管是一种常用的数字显示器件,它由8个LED(发光
二极管)组成,可以显示0-9的数字。在很多电子设备中,我们经
常会见到它的身影,比如计算器、电子钟、电子秤等。那么,八位
数码管是如何实现数字显示的呢?接下来,我们就来详细了解一下
八位数码管的显示原理。
首先,我们要了解八位数码管的结构。八位数码管由8个LED
组成,每个LED代表一个数字,从左到右依次为a、b、c、d、e、f、g、dp。其中,a-g分别代表数字的7段显示,dp代表小数点。通过
控制这些LED的亮灭,就可以显示出不同的数字。
接下来,我们来介绍八位数码管的工作原理。八位数码管的显
示原理是通过控制每个LED的亮灭来显示数字。通过外部的控制电路,可以控制每个LED的通断,从而显示出不同的数字。比如,要
显示数字0,就需要同时点亮a、b、c、d、e、f这6个LED,而要
显示数字1,就只需要点亮b、c这两个LED,其余的LED则熄灭。
通过这种方式,就可以实现数字的显示。
在实际应用中,八位数码管通常会与译码器、计数器等电子元
件配合使用。译码器可以将输入的二进制信号转换为对应的LED控
制信号,而计数器可以提供递增的信号,从而实现数字的循环显示。通过这些电子元件的配合,八位数码管可以实现更加丰富的数字显
示功能。
除了显示数字外,八位数码管还可以显示一些字母和符号。通
过合理的控制LED的亮灭,可以显示出A-F这几个字母,以及一些
特殊符号,比如减号、加号等。这样,八位数码管就可以满足更多
的显示需求。
总的来说,八位数码管是一种常用的数字显示器件,它通过控
8段数码管是一种常见的电子元件,广泛应用于数字显示领域。在Proteus中,它的名称是什么呢?让我们深入探讨这个问题。
1. 8段数码管的基本概念
在电子领域,数码管是一种用来显示数字的元件。8段数码管由8个LED灯组成,每个LED可以显示数字0-9中的一个。通过不同的组合,可以显示所有数字以及一些字母。
2. 8段数码管在Proteus中的定义
在Proteus中,8段数码管的名称是“7段数码管”,这可能会让人感到困惑。实际上,这是由于技术标准的不同导致的。在实际电路设
计中,8段数码管与7段数码管的功能是一致的,只是命名上略有不同。
3. 如何在Proteus中使用8段数码管
在Proteus中,可以通过添加元件,选择7段数码管并进行连接,
来使用8段数码管。在电路中给数码管添加电压信号,就可以实现数
字的显示。
4. 8段数码管的应用领域
8段数码管广泛应用于数字显示领域,比如计时器、计数器、温度显示器等。其显示效果清晰、直观,易于被用户理解,因而备受青睐。
5. 个人观点与理解
对于我个人来说,8段数码管在Proteus中的名称虽然略有不同,
但其使用方法和功能并无区别。在实际的电路设计和仿真过程中,能
够准确理解元件的定义和功能非常重要,这也是我特别关注这个问题
的原因。
6. 总结与回顾
通过本文的介绍,我们了解了8段数码管在Proteus中的名称和使
用方法。虽然名称略有不同,但在实际应用中并无影响。选择合适的
元件并正确连接,就能够实现数字的显示。对于电子爱好者和工程师
来说,熟悉各种元件的定义和使用方法,能够更好地进行电路设计和
8段数码管与字符对照表
数字8段数码管表示
0 11111100
1 01100000
2 11011010
3 11110010
4 01100110
5 10110110
6 10111110
7 11100000
8 11111110
9 11110110
A 11101110
B 00111110
C 10011100
D 01111010
E 10011110
F 10001110
注解:8段数码管是一种用于显示数字或字符的电子元件,其每个段(a-g)可以发光或不发光,通过不同的组合可以显示不同的字符。
上述表格列出了数字0-9 和字母A-F 对应的8段数码管显示值。
用数码管(8位)显示的数字时钟程序
一、程序概述
本程序使用单片机AT89S52,通过数码管(8位)显示当前时间,支持12小时制和24小时制切换,精度为秒。
二、程序实现
程序首先定义了数码管的连接方式和每个数字的位图数据,然后定义了时间变量和函数,包括:
1.初始化函数:设置数码管端口和时钟计数器的计数方式。
2.读时钟函数:读取时钟计数器及寄存器,返回当前时间的小时、分钟和秒数。
3.显示函数:将当前时间转化为8个数码管显示的位图数据,用数字和符号映射表将数字和符号的位图数据与数码管连接方式对应起来,输出到数码管上。
在主函数中,程序初始化后循环执行读时钟函数和显示函数,实现时钟的实时显示。
三、程序特点
1.采用8位数码管显示,时间更加直观。
2.支持12小时制和24小时制切换,适用于不同场景。
3.实现精度为秒的实时显示,更加准确。
四、程序优化
1.增加闹钟功能,提醒用户打卡或者起床。
2.加入温度传感器模块,实现显示温度的功能。
3.优化显示效果,增加字体和颜色等选项。
五、程序应用
本程序可应用于家庭、办公室、学校等场合,用于显示时间,提醒用户合理安排时间和时间管理,也可作为DIY电子制作的教学和实验材料,提高学生的动手实践能力和电子信息技术水平。
实验一 八段数码管显示实验
一、实验目的:
1、了解数码管动态显示的原理。
2、了解74LS164扩展端口的方法。
二、实验要求:
利用实验仪提供的显示电路,动态显示一行数据。
三、实验电路:
这里只是显示草图,详细原理参见第一章的1.1.15 “8155键显模块”。
四、实验说明:
1、本实验仪提供了8段码数码管LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,采用动态方式显示。8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。6位位码由8155的PA0口输出,经uA2003反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H ,时钟位输出地址为0e102H ,位选通输出地址为 0e101H 。本实验涉及到了8155 I0/RAM 扩展芯片的工作原理以及74LS164器件的工作原理。
2
六、实验步骤:
1、将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。
2、进入KEIL软件界面,点击项目/打开项目
在C:\KEIL\UV2\次1配套实验例程中选择实验一,内有ASM和C51两种程序,进入ASM 文件夹打开LED项目文件
长沙学院
《单片机原理及应用》
课程设计说明书
题目 LED数码管显示电子秒表设计系(部) **系
专业(班级) *************
姓名邹部长9931
学号******
指导教师***
起止日期 2016.12.19—2016.12.24
《单片机原理及应用》课程设计任务书1系(部):**系专业:******
长沙学院课程设计鉴定表
目录
摘要 (5)
第一章概述 (6)
1.1电子秒表的设计要求 (6)
1.2电子秒表的电路图 (6)
1.3电子秒表的设计原理及方案 (7)
第二章电子秒表的程序设计 (8)
2.1 程序设计流程图 (8)
2.2程序设计源代码 (10)
第三章程序的调试 (16)
第四章设计总结 (17)
参考文献 (18)
摘要
随着经济与社会的发展对智能化和信息化技术要求的不断提高,单片机作为智能控制的核心,逐渐渗透到社会生产和生活的各个方面。而本文则主要阐述基于单片机设计的数码管秒表,这次设计所采用的的单片机为stc89c52单片机,数码管则是使用2个4位共阴LED数码管组成的8位。为减少I/O口,而使用了SM74HC138 和74HCT573这2片芯片实现数码管显示8位数据。利用单片机内部定时器实现计时功能,分别显示为:分—秒—0.01秒。控制则是使用一键控制,可实现计时开始,计时暂停,计时清零3个功能的循环。本次的程序设计采用C语言编写,包括显示程序,定时中断服务程序,延时程序。最后在单片机电路板来观察工作状态。
第一章概述
1.1电子秒表的设计要求
○1显示要求在初始状态显示的是00—00—00,最左边的2位显示分钟,中间2位显示秒,左边2位显示十分之一秒和百分之一秒,还有个2个LED数码管只显示中间那一段,用作间隔符。
/**********************文件名称:LED.asm作者:熊宇QQ:1538172955说明:利用并口实现数码管显示生日的年月日的功能的测试用例修改记录:***********************//**********************基于STC15F2K60S2系列单片机C语言编程实现使用如下头文件,不用另外再包含"REG51.H"***********************/$include(STC15F2K60S2.H)ORG 0START: MOV R1,#00HMOV B,R1MOV P0M1, #00000000B ;00——准双向口 01——推挽 10——高阻输入 11——OCMOV P0M0, #11111111B MOV P2M1, #00000000BMOV P2M0, #00001000B;MOV P2, #00000000BNEXT: MOV DPTR,#TAB;函数L1,查询表中的数据,从第0个到第7个字形码对应的地址L1: MOV P0,#00HMOV A,B MOV P2,BMOVC A,@A+DPTRMOV P0,A INC B ;使B递增ANL B,#7 ;递增到7时结束,即数码管从第0~7个为一次循环 LCALL DELAY SJMP L1 LJMP STARTDELAY: MOV R5,#2 ;延时D2: MOV R6,#5D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTAB: DB 06H,6FH,6FH,5BH,06H,5BH,06H,6FHEND