实验3 数码管显示实验

合集下载

数码管动态显示实验报告

数码管动态显示实验报告

一、实验目的1. 掌握数码管动态扫描显示的原理和编程实现方法;2. 熟悉单片机与数码管之间的接口连接;3. 学会使用定时器中断控制数码管的动态显示;4. 培养动手能力和问题解决能力。

二、实验原理数码管动态显示是通过单片机控制多个数码管同时显示不同的数字或字符,利用人眼的视觉暂留效应,实现快速切换显示内容,从而在有限的引脚数下显示更多的信息。

实验中,我们采用动态扫描的方式,依次点亮数码管,通过定时器中断控制扫描速度。

三、实验器材1. 单片机开发板(如51单片机、AVR单片机等);2. 数码管(共阳/共阴自选);3. 连接线;4. 电阻;5. 实验台;6. 编译器(如Keil、IAR等)。

四、实验步骤1. 设计电路图:根据实验要求,设计单片机与数码管的连接电路图,包括数码管的段码、位选信号、电源等。

2. 编写程序:使用C语言或汇编语言编写程序,实现数码管的动态显示功能。

(1)初始化:设置单片机的工作模式、定时器模式、端口方向等。

(2)显示函数:编写显示函数,实现数码管的点亮和熄灭。

(3)定时器中断服务程序:设置定时器中断,实现数码管的动态扫描。

3. 编译程序:将编写的程序编译成机器码。

4. 烧录程序:将编译后的程序烧录到单片机中。

5. 连接电路:将单片机与数码管连接好,包括数码管的段码、位选信号、电源等。

6. 运行实验:打开电源,观察数码管的显示效果。

五、实验结果与分析1. 实验结果:数码管按照预期实现了动态显示功能,依次点亮每位数码管,并显示出不同的数字或字符。

2. 分析:(1)通过调整定时器中断的周期,可以改变数码管的扫描速度,从而控制显示效果。

(2)在编写显示函数时,要考虑到数码管的共阳/共阴特性,选择合适的点亮和熄灭方式。

(3)在实际应用中,可以根据需要添加其他功能,如显示时间、温度等。

六、实验总结1. 通过本次实验,掌握了数码管动态显示的原理和编程实现方法。

2. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。

数码管动态显示实验报告

数码管动态显示实验报告

数码管动态显示实验报告1.实验目的:本实验旨在通过使用单片机控制数码管的动态显示,了解数码管的原理和使用方法,加深对单片机控制的理解。

2.实验原理:数码管是由许多发光二极管(LED)组成的,每个数码管有7个发光二极管组成7段,再加上一个小数点(或8段数码管),通过控制每个发光二极管的亮灭状态,可以显示出数字、字母等字符。

本实验使用的是共阴极数码管,在通常情况下,数码管引脚为低电平时亮灯,为高电平时灭灯。

3.实验器材:-STC89C52单片机-共阴极数码管-电阻-面包板及连接线-电源4.实验步骤:步骤1:连接电路将数码管的7个引脚分别连接到单片机的7个I/O引脚上,并通过电阻限流。

连接电路后,确认连接无误。

步骤2:编写程序使用C语言编写程序,实现数码管的动态显示。

可以使用延时函数和位操作函数控制数码管的亮灭,通过改变每个数码管引脚的高低电平状态,实现显示不同的数字、字母。

步骤4:实验观察与分析观察数码管的显示效果,通过改变程序中的参数,可以实现不同的显示效果。

5.实验结果与分析:经过实验,我们成功实现了数码管的动态显示。

通过编写程序,我们可以实现数码管显示数字、字母等不同的字符。

调整程序中的参数,可以实现不同的动态显示效果,如流水灯、闪烁等。

数码管的动态显示是通过改变每个数码管引脚的高低电平实现的,通过快速改变引脚电平状态的时间间隔,创建了肉眼无法察觉的视觉效果,从而实现了动态显示。

此外,通过实验我们还了解到了单片机控制数码管的原理和方法,加深了对单片机控制的理解。

6.实验总结:通过本实验,我们了解到了数码管的动态显示原理和方法,并通过编写程序,成功实现了数码管的动态显示。

