实验4数码管循环显示实验

合集下载

数码管的显示的实验报告

数码管的显示的实验报告

数码管的显示的实验报告数码管的显示的实验报告引言:数码管是一种常见的数字显示装置,广泛应用于各种电子设备中。

本实验旨在通过实际操作,了解数码管的原理和工作方式,并通过一系列实验验证其显示效果和功能。

实验一:数码管的基本原理数码管是由多个发光二极管(LED)组成的,每个发光二极管代表一个数字或符号。

通过对不同的发光二极管进行点亮或熄灭,可以显示出不同的数字或符号。

本实验使用的是共阳数码管,即共阳极连接在一起,而阴极分别连接到控制芯片的输出引脚。

实验二:数码管的驱动电路为了控制数码管的显示,需要使用驱动电路。

常见的驱动电路有共阴极驱动和共阳极驱动两种。

本实验使用的是共阳极驱动电路。

驱动电路由控制芯片、电阻和电容组成。

控制芯片通过控制输出引脚的高低电平来控制数码管的点亮和熄灭。

实验三:数码管的显示效果通过控制芯片的输出引脚,可以实现数码管的显示效果。

本实验使用的是四位数码管,可以显示0-9的数字。

通过改变控制芯片输出引脚的电平,可以控制数码管显示不同的数字。

实验中通过编写程序,使数码管显示从0到9的数字循环显示,并通过按键控制数字的增加和减少。

实验四:数码管的多位显示除了显示单个数字外,数码管还可以实现多位显示。

通过控制不同位数的数码管,可以显示更多的数字或符号。

本实验使用的是四位数码管,可以同时显示四个数字。

通过编写程序,可以实现四位数码管的多位显示,例如显示当前时间、温度等信息。

实验五:数码管的亮度调节数码管的亮度可以通过改变驱动电路中的电阻值来实现。

本实验通过改变电阻值,调节数码管的亮度。

实验中通过编写程序,通过按键控制数码管的亮度增加和减少,从而实现亮度的调节。

结论:通过本次实验,我们深入了解了数码管的原理和工作方式。

数码管可以通过驱动电路的控制,实现数字和符号的显示。

同时,数码管还可以实现多位显示和亮度调节。

数码管作为一种常见的数字显示装置,具有广泛的应用前景,可以应用于各种电子设备中。

通过进一步的研究和实践,我们可以更好地利用数码管的功能,满足不同应用场景的需求。

4位数码管循环

4位数码管循环

4位数码管循环4位数码管可以显示0-9的数字,因此可以通过循环实现数字的循环显示。

一种简单的方式是使用四个数码管分别显示个位、十位、百位和千位的数字。

通过循环不断更新这四个数码管的显示内容,就可以实现数字的循环显示。

以下是一个示例代码:```c#include <avr/io.h>#include <avr/delay.h>void displayDigit(uint8_t digit){// 根据数字设置对应的数码管段亮起switch (digit) {case 0:PORTA = 0b00111111;break;case 1:PORTA = 0b00000110;break;case 2:PORTA = 0b01011011;break;case 3:PORTA = 0b01001111;break;case 4:PORTA = 0b01100110;break;case 5:PORTA = 0b01101101;break;case 6:PORTA = 0b01111101;break;case 7:PORTA = 0b00000111;break;case 8:PORTA = 0b01111111;break;case 9:PORTA = 0b01101111;break;default:// 如果传入的数字不在0-9之间,将所有数码管熄灭 PORTA = 0b00000000;break;}}int main(void){// 设置端口A为输出端口DDRA = 0xFF;while (1) {for (int i = 0; i < 10000; i++) {int thousands = i / 1000;int hundreds = (i % 1000) / 100;int tens = (i % 100) / 10;int ones = i % 10;// 分别显示千位、百位、十位和个位的数字displayDigit(thousands);_delay_ms(10);displayDigit(hundreds);_delay_ms(10);displayDigit(tens);_delay_ms(10);displayDigit(ones);_delay_ms(10);}}return 0;}```此代码使用的是ATmega系列的单片机,使用了端口A的8个引脚来控制四个数码管的段的亮灭。

sy4

sy4

实验四、数码管动态扫描显示实验一、实验目的1.学习和理解数码管动态扫描的工作原理2.学习和掌握数码管动态扫描的电路接口设计及程序编写二、实验设备1.仿真器2.单片机最小系统教学实验模块3.动态数码管显示模块三、实验要求使8位数码管显示“0 1 2 3 4 5 6 7”字样。

