微机原理实验四 LED数码管显示实验汇总
微机原理——数码管显示
![微机原理——数码管显示](https://img.taocdn.com/s3/m/3d5a8717a7c30c22590102020740be1e650ecc0c.png)
微机原理与接口技术实验报告实验名称:数码管显示数字的原理姓名:学号:专业班级:指导老师:实验日期:2012年11月一:实验目的掌握数码管显示数字的原理二:实验内容动态显示:按图23连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C 口的PC1,PC0。
编程在两个数码管上显示“56”三:硬件电路四:源程序ioport equ 0d400h-0280h io8255a equ ioport+28ah io8255b equ ioport+28bh io8255c equ ioport+288h led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6f h ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:data start: mov ax,data mov ds,ax movdx,io8255b ;将8255设为A 口输出mov al,80hout dx,almov di,offset buffer1 ;设di 为显示缓冲区loop2: mov bh,02lll: mov byte ptr bz,bh push di dec di add di, bz movbl,[di] ;bl 为要显示的数pop dimov al,0mov dx,io8255a out dx,al mov bh,0mov si,offset led ;置led 数码表偏移地址为SIaddsi,bx ;求出对应的led数码mov al,byte ptr [si]movdx,io8255c ;自8255A 的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay: loopdelay ;延时mov bh,byte ptr bzshr bh,1jnz lllmov dx,0ffhmov ah,06int 21hjeloop2 ;有键按下则退出mov dx,io8255amoval,0 ;关掉数码管显示out dx,almovah,4ch ;返回int 21hcode endsend start五:实验难点与重点实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
数码管的显示的实验报告
![数码管的显示的实验报告](https://img.taocdn.com/s3/m/85685f53cd7931b765ce0508763231126edb7702.png)
数码管的显示的实验报告数码管的显示的实验报告引言:数码管是一种常见的数字显示装置,广泛应用于各种电子设备中。
本实验旨在通过实际操作,了解数码管的原理和工作方式,并通过一系列实验验证其显示效果和功能。
实验一:数码管的基本原理数码管是由多个发光二极管(LED)组成的,每个发光二极管代表一个数字或符号。
通过对不同的发光二极管进行点亮或熄灭,可以显示出不同的数字或符号。
本实验使用的是共阳数码管,即共阳极连接在一起,而阴极分别连接到控制芯片的输出引脚。
实验二:数码管的驱动电路为了控制数码管的显示,需要使用驱动电路。
常见的驱动电路有共阴极驱动和共阳极驱动两种。
本实验使用的是共阳极驱动电路。
驱动电路由控制芯片、电阻和电容组成。
控制芯片通过控制输出引脚的高低电平来控制数码管的点亮和熄灭。
实验三:数码管的显示效果通过控制芯片的输出引脚,可以实现数码管的显示效果。
本实验使用的是四位数码管,可以显示0-9的数字。
通过改变控制芯片输出引脚的电平,可以控制数码管显示不同的数字。
实验中通过编写程序,使数码管显示从0到9的数字循环显示,并通过按键控制数字的增加和减少。
实验四:数码管的多位显示除了显示单个数字外,数码管还可以实现多位显示。
通过控制不同位数的数码管,可以显示更多的数字或符号。
本实验使用的是四位数码管,可以同时显示四个数字。
通过编写程序,可以实现四位数码管的多位显示,例如显示当前时间、温度等信息。
实验五:数码管的亮度调节数码管的亮度可以通过改变驱动电路中的电阻值来实现。
本实验通过改变电阻值,调节数码管的亮度。
实验中通过编写程序,通过按键控制数码管的亮度增加和减少,从而实现亮度的调节。
结论:通过本次实验,我们深入了解了数码管的原理和工作方式。
数码管可以通过驱动电路的控制,实现数字和符号的显示。
同时,数码管还可以实现多位显示和亮度调节。
数码管作为一种常见的数字显示装置,具有广泛的应用前景,可以应用于各种电子设备中。
通过进一步的研究和实践,我们可以更好地利用数码管的功能,满足不同应用场景的需求。
led数码显示实验报告
![led数码显示实验报告](https://img.taocdn.com/s3/m/0664740568eae009581b6bd97f1922791688befa.png)
led数码显示实验报告
LED数码显示实验报告
实验目的:
通过本次实验,我们旨在探究LED数码显示器的工作原理及其在电子设备中的应用。
通过实际操作,加深对LED数码显示技术的理解,提高实验者对数字电路的设计和测试能力。
实验器材:
1. LED数码显示器
2. 电源
3. 逻辑开关
4. 电阻
5. 万用表
6. 连接线
实验步骤:
1. 将LED数码显示器连接到电源上,观察LED显示器的工作状态。
2. 使用逻辑开关控制LED数码显示器的显示内容,观察LED数码显示器的显示变化。
3. 通过改变电阻的阻值,调节LED数码显示器的亮度,观察LED数码显示器的亮度变化。
4. 使用万用表测量LED数码显示器的电压和电流,记录测量结果。
实验结果:
通过实验观察和测量,我们得出以下结论:
1. LED数码显示器能够根据输入的逻辑信号进行数字显示,显示内容可通过逻辑开关控制。
2. 通过改变电阻的阻值,可以调节LED数码显示器的亮度,但应注意不要超过LED数码显示器的最大工作电压和电流。
3. LED数码显示器的工作电压和电流与其显示状态有关,需要根据具体情况进行测量和计算。
实验结论:
LED数码显示器是一种常见的数字显示设备,具有低功耗、高亮度、长寿命等优点,广泛应用于数字电子设备中。
通过本次实验,我们深入了解了LED数码显示器的工作原理和特性,为今后的电子设计和测试工作奠定了基础。
同时,我们也加深了对数字电路和电子元器件的理解,提高了实验者的实践能力和动手能力。
希望通过本次实验,能够为大家对LED数码显示技术有更深入的了解和应用提供帮助。
led数码管实验报告
![led数码管实验报告](https://img.taocdn.com/s3/m/8a5f18ae4bfe04a1b0717fd5360cba1aa8118c07.png)
led数码管实验报告
LED数码管实验报告
实验目的:通过LED数码管实验,掌握数字电路的基本原理和数字显示技术。
实验原理:LED数码管是一种数字显示装置,由多个LED灯组成,可以显示0-
9的数字。
在数字电路中,LED数码管通常用于显示数字信号,通过控制LED
的亮灭来显示不同的数字。
实验材料:LED数码管、数字电路实验板、数字信号发生器、数字电路元件等。
实验步骤:
1. 将LED数码管连接到数字电路实验板上,并接入电源。
2. 使用数字信号发生器产生不同的数字信号,将信号输入到LED数码管中。
3. 观察LED数码管的显示效果,记录不同数字信号对应的LED亮灭状态。
4. 分析LED数码管的工作原理,探讨数字信号与LED数码管的对应关系。
实验结果:通过实验观察和记录,得出了不同数字信号与LED数码管显示的对
应关系,掌握了LED数码管的工作原理和数字信号的显示技术。
实验结论:LED数码管是一种常用的数字显示装置,广泛应用于计时器、计数器、电子钟等领域。
通过本次实验,我们深入了解了LED数码管的工作原理,
掌握了数字信号与LED数码管的对应关系,为今后的数字电路设计和应用打下
了基础。
总结:LED数码管实验是数字电路实验的重要内容,通过实验学习,可以加深
对数字电路原理的理解,提高数字显示技术的应用能力。
希望同学们能够认真
学习实验内容,掌握实验技能,为将来的工程实践奠定坚实基础。
微机原理综合实验报告(LED横向滚动显示(方向修改)、电子钟修改实验)
![微机原理综合实验报告(LED横向滚动显示(方向修改)、电子钟修改实验)](https://img.taocdn.com/s3/m/079c387802020740bf1e9b32.png)
微机原理上机实验报告综合实验:1.LED 16x16点阵显示实验竖向显示改横向显示2.电子钟功能修改微机原理综合实验报告综合实验1:LED 16x16点阵竖向显示改横向显示实验一、实验目的1、熟悉8255的功能,了解点阵显示的原理及控制方法;2、学会使用LED点阵,通过编程显示不同字符;3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验内容1、编写程序,用B4区的二片74HC273控制16X16点阵的行;8255的PA、PB口控制16X16点阵的列;显示字符。
2、按图连接线路;运行程序,观察实验结果,学会编程控制LED点阵显示字符。
三、实验原理图四、实验步骤2、运行程序,观察实验结果。
运行演示程序将会看到字符“欢迎使用星研实验仪”在点阵上自下而上循环移动显示。
五、实验代码对实验六中的代码做一定的修改,将原程序中使LED显示屏从上至下显示的功能改为从左至右滚动显示有框线部分为修改部分ADDR_8255_PA EQU 270H ;8255 PA口ADDR_8255_PB EQU 271H ;8255 PB口ADDR_8255_C EQU 273H ;8255控制口ADDR_273 EQU 230H ;IO区74HC273(16位I/O)LINE EQU A DDR_273 ;行线1, 行线2ROW1 EQU A DDR_8255_PA ;列线1ROW2 EQU A DDR_8255_PB ;列线2_STACK SEGMENT STACKDW 1024 DUP(?)_STACK ENDS_DATA SEGMENT WORD PUBLIC 'DATA'HUANDB 00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60HDB 1CH,60H,1CH,70H,36H,0F0H,36H,0D8H,61H,9CH,0C7H,0FH,3CH,06H,00H,00HYINGDB 60H,00H,31H,0C0H,3FH,7EH,36H,66H,06H,66H,06H,66H,0F6H,66H,36H,66HDB 37H,0E6H,37H,7EH,36H,6CH,30H,60H,30H,60H,78H,00H,0CFH,0FFH,00H,00HSHIDB 00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33HDB 1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,18H,60H,18H,0FCH,19H,8FH,1FH,03HYONGDB 00,0,1FH,0FEH,18H,0C6H,18H,0C6H,18H,0C6H,1FH,0FEH,018H,0C6H,18H,0C6HDB 18H,0C6H,1FH,0FEH,18H,0C6H,18H,0C6H,30H,0C6H,30H,0C6H,60H,0DEH,0C0H,0CCH XINGDB 00H,00H,1FH,0FCH,18H,0CH,1FH,0FCH,18H,0CH,1FH,0FCH,01H,80H,19H,80HDB 1FH,0FEH,31H,80H,31H,80H,6FH,0FCH,01H,80H,01H,80H,7FH,0FFH,00H,00HYANDB 00H,00H,0FFH,0FFH,18H,0CCH,18H,0CCH,30H,0CCH,30H,0CCH,7FH,0FFH,7CH,0CCH DB 0FCH,0CCH,3CH,0CCH,3CH,0CCH,3DH,8CH,3DH,8CH,33H,0CH,06H,0CH,0CH,0CHSHI0DB 01H,80H,00H,0C0H,3FH,0FFH,3CH,06H,67H,0CCH,06H,0C0H,0CH,0C0H,07H,0C0HDB 06H,0C0H,7FH,0FFH,00H,0C0H,01H,0E0H,03H,30H,06H,18H,1CH,1CH,70H,18HYAN0DB 00H,00H,0FCH,60H,0CH,60H,6CH,0F0H,6CH,0D8H,6DH,8FH,6FH,0F8H,7EH,00HDB 06H,0C6H,07H,66H,3FH,0ECH,0E7H,0ECH,06H,18H,1FH,0FFH,0CH,00H,00H,00HYIDB 0CH,0C0H,0CH,60H,18H,7CH,1BH,6CH,33H,0CH,73H,18H,0F1H,98H,31H,98HDB 30H,0F0H,30H,0F0H,30H,60H,30H,0F0H,31H,98H,33H,0FH,3EH,06H,30H,00HNONEDB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HCHANGE_RESULTDB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H_DATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:_DATA,SS:_STACKMOV AX,_DATAMOV DS,AXNOPCALL INIT_IOCALL TEST_LED ;调用测试子程序,测试LED是;显示一个16*16点阵字子程序,字型码放在DPTR指出的地址DISP_CH PROC NEAR ;把每个汉字的32个字节读完PUSH CXMOV CX,8DISP_CH_1:CALL DISP1LOOP DISP_CH_1POP CXRETDISP_CH ENDP;显示一个16*16点阵字子程序,字型码放在显示缓冲区XBUFFDISP1 PROC NEARPUSH SIPUSH CXMOV CX,16MOV BL,0FEHMOV BH,0FFHREPEAT:MOV AX,BXOUT LODSBCALL ADJUSTMOV DX,ROW1OUT DX,ALLODSBCALL ADJUSTMOV DX,ROW2OUT DX,ALCALL DL10MSCALL CLEARSTCRCL BL,1RCL BH,1LOOP REPEATPOP CXPOP SIRETDISP1 ENDPINIT_IO PROC NEARMOV AL,80HOUT RETINIT_IO ENDPCLEAR PROC NEARMOV AX,0FFFFHMOV DX,LINEMOV AL,0MOV OUT DX,ALMOV DX,ROW2OUT DX,ALRETCLEAR ENDP;测试LED子程序,点亮LED并延时1STEST_LED PROC NEARMOV DX,LINEXOR AX,AXOUT DX,AXMOV AL,0FFHMOV DX,ROW1OUT DX,ALMOV DX,ROW2OUT DX,ALCALL DL500msCALL DL500msRETTEST_LED ENDP;调整AL中取到的字型码的一个字节,将最高位调整位最低位,最低位调整为最高位ADJUST PROC NEARPUSH CXMOV CX,8ADJUST1:RCL AL,1XCHG AL,AHRCR AL,1XCHG AL,AHLOOP ADJUST1MOV AL,AHPOP CXRETADJUST ENDPDL10ms PROC NEARPUSH CXMOV CX,133LOOP $POP CXRETDL10ms ENDPDL500ms PROC NEARPUSH CXMOV CX,0FFFFHLOOP $POP CXRETDL500ms ENDPSTART ENDPCODE ENDSEND STARTCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:_DATA,SS:_STACKMOV AX,_DATAMOV DS,AXMOV ES,AXNOPCALL INIT_IOCALL TEST_LED实验十四:电子钟一、实验目的进一步熟悉8253、8259、8279二、实验内容1、使用8253定时功能,产生0.5S的定时中断给82592、在F5区的数码管上显示时间3、允许设置时钟初值三、实验步骤2、运行程序,按F5区的F键,设置时钟初值。
实验四 七段数码管显示实验报告
![实验四 七段数码管显示实验报告](https://img.taocdn.com/s3/m/595139210722192e4536f648.png)
实验四七段数码管显示实验一、实验目的掌握数码管显示数字的原理。
二、实验内容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实验总结:通过这次试验,我了解到自定义数据类型可以根据自己的需要方便设定,有很大的灵活性。
led数码管显示控制实验报告
![led数码管显示控制实验报告](https://img.taocdn.com/s3/m/aebb8de4185f312b3169a45177232f60ddcce78b.png)
led数码管显示控制实验报告实验名称:LED数码管显示控制实验实验目的:1.了解LED数码管及其工作原理。
2.学习如何控制LED数码管显示数字。
3.加强对单片机控制IO口的编程能力。
实验器材:1.STC89C52RC单片机开发板2.数码管(共阳、共阴)3.杜邦线实验原理:LED数码管是一种数字显示组件,在工业控制、计算机等领域都有广泛应用。
LED数码管在显示数字时,通过LED管来显示数字,根据不同的管脚状态,控制LED管的导通和隔离,间隔时间来控制亮和灭的时间,从而显示出不同的数字。
在STC89C52RC单片机上,通过控制IO的高低电平来控制数码管的显示。
当要显示的数字为0~9时,需要将相应的IO输出低电平,同时将其他IO输出高电平,从而实现数字的显示。
实验步骤:1.将共阳数码管的正极连接到P0口(注意极性),并将共阴数码管的负极连接到P0口(注意极性)。
2.将STC89C52RC单片机开发板连接到电源,将USB转串口线连接到电脑。
3.打开Keil uVision5软件,创建一个新工程,配置完工程后编写控制代码(具体代码见附录)。
4.编写完成后,将代码下载到单片机中,开始实验。
实验结果:成功实现了数字0到9的显示。
通过实验,我们了解了LED数码管的工作原理,学会了控制单片机IO口进行数字的显示,加强了对单片机编程的掌握能力。
附录:代码如下:```#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula = P2^6;sbit wela = P2^7;uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=114;y>0;y--);}void Display(){uchar i;for(i=0;i<10;i++){P0 = table[i]; dula = 0;dula = 1;delay(500);}}。
实验四 LED数码显示控制
![实验四 LED数码显示控制](https://img.taocdn.com/s3/m/21a98acc08a1284ac850438c.png)
实验四 LED数码显示控制
在LED数码显示控制实验区完成本实验
一、实验目的
了解并掌握置位与复位指令S、R在控制中的应用及其编程方法。
二、置位与复位指令SET、RST的介绍
S为置位指令,使动作保持;R为复位指令,使操作保持复位。
当I0.0一接通,即使再变成断开,Q0.0也保持接通。
I0.1接通后,即使再变成断开,Q0.0也将保持断开。
用R 指令可以对定时器、计数器、数据寄存器、变址寄存器的内容清零。
三、控制要求
按下启动按钮后,由八组LED发光二极管模拟的八段数码管开始显示:先是一段段显示,显示次序是A、B、C、D、E、F、G、H。
随后显示数字及字符,显示次序是0、1、2、3、
4、5、6、7、8、9、A、b、C、d、E、F,再返回初始显示,并循环不止。
四、LED数码显示控制的实验面板图:图6-4-1
LED数码显示控制面板
上图中,下框中的A、B…H分别接主机的输出点Q0.0、Q0.1…Q0.7;SD接主机的输入点I0.0。
上框中的A、B、C、D、E、F、G、H用发光二极管模拟输出。
五、编制梯形图并写出程序:
实验参考程序表6-4-1
参考梯形图如下所示:
图6-4-2
六、实验设备
1、THSMS-A型、THSMS-B型实验装置或THSMS-1型、THSMS-2型实验箱一台
2、安装了STEP7-Micro/WIN32编程软件的计算机一台
3、PC/PPI编程电缆一根
4、锁紧导线若干
七、预习要求
阅读实验指导书,复习教材中有关的内容。
八、报告要求
整理出运行和监视程序时出现的现象。
实验四 数码管显示控制
![实验四 数码管显示控制](https://img.taocdn.com/s3/m/78cd1f56a200a6c30c22590102020740be1ecdbe.png)
实验四数码管显示控制一、实验目的1、熟悉Keil uVision2软件的使用;2、掌握LED数码管显示接口技术;3、理解单片机定时器、中断技术。
二、实验设备及仪器Keil μVision2软件;单片机开发板;PC机一台三、实验原理及内容1、开发板上使用的LED 数码管是四位八段共阴数码管(将公共端COM接地GND),其内部结构原理图,如图4.1所示。
图4.1共阴四位八段LED数码管的原理图图4.1表明共阴四位八段数码管的“位选端”低电平有效,“段选端”高电平有效,即当数码管的位为低电平,且数码管的段为高电平时,相应的段才会被点亮。
实验开发板中LED数码管模块的电路原理图,如图4.2所示。
SP1a~hP0.4~P0.7SP2P0.0~P0.3图4.2 LED数码管模块电路原理图图中,当P1.0“段控制”有效时,P0.0~P0.7分别对应到数码管的a~h段。
当P1.1“位控制”有效时,P0.0~P0.7分别对应到DIG1~DIG8。
训练内容一:轮流点亮数码管来检测数码管是否正常。
参考程序:ORG 00HAJMP MAINMAIN:SETB P1.2;LED流水灯模块锁存器的控制位MOV P0,#0FFH;关闭LED灯CLR P1.2SETB P1.3 ;点阵模块的行控制锁存器MOV P0,#0 ;关闭点阵行CLR P1.3MOV A,#11111110B;数码管“位选信号”初值,低电平有效LOOP:SETB P1.1;数码管位控制锁存器有效MOV P0,ACLR P1.1RL A ;形成新的“位选信号”,为选择下一位数码管做准备SETB P1.0;数码管段控制锁存器有效MOV P0,#0FFH ;数码管的所有段点亮,显示“8”CLR P1.0CALL DELAYSJMP LOOPDELAY:MOV R5,#0;延时子程序D1: MOV R6,#0D2:NOPDJNZ R6,D2DJNZ R5,D1RETEND训练内容二:静态显示,0~9计数。
数码管显示实验报告
![数码管显示实验报告](https://img.taocdn.com/s3/m/be0dfb45e97101f69e3143323968011ca300f7db.png)
数码管显示实验报告数码管显示实验报告引言:数码管是一种常见的数字显示设备,广泛应用于各种计数、计时和显示系统中。
本实验旨在通过实际操作,了解数码管的工作原理和使用方法,并探索其在电子领域中的应用。
实验原理:数码管是由多个发光二极管组成的,每个发光二极管代表一个数字或字母。
通过控制发光二极管的亮灭来显示不同的字符。
数码管通常分为共阳极和共阴极两种类型,其差别在于亮灭控制信号的电平极性。
实验步骤:1. 准备实验材料:数码管、电路连接线、电阻、开关、电源等。
2. 按照电路图连接电路:将数码管的引脚与其他元件连接,确保电路正确无误。
3. 接通电源,观察数码管的显示效果:根据电路连接的不同,数码管将显示不同的数字或字母。
4. 通过改变电路中的元件参数,如电阻的阻值、开关的状态等,观察数码管的显示变化:可以发现数码管的亮度、显示内容等会随之改变。
实验结果与分析:经过实验,我们发现数码管的显示效果与电路连接方式、元件参数等因素密切相关。
当数码管为共阳极时,需要给对应的引脚施加高电平信号才能使其亮起;而当数码管为共阴极时,则需要给对应的引脚施加低电平信号才能使其亮起。
此外,数码管的亮度也与电阻的阻值有关。
通过改变电阻的阻值,我们可以调节数码管的亮度,使其适应不同的环境要求。
数码管还可以通过组合显示不同的字符。
例如,通过同时点亮数码管的多个发光二极管,我们可以显示出数字、字母、符号等。
这为数码管的应用提供了更多的可能性。
应用领域:数码管广泛应用于各个领域,如计时器、计数器、温度显示器、电子钟等。
在计算机硬件中,数码管也常用于显示硬盘容量、CPU温度等信息。
结论:通过本次实验,我们深入了解了数码管的工作原理和使用方法,并通过实际操作探索了其在电子领域中的应用。
数码管作为一种常见的数字显示设备,具有简单、可靠、易于控制等优点,在现代电子技术中扮演着重要的角色。
通过进一步的研究和应用,我们可以更好地利用数码管的特性,推动电子技术的发展。
2020年实验四LED数码管显示实验报告
![2020年实验四LED数码管显示实验报告](https://img.taocdn.com/s3/m/46dd6a187f1922791788e882.png)
《微机实验》报告7实验名称 LED数码管显示实验指导教师曹丹华专业班级光电122班姓名陈敬人学号联系电话一、任务要求实验目的理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容基础部分利用C851F31单片机控制数码管显示器。
利用末位数码管循环显示数字-F,显示切换频率为1Hz。
提高部分在数码管上显示→199计数,计数间隔为.5秒。
设计思路基础部分C851F31单片机片上晶振为25MHz,采用8分频后为625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达27s,可以实现1s定时要求。
定时采用软件查询工作方式,利用JNB TF, HERE实现。
置P.6和P.7端口为,位选信号选定末位数码管。
通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R自增1,并赋给A以取出下一个显示段码数据。
为减短代码长度,利用CJNE指令实现循环结构。
当寄存器R增至FH后,跳转至开头,重新开始下一轮显示。
提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。
三、资源分配基础部分P.6: 位选信号端口P.7 位选信号端口P1 输出段码数据R 存放显示数据DPTR 指向段码数据表首提高部分P.6 位选信号端口P.7 位选信号端口R 存放个位显示数据R5 存放十位显示数据R6 存放百位显示数据P1 输出段码数据DPTR: 指向段码数据表首四、流程图基础部分提高部分五、源代码(含文件头说明、语句行注释)基础部分;******************基础部分源代码*************************** ;Filename: test.asm;Decription: 末位数码管循环显示数字-F,显示切换频率为1Hz。
;Designed by: 陈敬人;Date: 2119;;- Generated Initialization File --;$include (C851F31.inc)ORG HLJMP MAINORG 1HMAIN: LCALL Init_Device ;设备初始化MOV SP, #4H ;合理设置堆栈位置MOV DPTR, #TABLE ;DPTR指向段码数据表首MOV TMOD, #1H ;定时器T工作方式1 MOV TH, #6H ;赋计数初值,定时1s MOV TL, #C6HCLR P.6 ;位选信号,选定末位数码管亮CLR P.7START: MOV R, #HMOV A, R ;取显示数据MOVC A, @A+DPTR ;查表取段码数据MOV P1, A ;送显示数据SETB TR ;启动定时器HERE: JNB TF, HERE ;等待定时CLR TR ;停止定时CLR TF ;溢出位清零MOV TH, #6H ;重装计数初值MOV TL, #C6HCJNE R, #FH, CHANGE ;判断数据是否显示完毕,未完则跳转至CHANGE SJMP START ;显示完毕,重新开始CHANGE: INC RMOV A, R ;取下一个显示数据MOVC A, @A+DPTR ;查表取段码数据MOV P1, A ;送输出显示数据SETB TR ;重新启动定时器SJMP HERETABLE: DB FCH, 6H, DAH ;段码数据表DB F2H, 66H, B6HDB BEH, EH, FEH, F6HDB EEH, 3EH, 1AHDB 7AH, 9EH, 8EH; Peripheral specific initialization functions,; Called from the Init_Device labelPCA_Init:anl PCAMD, #BFh。
实验四 LED数码显示控制
![实验四 LED数码显示控制](https://img.taocdn.com/s3/m/0ba42ada76eeaeaad1f33066.png)
实验四 LED数码显示控制一、实验目的了解并掌握移位指令在控制中的应用及其编程方法,进一步熟悉掌握程序调试的方法。
二、实验步骤1、根据程序中用到的输入输出点连接输入输出信号。
2、通过专用电缆线连接手持编程器与PLC主机(或连接电脑和PLC),逐条输入程序,检查无误后,将可编程控制器主机上的STOP/RUN按扭拨到RUN位置,运行指示灯点亮,表明程序开始运行,有关的指示灯将显示运行结果。
3、根据要求拨动输入开关(按钮),观察输出指示灯显示结果并记录。
三、控制要求启动开关闭合后,八段数码管开始显示:先是一段显示,显示次序是A、B、C、D、E、F、G、H,随后显示数字及字符,显示次序是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,再返回初始显示,并循环。
每隔1秒改变一次显示状态。
四、I/O分配输入:启动开关 X0输出:八段数码管 A B C D E F G H分别对应 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7五、参考程序(见第2页)六、思考1、请先根据控制要求自行编写程序,然后再看参考程序。
2、分析参考程序,思考问题:1)启动开关断开后再次接通,显示字符会混乱,为什么?如何解决?解决方案一:启动开关断开后停在当前状态,再接通后,接着断开前的状态显示。
解决方案二:启动开关断开后数码管全灭,再接通后,从头开始显示。
(如果觉得不好解决,也可考虑再设置一个停止信号)2)要求启动后显示数字9、8、7、6、5、4、3、2、1、0并循环,如何修改程序?(也可自行设定显示字符形状、数量、顺序)3)要求每隔2秒改变一次显示状态,如何修改?附:参考程序。
微机原理数码显示实验报告
![微机原理数码显示实验报告](https://img.taocdn.com/s3/m/a5a3ed46312b3169a451a48a.png)
广东海洋大学寸金学院学生实验报告书实验名称数码显示课程名称微机原理与接口技术系机电工程系专业机械设计制造及其自动化班级14机械2班学生姓名陈瑞玲学号20141032102 实验地点实验楼103 实验日期一、实验目的:了解LED数码管动态显示的工作原理及编程方法。
二、实验内容:编制程序,使数码管显示“GOOD88”字样。
三、实验结果:实验程序框图实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)数码管显示“GOOD88”字样。
脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。
2、数码管显示“GOOD88”字样。
实验程序清单CODE SEGMENT ;S6.ASM display "GOOD88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0HSTART0: CALL BUF1 ;缓冲区写初值CON1: CALL DISP ;调显示子程序JMP CON1 ;循环DISP: MOV AL,0FFH ; 位码MOV DX,PA ;数码管字位口OUT DX,AL ;关位码MOV CL,0DFH ; 最高位位码;显示子程序 ,5msMOV BX,OFFSET BUF ;取缓冲区首址DIS1: MOV AL,[BX] ;取缓冲区数字MOV AH,00H ;清零PUSH BX ;压栈MOV BX,OFFSET DATA1 ;字表首址ADD BX,AX ;加偏移量MOV AL,[BX] ;取字形代码POP BX ;出栈MOV DX,PB ;字形口OUT DX,AL ;送字形码MOV AL,CL ;取位码MOV DX,PA ;位口OUT DX,AL ;送位口PUSH CX ;压栈DIS2: MOV CX,00A0H ;点亮延时LOOP $POP CX ;出栈成绩指导教师日期第页,共页。
实验四 数码管显示
![实验四 数码管显示](https://img.taocdn.com/s3/m/2b4d7ce0f8c75fbfc77db25a.png)
实验四数码管显示1. 驱动原理数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理.基本的半导体数码管是由7个条状的发光二极管(LED)按图1所示排列而成的,可实现数字"0~9"及少量字符的显示。
另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,我们分别把这些发光二极管命名为 "a,b,c,d,e,f,g,dp",排列顺序如下图1。
图1:数码管引脚图及外形图2. 数码管的结构及分类特别提示:注意段码和位码的概念;会找出不同接法的段码分析方法。
数码管按各发光二极管电极的连接方式分为共阳数码管和共阴数码管两种共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
共阴数码管内部连接如图3所示。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阳数码管内部连接如图2所示。
图2:共阳数码管内部连接图图3:共阴数码管内部连接图二、多位数码管的驱动方法A.静态法静态显示驱动:静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
微机原理实验四LED数码管显示实验
![微机原理实验四LED数码管显示实验](https://img.taocdn.com/s3/m/864214a44bfe04a1b0717fd5360cba1aa8118c06.png)
微机原理实验四LED数码管显示实验LED数码管显示实验是微机原理中的一项重要实验,通过该实验可以学习到数码管的工作原理以及如何通过控制数字信号来实现数字的显示。
本文将详细介绍实验所需材料和步骤,并解析实验原理。
一、实验材料1.STM32F407开发板2.数码管模块3.面包板4.连接线5.杜邦线二、实验原理数码管是一种能够显示数字的装置,它由七个发光二极管组成,分别代表数字0-9、通过控制这七个发光二极管的亮灭,可以显示出不同的数字。
在实验中,我们使用STM32F407开发板来控制数码管。
数码管模块通过引脚与STM32F407开发板进行连接,其中共阴数码管的引脚与开发板的GPIO引脚相连,通过控制GPIO引脚的高低电平来控制数码管的亮灭。
三、实验步骤1.在面包板上连接数码管模块。
将数码管模块的引脚与STM32F407开发板的相应引脚通过杜邦线连接。
具体连接方式可以参考数码管模块和开发板的引脚定义。
2. 打开STM32CubeMX软件,创建一个新工程。
选择适合的开发板型号,并进行引脚配置。
将引脚配置为通用输出模式,并将相应的引脚定义为控制数码管的引脚。
3. 在生成的代码中找到main.c文件,在其中添加控制数码管的代码。
首先需要引入相应的头文件,并定义控制数码管的引脚宏定义。
4. 在main函数中,初始化控制数码管的引脚为输出模式。
然后通过控制引脚的高低电平来实现数码管的亮灭。
四、实验结果与分析经过以上步骤,我们成功控制了数码管的显示。
数码管显示的数字由控制引脚的高低电平确定,通过改变控制引脚的电平可以实现不同的数字显示。
值得注意的是,数码管的亮灭是通过切换引脚的电平来实现的,当引脚为高电平时,数码管熄灭;反之,当引脚为低电平时,数码管亮起。
在实际应用中,可以通过编写代码来改变控制引脚的电平,从而实现字母、字符、动画等更加复杂的显示效果。
五、实验总结本次实验通过控制STM32F407开发板的GPIO引脚,成功实现了LED数码管的显示。
(完整版)LED数码管显示实验
![(完整版)LED数码管显示实验](https://img.taocdn.com/s3/m/a9a2c96ac1c708a1294a4484.png)
® P L 信息工程学院实验报告课程名称:单片机原理及接口 实验项目名称:LED 数码管显示实验 实验时间:2016年3月11 班级:通信141姓名:学号:一、 实验目的:熟悉keil 仿真软件、proteus 仿真软件、软件仿真板的使用 多位LED 数码管的电路结构、与单片机的连接方法及其应用原理。
学习proteus 构建LED 数码管显示电路的方法,掌握C51中单片机控制LED 数码管动态显示的原理与编程方法。
二、 实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51单片机仿真调试软件,proteus 系列仿真调试软件三、 实验原理LED 显示器是由发光二极管显示字段的显示器件。
在单片机应用系统中通常使用的是七 段LED 这种显示器有共阴极与共阳极两种共阴极LED 显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发 光二极管则点亮;共阳极LED 显示器的发光二极管阳极并接。
七段LED 数码管与单片机连接时,只要将一个 8位并行输出口与显示器的发光二极管引成绩:日 ___________________指导老师(签名):了解并熟悉一位数码管与1 1 1 1 110 98 7 6/d / * dp 1 2 34 5I' 2 1 11(c)管脚配置(b)共阳极 g f a be d c dp脚相连即可。
8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制 发光二极管的8位字节数据称为段选码。
多位七段LED 数码管与单片机连接时将所有 LED 的段选线并联在一起,由一个八位I / O 口控制,而位选线分别由相应的I /O 口线控制。
如:8位LED 动态显示电路只需要两个八位 I /O 口。
其中一个控制段选码,另一个控制位选。
由于所有位的段选码皆由一个I /0控制,因此,在每个瞬间,多位LED 只可能显示相同 的字符。
要想每位显示不同的字符,必须采用动态扫描显示方式。
实验四 数码管的动态显示实验
![实验四 数码管的动态显示实验](https://img.taocdn.com/s3/m/787359523b3567ec102d8a4d.png)
实验四数码管的动态显示实验班级通信1102 姓名谢剑辉学号20110803223 指导老师袁文澹一、实验目的熟悉掌握数码管动态显示的基本方法;根据已知电路和设计要求在实验板上实现数码管动态显示。
根据已知电路和设计要求在PROTEUS平台仿真实现控制系统。
二、实验内容1、在STC89C52实验平台的4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容。
2、思考:如何实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣。
三、实验原理实验要求“4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容”。
动态扫描可以实现要求。
简单地说,动态扫描就是选通一位,送一位数据。
原理图中的P10~P13是位选信号,即选择哪个数码管显示数字;P00~P07是段码,即要显示的数字。
可以通过依次选通一位7段数码管并通过P0端口送出显示数据。
由于人眼的视觉残留原理,如果这种依次唯一选通每一位7段数码管的动作在0.1s内完成,就会造成多位数码管同时点亮显示各自数字的假象。
本实验使用中断,实现每2s更新一次数字。
四、实验方法与步骤设计思路和方法:1、根据电路图,分析数码管动态显示的设计思路,使用中断实现每2秒更新一次数字的设计思路,以及实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣的设计思路。
(1)数码管动态显示的原理如“实验原理”里所述,不赘述;(2)使用中断实现每2s更新一次数字的设计思路:本次实验使用Timer0中断,由于其定时时间最大为65536us,不能实现2s的长延时,那么可以使用多次中断来实现,并且在中断到来时,不断地死循环显示数字,即根据动态显示原理“选通一位,来一位数据”。
由于最大的数字为9,则(x%10),(x+1)%10,(x+2)%10,(x+3)%10分别是千位,百位,十位,个位上的数字。
数码管实验报告实验原理(3篇)
![数码管实验报告实验原理(3篇)](https://img.taocdn.com/s3/m/cdf3e28c5ff7ba0d4a7302768e9951e79b896992.png)
第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. 了解数码管的工作原理和驱动方式。
实验四—— LED灯和数码显示器的中断控制
![实验四—— LED灯和数码显示器的中断控制](https://img.taocdn.com/s3/m/12f59673168884868762d6f2.png)
实验课程:单片机原理及应用实验名称: 实验四—— LED灯和数码显示器的中断控制实验日期: 2013 年 4 月 11 日一、实验目的掌握外部中断的工作原理,学会中断程序设计。
二、实验内容1、按图绘制实验四电路原理图:2、采用外部中断原理编程,按键K1、K2均设置为下降沿触发方式,且为自然优先级:3、编写实验四C51程序,实现如下功能:K1对应于D1状态反转: K2对应于0 F间的数码管加一计数显示:3、观察仿真结果,完成实验报告。
三、实验要求提交的实验报告中应包括:电路原理图,外部中断工作原理阐述,源程序, 运行效果图,实验小结。
提交实验报告的电子邮件主题及存盘1、电路原理图(含电路分析)图1 实验原理图电路分析:图1为实验原理图。
电路由80C51芯片,两个开关K1、K2,电阻,LED灯,LED显示器组成。
其中LED显示器接在P2.0~P2.6上并采用共阴极接法,上拉电阻及LED灯接在P0.2,因为P0口内部没有上拉电阻,为使漏极开路有效,必须通过外接上拉电阻与电源连通。
K1、K2分别接INT0:P3.2)和INT1:P3.3)引脚,公共端接地,单击后可产生下降沿脉冲:D1接P0.4引脚,高电平驱动 ,通过上拉电阻接电源:共阴极数码管LED1接P2口,静态显示。
2、外部中断工作原理阐述:以K1为例)当K1按下后,外部中断信号由INT0引脚传送进来。
外部中断电源可以分为两种控制方式,即电位触发式和下降沿触发式,试验中使用的是脉冲触发,即下降沿出发。
下降沿中断方式是INT0引脚由1变化到0的瞬间产生中断,而此时IE0置1,工作标志设定,此工作标志会一直保留着,知道执行完中断服务程序后才会清除。
K1接于端口P3.2,按压后的电平负跳变可分别产生INT0中断请求。
INT0中断响应后取端口P0.4电平,使指示灯D1的状态反转。
3、C51程序:含流程图与注释语句)程序流程图如图2图2 程序流程图C51程序:#include<reg51.h>charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5 e, 0x79,0x71}; //定义字符型数组变量led_mode,并初始化为字符0~F的共阴极显示码sbit P0_4=P0^4; //定义P0.4口为可位寻址型变量P04int count=0; //定义字符型计数器变量count:并初始化为0int0_key() interrupt 0{ //定义K1的中断函数int0_keyP0_4=!P0_4; //取反P04}int1_key() interrupt 2 { //定义K2的中断函数int1_keycount++; //计数变量count增1if(count>0x0f) //如果count值超过0x0f:则count恢复0值count=0;P2=led_mod[count]; //P2口输出count值的显示码}void main() //定义主函数{IT0=1;EX0=1;EA=1; //设置脉冲触发方式:外部中断允许:总终端允许 IT1=1;EX1=1;P0_4=0; //P0.4灭灯P2=0x3f; //P2口显示字符“0”while(1); //程序原地循环}4、仿真运行效果图3为仿真运行效果图。
微机原理实验四LED数码管显示实验_图文(精)
![微机原理实验四LED数码管显示实验_图文(精)](https://img.taocdn.com/s3/m/4dfcdbc9195f312b3169a5fa.png)
实验名称 LED数码管显示实验指导教师专业班级姓名学号联系方式一实验要求:实验四 LED数码管显示实验实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
提高要求:在数码管上显示0→199计数,计数间隔为0.5秒。
二、设计思路1 基本要求:对F310信号频率进行8分频,再对定时器进行48分频,以使在一次定时时间范围内实现1s定时。
采用查询方式进行定时。
P0.6,P0.7作为位选信号来一直选择末位数码管输出信号。
再利用R0作为相对寻址来储存数据并赋值给A。
通过MOVCA, @A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R0自增1,并赋给A以取出下一个显示段码数据。
2 提高要求:依然对信号频率八分频,对定时器进行48分频,通过P0,6,P0.7进行位控选择数码管输出,定时器定时0.5s,当溢出时进入中断,并通过中断程序将段位控制按序加一,R3,R6,R7分别储存第一第二第三位数码管段位码,利用A 为中间变量,通过P1输出储存的值,查表输出数码管值,达到119时结束。
三、资源分配1 基本要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首2 提高要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据DPTR:指向段码数据表首R3,R6,R7:分别储存第三第二第一位数码管数据四、流程图1 基本要求2 提高要求: 主程序接--2 提高要求:动态扫描程序中断程序五、源代码(含文件头说明、语句行注释1 基本要求:ORG 0000HLJMP MAINORG 0100HMAIN:LCALL Init_DeviceMOV SP,#40HMOV DPTR,#TAB ;将DPTR地址指向表头MOV TMOD,#01H ;定时器采用T0定时方式一MOV TH0,#06H ;定时器赋予初值MOV TL0,#0C6HCLR P0.6 ;选择末位数码管CLR P0.7START:MOV R0,#00H ;赋初值0CLR AMOVC A,@A+DPTR ;查表输出MOV P1,ASETB TR0 ;定时器开始工作HERE:JNB TF0,HERE ;等待溢出CLR TR0CLR TF0MOV TH0,#06H ;重新赋予初值MOV TL0,#0C6HCJNE R0,#0FH,NEXT ;等待末位数码管到FSJMP STARTNEXT:INC R0 ; R0加一MOV A,R0MOVC A,@A+DPTRMOV P1,A ;P1输出SETB TR0SJMP HERE ;踏步org 1000hTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB0FEH,0E6H,0EEH,3EH,1AH,7AH,9EH,8EH;------------------------------------;- Generated Initialization File --;------------------------------------$include (C8051F310.incpublic Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions, ; Called from the Init_Device label PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P1MDOUT, #0FFhmov P2MDOUT, #0C0hmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main program Init_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND2 提高部分:ORG 0000HLJMP STARTORG 000BHLJMP TI00ORG 0300HSTART:LCALL Init_DeviceMOV R3,#00H ;百位数码管赋予初值MOV R6,#00H ;十位数码管赋予初值MOV R7,#01H ;个位数码管赋予初值MOV 60H,#00H ;设置位控码MOV 61H,#40HMOV 62H,#80HMOV TMOD, #01H ;选择定时器T0方式一SETB ET0 ;开外中断T0SETB EAMOV TH0, #131 ;定时器赋予初值MOV TL0, #99MAIN:LJMP DISP ;跳入动态输出子程序MAIN1:LCALL COUNTERAJMP MAIN ;重新扫描;=================动态输出子程序================== DISP:MOV SP,#30H ;设置堆栈指针MOV R1,#60H ;位选指针赋初值MOV P1,#00H ;灯全灭;=================LD0:MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位ORL P0,A ;输出位选信号MOV A,R7 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1 ;位选指针加一MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位ORL P0,A ;输出位选信号MOV A,R6 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位ORL P0,A ;输出位选信号MOV A,R3 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭LJMP MAIN1 ;返回主程序;===============延时1ms子程序=============ORG 0050HDL1MS:MOV R4,#4 ;延时程序通过R4,R5 实现D1:MOV R5,#253NOPDJNZ R5,$DJNZ R4,D1RETORG 0100HCOUNTER:SETB TR0 ;定时器开启RET;中断程序TI00:MOV TH0, #133 ;中断程序重新赋予初值MOV TL0,# 99INC R7 ;个位加一CJNE R7,#0BH,S1 ;判断个位是否进位MOV R7,#01H ;重新将个位归零CJNE R6,#00H,S2 ;判断此时十位是否显示MOV R6,#01H ;若不显示则开启显示S2:INC R6 ;十位加一CJNE R6,#0BH,S1 ;判断十位是否进位CJNE R3,#00H,S3 ;判断百位是否显示MOV R3,#01HS3:INC R3 ;百位加一MOV R6,#01H ;十位重新归零CJNE R3,#03H,S1 ;判断百位是否到2MOV P1,#00H ;如果到200则数码管全熄灭SJMP $ ;踏步停止S1:RETI ;中断返回ORG 0200H;===============段选码表==============;TAB: DB 00H,0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H; $include (C8051F310.incpublic Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions,; Called from the Init_Device labelPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Push-Pull, Digital ; P0.7 - Unassigned, Push-Pull, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 -Unassigned, Open-Drain, Digital ; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P0MDOUT, #0C0hmov P1MDOUT, #0FFhmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main programInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND六程序测试方法与结果、软件性能分析1 基本要求:测试方法:观察P1端口输出波形由图可知,LED数码管切换频率为1HZ,跑完一轮经过16s,满足定时要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称 LED数码管显示实验指导教师专业班级姓名学号联系方式一实验要求:实验四 LED数码管显示实验实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
提高要求:在数码管上显示0→199计数,计数间隔为0.5秒。
二、设计思路1 基本要求:对F310信号频率进行8分频,再对定时器进行48分频,以使在一次定时时间范围内实现1s定时。
采用查询方式进行定时。
P0.6,P0.7作为位选信号来一直选择末位数码管输出信号。
再利用R0作为相对寻址来储存数据并赋值给A。
通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R0自增1,并赋给A以取出下一个显示段码数据。
2 提高要求:依然对信号频率八分频,对定时器进行48分频,通过P0,6,P0.7进行位控选择数码管输出,定时器定时0.5s,当溢出时进入中断,并通过中断程序将段位控制按序加一,R3,R6,R7分别储存第一第二第三位数码管段位码,利用A 为中间变量,通过P1输出储存的值,查表输出数码管值,达到119时结束。
三、资源分配1 基本要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首2 提高要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据DPTR:指向段码数据表首R3,R6,R7:分别储存第三第二第一位数码管数据四、流程图1 基本要求2 提高要求:主程序接--2 提高要求:动态扫描程序中断程序五、源代码(含文件头说明、语句行注释)1 基本要求:ORG 0000HLJMP MAINORG 0100HMAIN:LCALL Init_DeviceMOV SP,#40HMOV DPTR,#TAB ;将DPTR地址指向表头MOV TMOD,#01H ;定时器采用T0定时方式一MOV TH0,#06H ;定时器赋予初值MOV TL0,#0C6HCLR P0.6 ;选择末位数码管CLR P0.7START:MOV R0,#00H ;赋初值0CLR AMOVC A,@A+DPTR ;查表输出MOV P1,ASETB TR0 ;定时器开始工作HERE:JNB TF0,HERE ;等待溢出CLR TR0CLR TF0MOV TH0,#06H ;重新赋予初值MOV TL0,#0C6HCJNE R0,#0FH,NEXT ;等待末位数码管到FSJMP STARTNEXT:INC R0 ; R0加一MOV A,R0MOVC A,@A+DPTRMOV P1,A ;P1输出SETB TR0SJMP HERE ;踏步org 1000hTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0E6H,0EEH,3EH,1AH,7AH,9EH,8EH;------------------------------------;- Generated Initialization File --;------------------------------------$include (C8051F310.inc)public Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions, ; Called from the Init_Device labelPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P1MDOUT, #0FFhmov P2MDOUT, #0C0hmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main programInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND2 提高部分:ORG 0000HLJMP STARTORG 000BHLJMP TI00ORG 0300HSTART:LCALL Init_DeviceMOV R3,#00H ;百位数码管赋予初值MOV R6,#00H ;十位数码管赋予初值MOV R7,#01H ;个位数码管赋予初值MOV 60H,#00H ;设置位控码MOV 61H,#40HMOV 62H,#80HMOV TMOD, #01H ;选择定时器T0方式一SETB ET0 ;开外中断T0SETB EAMOV TH0, #131 ;定时器赋予初值MOV TL0, #99MAIN:LJMP DISP ;跳入动态输出子程序MAIN1:LCALL COUNTERAJMP MAIN ;重新扫描;=================动态输出子程序==================DISP:MOV SP,#30H ;设置堆栈指针MOV R1,#60H ;位选指针赋初值MOV P1,#00H ;灯全灭;=================LD0:MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位)ORL P0,A ;输出位选信号MOV A,R7 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1 ;位选指针加一MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位)ORL P0,A ;输出位选信号MOV A,R6 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位)ORL P0,A ;输出位选信号MOV A,R3 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭LJMP MAIN1 ;返回主程序;===============延时1ms子程序=============ORG 0050HDL1MS:MOV R4,#4 ;延时程序通过R4,R5 实现D1:MOV R5,#253NOPDJNZ R5,$DJNZ R4,D1RETORG 0100HCOUNTER:SETB TR0 ;定时器开启RET;中断程序TI00:MOV TH0, #133 ;中断程序重新赋予初值MOV TL0,# 99INC R7 ;个位加一CJNE R7,#0BH,S1 ;判断个位是否进位MOV R7,#01H ;重新将个位归零CJNE R6,#00H,S2 ;判断此时十位是否显示MOV R6,#01H ;若不显示则开启显示S2:INC R6 ;十位加一CJNE R6,#0BH,S1 ;判断十位是否进位CJNE R3,#00H,S3 ;判断百位是否显示MOV R3,#01HS3:INC R3 ;百位加一MOV R6,#01H ;十位重新归零CJNE R3,#03H,S1 ;判断百位是否到2MOV P1,#00H ;如果到200则数码管全熄灭SJMP $ ;踏步停止S1:RETI ;中断返回ORG 0200H;===============段选码表==============;TAB: DB 00H,0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H; $include (C8051F310.inc)public Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions,; Called from the Init_Device labelPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Push-Pull, Digital ; P0.7 - Unassigned, Push-Pull, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P0MDOUT, #0C0hmov P1MDOUT, #0FFhmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main programInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND六程序测试方法与结果、软件性能分析1 基本要求:测试方法:观察P1端口输出波形由图可知,LED数码管切换频率为1HZ,跑完一轮经过16s,满足定时要求。