同时,我们还巩固了单片机控制的知识,提高了自己的动手能力和问题解决能力。

在今后的学习和工作中,我们将进一步掌握数码管的使用方法,并能够将其应用于更加复杂的应用场景中,实现更多有趣的功能。

EDA实验三七段数码管显示译码

EDA实验三七段数码管显示译码

实验三:七段数码管显示译码一、实验目的:1 设计并实现一个7段数码管控制接口,要求:在输入四位数据为0~15时,数码管显示0~F;2设计并实现一个两位7段数码管控制接口,实现输入八位二进制,结果由两位7段数码管显示功能。

3 熟悉ISE9.1软件中电路的设计仿真及综合实现方法;4 熟悉下载方法及实验系统调试方法。

二、实验原理七段数码管显示译码程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hex2led ISPORT(hex : IN STD_LOGIC_VECTOR(3 downto 0);ledout : OUT STD_LOGIC_VECTOR(6 downto 0));END hex2led;ARCHITECTURE rtl OF hex2led ISSIGNAL led :STD_LOGIC_VECTOR(6 downto 0);BEGINledout<= NOT led;WITH hex SELECTled<="1111001" when "0001","0100100" when "0010","0110000" when "0011","0011001" when "0100","0010010" when "0101","0000010" when "0110","1111000" when "0111","0000000" when "1000","0010000" when "1001","0001000" when "1010","0000011" when "1011","1000110" when "1100","0100001" when "1101","0000110" when "1110","0001110" when "1111","1000000" when others;END rtl;三、实验处理激励代码:tb : PROCESSBEGINhex<="0000";wait for 50 ns;for i in 0 to 15 loophex<=hex+1;wait for 50 ns;end loop;功能仿真图时序仿真图(图中黄线可以看出延时)延时报告:Data Sheet report:All values displayed in nanoseconds (ns) Pad to PadSource Pad |Destination Pad| Delay | hex<0> |ledout<0> | 5.963| hex<0> |ledout<1> | 5.963| hex<0> |ledout<2> | 5.963| hex<0> |ledout<3> | 5.958| hex<0> |ledout<4> | 5.963| hex<0> |ledout<5> | 5.958| hex<0> |ledout<6> | 5.958| hex<1> |ledout<0> | 5.963| hex<1> |ledout<1> | 5.963| hex<1> |ledout<2> | 5.963| hex<1> |ledout<3> | 5.958| hex<1> |ledout<4> | 5.963| hex<1> |ledout<5> | 5.958| hex<1> |ledout<6> | 5.958| hex<2> |ledout<0> | 5.963| hex<2> |ledout<1> | 5.963| hex<2> |ledout<2> | 5.963| hex<2> |ledout<3> | 5.958| hex<2> |ledout<4> | 5.963| hex<2> |ledout<5> | 5.958| hex<2> |ledout<6> | 5.958| hex<3> |ledout<0> | 5.963| hex<3> |ledout<1> | 5.963| hex<3> |ledout<2> | 5.963| hex<3> |ledout<3> | 5.958| hex<3> |ledout<4> | 5.963| hex<3> |ledout<5> | 5.958| hex<3> |ledout<6> | 5.958| ---------------+---------------+---------+可编程器件、拨码开关、与发光二极管关系#PACE: Start of PACE I/O Pin AssignmentsNET "hex<0>" LOC = "N17" ;NET "hex<1>" LOC = "H18" ;NET "hex<2>" LOC = "L14" ;NET "hex<3>" LOC = "L13" ;NET "ledout<0>" LOC = "B4" ;NET "ledout<1>" LOC = "A4" ;NET "ledout<2>" LOC = "D5" ;拨码开关状态数码管显示D1D2D3D4下下下下0下下下上1下下上下2下下上上3下上下下4下上下上5下上上下6下上上上7上下下下8上下下上9上下上下A 上下上上B 上上下下C 上上下上D 上上上下E 上上上上FNET "ledout<3>" LOC = "C5" ;NET "ledout<4>" LOC = "A6" ;NET "ledout<5>" LOC = "B6" ;NET "ledout<6>" LOC = "E7" ;设计表格记录实验结果,并分析其结果的正确性。

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
七段码管位选输入信号 七段码管位选输RTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。 3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。其 程序如下所示:
(1)一位数码管显示0-9:
电子科技大学成都学院学院
标准实验报告
(实验)课程名称 数字电路 EDA 设计与应用
姓名 乱弹的枇杷 学号 专业 指导教师
一、 实验名称 数码管显示(一位数码管显示 0-9,八位数码管显示学号
后八位)
二、 实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、掌握 VHDL 的 CASE 语句及多层次设计方法。
信号名称 7SEG-A 7SEG-B 7SEG-C 7SEG-D 7SEG-E 7SEG-F 7SEG-G 7SEG-DP 7SEG-SEL0 7SEG-SEL1 7SEG-SEL2
对应 FPGA 管脚名
F13 F14 F15 E15 F16 F17 E18 F18 G18 G17 G16
说明 七段码管 A 段输入信号 七段码管 B 段输入信号 七段码管 C 段输入信号 七段码管 D 段输入信号 七段码管 E 段输入信号 七段码管 F 段输入信号 七段码管 G 段输入信号 七段码管 dp 段输入信号
7、分配完成后,再进行一次全编译,以使管脚分配生效。 8、新建波形文件,对程序进行仿真,其仿真波形如下所示:
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位:
9、用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。观察实验 结果是否与自己的编程思想一致。
六、实验现象及结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字