四、实验原理4.1 8段数码管显示原理数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。

对于“共阳极”的数码管,内部每个发光二极管的阳极被接在一起,成为该各段的公共选通线;发光二极管的阴极则成为段选线。

对于“共阴极”数码管,则正好相反,内部发光二极管的阴极接在一起,阳极成为段选线。

这两种数码管的驱动方式是不同的。

当需要点亮“共阳极”数码管的一段时,公共段需接高电平(即写逻辑1)、该段的段选线接低电平(即写逻辑0),从而该段被点亮。

当需要点亮“共阴极”数码管的一段时,公共段需接低电平(即写逻辑0)、该段的段选线接高电平(即写逻辑1),该段被点亮。

数码管的段位顺序如右图所示:一般来说在一个字节中按照abcdefg dp的顺序放置字型码,比如在一个“共阴极”数码管上要显示“1”,则b、c段需被点亮,因此在段选线中写入60H。

例如使用P0口接段选线,则使用下面的语句即可点亮数码管: MOV P0,#06H对应规则:a----->D7b----->D6c----->D5d----->D4e----->D3f----->D2g----->D1dp---->D04.2 多位数码管的显示在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。

而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。

在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。

嵌入式实验报告数码管显示实验

嵌入式实验报告数码管显示实验

实验报告课程名称嵌入式系统编程实践实验仪器清华同方辰源嵌入式系统实验箱实验名称实验四:数码管显示实验系别__计算机学院_专业 _班级/学号学生姓名实验日期 2013年10月11日成绩___________________指导教师实验四:数码管显示实验一、实验问题回答(1)如何设置功能3,4中的循环速度?答:利用系统SysTick Handler中断,控制循环速度void SysTick_Handler (void){Event = 1;}(2)若是想实现类似实验(三)通过键盘动态控制循环速度,考虑一下应该如何设计?答:SysTickPeriodSet(SysCtlClockGet() / X)//设置x的大小就可以控制循环的速度。

void Reset_Counter_Speed(int x){SysTickIntDisable();SysTickDisable();SysTickPeriodSet(SysCtlClockGet() / x);// 设置x,控制计数频率,值与频率成正比SysTickEnable();SysTickIntEnable();},达到预期的效果。

二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)学习、了解和掌握数码管工作原理和使用方法实验结果及检查(1)默认在在OLED屏幕上分行显示自己的学号、姓名、项目序号、时间,如“2010011001”、“zhangsan”、“work4”、“2012-11-”(2)首先在屏幕上显示四个功能选单,通过键盘A-F键选择不同功能,选择后屏幕显示相关功能提示,接受键盘输入的数字键0-9并在数码管上显示。

如:开始显示:“please choose the function:”“A: …”“B: …”“C: …”“D: …”按下“A”键后,显示”now you choose function A”(3)按下键盘后,根据不同功能在数码管上显示按键字符。

4位七段数码管循环显示

4位七段数码管循环显示
3、撰写设计报告
4、答辩考核




1、采用MCS-51单片机作为微处理器。
2、数码管模块闪烁“0028”3次,再闪烁“3105”3次,如次循环不停。。
3、在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰。




第一周:设计程序
第二周:做实物图
第三周:做实验报告
主要
参考
文献
[1]张靖武,周灵彬.《单片机系统的PROTEUS设计与仿真》.北京:电子工业出版社.2011,2
本文设计行、列驱动电路,运用单片机的智能化,系统的将每个功能电路模块连接在一起,总体结构设计如下图1-1所示:
图1-1
1.4
1.布置课题、复印资料、提出要求
2.列元件C清单、备齐元件
3.学习PROTEUS软件,PROTEUS中硬件设计
4.程序设计调试、PROTEUS软硬件调试
5.硬件电路焊接
6.单片机芯片烧录、硬件调试
[2]张义和,王敏男.《例说51单片机》.人民邮电出版社.2011,1
[3]何立民.单片机高级教程.第1版.北京:北京航空航天大学出版社,2001
[4] AT89C51 DATA SHEEP Philips Semiconductors 1999.dec
地点
院12-14
图2-1晶振电路图
2.2复位电路
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。如图2-2为复位电路图。

实验四 LED数码管显示实验报告

实验四 LED数码管显示实验报告

实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。

利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。

二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。

定时采用软件查询工作方式,利用JNB TF0, HERE实现。

置P0.6和P0.7端口为0,位选信号选定末位数码管。

通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

为减短代码长度,利用CJNE指令实现循环结构。

