七段数码管驱动实验报告
数码管动态显示实验报告
数码管动态显示实验报告1.实验目的:本实验旨在通过使用单片机控制数码管的动态显示,了解数码管的原理和使用方法,加深对单片机控制的理解。
2.实验原理:数码管是由许多发光二极管(LED)组成的,每个数码管有7个发光二极管组成7段,再加上一个小数点(或8段数码管),通过控制每个发光二极管的亮灭状态,可以显示出数字、字母等字符。
本实验使用的是共阴极数码管,在通常情况下,数码管引脚为低电平时亮灯,为高电平时灭灯。
3.实验器材:-STC89C52单片机-共阴极数码管-电阻-面包板及连接线-电源4.实验步骤:步骤1:连接电路将数码管的7个引脚分别连接到单片机的7个I/O引脚上,并通过电阻限流。
连接电路后,确认连接无误。
步骤2:编写程序使用C语言编写程序,实现数码管的动态显示。
可以使用延时函数和位操作函数控制数码管的亮灭,通过改变每个数码管引脚的高低电平状态,实现显示不同的数字、字母。
步骤4:实验观察与分析观察数码管的显示效果,通过改变程序中的参数,可以实现不同的显示效果。
5.实验结果与分析:经过实验,我们成功实现了数码管的动态显示。
通过编写程序,我们可以实现数码管显示数字、字母等不同的字符。
调整程序中的参数,可以实现不同的动态显示效果,如流水灯、闪烁等。
数码管的动态显示是通过改变每个数码管引脚的高低电平实现的,通过快速改变引脚电平状态的时间间隔,创建了肉眼无法察觉的视觉效果,从而实现了动态显示。
此外,通过实验我们还了解到了单片机控制数码管的原理和方法,加深了对单片机控制的理解。
6.实验总结:通过本实验,我们了解到了数码管的动态显示原理和方法,并通过编写程序,成功实现了数码管的动态显示。
同时,我们还巩固了单片机控制的知识,提高了自己的动手能力和问题解决能力。
在今后的学习和工作中,我们将进一步掌握数码管的使用方法,并能够将其应用于更加复杂的应用场景中,实现更多有趣的功能。
数码管实验报告实训步骤
一、实验目的1. 理解数码管的显示原理,掌握数码管的分类和应用。
2. 学习使用51单片机控制数码管显示数字的方法。
3. 熟悉数码管驱动电路的设计与搭建。
4. 培养动手实践能力和问题解决能力。
二、实验原理数码管是一种常用的显示器件,由多个发光二极管(LED)组成,能够显示数字、字母或符号。
根据LED的连接方式,数码管分为共阴极和共阳极两种类型。
本实验采用共阴极数码管。
共阴极数码管的特点是当LED的阴极接地时,LED会发光,从而显示出相应的数字或符号。
数码管由七个或八个LED组成,分别对应数字0-9或字母A-F。
三、实验器材1. 51单片机开发板2. 共阴极数码管3. 连接线4. 电源5. 示波器(可选)四、实验步骤1. 硬件连接(1)将数码管的阴极(GND)连接到单片机的GND引脚。
(2)将数码管的阳极(A-G或A-F)分别连接到单片机的P0、P1、P2等引脚。
(3)将数码管的位选引脚(DP或COM)连接到单片机的另一个引脚,用于控制数码管的显示。
2. 软件设计(1)编写初始化程序,设置单片机的P0、P1、P2等引脚为输出模式。
(2)编写数码管显示函数,根据需要显示的数字或字母,将对应的段码输出到数码管的阳极引脚。
(3)编写主程序,实现数码管动态显示数字0-9或字母A-F。
3. 动态显示(1)初始化数码管显示,清屏显示数字0。
(2)循环读取按键输入,根据按键值更新数码管显示的数字。
(3)使用定时器中断或延时函数实现数码管动态刷新。
4. 实验测试(1)连接电源,打开单片机开发板。
(2)使用示波器观察数码管的段码引脚,确认数码管显示正常。
(3)通过按键输入,测试数码管的动态显示功能。
五、实验结果与分析1. 硬件连接正确,数码管显示正常。
2. 数码管动态显示数字0-9,按键输入能够实时更新显示的数字。
3. 数码管刷新频率适中,显示效果稳定。
六、实验总结通过本次实验,我们学习了数码管的显示原理和驱动方法,掌握了使用51单片机控制数码管显示数字的技术。
FPGA实验三七段数码管静态与动态显示实验报告
FPGA实验三七段数码管静态与动态显示实验报告实验目的:通过FPGA实现七段数码管的静态与动态显示,在FPGA上可实现对任意数字的显示和计数功能。
实验原理:七段数码管是一种能够显示数字的晶体管数字显示器件,它由七个LED数码管组成,每个数码管分别由a、b、c、d、e、f、g七个LED组成。
通过控制每个LED的亮灭情况,可以对任意数字进行显示。
七段数码管的静态显示是指每个数字的显示都是固定的,而动态显示则是通过快速地刷新七段数码管的显示,使得数字像是在变化。
在FPGA 中,可以通过时钟信号和计数器实现刷新,从而实现数字的动态显示。
实验过程:首先,将FPGA和七段数码管连接,在FPGA上选择适当的引脚连接到a、b、c、d、e、f、g七个数码管。
在FPGA中创建工程,并添加适当的引脚约束,以实现与七段数码管的连接。
然后,根据需要选择静态或动态显示。
静态显示:静态显示的原理是通过直接控制每个LED的亮灭情况,使得每个数字都可以被显示出来。
首先,需要定义每个数字对应的LED的状态(亮灭),例如数字0对应的LED状态可能为(1,1,1,1,1,1,0)等。
然后,通过FPGA的逻辑电路实现对应数字的显示。
动态显示:动态显示的原理是通过快速地刷新显示,使得数字在若干个数码管中切换,从而造成数字变化的视觉效果。
这里需要使用时钟信号和计数器来控制刷新。
首先,需要设计一个计数器,它的计数范围应该与显示数字的个数相同。
然后,通过时钟信号让计数器开始计数,并根据计数器的值选择对应的数字显示在七段数码管上。
通过控制计数器的计数速度和刷新频率,可以实现数字的动态显示。
实验结果:经过实验,我们成功地实现了七段数码管的静态显示和动态显示。
在静态显示中,我们可以通过FPGA的逻辑电路对七段数码管的每个LED进行控制,从而实现任意数字的显示。
在动态显示中,我们通过时钟信号和计数器实现了刷新功能,使得数字在七段数码管中快速地切换,从而呈现出动态的显示效果。
实验报告 实验七 八段数码管显示实验
实验报告实验七八段数码管显示实验----b46086b6-6eaf-11ec-8071-7cb59b590d7d实验报告--实验七-八段数码管显示实验EDA实验报告七段或八段数码管显示实验1、实验目的1)了解数码管动态显示的原理。
2)了解如何通过总线控制数码管显示器2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.提示:显示显示缓冲区的内容(例如,可以使用60H~65h作为缓冲区)。
修改显示缓冲区的内容时,可以显示修改后的内容(为键盘扫描和显示实验做准备)。
3、实验说明实验仪器提供了一个6位8段编码的LED显示电路。
学生可以控制显示,只要他们根据地址输出相应的数据。
显示器共有6位,以动态方式显示。
8位段码和6位码由两个74ls374芯片输出。
位代码由mc1413或uln2022反相驱动后,选择相应的显示位。
本实验仪中8位段码输出地址为0x004h,位码输出地址为0x002h。
此处x是由key/ledcs决定,参见地址译码。
在进行键盘和led实验时,需要将按键/LEDC连接到相应的地址解码。
以便使用相应的地址进行访问。
例如,如果钥匙/ledcs连接到CS0,则段代码地址为08004h,位代码地址为08002h。
七段数码管的字型代码表如下表:a-----f | | b | |------| g | e | c-----d。
h显示字体gfedcba段代码001111113FH100011006H210110115BH3100111114FH41100111066H51016DH61111017DH70000 1107H81111117FH911011116fha111011177hb11111007chc011100139hd10111105ehe111100179hf111000171h4.原理图和接线5、实验内容1)使用仪器和仪表开发平台模型本实验用到了wave6000软件平台,电脑一台,lab6000实验箱,示波器,若干连线,串行数据线。
led数码管显示控制实验报告
led数码管显示控制实验报告篇一:单片机实验报告——LED数码管显示实验《微机实验》报告LED数码管显示实验指导教师:专业班级:姓名:学号:联系方式:一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-9,显示切换频率为1Hz。
提高要求:在4位数码管显示器上依次显示当天时期和时间,显示格式如下:yyyy(月份.日)(小时.分钟)思考题:数码管采用动态驱动方式时刷新频率应如何选择?为什么?二、设计思路C8051F310单片机片上晶振为,采用8分频后为,输入时钟信号采用48个机器周期。
0到9对应的断码为:FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H 基础部分:由于只需要用末位数码管显示,不需要改变位码,所以只需要采用LED的静态显示。
采用查表的方法,通过循环结构,每次循环查找数据表下一地址,循环十次后重新开始循环。
每次循环延时1s,采用定时器0定时方式1。
提高部分:四个数码管都要显示,所以采用LED的动态显示。
由于数码管的位选由、控制,P0端口的其他引脚都没用到,所以对P0端口初始化赋00H,每次循环加40H、选中下一位,四次后十六进制溢出,P0端口变又为00H回到第一个数码管。
每位数码管显示一个段码后都延时1ms(否则数码管太亮,刺眼)采用定时器0定时方式1,依然采用查表法改变段码值。
通过循环:DJNZ R5,BACKMOVR5,#250 DJNZ R4,BACK MOVR4,#8来控制每种模式的切换时间,我采用2s切换一次(8*250*1ms=2s)。
切换模式,可以采用改变查表法的偏移量来实现,没切换一次模式,偏移量加04H,三次后回到初始偏移量,来实现三种模式的循环显示。
三、资源分配基础部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制段选提高部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制位选R1:控制段选R3:用于改变偏移量来切换模式R4、R5:控制循环次数,控制模式切换时间四、流程图基础部分:提高部分篇二:实验八数码管LED实验报告苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:数码管LED实验一.实验目的理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管LG5641AH与MCU 的接线图。
十六进制7段数码显示译码器设计实验报告
十六进制7段数码显示译码器设计实验报告实验报告:十六进制7段数码显示译码器设计一、实验目的本实验的主要目的是设计一种用于将十六进制数码转化为七段显示的译码器电路。
通过这个实验,我们可以学习和了解数字电路的工作原理、数码管的控制方式以及七段数码的译码方法。
二、实验原理本实验所用到的数码管为共阳数码管,它由7个发光二极管组成,其中的每一个发光二极管称为一个段。
这七个段依次为a、b、c、d、e、f和g,它们分别对应数码管上的abcdefg七个引脚。
当一些引脚输出高电平时,相应的段就会被点亮,从而显示出特定的字符。
为了实现将十六进制数码转化为七段显示的功能,我们需要设计一个译码器电路。
译码器电路的输入为十六进制数码,输出为七段信号,用于控制数码管的每个段的亮灭情况。
为了简化设计,我们可以采用CMOS数字集成电路74LS47来实现译码器电路。
该集成电路内部集成了BCD转七段译码器,可以将二进制代码转化为七段数码显示所需要的信号。
它的输入为四个二进制输入端口A、B、C和D,输出为七个段芯片(a、b、c、d、e、f和g)的控制信号。
三、实验步骤1.首先,根据74LS47的真值表,确定译码器的输入和输出。
2.根据真值表,画出逻辑图,确定硬件电路的连接方式。
3.按照逻辑图和电路连接方式,进行硬件电路的布线。
4.按照实验仪器的操作说明,对电路进行调试和测试。
5.将输入端口连接至外部的十六进制信号源,观察输出端口的数据是否正确。
6.验证电路的正确性和稳定性,如果出现问题,进行排除和修复。
四、实验结果经过实验,我们成功地设计并实现了一个十六进制7段数码显示译码器电路。
当输入端口接收到一个十六进制信号时,通过电路的处理和转换,将其转化为了相应的七段信号,用于控制数码管的每个段的亮灭情况。
通过实验观察,我们发现电路的输出结果与预期一致,且工作稳定。
五、实验总结通过这个实验,我们对于数字电路的工作原理和数码管的控制方式有了更深的了解。
微机原理实验报告-实验三-七段数码管.doc
实验三七段数码管一、实验目的:进一步熟悉8255,掌握数码管显示数字的原理二、实验原理:1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2、七段数码管的字形码:3、在实验 2 中加入键盘是否有输入判断,如有则去读取键盘输入数据,并加入提示信息,比如“输入十位数”,“输入个位数”,从键盘读入的数据放入十位和个位数据定义区,取代要显示的数据。
4、只需要添加两位变量作为缓存,一个记录键盘输入的值,一个记录循环减 1 的结果,将其通过数码管显示出来,减至0 时重载键盘输入的值。
三、实验步骤:静态显示:将8255 的 A 口 PA0~PA6分别与气短数码管的段码驱动输入端A~G相连,位码驱动输入端S1 接 +5V(选中), S0、 DP接地(关闭)。
动态显示:七段数码管段码不变,位码驱动输入端S1,S0 接 8255 C 口的 PC1,PC0。
8253 的接法参考第二次实验的接法,CLK0接入 1MHz, CLK1接 8255 的 PC7。
1、在两个数码管上显示两位数字,要求延时应用8253 硬件延时2、可以改变数码管显示数字,从键盘读入两位数字,并在数码管显示出来。
3、对输入数据进行倒计时计数,时间显示在数码管上,计到0 重新开始。
四、流程图:开始对 8255 进行初设置 8255C 口输从键盘读入数据Y根据十位获得段码,延时N根据个位获得段码,按键延时N循环显示这Y要输出的数重新载入输Y要输出的数据减 1五、实验结果:实验结果如预期一致,可以键盘输入倒计时的值,时间显示在数码管上,计数到0 重新计数。
六、程序代码:;******************************************;*数码管显示对键盘输入数据进行倒计时计数*;******************************************data segmentio8255a equ 288hio8255c equ 28ahio8255_mode equ 28bhio8253a equ 280hio8253b equ 281hio8253c equ 282hmesg1 db 0dh,0ah,'Input a num (00--99) for high position,other key isexit:',0dh,0ah,'$'mesg2 db 0dh,0ah,'Input a num (00--99) for low position,other key isexit:',0dh,0ah,'$'led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh; 段码buffer db , ; 存放要显示的个位和十位buffer1 db , ; 存放临时的个位和十位用于减一bz dw;data endscode segmentassume cs:code,ds:datastart:位码mov ax,datamov ds,axmov dx,io8255_mode ; 将8255 的A 口为输出mov ax,88hout dx,almov dx,offset mesg1mov ah,09hint 21h; 显示提示信息mov ah,01int 21h; 从键盘接收十位字符cmp al,'0' jl exit ; 是否小于0 ; 若是则退出cmp al,'9' jg exit sub al,30h ; 是否大于9 ; 若是则退出mov buffer,almov dx,offset mesg2 mov ah,09hint 21hmov ah,01hint 21h; 将输入的十位数存入指定地址; 显示提示信息cmp al,'0'jl exitcmp al,'9'jg exitsub al,30h; 判断方法同十位mov buffer+1,aljmp reset; 将输入的个位数存入指定地址exit:mov ah,4chint 21hreset:mov al,buffermov buffer1,almov al,buffer+1mov buffer1+1,al; 返回mov di,offset buffer1loop1:call time; 取得显示缓冲区的地址loop2:mov bh,02h ; 数码管循环显示部分lll:mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl 为要显示的数pop dimov al,0mov dx,io8255cout dx,almov bh,0mov si,offset led ; 置led 数码表偏移地址为SI add si,bx ; 求出对应的led 数码mov al,byte ptr [si]mov dx,io8255a ; 自8255A 的口输出out dx,almov al,byte ptr bz; 使相应的数码管亮mov dx,io8255cout dx,almov cx,3000delay:loop delay; 延时mov bh,byte ptr bzshr bh,1jnz lllmov dx,io8255cin al,dxtest al,80hjnz setjmp loop2set:test buffer1+1,0fhjz set1dec buffer1+1jmp loop1set1:test buffer1,0fhjz resetdec buffer1mov buffer1+1,09hjmp loop1time proc near ; 定时一秒的子程序mov dx,io8253c ; 向 8253 写控制字mov al,37h ; 使0 通道为工作方式 3 out dx,almov ax,1000h ; 循环计数初值1000 mov dx,io8253aout dx,al; 先写低字节mov al,ahout dx,al; 后写高字节mov dx,io8253cmov al,71h ; 设8253 通道 1 工作方式0out dx,almov ax,1000h ; 循环计数初值1000mov dx,io8253bout dx,al ; 先写低字节mov al,ahout dx,al; 后写高字节rettime endpcode endsend start七、实验总结:本次实验需要结合上次实验的知识,应用 8253 硬件延时,因此增加了些许难度,代码的修改也不少。
7段数码管实验报告
7段数码管实验报告实验目的:本实验的目的是通过控制 7 段数码管的亮灭状态来显示不同的数字和字母。
实验原理:7 段数码管常用于显示数字和字母,每个数码管由 7 个 LED灯组成,分别表示 A、B、C、D、E、F、G 等 7 个段。
通过控制这些LED 灯的亮灭状态,就可以显示不同的数字和字母。
在实际应用中,通常需要使用一个译码器来根据输入的数字或字母输出相应的控制信号。
常用的译码器有 7447、DM9368 等。
这些译码器通常都是 BCD 码到 7 段数码管的译码器。
在本实验中,我们将使用 7447 译码器来控制 7 段数码管的亮灭状态。
7447 译码器具有 4 个输入线和 7 个输出线,每个输入线上的 BCD 码可以转换成相应的控制信号,用于控制数码管的 7 个 LED 灯。
实验材料:1. 7 段数码管2. 7447 译码器3. 电路板4. 电压源5. 连接线实验步骤:1. 将 7447 译码器插入电路板上相应的插槽中,并将数码管连接到电路板上。
2. 将电压源连接到电路板上,并调节电压和电流值。
3. 根据所需显示的数字或字母,设置相应的BCD 码输入信号。
4. 打开电源,观察数码管是否能够正确显示。
实验结果:通过本实验,我们可以成功控制 7 段数码管的亮灭状态,实现了数字和字母的显示。
同时,我们也了解了 7447 译码器的原理和使用方法。
实验小结:本实验是电子技术的基础实验之一,通过实验我们深入了解了7 段数码管和 7447 译码器的原理和应用,同时也锻炼了我们的动手能力和实验技能。
在实际应用中,7 段数码管和译码器常常被用于数字显示、计数器、时钟、温度计等电子设备中,具有广泛的应用前景。
实验报告模板:实验二7段数码显示译码器
实验二7段数码显示译码器【实验目的】1.设计七段显示译码器,并在实验板上验证2.学习V erilog HDL文本文件进行逻辑设计输入;3.学习设计仿真工具的使用方法;【实验内容】1.实现BCD/七段显示译码器的“Verilog ”语言设计。
说明:7段显示译码器的输入为:IN0…IN3共5根,7段译码器的逻辑表同学自行设计,要求实现功能为:输入“0…15 ”(二进制),输出“0…9…F ”(显示数码),输出结果应在数码管(共阴)上显示出来。
2.使用工具为译码器建立一个元件符号3.设计仿真文件,进行验证。
4.编程下载并在实验箱上进行验证。
【实验原理】7段数码是纯组合电路。
通常的小规模专用IC,如74或4000系列的器件只能作十进制的BCD码译码,然而数字系统的数据处理和运算都是二进制的,所以输出表达式都是十六进制的。
为了满足十六进制数的译码显示,最方便的方法就是利用Verilog译码程序在FPGA/CPLD中实现。
首先要设计一段程序。
该程序可按照例3-2的case语句表述方法,再根据表4-2的真值表写出程序。
者输入的4位码为A【3:0】,输出控制7段共阴数码管的7位数据位LED7S【6:0】。
输出信号LED7S的7位分别接图4-74的工银数码管的7个段,高位在左,低位在右。
【程序源代码】(加注释)module LED (IN,led7);input[3:0] IN;output[6:0] led7; //定义输出信号reg[6:0] led7; //定规输出信号位7位的寄存器变量always@(IN) //IN为敏感性信号begin //主块开始case(IN) //使用了case语句4'b0000: led7<=7'b0111111;4'b0001: led7<=7'b0000110;4'b0010: led7<=7'b1011011;4'b0011: led7<=7'b1001111;4'b0100: led7<=7'b1100110;4'b0101: led7<=7'b1101101;4'b0110: led7<=7'b1111101;4'b0111: led7<=7'b0000111;4'b1000: led7<=7'b1111111;4'b1001: led7<=7'b1101111;default: led7<=7'b0111111;endcaseend //主块结束endmodule【仿真和测试结果】【硬件仿真结果:】【实验心得和体会】通过这次的7段数码显示译码器实验,我对EDA有了进一步的了解,对QuartusII有了了解以及在QuartusII的使用上有了一些经验。
EDA实验二 八位七段数码管动态显示电路的设计
实验名称八位七段数码管动态显示电路的设计一、实验目的1、了解数码管的工作原理。
2、学习七段数码管显示译码器的设计。
3、学习Verilog的CASE语句及多层次设计方法。
二、实验原理七段数码管是电子开发过程中常用的输出显示设备。
在实验系统中使用的是两个四位一体、共阴极型七段数码管。
其单个静态数码管如下图4-1所示。
图4-1 静态七段数码管由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。
反之则不亮。
共阳极性的数码管与之相么。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。
在实验中时,数字时钟选择1KHZ作为扫描时钟,用四个开关做为输入,当四个开关置为一个二进制数时,在数码管上显示其十六进制的值。
实验箱中的拨动开关与FPGA的接口电路,以及开关FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。
数码管显示模块的电路原理如图4-2所示,表4-1是其数码管的输入与FPGA的管脚连接表。
图4-2 数字时钟信号模块电路原理信号名称对应FPGA管脚名说明7SEG-A G6 七段码管A段输入信号7SEG-B G7 七段码管B段输入信号7SEG-C H3 七段码管C段输入信号7SEG-D H4 七段码管D段输入信号7SEG-E H5 七段码管E段输入信号7SEG-F H6 七段码管F段输入信号7SEG-G J4 七段码管G段输入信号7SEG-DP L8 七段码管dp段输入信号7SEG-SEL0 G5 七段码管位选输入信号7SEG-SEL1 G3 七段码管位选输入信号7SEG-SEL2 F4 七段码管位选输入信号表4-1 数码管与FPGA的管脚连接表四、实验步骤1、打开QUARTUSII软件,新建一个工程。
实验四 七段数码管显示实验报告
实验四七段数码管显示实验一、实验目的掌握数码管显示数字的原理。
二、实验内容1.静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D输入4位BCD码,位码输入低电平选中。
按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LED1的BCD码驱动输入端A1~D1相连,8255的A口PA4~PA7与七段数码管LED2的BCD码驱动输入端A2~D2相连,8255的B口PB0~PB3与七段数码管LED3的BCD码驱动输入端A3~D3相连,8255的B口PB4~PB7与七段数码管LED4的BCD码驱动输入端A4~D4相连,8255的C口PC0~PC3分别与七段数码管LED4~LED4的位驱动输入端DG1~DG4相连。
编程从键盘上每输入4个0~9数字,在七段数码管LED4~LED4上依次显示出来。
图4-12.动态显示:数码管为共阴极,段码采用相同驱动,输入端加高电平,选中的数码管对应段点亮,位码采用同相驱动,位码输入端低电平选中,按图4-2连接好电路,图中只画了2个数码管,实际是8个数码管,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~g相连(32TCI0模块上的J1连32LED8模块J2),8255的C口的PC0~PC7接七段数码管的段码驱动输入(32TCI0模块上的J3连32LED8模块J1),跳线器K1连2和3。
编程在8个数码管上显示“12345678”。
按任意键推出运行。
图4-2三、编程提示1.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO地址并进行处理。
2.对实验内容1,七段数码管字型代码与输入的关系如下表:四、参考流程图1.实验内容一的参考流程图图4-3 2.实验内容二的参考流程图图4-4五、参考程序1.内容一的参考程序源程序清单如下:data segmentioport equ 0c400h-0280hio8255a equ ioport+288hio8255b equ ioport+289hio8255c equ ioport+28ahio8255k equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$'bz db ?cz db 04hdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;使8255的A口为输出方式mov ax,80hout dx,alsss0: mov si,offset bzmov cx,04hsss1: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov [si],al ;存入显示缓冲区inc si ;显示缓冲区指针加1dec cx ;判断输入满4个数字吗?jnz sss1 ;不满继续mov si,offset bz ;从显示缓冲区取第一个数字的BCD 码mov al,[si]and al,0fh ;屏蔽高四位暂存ALinc si ;显示缓冲区指针加1mov ah,[si] ;取第二个数字的BCD码到AHsal ah,4h ;右移4次到高四位add al,ah ;两个BCD码合并成一个字节mov bl,al ;暂存入BLinc simov al,[si] ;取第三个数字的BCD码and al,0fhinc simov ah,[si] ;取第四个数字的BCD码到AHsal ah,4hadd ah,almov al,ahmov dx,io8255a ;从8255的A口输出(后两个数字)out dx,almov al,blmov dx,io8255b ;从8255的B口输出(前两个数字)out dx,almov al,0f0hmov dx,io8255c ;从8255的C口输出位码out dx,almov dl,0ffhmov ah,06int 21hje sss0 ;有键按下则退出exit: mov ah,4ch ;返回int 21hcode endsend start2.内容二的参考程序源程序清单如下:data segmentioport equ 0C400h-0280hio8255c equ ioport+28ahio8255k equ ioport+28bhio8255a equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 01h,02h,03h,04h,05h,06h,07h,08h ;存放要显示的十位和个位con db ? ;位码data endscode segmentassume cs:code, ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;将8255设为A口C口输出mov al,80hout dx,alloop2: mov al,08h ;设置数码管位计数器初值到CON mov byte ptr con,almov si,offset buffer1 ;置显示缓冲器指针SImov ah,7fh ;置位码初值disp0: mov cx,0ffffhmov bl,ds:[si] ;取显示缓冲区显示值存BXmov bh,0hpush simov dx,io8255c ;位码从C口输出mov al,ahout dx,almov dx,io8255amov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]out dx,al ;段码从A口输出disp1: loop disp1 ;延时mov cx,0ffffhdisp2: loop disp2ror ah,01h ;位码右移1位pop siinc si ;显示缓冲区指针加1mov al,byte ptr condec almov byte ptr con,aljnz disp0 ;数码管位计数器减1为0吗?,不为0继续mov dx,io8255a ;为0,关数码管显示mov al,0out dx,almov dl,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov ah,4ch ;返回int 21hcode endsend start实验总结:通过这次试验,我了解到自定义数据类型可以根据自己的需要方便设定,有很大的灵活性。
实验2:8255七段数码管静动态显示
微机实验报告书学号:姓名:班级:同组名单:实验日期: 2012.12.21实验题目:七段数码管的静态显示实验目标:掌握数码管显示数字的原理(功能:键盘输入一位十进制数字(0~9),用七段数码管显示。
)解题思路:1.静态显示:按图 10(a)连接好电路,将8255的A口PA0-PA6分别与七段数码管的断码驱动输入端a-g项链,位码驱动输入端S1接+5V,S0、dp接地。
编程从键盘输入一位十进制数字,在七段数码管上显示出来。
2.动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。
编程在两个数码管上显示“56”。
程序框图:静态显示见图11(a),动态显示见图11(b)。
关键问题分析(静态显示):1、按键判断和程序结束判断按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在0-9之间即可。
用以下程序即可:cmp al,'0'jl exit ; jl,条件转移指令,即在小于时转移cmp al,'9'jg exit ;jg, 条件转移指令,即在大于时转移程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。
程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。
2、七段码显示。
实验指导书中给出了七段码的字型代码。
这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。
前提是必须将七段码字型编成数码表以字符串的形式写进程序中。
3、数字键ASCII码与数值间的转换。
因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现:sub al,30h程序清单:静态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov al,80h ;10000000B,控制字PA以方式0输出out dx,alzby: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;如若小于0,则跳转到exit退出程序cmp al,'9' ;是否大于9jg exit ; 如若大于9,则跳转到exit退出程序sub al,30h ;将所得字符的ASCII码减30H,数字键ascii码同数值转换mov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp zby ;转zbyexit: mov ah,4ch ;返回DOSint 21hcode endsend start动态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+28ahio8255b equ ioport+28bhio8255c equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80h ;10000000B,控制字PA以方式0输出out dx,almov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02zby: mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl为要显示的数pop dimov al,0mov dx,io8255aout dx,almov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]mov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay: loop delay ;延时mov bh,byte ptr bzshr bh,1jnz zbymov dx,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov dx,io8255amov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回int 21hcode endsend start运行结果:静态显示:在键盘上输入一个0-9的任意数字,会显示在数码管上。
七段数码管显示实验
实验一七段数码管显示实验(1)实验目的学习7段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。
(2)实验原理7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是 16进制的,为了满足16进制的译码显示,最方便的方法就是利用译码程序在 FPGA/CPLD中来实现。
7段译码器输出信号 LED7S的7位分别接如图数码管的 7个段,高为在左,低位在右。
如LED7S 输出为“1101101 ”时,数码管的7个段:g、f、e d、c、b、a分别接1、1、0、1、1、0、 1;接有高电平的段发亮,于是数码管显示“ 5”。
(3)实验内容说明下面源代码中各语句的含义,以及该程序的整体功能。
在Quartusll上对该程序进行编辑、编译、综合、适配、仿真,给出起所有信号的时序仿真波形。
提示:用输入总线的方式给出输入信号的仿真数据,仿真波形示例图如图:源代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END;ARCHITECTURE one OF DECL7S ISBEGINPROCESS( A )BEGINCASE A ISWHEN "0000" => LED7S <= "0111111";WHEN "0001" => LED7S <= "0000110";WHEN "0010" => LED7S <= "1011011";WHEN "0011" => LED7S <= "1001111";WHEN "0100" => LED7S <= "1100110";WHEN "0101" => LED7S <= "1101101";WHEN "0110" => LED7S <= "1111101";WHEN "0111" => LED7S <= "0000111";WHEN "1000" => LED7S <= "1111111";WHEN "1001" => LED7S <= "1101111";WHEN "1010" => LED7S <= "1110111";WHEN "1011" => LED7S <= "1111100";WHEN "1100" => LED7S <= "0111001";WHEN "1101" => LED7S <= "1011110";WHEN "1110" => LED7S <= "1111001";WHEN "1111" => LED7S <= "1110001";END CASE;END PROCESS;END;编译得到模块DECL7S:程序运行后可以看到 7段数码管以每秒一次的跳变速度往上自加,到“F”后归“0”。
数码管实验报告
数码管实验报告数码管实验报告引言:数码管是一种常见的电子显示器件,广泛应用于各种电子设备中。
本实验旨在通过对数码管的实际操作,了解其工作原理以及应用场景。
一、实验目的通过本次实验,我们的目标是掌握数码管的基本原理和使用方法,进一步了解数字电路的工作原理,并能够通过搭建简单的电路实现数字显示。
二、实验器材和原理实验所需器材包括:数码管、电阻、开关、电源等。
数码管是一种由发光二极管组成的显示器件,它可以显示数字0-9。
电阻用于限流,开关用于控制电路的通断,电源为实验提供所需的电能。
数码管的工作原理是通过控制发光二极管的通断状态来实现数字的显示。
数码管一般由7个发光二极管组成,其中6个用于显示数字的每个段,而第7个用于显示小数点。
通过控制不同的发光二极管通断,可以显示不同的数字或符号。
三、实验步骤1. 搭建基本电路:将数码管与电阻、开关、电源连接起来,保证电路的通断正常。
2. 确定数码管的工作电压:通过调节电源电压,观察数码管的亮度变化,找到最适合的工作电压。
3. 实现数字的显示:通过对不同的发光二极管通断的控制,依次显示数字0-9。
4. 实现数字的循环显示:通过控制开关的状态,使得数字可以按照一定的顺序不断循环显示。
5. 实现小数点的显示:通过控制第7个发光二极管的通断状态,实现小数点的显示。
四、实验结果和分析通过实验,我们成功地搭建了数码管电路,并实现了数字的显示和循环显示。
在调节电源电压的过程中,我们发现数码管的亮度会随着电压的增加而增加,但当电压过高时,数码管可能会受损,因此需要找到一个合适的工作电压。
在实现数字的显示和循环显示的过程中,我们发现通过对不同的发光二极管通断的控制,可以显示不同的数字。
而通过控制开关的状态,可以实现数字的循环显示,使得显示的数字可以按照一定的顺序不断变化。
通过实验,我们还成功地实现了小数点的显示。
通过控制第7个发光二极管的通断状态,我们可以在数字显示的基础上添加小数点,实现更加丰富的显示效果。
七段数码管驱动实验报告
班级_08网络__ 学号20080611052______ 姓名_袁晓洋__七段数码管驱动实验[实验目的]深入理解单片机IO口编程原理掌握七段数码管的原理和驱动方法掌握7段数码显示编码的方法[实验内容]采用单片机的IO驱动共阳极七段数码管,采用灌电流的方式使对应的LED 发光,并采用代码延时的方式实现七段数码管循环显示从0-9的数字,数字变化的间隔大约为1秒钟。
[实验步骤]在此填写在proteus中的操作步骤,并附绘制的电路图在此填写keil C51代码并附详细注释这是一个共阳极七段数码管将端口接至单片机P0 在共阳极接一个电源!及可实现;#include <reg51.h> //添加头文件#define SEG P0 //定义七段数码管LED连接P0Char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//定义数字数组 0--9void delay(int); //声明delay函数main() //主函数{unsigned char i;while(1) 不停地循环for(i=0;i<10;i++){SEG=TAB[i]; 显示数字delay(1000); 延时1秒}}void delay(int x) //延时X*1ms{int i,j;for(i=0;i<x;i++)for(j=0;j<120;j++);}[实验总结]总结试验中遇到的问题和问题的解决方法。
刚开始接触单片机和数码管对电路图和代码不明白,不知道什么是共阳极和共阴极,有什么区别,后来通过反复的看代码,看书和老师的指导对其进行了了解,掌握!。
七段数码管的动态扫描显示实验报告
实验四七段数码管的动态扫描显示一、实验目的1.进一步熟悉QuartusII软件进行FPGA设计的流程;2.掌握利用宏功能模块进行常用的计数器,译码器的设计;3.学习和了解动态扫描数码管的工作原理的程序设计方法;二、实验原理及过程实验板上面常用的4为联体的共阳极7段数码管。
其接口电路是把所有数码管的8个笔划段a-h同名端连接起来,而每一个数码管由一个独立的公共极COM端控制。
对于这种结构的数码管,采用动态显示的方法是最为广泛的一种显示方式之一。
在轮流点亮的过程中每位显示器的点亮时间都极为短暂,但由于人的视觉暂留现象以及发光二极管的余晖效应,尽管实际上每个显示器并非同时点亮,但只要扫描的速度足够快(如达到30Hz 以上),给人的印象就是一组稳定的显示数据,不会有闪烁感。
本次实验要求在实验板上实现显示00000000-99999999的十进制计数器。
使用的是宏模块产生一个16位的二进制计数器counter()作为4个数码管的显示数据;编写一个分频模块div,其输出作为计数器counter()的时钟信号;编写数码管驱动模块segmain,完成7段译码和扫描显示控制1、建立工程,并建立顶层图。
2、设计计数时钟设计一分频器,对50Mhz分频输出到计数器,让计数器以较慢速度递增。
建立.v文件,输入以下代码module int_div(clk,div_out);input clk;output reg div_out;reg[31:0] clk_div;parameter CLK_FREQ='D50_000_000;parameter DCLK_FREQ='D10;always@(posedge clk)beginif(clk_div<CLK_FREQ/DCLK_FREQ)clk_div<=clk_div+1;elsebeginclk_div<=0;div_out=~div_out;endendendmodule输入完成后,将该文件设为顶层文件,并分析该设计文件,用于检查设计错误。
7段显示译码器设计实验报告
数字钟实验报告学生专业:电子信息工程学生班级:151143C学生学号:*********学生姓名:***7段显示译码器设计151143324 ***一、实验目的:学习七段数码显示译码器设计,多层次设计方法和总线数据输入方式的仿真。
二、实验原理:7段BCD码译码器的设计,输出信号Segmentout的7位分别接数码管的7个段,高位在左,低位在右。
例如当Segmentout输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示数字“5”。
如果是共阳极的数码显示器,则8段输出应取反,段显码为“10010010”,使用时要注意数码管的接法。
实际产品设计中,一般会用到多个数码管,显示几位数字。
4位数的7段数码管,4位数字共用同样的段输出。
若只想让第一个位显示,其他的位不显示,那么可以只给第一位数字供电,其他的断电,用4LED来控制的,4LED输出0001即可,若只让第二位显示则4LED输出0010即可。
这里的4LED选择控制要显示的位,称为位选。
三、实验内容:module BCD_Segment7(BCDin,Segmentout,Select);input[3:0]BCDin;output Select;output [6:0]Segmentout;reg[6:0]Segmentout;always@(BCDin)begincase(BCDin)4'h0:Segmentout=7'b1000000;4'h1:Segmentout=7'b1111001;4'h2:Segmentout=7'b0100100;4'h3:Segmentout=7'b0110000;4'h4:Segmentout=7'b0011001;4'h5:Segmentout=7'b0010010;4'h6:Segmentout=7'b0000010;4'h7:Segmentout=7'b1111000;4'h8:Segmentout=7'b0000000;4'h9:Segmentout=7'b0010000;4'hA:Segmentout=7'b0001000;4'hB:Segmentout=7'b0000011;4'hC:Segmentout=7'b1000110;4'hD:Segmentout=7'b0100001;4'hE:Segmentout=7'b0000110;4'hF:Segmentout=7'b0001110;default:Segmentout=7'bxxxxxxx;endcaseendassign Select=1'b0;endmodule四、时序仿真波形:引脚设定时序仿真波形参考设置:1、设置仿真时间。
七段数码管显示实验报告
data ends
code segment
assume cs:code,ds:data,ss:stack
main proc
mov ax,data
mov ds,ax
mov dx,offset x1
mov ah,9
int 21
mov dx,pd
七段数码管显示实验报告
120321班 12031112 刘岳洋
一、实验目的
掌握接口芯片的编址方法,掌握8255的初始化设置,及数码管显示原理,掌握段控及位控的概念。
二、实验内容
(1)连接地址译码器的288H~28FH与8255的 ,PA0~PA7分别连接数码管的a~g与dp.PC0与PC1分别接S0与S1。
push cx
mov dx,100
mov cx,0
wait1:loop wait1
dec dx
jne wait1
pop cx
pop dx
rde ends
end main
dpa共阴极驱动器1001开始定义字形码初始x1x2为0换成x1字形码pa输出x1字形码pc输出2延迟换成x2字形码pa输出x2字形码pc输出1延迟输入x是否输入是否回车输入是否为2位结束对准x1初始地址否是是否是否六实验截图及效果七实验程序paequ0ef00h280h28pcequ0ef00h280h28pdequ0ef00h280h28stacksegmentstack果图88h8ah8bhdw100dup0stackendsdatasegmentxdb00valdb3fh06h5bh4fh66h6dh7dh07h7fh6fhx1dbpleaseenterthenumber
数码管实验报告实验原理(3篇)
第1篇一、实验背景数码管是一种常用的显示器件,它可以将数字、字母或其他符号显示出来。
数码管广泛应用于各种电子设备中,如计算器、电子钟、电子秤等。
本实验旨在通过实践操作,让学生了解数码管的工作原理,掌握数码管的驱动方法,以及数码管在电子系统中的应用。
二、实验原理1. 数码管类型数码管分为两种类型:七段数码管和液晶数码管。
本实验主要介绍七段数码管。
七段数码管由七个发光二极管(LED)组成,分别代表七个笔画。
当七个LED中的某个或某几个LED点亮时,就可以显示出相应的数字或符号。
根据发光二极管的连接方式,七段数码管可分为共阳极和共阴极两种类型。
2. 数码管驱动方式(1)静态驱动静态驱动是指每个数码管独立驱动,每个数码管都连接到单片机的I/O端口。
这种方式下,数码管显示的数字或符号不会闪烁,但需要较多的I/O端口资源。
(2)动态驱动动态驱动是指多个数码管共用一组I/O端口,通过控制每个数码管的扫描时间来实现动态显示。
这种方式可以节省I/O端口资源,但显示的数字或符号会有闪烁现象。
3. 数码管显示原理(1)共阳极数码管共阳极数码管的特点是七个LED的阳极连接在一起,形成公共阳极。
当要显示数字时,将对应的LED阴极接地,其他LED阴极接高电平,即可显示出相应的数字。
(2)共阴极数码管共阴极数码管的特点是七个LED的阴极连接在一起,形成公共阴极。
当要显示数字时,将对应的LED阳极接地,其他LED阳极接高电平,即可显示出相应的数字。
4. 数码管驱动电路(1)BCD码译码驱动器BCD码译码驱动器是一种将BCD码转换为七段数码管所需段码的电路。
常用的BCD码译码驱动器有CD4511、CD4518等。
(2)74HC595移位寄存器74HC595是一种8位串行输入、并行输出的移位寄存器,常用于数码管的动态驱动。
它可以将单片机输出的串行信号转换为并行信号,驱动数码管显示。
三、实验目的1. 了解数码管的工作原理和驱动方式。
实验报告数码管
一、实验目的1. 熟悉数码管的结构和原理。
2. 掌握数码管显示的控制方法。
3. 培养动手实践能力和团队协作精神。
二、实验原理数码管是一种用于显示数字、字母、符号等信息的电子元件。
根据发光原理,数码管可分为七段数码管和十六段数码管。
本实验以七段数码管为例,介绍其结构、原理及控制方法。
七段数码管由七个LED(发光二极管)组成,分别称为A、B、C、D、E、F、G七个段。
当某一LED点亮时,对应数码管的某一位就会显示出相应的数字或符号。
通过控制不同LED的点亮状态,可以实现数字、字母、符号等信息的显示。
三、实验仪器与材料1. 7段数码管1个2. 驱动电路板1块3. 电阻若干4. 电源1块5. 连接线若干6. 实验平台1个四、实验步骤1. 数码管与驱动电路板的连接(1)将数码管的共阳极引脚(COM)与驱动电路板的共阳极引脚连接。
(2)将数码管的A、B、C、D、E、F、G七个段分别与驱动电路板对应的引脚连接。
(3)将驱动电路板的电源引脚与电源连接。
2. 数码管显示数字“1”的控制(1)在驱动电路板上,将A、B、C、D、E、F、G七个引脚分别连接到微控制器的相应引脚。
(2)编写程序,使微控制器输出高电平到A、B、C、D、E、F、G引脚,实现数字“1”的显示。
(3)将微控制器程序下载到实验平台上,观察数码管显示效果。
3. 数码管显示数字“2”的控制(1)修改程序,使微控制器输出高电平到A、B、C、D、E、G引脚,实现数字“2”的显示。
(2)将修改后的程序下载到实验平台上,观察数码管显示效果。
4. 数码管显示数字“3”的控制(1)修改程序,使微控制器输出高电平到A、B、C、D、F、G引脚,实现数字“3”的显示。
(2)将修改后的程序下载到实验平台上,观察数码管显示效果。
5. 数码管显示数字“4”的控制(1)修改程序,使微控制器输出高电平到B、C、D、F、G引脚,实现数字“4”的显示。
(2)将修改后的程序下载到实验平台上,观察数码管显示效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级_08网络__ 学号20080611052______ 姓名_袁晓洋__
七段数码管驱动实验
[实验目的]
深入理解单片机IO口编程原理
掌握七段数码管的原理和驱动方法
掌握7段数码显示编码的方法
[实验内容]
采用单片机的IO驱动共阳极七段数码管,采用灌电流的方式使对应的LED 发光,并采用代码延时的方式实现七段数码管循环显示从0-9的数字,数字变化的间隔大约为1秒钟。
[实验步骤]
在此填写在proteus中的操作步骤,并附绘制的电路图
在此填写keil C51代码并附详细注释
这是一个共阳极七段数码管将端口接至单片机P0 在共阳极接一个电源!及可实现;
#include <reg51.h> //添加头文件
#define SEG P0 //定义七段数码管LED连接P0
Char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//定义数字数组 0--9
void delay(int); //声明delay函数
main() //主函数
{
unsigned char i;
while(1) 不停地循环
for(i=0;i<10;i++)
{
SEG=TAB[i]; 显示数字
delay(1000); 延时1秒
}
}
void delay(int x) //延时X*1ms
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
[实验总结]
总结试验中遇到的问题和问题的解决方法。
刚开始接触单片机和数码管对电路图和代码不明白,不知道什么是共阳极和共阴极,有什么区别,后来通过反复的看代码,看书和老师的指导对其进行了了解,掌握!。