基础实验(数码管显示)含代码

基础实验(数码管显示)含代码

实验一基础实验(数码管显示)一、实验内容使用MCS-51汇编语言编写程序,完成如下功能:1. 使用三个数码管显示十进制数值(001~999,可任意设置);2. 每隔1秒,该数值自动减一,直到归零;3. 归零后的下一秒,显示一个新的十进制数值(001~999,可任意设置);4. 每隔1秒,新数值继续自动减一,直到再次归零;5. 重新执行步骤1,循环往复。

6. 当开关S1按下时,暂停计数;S1松开时,恢复计数。

二、数码管显示原理如图所示,三段式数码管由三片74HC164级联控制三个数码管的显示,其中使用单片机P4.5作为模拟串口数据,使用P4.4模拟串口时钟,CLR端接高电平。

使用上一个74HC164的Q7作为下一个74HC164的输入端。

要想输出一个字形码,就需要从高位到低位依次向移位寄存器输出8个比特。

移位寄存器的数据线和时钟线分别接到单片机的P4.5和P4.4管脚,可以使用MCS-51里面的位操作指令进行输出。

连续输出3个字形,24个bit之后,欲显示的字形将稳定地显示在数码管上,程序可以转而执行其他工作。

三、实验流程图1.主程序流程图开始初始化定义计数器R6,R5,R4定义码表TAB 0-9根据R6偏移从TAB取数送到算术寄存器A中调用SHOW子程序根据R5偏移从TAB取数送入算术寄存器A中调用SHOW子程序根据R4偏移从TAB取数送入算术寄存器A中调用SHOW子程序调用延时子程序S1按下?是循环延时否R6减一即个位减一R6为-1?是R5减一即十位减一重新初始化R6否R5为-1?否是R4减一即百位减一重新初始化R5R4为-1?重新初始化R4否2.显示子程序SHOW 流程图3.延时子程序DELAY 流程图子程序SHOW 开始R0初始化计数时钟置0右移AC 标志位送入DATA时钟置1,上跳R0=0?是RET否子程序DELAY 开始RI 初始化为80R3减一R3为0?是R2减一R2为0?是R1减一是R1为0?否R2初始化为200R3初始化为250否否是四、程序源代码 0000H2.LJMP START 0050H4.START:5.P4 EQU 0C0H6.P4SW EQU 0BBH7.CLK EQU P4.48.DAT EQU P4.59.SW EQU P3.610.MOV P4SW, #70H11.LP:12. MOV R6, #913. MOV R5, #914. MOV R4, #915.LOOP:16. MOV DPTR, #TAB17. MOV A,R618. MOV DPTR,#TAB19. MOVC A,@A+DPTR20. LCALL SHOW21.22. MOV A,R523. MOV DPTR,#TAB24. MOVC A,@A+DPTR25. LCALL SHOW26.27. MOV A,R428. MOV DPTR,#TAB29. MOVC A,@A+DPTR30. LCALL SHOW31. LCALL DELAY32.33.PAUSE:34. NOP35. JNB SW,PAUSE36. DEC R637. CJNE R6,#-1,LOOP38.39. DEC R540. MOV R6,#941. CJNE R5,#-1,LOOP42. DEC R443. MOV R5,#944. CJNE R4,#-1,LOOP45. MOV R4,#946. LJMP LOOP47.48.SHOW:49. MOV R0,#850.SLP:51. CLR CLK52. RLC A53. MOV DAT,C54. SETB CLK55. DJNZ R0,SLP56. RET57.58.DELAY:59. MOV R1,#8060.SD:61. MOV R2,#20062.SD1:63. MOV R3,#25064.SD2:65. DJNZ R3,SD266. DJNZ R2,SD167. DJNZ R1,SD68.RET69.70.TAB:71. DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H72.73.74.END75.TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H五、思考题1.MCS51中有哪些可存取的单元,存取方式如何?它们之间的区别和联系有哪些?答:MCS51单片机中,包含程序存储器ROM、数据存储器RAM和特殊功能寄存器(SFRs),其中数据存储器还包含内部RAM,内部扩展RAM和片外RAM。