当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。

2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。

三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。

数码管显示实验 实验报告

数码管显示实验 实验报告

数码管显示实验实验报告一、实验目的本次数码管显示实验的主要目的是深入了解数码管的工作原理和显示控制方式,通过实际操作掌握数码管与微控制器的接口技术,并能够编写相应的程序实现各种数字和字符的显示。

二、实验原理数码管是一种由多个发光二极管组成的显示器件,常见的有共阴数码管和共阳数码管两种类型。

共阴数码管是将所有发光二极管的阴极连接在一起,当阳极接高电平时,相应的二极管发光;共阳数码管则是将所有发光二极管的阳极连接在一起,当阴极接低电平时,相应的二极管发光。

在控制数码管显示时,通常采用动态扫描的方式,即依次快速地给每个数码管的段选端送入相应的字形码,同时使位选端选通对应的数码管,利用人眼的视觉暂留效应,使人看起来好像所有数码管同时在显示。

三、实验设备与材料1、实验开发板2、数码管模块3、杜邦线若干4、电脑5、编程软件四、实验步骤1、硬件连接将数码管模块与实验开发板进行连接,确定好段选和位选引脚的连接。

检查连接是否牢固,确保电路无短路或断路现象。

2、软件编程打开编程软件,选择相应的开发板型号和编程语言。

定义数码管的段选和位选引脚。

编写控制程序,实现数字 0 到 9 的循环显示。

3、编译与下载对编写好的程序进行编译,检查是否有语法错误。

将编译成功的程序下载到实验开发板上。

4、观察实验现象接通实验开发板的电源,观察数码管的显示情况。

检查显示的数字是否正确,显示的亮度和稳定性是否符合要求。

五、实验结果与分析1、实验结果数码管能够正常显示数字 0 到 9,并且能够按照设定的频率循环显示。

显示的数字清晰、稳定,没有出现闪烁或模糊的现象。

2、结果分析程序编写正确,能够准确地控制数码管的段选和位选信号,实现数字的显示。

动态扫描的频率设置合理,既保证了显示的稳定性,又不会出现明显的闪烁。

六、实验中遇到的问题及解决方法1、问题数码管显示出现闪烁现象。

解决方法调整动态扫描的频率,增加扫描的速度,减少每个数码管的点亮时间,从而减轻闪烁现象。

四位数码管动态显示

四位数码管动态显示

实验名称:实验名称四位数码管动态显示一、实验目的1.通过AT89C52单片机控制四位数码管动态显示数字“3210”。

2.用Protues设计、仿真以AT89C52为核心的四位数码管动态显示实验装置。

3.掌握四位数码管的控制方法。

二、实验任务P1端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,接通电源时,显示“”字样;三、实验设备微机1台、Proteus软件1套、GL10型51单片机学习开发板1台。

四、实验电路绘制五、汇编语言程序设计1.设计原理动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

在进行数码显示的时候,要对显示单元开辟4个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。

对于显示的字形码数据我们采用查表方法来完成。

2.程序框图3.汇编程序ORG 0000H ;初始化START:MOV R0,#0FFH ;控制段选,给R0传递一个初值1111 1111MOV DPTR,#TABLE ;将表头的地址传递给数据指针NEXT:MOV A,R0 ;R0的值传给累加器AMOVC A,@A+DPTR ;查表指令,将TABLE的值按底标给AMOV P2,A ;A的值传给P2接口,显示数字0LCALL DELAY ;调用延时函数,延时INC R0 ;R0加一,MOV A,R0 ;R0的值再次传给A,控制位选移动MOV P1,A ;A的值传给P1口,CJNE R0,#04,NEXT ;判断R0是否等于4,若不等于,转NEXT继续执行,若等于,继续执行下一条程序SJMP START,相当于将值初始化,重新开始。

SJMP START ;跳转到START,R0,R1初始化,重新执行一轮。

DELAY:MOV R6,#4 ;延时程序DL2:MOV R7,#248DL1:DJNZ R7,$DJNZ R6,DL2RETTABLE:DB 3FH,06H,5BH,4FH ;以table为表头地址,依次存入二进制的0.1.2.3END六、Proteus软件模拟仿真七、GL10单片机仿真系统1.实验板连线2.实验操作步骤先把“单片机系统”区域中的P1.0/AD0-P1.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;再把“单片机系统”区域中的P2.0/A8-P2.3/A15用4芯排线连接到“动态数码显示”区域中的0-N端口上。

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

班级学号姓名实验组别
实验日期室温报告日期成绩
报告内容:(目的和要求、原理、步骤、数据、计算、小结等)
实验名称:实验4数码管循环显示实验
一、实验目的
了解数码管动态显示原理,学会LPC2103通用I/O口的使用。

二、实验及说明
本实验中共接入了8个共阳八段数码管(数码管阳极连在一起),演示数码管中的某一段点亮只需在对应的位置写入“0”即可。

在这里74HC595实现了数据串并转换的功能,试验中用到的两片74HC595分别用于控制八个数码管的位选和其中每个数码管的段选。

本实验循环显示了十六进制数码“0—F”。

三、实验说明
四、实验步骤
1.实验连线
段选控制芯片(U7:74HC595)时钟控制端接LPC2103总线接口模块的P0.4,数据输入端接总线接口模块的P0.6,选通端接跳线JP9。

数据输出端分别接数码管段选端。

位选控制芯片(U8:74HC595)时钟控制端接LPC2103总线接口模块的P0.4,数据端接总线接口模块的P0.7,选通端接跳线JP10。

数据输出端分别接数码管位选端。

JP9:左跳数码管段选芯片(U7)片选有效,右跳液晶显示EN有效。

JP10:左跳数码管位选芯片(U8)片选有效,右跳液晶显示CS2有效。

JP14:左跳数码管段选、位选电源端(+3.3V)有效。

JP15:左跳数码管段选、位选芯片接地端(GND)有效。

2.仿真器的设置:一般选用JTAG调试,若使用RelInFlash生成目标时,编译连接生成的目标代码会将芯片加密。

此时调试无法继续,须将硬件调成ISP模式进行全片擦除。

3.运行程序:show.hex
4.接通电源,观察实验板上数码管的变化。

四、原理图
五、实验程序
#include "config.h"
#define LS_SH (1<<4) //clk
#define LS_DS_D (1<<6) //duan data
#define LS_DS_W (1<<7) //wei data
#define ST_CP1 (1<<8) //duan store
#define ST_CP2 (1<<11) //wei store
#define LS_DS (1<<10) //LED data
#define ST_CP3 (1<<12) //LED store
uint8 SEG_TAB[17] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};
//数码显示段码表0 1 2 3 4 5 6 7 8 9 a b c d e f -
uint8 SEG_TABDOT[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//带小数点的段码表0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
uint8 BIT_TAB[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
//数码显示位码表第1位 (8)
#define uint unsigned int
#define uchar unsigned char
void delay(uint32 i)
{
uint32 j;
for(;i>0;i--)
for(j=50000;j>0;j--);
}
void SENT_NUM(uint8 date,uint8 wei)
{
uint i;
IO0CLR=ST_CP1; //sent data
for(i=8;i>0;i--)
{
IO0CLR=LS_SH;
if((date&0x80)!=0)
{ IO0SET=LS_DS_D; }
else
{ IO0CLR=LS_DS_D; }
date=date<<1;
IO0SET=LS_SH;
}
IO0SET=ST_CP1; //sent data end
IO0CLR=ST_CP2; //sent wei
for(i=8;i>0;i--)
{
IO0CLR=LS_SH;
if((wei&0x80)!=0)
{ IO0SET=LS_DS_W; }
else
{ IO0CLR=LS_DS_W; }
wei=wei<<1;
IO0SET=LS_SH;
}
IO0SET=ST_CP2; //sent wei end }
void SENT_LED(uint8 date)
{
uint i;
for(i=8;i>0;i--)
{
IO0CLR=LS_SH;
if((date&0x80)!=0)
{ IO0SET=LS_DS; }
else
{ IO0CLR=LS_DS; }
date=date<<1;
IO0SET=LS_SH;
}
IO0SET=ST_CP3;
}
int main (void)
{// add user source code
uint z;
PINSEL0=0x00000000; //P0.4 0.10 0.12 GPIO
SCS=0x00; //low power
IO0DIR=0xffffffff; //P0.4 0.10 0.12 OUTPUT
while(1)
{
for(z=0;z<16;z++)
{
if(z<8)
{
SENT_NUM(SEG_TAB[z],BIT_TAB[z]);
SENT_LED(flowlamp_TAB[7-z]);
}
else
{
SENT_NUM(SEG_TAB[z],BIT_TAB[15-z]);
SENT_LED(flowlamp_TAB[15-z]);
}
delay(30);
}
}
return 0;
}
六、流程图
Y
显示子程序流程图
驱动子程序流程图。

相关文档
最新文档