FPGA实验三七段数码管静态与动态显示实验报告

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进行控制,从而实现任意数字的显示。

在动态显示中,我们通过时钟信号和计数器实现了刷新功能,使得数字在七段数码管中快速地切换,从而呈现出动态的显示效果。

实验三 数码管动态显示程序设计1综述

实验三 数码管动态显示程序设计1综述

实验三数码管动态显示程序设计实验目的1、理解数码管动态显示原理2、理解数码管动态显示电路的设计方法3、掌握数码管动态显示程序的设计方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验内容1、动态扫描显示程序2、特征位小数点控制显示程序实验电路图实验步骤及调试信息1、新建实验项目2、输入实验程序并补充完整;------------------------------------------------------;数码管动态显示程序;包含小数点显示;位选码输出有两种方式:; DispSelection1: 一次一位; DispSelection2: 一次一字节;; 2009-08-20;-------------------------------------------------------LEDCLK bit P3.4LEDDIN bit P2.3LEDDATA data P0dseg at 30hdispbuf: ds 8 ;显示缓冲区8字节disppoint: ds 1 ;小数点控制数据maincode SEGMENT CODECSEG at 0LJMP StartRSEG maincodeStart: CLR E Amov sp,#0c0hmov dispbuf ,#08hmov dispbuf+1, #04hmov dispbuf+2, #00hmov dispbuf+3, #08hmov dispbuf+4, #02hmov dispbuf+5, #00hmov dispbuf+6, #02hmov dispbuf+7, #07hmov disppoint,#02h ;第2位小数点亮LCALL dispSJMP $-3;------------------------------------------------------;数码管动态显示程序;包含小数点显示;位选码输出有两种方式:; DispSelection1: 一次一位; DispSelection2: 一次一字节;; 2009-08-20;-------------------------------------------------------Disp: MOV R7,#8MOV R0,#dispbufCLR LEDCLKSETB L EDDINDisp1: MOV A,@R0MOV DPTR,#DispTabMOVC A,@A+DPTRcpl a; LCALL Dispdot ;显示小数点程序MOV LEDDA TA,A ;在输出之前加入显示小数点程序LCALL DispSelection1 ;输出位选择信号,DispSelection2是第二种; lcall dispsel3LCALL Delay1msmov p2,#0ffhINC R0DJNZ R7,Disp1mov p2,#0ffhRET;-------------------------------------------------;位选码以一次一位方式输出;-------------------------------------------------dispsel3:mov dptr,#DispSTabmov a,r7movc a,@a+dptrcpl a; swap amov p2,aretDispSelection1:CJNE R7,#8,DispSelection11CLR L EDDINDispSelection11:SETB LEDCLKNOPCLR L EDCLKSETB LEDDINRET;-------------------------------------------------;位选码以一次一字节方式输出;-------------------------------------------------DispSelection2:MOV B,#8MOV DPTR,#DispSTabMOV A,R7MOVC A,@A+DPTRCPL ADispSelection21:RLC AMOV LEDDIN,CSETB LEDCLKNOPCLR L EDCLKDJNZ B,DispSelection21RETDispSTab: DB 00H,80H,20H,40H,10H,08H,04H,02H,01H;位选码数据表dispa equ 80h ;数码管各段数据定义dispb equ 40hdispc equ 20hdispd equ 10hdispe equ 08hdispf equ 04hdispg equ 02hdisph equ 01hdisp8 equ 0ffh-disphDispTab: db disp8-dispg,dispb+dispc,dispa+dispb+dispg+dispd+dispe ;0,1,2 db disp8-dispe-dispf,disp8-dispa-dispd-dispe,disp8-dispb-dispe;3,4,5db disp8-dispb,dispa+dispb+dispc,disp8,disp8-dispe ;6,7,8,9db disp8-dispd,disp8-dispa-dispb,disp8-dispb-dispc-dispg ;a,b,cdb disp8-dispa-dispf,disp8-dispb-dispc,disp8-dispb-dispc-dispd;d,e,fdb disp8-dispb-dispc,0ffh,00h,dispg ;H,全亮,全暗,-;--------------------------------------------------------------------;特征位小数点控制显示程序;把小数点显示程序加到显示码输出之前;输入:A : 显示译码值; R7:当前正在显示的LED编号;输出:无;--------------------------------------------------------------------Dispdot:MOV B,AMOV A,R7MOV DPTR,#DispSTabMOVC A,@A+DPTRANL A,disppointSETB C ;本行及以下4行可改成MOV C,PJZ Dispdot1CLR C;点亮小数点Dispdot1:CPL C ;本行根据情况增减MOV A,BCPL AMOV ACC.7,C ;小数点由D7控制; MOV LEDDA TA,A ;本行可以删除RETDelayNms:LCALL Delay1msDJNZ R7, $-3RETDelay1ms:PUSH 07MOV R7,#250 ;1msNOPNOPDJNZ R7, $-2POP 07RETEND3、编译下载实验程序,并修改错误(按附录说明)4、全速运行程序,查看实验现象。

实验三 LED数码显示控制 PLC实验报告

实验三 LED数码显示控制 PLC实验报告

广州大学学生实验报告开课学院及实验室:工程北529 2015年 5 月28 日学院机械与电气工程年级、专业、班姓名学号实验课程名称电气控制与可编程控制器成绩实验项目名称实验三 LED数码显示控制指导老师一、实验目的熟练掌握移位寄存器位SHRB ,能够灵活的运用二、实验说明移位寄存器位(SHRB)指令将DATA数值移入移位寄存器。

S_BIT指定移位寄存器的最低位。

N指定移位寄存器的长度和移位方向(移位加 = N,移位减 = -N)。

SHRB指令移出的每个位被放置在溢出内存位(SM1.1)中。

该指令由最低位(S_BIT)和由长度(N)指定的位数定义。

三、实验面板图四、实验内容1、设计一个照明灯的控制程序。

当按下接在I0.0上的照明灯按钮,可发光30s。

如果在这段时间内又有人按下按钮,则时间间隔从头开始。

这样可确保在最后一次按下按钮后,灯光可维持30s的照明。

2、设计程序,用SEG指令,循环显示0~F字符。

3、设计程序,用一个按钮控制两盏灯:按一次,第一盏亮,按二次,第二盏亮,按三次,两盏全亮,按四次,两盏全灭,按五次,两盏全亮,按六次,只有第二盏亮,按七次,只有第一盏亮,按八次,两盏全灭,完成一次工作循环。

五、实验过程原始记录(程序、数据、图表、计算等)思考题梯形图1:思考题2梯形图:思考题3梯形图:六、实验结果及分析1、思考题1中当每按下一次按钮,Q0.0接通并自锁。

同时T37定时器复位,经过30S后T37置位,其常闭触点断开,Q0.0断开,灯熄灭。

2、思考题2中输入I0.0,I0.1分别控制开关和手动清零计数器。

本题通过在SEG指令的输入端输入数字0~15,将输出端接到数码管中实现循环显示0~F。

由于SEG指令的输入端只能是字节类型,而计数器的输出是字类型,需要用I_B转换指令,将C0(字类型)转化为MB0(字节类型)。

当C0当前为16时,计数器复位,当前值清零。

从而实现循环显示。

计数器的预设值应为16而不是15,因16的时候计数器当前值C0马上变为0,而如果设15则在15的时候C0当前值变为0,就会导致显示不出F字符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验目的
复习ADS环境下的编程,可执行文件的下载以及程序
的调试 通过实验掌握处理器利用数据总线挂带外设的方法 掌握八段数码管的显示控制方法 掌握裸机系统下采用汇编语言和C语言实现数码管显 示的编程方法
实验内容
一、验证实验:
编程实现6个数码管循同时先以正序显示0~F字符, 然后再以逆序显示F~0,并不断循环。
数码管的位选择口地址、数据及程序片断
ldr r0,=0x20007000 ldr r1,=0x0 str r1,[r0] ; 口地址nCS SEG2=0x20007000 ;选中所有数码管,低电平有效
实验说明
取显示码送数码管显示的程序片断
ldr r4,=seg7table ldr r2,=0x? add r1,r4,r2 ldr r0,= 0x20006000 ldrb r1,[r1] str r1,[r0] ldr r0,=0x20007000 ldr r1,=0x00 str r1,[r0] ; r4=显示码表起始地址 ; r2=将要显示的值 (0~F) ; r1=将要读取的?值对应的显示码地址 ; r0=数码管段数据锁存器地址nCS SEG1 ; r1=显示值对应的显示码; ; 将显示码数据用数据线D7~D0输出到数码管 ; r0=6个数码管位选信号锁存器地址nCS SEG2 ; 使6个数码管全部都亮 ;将数码管位选择数据用数据线D7~D0输出到 ; 数码管位数据锁存器。
ldr r0,=0x20006000 1、向段选通信号口地址0x20006000输出一个显示码: ldr r1,=0xC0 ;0的显示码 str r1,[r0]
S3C2440数据线
接数码管1 3.3V 接数码管6 3.3V nCS SEG2 (对应口地址 =0x20007000) (8D锁存器) 注:”0”电平 三极管导通 A F E
6位共阳数码管动态循环显示电路原理图
6个数码管的段数据和位数据分别由2个8D锁存器74LVCH273加以驱动。
段显示码数据的最低位到最高位分别对应数码管的a段到h段。
CPU首先向口地址0x20006000输出段数据(显示码),然后向口地址
0x20007000输出位数据(仅使需要显示当前段数据的数码管被选通)。
八段数码管的显示方式


静态显示 动态显示 动态显示是用一组数据及控制信号实现多个数量可变的数 码管显示控制,并且不断变化送给各数码管的数据,使得 不同的数码管显示不同的字符。这种方式利用了逐位快速 轮循显示的方法。即在一个轮循显示周期中,让每位数码 管都显示一次各自的数一定时间。当轮循显示周期的数目 大于每秒50次,人眼由于视觉的惰性无法察觉变化而感觉 是静止的。本实验中采用指令延时方式,延时指令大致设 为8000条时现象较好。
8位锁存器74LVCH273功能表 D0 D Q CLK Q0 CLR 1 1 0 CLK 其它 X 操作 Qi = Di Qi =不变 Qi =高阻态
Vcc Q7 D7 D6 Q6 Q5 D5 D4 Q4 CLK
D7
D
Q CLK
Q7
CLK CLR
74LVCH273
CLR Q0 D0 D1 Q1 Q2 D2 D3 Q3 GND
;以下为数码管显示字符数据区 AREA RamData, DATA, READWRITE seg7table DCB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e END
实验说明
;以下为延时子程序 Delay stmfd sp!,{r8,r9,lr} ldr r3,=0x8ffff; ; 延时 LOOP1 sub r3,r3,#1 cmp r3,#0 bne LOOP1 ldmfd sp!,{r8,r9,pc} LTORG ; 保护当前现场
地址总线 A31~ A0 74LVCH273 ED5~ED0 地 址 0x200060000 译 nCS SEG1 码 288H 位数据选通
D0 D1 D2 D3 D4 D5 D6 D7 CLK Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 CLR
h
a bc
de
fg h
数码管驱动电路(只画出6#数码管)及驱动程序
; 返回原程序
完成实验后,先关闭电源,再拔取
导线,将导线整理好后放入指定位 置,将凳子放入桌下,方可离开。
F
取显示码送数码管显示
ldr ldr add ldr r4,=seg7table r2,=0x00 r1,r4,r2 r1,[r1] ; r4存放显示码表起始地址 ; r2存放将要显示的值 ; r1记录当前数码管数据所在的地址 seg7table+3 0xb0 3 ; 把数码管所要显示的值加载到r1中
H
ED7~ED0
3.3V
G
D
B C H
3.3V nCS SEG1 (对应口地址 =0x20006000)
3.3V
8段共阳数码管
ldr r0,=0x20007000 2、向位选通信口地址0x20007000输出一个位选通数据: ldr r1,=0xDF ;仅6#数码管亮 str r1,[r0]
实验说明
ED0 ED1 ED2 ED3 ED4 ED5 ED6 ED7 D0 D1 D2 D3 D4 D5 D6 D7 CLK Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 CLR
a
PA7
h
f
e
a g b c d h
处理器 数据总线
PA0
nCS SEG1
段数据选通
8D锁存器结构及工作原理
锁存器就是带三态输出的D触发器,通常以8个D触发器为一个封装。 74LVCH273就是一个典型的8D锁存器。 当MR为高电平时,CP脉冲上升沿将使得输出Qi等于其输入Di。 若CP脉冲无上升沿,则Di的变化不会影响Qi的状态,这种现象称为锁存。
显示码 (16进制)
C0 F9 A4 B0 99 92 82 F8 80 90 88 83 C6 A1 86 8E
8段共阳极数码管显示过程:
1、将8位显示码输出到数码管段数据端(经过8D锁存器)同时产生段选通信号。 2、产生某位数码管选通的位数据选通信号。
3.3V
nCS SEG2
位数据选通
数码管6 8D锁存器 74LVCH273
实验说明
本实验中所用的共阳极数码管显示数据表
字符 0 1 2 3 4 5 6 7 8 9 A b C d E F . 熄灭 H 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 G 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 F 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 E 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 D 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 C 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 B 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 A 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 共阳极 C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H 88H 83H C6H A1H 86H 8EH BFH 7FH FFH
实验程序流程框图
裸机系统基本程序运行环境设置参数及程序
复位异常程序:裸机初始化 设置静态参数 程序从0X0开始 建立异常向量表 预存存储器参数 关闭看门狗定时器
主应用程序
获取显示码表起始地址
显示值=F?
显示值=0?
选通6个数码管位选择
显示值-1 向数码管输出显示码
关闭所有中断
设置系统时钟
延时 将存储器参数写入处 理器特殊功能寄存器 区内的存储器参数区
二、设计实验: 用6个八段数码管显示自己学号的最后6位数。
实验说明

Hale Waihona Puke 八段数码管由八个发光二极管组成。 右下角一个点形的发光二级管作为小数点用。 八段数码管可分为共阴极数码管和共阳极数码管两种。 主要可用于显示0~F十六进制数。 本实验采用的数码管为共阳极数码管。
8段共阴极LED数码管结构及显示码的构成
实验说明
建立0~F显示码表:
AREA RamData, DATA, READWRITE seg7table DCB 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82, 0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e END
seg7table+F 0x8e
1. 共阳极数码管的结构及数字显示码
位选通信号线 段数据驱动线
D7 D6 D5 D4 D3 D2 D1 D0
接处理器 数据总线
h g f e d c b a
h g f e d c b a
h g f e d c b a
a f e g b c h
d
段数据信号线
2. 8段数码管显示数字0~F的段安排
0 1 2 3 4 5 6 7 8 9 A b C d E F
2440处理器
74LVCH273 ED7~ED0
数据总线
0x200070000
nCS SEG2 段数据选通 D0 D1 D2 D3 D4 D5 D6 D7 CLK Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 CLR
PA0
a f g b e a b c d e f g h
第 1位 数码管 c h
第 6位 数码管
seg7table+2 0xa4 2 seg7table+1 0xf9 1 seg7table+0 0xc0 0
相关文档
最新文档