微机原理数码显示实验报告
微机原理-数码转换实验报告
微机原理-数码转换实验报告-CAL-FENGHAI.-(YICAI)-Company One1实验九数码转换一、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
二、实验内容1、ACSII码转换为非压缩型BCD码2、BCD码转换为二进制码3、十六进制数转换为ASCII码三、实验1、ACSII码转换为非压缩型BCD码DATA SEGMENT PARA 'DATA'DATA1 DB 8 DUP()DATA2 DB 8 DUP()DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,SEG DATA1MOV DS,AXMOV DX,DATAMOV AH,0AHINT 21HLEA SI,DATA1MOV CL,[SI+1]LEA DI,DATA2ADD SI, 2CHK: MOV AL,[SI+2]CMP AL, '0'JB L01CMP AL, '9'JA L01SUB AL,30HMOV BL,ALMOV [DI], BLINC SIINC DIDEC CXJNZ CHKL01: MOV BL, 0FFHLOOP CHKMOV AH,4CH INT 21H CODE ENDSEND START2、BCD码转换为二进制码DATA SEGMENTBCD DB 1,2,3,4,5A DWDATA ENDSSTACK SEGMENT PARA STACK''STACK''STAPN DW 50 DUP()STACK ENDSCODE SEGMENTMAIN PROC FARASSUME DS:DATA,CS:CODE,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXCALL CONVERTMOV A,BXRETMAIN ENDPCONVERT PROC NEARPUSH SIPUSH CXPUSH AXMOV SI,4L1:MOV AL,BCD[SI]CBWXCHG AX, BXMOV CX,10DMUL CXXCHG AX,BXADD BX,AXDEC SIJNZ L1POP AXPOP CXPOP SIEXIT:MOV AH,4CH INT 21H CONVERT ENDP CODE ENDSEND START3、十六进制数转换为ASCII码DATA SEGMENTDATA1 DW 2010HDATA2 DB 4 DUP()DATA ENDSSTACKS SEGMENT PARA STACK 'STACK'STACKS ENDSCODES SEGMENTASSUME SS:STACKS,CS:CODESASSUME DS:DATASSTART: MOV AX, DATAMOV DS, AXLEA SI, DATA1MOV AX, [SI]MOV CL, 12SHR AX, CLMOV BL, ALCALL ASCMOV DATA2, BLCALL XSMOV AX, [SI]MOV CL, 8SHR AX, CLAND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+1, BLCALL XSMOV AX, [SI]MOV CL, 4SHR AX, CLAND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+2, BLCALL XSMOV AX, [SI]AND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+3, BLCALL XSMOV AH, 4CHINT 21HASC PROCCMP BL, 0AH JC LPADD BL, 07H LP: ADD BL, 30H RETASC ENDPXS PROCMOV DL, BL MOV AH, 02H INT 21HRETXS ENDPCODE ENDSEND START4、六进制数转换为十进制DATAS SEGMENTSTRING1 DB 0DH,0AH,'$'STRING2 DB 0DH,0AH,'$'DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV DX,OFFSET STRING1MOV AH,9INT 21HMOV CL,10HMOV BX,0NEWCHAR:MOV AH,1INT 21HSUB AL,30HJB DISPCBWXCHG AX,BXMOV CH,0MUL CXXCHG AX,BXADD BX,AXJNC NEWCHARDISP:MOV DX,OFFSET STRING2MOV AH,9INT 21HMOV CX,10000AGAIN:MOV DX,0MOV AX,BXDIV CXMOV BX,DXMOV DL,ALADD DL,30HCMP DL,39HJLE NEXTADD DL,7H NEXT:MOV AH,2INT 21HMOV DX,0MOV AX,CXMOV CX,10DIV CXMOV CX,AXCMP CX,0JNZ AGAINMOV AH,4CH INT 21H CODES ENDS END START5、十进制转换成七段码DATA SEGMENTDATA1 DB 3,4TABLE DB 23H,56H,42H,75H,00H,24H,67H,39H,20H DATA2 DB 2 DUP()DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA ST: MOV DI, OFFSET BUFDAMOV CL, 80HMOV BX, OFFSET TABLE DISI: MOV BL, [DI+0]MOV AX, BXXLATMOV DX, PORTSEGOUT DX, ALMOV AL, CLMOV DX, PORTBITOUT DX, ALPUSH CXMOV CX, 30HDELAY: LOOP DELAYPOP CXCMP CL, 20HJZ QUITINC DISHR CL, 1JMP DISIQUITCODE ENDSEND ST。
微机原理实验1-LED显示实验
▼
4位LED显示的操作为:
2Y1选中左边两个数码管
2Y0选中右边两个数码管
2Y3选中四个小数点
此处的8,4,2,1表示每 一位的权值,如果该位 亮,则加上该值
根据需要,小数点可以多位同时显示( 0~4位)
在LED上如何显示数字
1,要显示数字0,1,…,9的任一个,则送出 相应数字对应的十六进制数即可.例如要显示 12 12,则向EPP数据端口37CH送出12H; EPP 37CH 12H; 2,如果送出的数字为0AA~0FFH, 则LED灭;
▼
LED显示实验电路 实验箱主板上的四位共阴极LED显示器采 用四片CD4511(BCD-七段锁存译码器) 来驱动 .其原理图如下:
CD4511
2Y1 D4~D7 D0~D7 2Y1
CD4511
2Y0 D0~D3
CD4ห้องสมุดไป่ตู้11
2Y0 D4~D7
CD4511
74LS273
2Y3
D0~D3
D0~D3
本实验共用到的端口地址及其功能介绍
�
LED显示演示程序
1,初始化EPP接口(即向控制寄存器写 初始化字节) MOV AL, 04H MOV DX, 37AH OUT DX, AL ;EPP初始化
LED显示演示(续)
2,选择外部设备(即向EPP地址端口写设备地 址) MOV AL, XXH MOV DX, 37BH OUT DX, AL ;选中左边两个LED
微机原理综合实验报告(LED横向滚动显示(方向修改)、电子钟修改实验)
微机原理上机实验报告综合实验: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键,设置时钟初值。
数码显示控制实验报告(3篇)
第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
数码显示实验报告
一、实验目的1. 熟悉数码管的结构和工作原理。
2. 掌握数码管与单片机的连接方法。
3. 学习使用动态扫描显示技术实现多位数码管的显示。
4. 培养动手能力和编程能力。
二、实验原理数码管是一种常用的显示器件,由多个发光二极管组成,通过控制发光二极管的亮与灭来显示数字、字母或符号。
本实验采用共阴极数码管,当对应的段码为低电平时,该段发光。
三、实验设备1. 单片机实验箱一台2. 共阴数码管8位3. 电阻若干4. 连接线若干5. 编译器(如Keil uVision)6. 仿真软件(如Proteus)四、实验内容1. 实验电路搭建根据实验原理图,连接单片机、数码管、电阻等元件。
具体连接方法如下:(1)将单片机的P0口与数码管的段码相连。
(2)将单片机的P1口与数码管的位选相连。
(3)将数码管的公共阴极与地相连。
(4)将电阻分别串联在数码管的段码和位选上,用于限流。
2. 编写程序(1)初始化单片机IO口,将P0口设置为输出模式,P1口设置为输出模式。
(2)编写数码管显示函数,根据输入的数字,计算对应的段码,并输出到P0口。
(3)编写动态扫描显示函数,按照一定的时间间隔依次显示各个数码管。
3. 编译程序使用Keil uVision编译器将编写的程序编译成hex文件。
4. 仿真实验使用Proteus软件进行仿真实验,观察数码管显示效果。
五、实验步骤1. 搭建实验电路。
2. 编写程序,实现数码管显示功能。
3. 编译程序,生成hex文件。
4. 在Proteus软件中导入hex文件,进行仿真实验。
5. 观察数码管显示效果,分析实验结果。
六、实验结果与分析1. 实验结果通过仿真实验,数码管能够按照程序的要求显示数字、字母或符号。
2. 实验分析(1)数码管显示原理:数码管通过控制发光二极管的亮与灭来显示数字、字母或符号。
当对应的段码为低电平时,该段发光。
(2)动态扫描显示原理:动态扫描显示是通过依次点亮各个数码管,使多位数码管同时显示。
微机原理实验报告(数码显示)
实验三8255并行接口实验一、实验目的1、学习并掌握8255的工作方式及其应用。
2、学习在系统接口实验单元上构造实验电路。
二、实验设备TDN86/51或TND86/88教学实验系统。
三、实验内容与实验步骤1、基本输入输出实验。
编写程序,使8255的A口为输入,B口为输出,完成波动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
实验原理:并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图3-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图3-2所示。
图3-1 8255的内部结构和外部引脚(a)工作方式控制字(b)c口按位置位/复位控制字图3-2 8255控制字格式8255实验单元电路图如下图所示:图3-3 8255实验单元电路图实验步骤1. 基本输入输出实验本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
(1)按图连接实验线路图;8255基本输入/输出实验接线图SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,82HOUT 63H, ALA1: IN AL, 61HOUT60H, ALJMPA1CODE ENDSEND START(2)编写实验程序,经编译、连接无误后装入系统;(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
(4)点机“调试”下拉菜单中的“固定程序”项,将程序固化到系统存储器中。
数码显示控制plc实验报告
数码显示控制在PLC(可编程逻辑控制器)中的实验报告通常包括以下几个部分,以记录实验的目的、步骤、结果和结论。
下面是一个示例实验报告的大纲:实验报告标题:数码显示控制在PLC中的应用1. 引言实验的背景和目的:解释为什么进行这个实验以及希望达到的目标。
实验的重要性:说明数码显示在工业自动化中的应用和重要性。
2. 实验设备和材料列出所使用的PLC型号和品牌。
列出所使用的数码显示设备。
提供任何其他实验所需的特殊设备或材料。
3. 实验步骤详细描述实验的步骤。
包括:连接PLC和数码显示设备的方式。
编写和上传PLC程序的步骤。
在PLC程序中配置和控制数码显示的部分。
4. 实验结果提供实验中获得的数据和观察结果。
包括数码显示设备上显示的内容,以及PLC控制该内容的情况。
可以包括图表、表格或示意图,以更清晰地展示结果。
5. 分析与讨论对实验结果进行分析和解释。
讨论PLC如何控制数码显示的内容。
分析实验中可能出现的问题和解决方法。
6. 结论总结实验的主要发现和结果。
强调实验是否达到了预期的目标。
提出进一步的改进或研究方向建议。
7. 致谢针对提供实验设备和支持的个人或机构表示感谢。
8. 参考文献引用在实验中使用的任何参考资料或文献。
9. 附录包括实验中使用的程序代码、PLC配置文件或其他重要的附加信息。
请注意,这只是一个实验报告的大纲示例,具体的实验报告可能会根据实验的性质和要求有所不同。
在编写实验报告时,确保按照实验室或学院的要求进行格式和样式的设置。
此外,实验报告应具体描述实验步骤和结果,以便读者理解实验的进行和结果的含义。
微机原理实验1-LED显示实验
实验一基于EPP接口的LED显示一、实验目的1.掌握EPP接口的输入/输出及读/写操作。
-2.熟悉整个综合实验板的地址分配。
3.掌握七段LED显示器与硬件的接口方法。
4. 熟悉LED显示操作。
二、实验任务1.分析实验电路图,指出各输入/输出口地址。
2.编写LED显示的程序并调试通过。
三、实验原理本实验板上的LED可以显示四位数字,实验的原理图如图1-8所示。
数据线图1-8 七段LED显示原理图七段LED显示器由a、b、c、d、e、f、g及小数点h八个发光二极管构成。
根据内部结构可分为共阴、共阳两种方式,如图所示。
七段显示器可显示16进制数(0~F),还可显示部分英文字母和专用字符。
对于共阴方式,下面列出了16进制数0~F的七段代码:表1-3 七段LED显示代码根据所要显示的字符到显示代码的转换,可由硬件来完成。
本实验电路用CD4511(BCD-七段锁存译码器)来完成代码转换。
LED显示驱动方式可分为静态和动态两种,在静态显示方式下,每一位七段显示占用一个8位输出口。
而在动态显示方式下,若干个显示位共用一个输口,根据人眼视觉残余效应快速的逐位显示(扫描),而达到感觉上连续显示的效果。
因此,静态显示的硬件开销较大,而软件简单,一般用于显示位数少的场合;动态显示的硬件较简单,因为需要进行动态扫描而软件较复杂,一般用于显示位数较多的场合。
本实验电路板采用的是静态显示的方法,动态显示大家有兴趣可以去查相关资料。
如图1-8 所示的四位静态LED显示原理图,前两位的锁存使能来自同一个信号ADO1,数据的高四位送入第一位的锁存译码器中,低四位送入第二位的锁存译码器中;后两位的锁存使能来自同一个信号ADO0,数据的高四位送入第三位的锁存译码器中,低四位送入第四位的锁存译码器中。
因此每次同时点亮两位LED。
ADO3为用于控制小数点的4位锁存器4076的时钟信号,数据的低四位用来选择点亮哪一位小数点。
本实验电路共用到了三个端口地址:0x00H:ADO0(输出口),用作后两位显示译码驱动器4511的锁存使能信号。
微机原理键盘控制与显示实验报告
4. 了解如何使用GpbA 口进行数据的锁存5. 通过实验掌握TMS320F2812的扩展端口接收外围设备信息的方法6.了解键盘的使用原理及编程方法【实验内容】1. 按键显示程序,对按键记录次数,以二进制显示在2.定时器编程,并用按键控制各位时分秒,使其能完成加减操作【实验仪器】TMS320F2812 数字信号处理器与学生用集成板。
【实验步骤】1.撰写代码河沪必叨实验报告课程名称: _________ 微机原理(实验) 实验名称: ________ 键盘控制与显示 一、实验目的和要求(必填) 三、主要仪器设备(必填) 五、实验数据记录和处理 七、讨论、心得____________ 指导老师: _____ 徐习东 专业:电气工程及其自动化 姓名: ___________学号: _________ 日期: __________ 地点: ________________________ 成绩: _____________________________ 实验类型: ______ 软件实验 ________ 同组学生姓名: _______________二、实验内容和原理(必填) 四、操作方法和实验步骤 六、实验结果与分析(必填)【实验目的】1. 通过实验掌握TMS320F2812通用输入/输出管脚直接控制外围设备的方法2. 了解发光二极管的控制编程方法。
3. 了解SPI 的使用。
16 个 LED ±o2.调试代码3.实现功能【实验代码】一、定时器①宏定义和全局变量定义#mclude "DSP28lx_Device .h"1LEDReg;KeyReg1;1 - 0;Ct rl;Sec=O;Min=O;Hor=J;Light [8];分析:这段代码是初始宏定义,用于定义按键对应的编码与地址, 秒,按键编码,LED编码和控制位。
②共阳字形码Uintlfi^EDCode'[30] ■ { 0xc000,bxf900r OxA4GO^OxBOOO,0x9900,0x9200,0x8200,OxEBOa,0x8000r0x9000r0x8600,Ox8300P0xc600,Oxa 100,0x8600,0x8000^ OxScOf rOxbfOQ r Oxa7GO r Oxff00,0x4000,0x7900,0x2400,0x3000, Ox1900,0x1200.0x0200.0x7800,O K OOOO,Ox 1000};分析:由于这次实验要用到数码管,所以我们要定义一个数码管共阳端字形码,使每一个代码对应一种显示状态。
数码显示电路实验报告
数码显示电路实验报告实验名称:数码显示电路实验目的:学习和掌握数码显示电路的基本原理和实现方法。
实验原理:数码显示电路是将数字信号转换为数字显示的电路。
主要组成部分包括数码管、编码器、驱动电路等。
数码管是一种数字显示器件,可以将数字信号转换为数字显示。
常用的数码管有共阳数码管和共阴数码管两种。
共阳数码管是在阳极加电的情况下,通过在不同的阴极上加电,实现所需数字的显示;共阴数码管则是在阴极加电的情况下,通过在不同的阳极上加电,实现数字的显示。
编码器用来将数字信号转换为数码管所需的控制信号。
常用的编码器有BCD编码器和二进制编码器。
BCD编码器将数字信号转换为BCD码,即4位二进制码,以控制数码管的阴阳极的开关;二进制编码器则是将数字信号转换为二进制码,以控制数码管不同的选通。
驱动电路用来提供数码管所需的电流,以实现数字的显示。
常用的驱动电路有共阴极驱动和共阳极驱动两种。
共阴极驱动是将阴极接地,通过在不同的阳极上加电,实现数字的显示;共阳极驱动则是将阳极接地,通过在不同的阴极上加电,实现数字的显示。
实验器材:数字万用表、信号发生器、BCD编码器、共阳数码管/共阴数码管、电阻、电容、运放等。
实验步骤:1. 根据实验所需,选择合适的数码管、编码器和驱动电路,组成数码显示电路。
2. 连接电路,接通电源。
3. 发送数字信号,观察数码管的显示效果。
4. 尝试不同的数字信号,观察数码管的不同显示效果。
实验结果:通过实验,我们成功搭建了数码显示电路,并实现了数字信号的数字显示。
总结与分析:数码显示电路是数字电路中的基础电路之一,也是实际工程中常用的电路之一。
通过本次实验,我们深入了解了数码显示电路的基本原理和实现方法,并成功实现数字信号的数字显示。
在实际工程中,数码显示电路经常用来显示各种测量值、计数值等,具有广泛的应用前景。
微机原理实验报告
微机原理实验报告微机原理实验报告⽬录⼀、专项实验题⽬ (3)实验1 拨动开关和LED显⽰实验 (3)实验 2 六位数码管显⽰实验 (3)实验 5 8254定时/计数器实验 (4)实验 6 8259中断控制器实验 (5)实验12 继电器实验 (6)实验18 直流电机实验 (7)⼆、实验题⽬:保安监控控制系统(三) (8)三、题⽬分析: (8)四、原理分析: (9)五、时间模块 (9)六、中断模块 (10)七、显⽰模快 (10)⼋、程序框图:进⼊报警状态 (11)九、电路图 (12)⼗、程序清单 (12)⼗⼀、实验结果 (13)⼗⼆、总结及体会 (17)⼀、专项实验题⽬:实验1 拨动开关和LED显⽰实验【实验⽬的】掌握使⽤8255并⾏接⼝连接拨动开关,控制LED显⽰输出的技术。
【实验内容】按图3-2将8255端⼝A与8位拨动开关连接,8255端⼝B与8位LED连接,选择8255 为⽅式0⼯作,编程序完成LED实时显⽰开关状态的功能,即每位LED对应⼀位开关状态。
开关往下拨动,对应LED灭,开关往上拨动,对应LED点亮。
编程涉及8255端⼝地址有四个,由于8255⽚选信号线与地址译码区的0~FH 连接,即8255的I/O偏移地址为0~3,加上前⼀个实验所获知的I/O基址,两者相加之后才是最终访问8255的I/O地址。
注意,该地址⼀定是⼀个16位数,所以I/O操作要使⽤IN AL,DX 和OUT DX, AL指令。
【实验电路】【实验流程】实验 2 六位数码管显⽰实验【实验⽬的】了解共阴级数码管显⽰数字的原理,掌握六位共阴级数码管动态显⽰的控制⽅法。
【实验内容】0-9数字按照从右到左的顺序在6位数码上循环步进显⽰,即0从最右端开始显⽰,然后按⼀定间隔时间向左步进移动显⽰,显⽰到数码管最左端后变换数字,然后按同样⽅法显⽰1、2….9,以此循环往复。
【实验电路】【实验流程】实验 5 8254定时/计数器实验【实验⽬的】熟悉8254在系统中的电路接法,掌握8254的⼯作⽅式及应⽤编程。
微机原理实验报告_实验三_七段数码管
实验三七段数码管一、实验目的:进一步熟悉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重新开始。
五、实验结果:实验结果如预期一致,可以键盘输入倒计时的值,时间显示在数码管上,计数到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 is exit:',0dh,0ah,'$'mesg2 db 0dh,0ah,'Input a num (00--99) for low position,other key is exit:',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 mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收十位字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30hmov buffer,al ;将输入的十位数存入指定地址mov dx,offset mesg2 ;显示提示信息mov ah,09hint 21hmov ah,01hint 21hcmp al,'0' ;判断方法同十位jl exitcmp al,'9'jg exitsub al,30hmov buffer+1,al ;将输入的个位数存入指定地址jmp resetexit:mov ah,4ch ;返回int 21hreset:mov al,buffermov buffer1,almov al,buffer+1mov buffer1+1,almov di,offset buffer1 ;取得显示缓冲区的地址loop1:call timeloop2: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 ;循环计数初值1000mov dx,io8253aout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节mov dx,io8253cmov al,71h ;设8253通道1工作方式0 out dx,almov ax,1000h ;循环计数初值1000mov dx,io8253bout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节rettime endpcode endsend start七、实验总结:本次实验需要结合上次实验的知识,应用8253硬件延时,因此增加了些许难度,代码的修改也不少。
微机原理数码显示实验报告
广东海洋大学寸金学院学生实验报告书实验名称数码显示课程名称微机原理与接口技术系机电工程系专业机械设计制造及其自动化班级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 ;出栈成绩指导教师日期第页,共页。
《微机原理与接口技术》实验报告4
2017级《微机原理与接口技术》实验报告学院信息学院专业班级2017级自动化姓名学号指导教师2019年4月实验4 数码管显示一、实验目的1、掌握数码管显示技术。
2、学会使用keil集成调试软件编写程序,掌握实验的步骤并能得到正确的实验结果。
二、实验内容1、基本部分(1)采用静态显示的方法在一位数码管上显示“0”;(2)采用静态显示的方法在一位数码管上循环显示“0123456789”,变换间隔为1秒;(3)采用动态显示的方法在八位数码管上显示“01234567”2、提高部分编程序用LED数码管实现00-59简易秒表。
三、实验步骤1、采用静态显示的方法在一位数码管上显示“0”;(1)硬件连接:用一根8P的数据线将单片机的P0/P1/P3(学号后两位除3的余数)和开发板右上角的JP3连接;2、采用静态显示的方法在一位数码管上循环显示“0123456789”,变换间隔为2S;硬件连接:用一根8P的数据线将单片机的P0/P1/P3(学号后两位除3的余数)和开发板右上角的JP3连接。
3、采用动态显示的方法在八位数码管上显示“01234567”(1)硬件连接:用一根8P的数据线将单片机的P0和开发板点阵右面的J12连接;P2.2接J6的A,P2.3接J6的B,P2.4接J6的C4、提高部分编程序用LED数码管实现00-59简易秒表。
四、实验结果——源代码内容1:#include<reg51.h>void main(){P0=0xc0;while(1);}内容2:#include <reg51.h>unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(){ unsigned int i;for(i=0;i<20;i++){ TL1=0xb0;TH1=0x3c;while(!TF1);TF1=0;}}void main(){unsigned char i;TMOD=0x10;TL1=0xb0;TH1=0x3c;TR1=1;while(1)for(i=0;i<10;i++){P3=led[i];delay();}}内容3:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};void delay(uint i){while(i--);}void DigDisplay(){uchar i;for(i=0;i<8;i++){switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}P1=led[i];delay(100);P1=0x00;}}void main(){while(1){DigDisplay();}}内容4:#include <reg51.h> unsigned char msec=0,sec=0; void delay(unsigned char i) { unsigned char j,k;for(k=0;k<i;k++)for(j=0;j<255;j++); }void T0_INT(void) interrupt 1 { TH0=0x3c;TL0=0xb0;msec++;if(msec==20){ msec=0;sec++;if(sec==60)sec=0;}}void main(){unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;while(1){ P2=0x01;P1=led[sec%10];delay(10);P2=0x02;P1=led[sec/10];delay(10);}}五、实验体会——结果分析本次实验需要使用数码管,软件编写时还需要使用到中断与定时,每一次实验的内容都要求用到前几节课学到的知识,这样会帮助我巩固学习到的内容。
微机原理实验报告
实验一显示程序实验一、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS功能调用使用方法;3. 熟悉Tddebug调试环境和Turbo Debugger的使用。
二、实验所用设备1. PC微机一台。
三、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中可使用DOS功能调用(INT21H)。
(1) 显示单个字符输出入口:AH=02H调用参数:DL=输出字符(2) 显示字符串入口:AH=09H调用参数:DS:DX=串地址,’$’为结束字符(3) 键盘输入并回显入口:AH=01H返回参数:AL=输出字符(4) 返回DOS系统入口:AH=4CH调用参数:AL=返回码四、实验步骤1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3.使用Rmrun菜单中的Run,运行程序,观察运行结果;4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5.更改数据区中的数据,考察程序的正确性。
图1-1 显示程序实验流程图五、参考程序清单六、实验报告内容及要求写出程序调试过程及运行情况。
1.将参考程序写入轻松汇编编辑框。
2.点击保存,然后编译,结果框显示编译成功。
3.点击生成,显示链接成功。
4.点击运行,显示如图:实验二数据传送实验一、实验目的1. 熟悉Tddebug调试环境和Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。
二、实验所用设备1. PC微机一台。
三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
微机原理实验报告三
软件实验三实验内容从键盘键入字母数字串,统计各类字符个数并以十进制形式在显示器上显示出来。
显示格式要求1、在显示器上显示提示信息:Pleace input any digital and letter string2、在显示器上显示The string you inputed is:XXXXXXXXXX3、在显示器上分行显示十进制统计结果The Nembers of Digital is:XXThe Nembers of Capital Letters is:XXThe Nembers of Small Letters is:XX4、在显示器上显示提示信息Are you continue?(Y/N)按Y继续1~3的统计显示过程,按N或其它字符均退出统计返回DOS。
这里建议:不区分输入Y或N的大小写,均为有效。
程序要求:1、提示字符串的显示功能用宏指令INOUT实现2、回车换行用CRLF宏指令实现3、单个字符输入用INPUT宏指令实现4、分类统计功能由子程序TONGJI实现5、二进制转十进制并显示功能由子程序BTOD 实现CRLF MACROMOV DL,0DHMOV AH,2INT 21HMOV DL,10MOV AH,2INT 21HENDMINPUT MACROMOV AH,1INT 21HENDMINOUT MACRO X ,YMOV AH,XLEA DX,YINT 21HENDMDATA SEGMENTSHUZI DB ?DAXIE DB ?XIAOXIE DB ?STRIN DB 50,51 DUP(?),'$'TISHIA DB 'Please input any digital and letter string','$' TISHIB DB 'The string you input is:','$'TISHIC DB 'Are you continue ?(Y/N)','$'TISHI1 DB 'The Number of Digital is:','$'TISHI2 DB 'The Nnmber of Capital Letters is:','$' TISHI3 DB 'The Number of Small Letters is:','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXINOUT 9,TISHIACRLFINOUT 10,STRINMOV BL,[STRIN+1]MOV BH,0ADD BX,2MOV STRIN[BX],'$'INOUT 9,TISHIBCRLFINOUT 9, STRIN+2CRLFCALL TONGJIINOUT 9,TISHI1MOV BL,SHUZICALL BTODCRLFINOUT 9,TISHI2MOV BL,DAXIECALL BTODCRLFINOUT 9,TISHI3MOV BL,XIAOXIECALL BTODCRLFK1: INOUT 9,TISHICINPUTCRLFCMP AL,'Y'JMP STARTNT1: CMP AL,'y' JNE NT2JMP STARTNT2:CMP AL,'N'JE K2CMP AL,'n'JE K2JMP K2K2: MOV AH,4CH INT 21HTONGJI PROC NEAR MOV AX, DATA MOV DS, AXXOR AX, AXMOV SHUZI, AL MOV DAXIE, AL MOV XIAOXIE, AL LEA SI, [STRIN+2] MOV CL, [STRIN+1] CLDNEXT: LODSB CMP AL, 30HJB OTHERCMP AL, 39HJA BIJIAO1INC SHUZIJMP OTHER BIJIAO1: CMP AL, 'A' JB OTHERCMP AL, 'Z'JA BIJIAO2INC DAXIEJMP OTHER BIJIAO2: CMP AL, 'a' JB OTHERCMP AL, 'z'JA OTHERINC XIAOXIE OTHER: LOOP NEXT RETTONGJI ENDP BTOD PROC NEARL0: CMP BL,0AH JAE L1JMP L2L1: SUB BL,0AH INC BHJMP L0L2:ADD BL,30H ADD BH,30H MOV DL,BH MOV AH,02H INT 21HMOV DL,BL MOV AH,02H INT 21HRETBTOD ENDP CODE ENDS END START。
微机原理实验四LED数码管显示实验_图文(精)
实验名称 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,满足定时要求。
微机原理实验报告3
微机原理实验报告实验三七段数码管显示一、实验目的掌握接口芯片的编址方法,掌握8255的初始化设置,及数码管显示原理,掌握段控及位控的概念。
二、实验内容连接地址译码器与8255的连线及8255与数码管的连线;在数据段中存放0到9的字形码;从微机键盘输入2个数字的ASCII码,在输入过程中检查如非数字键则重新输入;然后将输入的ASCII码变成相应的数字,再利用换码指令XLAT查表得到相应的字形码;将字形码送到8255输出口所接的数码管上显示。
三、实验原理图四、实验流程图定义堆栈段、数据段定义代码段,写主函数返回DOS开始输入1号数字并转换成BCD 码存入输入2号数字并转换成BCD 码存入找到1号数字对应的字符并转换输出找到2号数字对应的字符并转换输出是否有按键按下INT21H 6号功能YN五、实验结论数码管能正确显示数字,调节DELAY 函数中数值可以调整延迟时间,得到不同显示效果。
六、实验心得学习使用XLAT ,同时可以不使用此方法,利用偏移地址的方法转换字符。
学习使用了INT 21H 6号功能,判断按键是否按下。
学习使用了实验箱及正确的连线。
学习分辨简易非简易连线方法。
附录:程序清单INPORT_1 EQU 0EF00H-280H+28BHINPORT_A EQU 0EF00H-280H+288HINPORT_C EQU 0EF00H-280H+28AHSTACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTTABL DB 3FH,06H,5BH,4FH,6BH,6DH,7DH,07H,7FH,6FH DIGIT DB 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROCMOV AX,DATAMOV DS,AXLEA BX,DIGITCALL KEYINAND AL,0FHMOV [BX],ALINC BXCALL KEYINAND AL,0FHMOV [BX],ALMOV DX,INPORT_1MOV AL,10001010BOUT DX,ALDISP: MOV DX,INPORT_ALEA BX,DIGITMOV AL,[BX]LEA BX,TABLEXLAT TABLEOUT DX,ALMOV DX,INPORT_CMOV AL,10BOUT DX,ALCALL DELAYINC BXMOV DX,INPORT_ALEA BX,DIGITMOV AL,[BX]LEA BX,TABLXLAT TABLOUT DX,ALMOV DX,INPORT_CMOV AL,01BOUT DX,ALCALL DELAYMOV AH,6MOV DL,0FFHINT 21HJZ DISPMOV AX,4C00HINT 21H MAIN ENDPKEYIN PROC INPUT: MOV AH,8INT 21HCMP AL,30HJB INPUTCMP AL,39HJA INPUTMOV DL,ALMOV AH,2INT 21HRETKEYIN ENDPDELAY PROCPUSH DIPUSH CXMOV DI,0FFFHMOV CX,0 NEXT1: LOOP NEXT1DEC DIJNZ NEXT1POP CXPOP DIRETDELAY ENDPCODE ENDSEND MAIN。
微机原理键盘控制与显示实验报告
课程名称: __________ 微机原理(实验) _________________ 指导老师: _徐习东 _______________ 成绩: _______________________ 实验名称: _________ 键盘控制与显示 ___________ 实验类型: _______ 软件实验 __________ 同组学生姓名: _______________ 七、讨论、心得【实验目的】1. 通过实验掌握TMS320F2812 通用输入/输出管脚直接控制外围设备的方法2. 了解发光二极管的控制编程方法。
3. 了解SPI 的使用。
4. 了解如何使用GpioA 口进行数据的锁存5. 通过实验掌握TMS320F2812 的扩展端口接收外围设备信息的方法6.了解键盘的使用原理及编程方法【实验内容】1. 按键显示程序,对按键记录次数,以二进制显示在16个LED 上。
2.定时器编程,并用按键控制各位时分秒,使其能完成加减操作【实验仪器】TMS320F2812 数字信号处理器与学生用集成板。
【实验步骤】1. 撰写代码2. 调试代码3.实现功能別f 尹丿占实验报告专业: 姓名:学号: 日期: 地点:电气工程及其自动化 一、实验目的和要求(必填) 三、主要仪器设备(必填) 五、实验数据记录和处理 二、实验内容和原理(必填) 四、操作方法和实验步骤 六、实验结果与分析(必填)【实验代码】 、疋时器① 宏定义和全局变量定义R 犍蛊控制曲钟nclude "DSP281x_De (vic« .h" 卍枝键对应值Uint16 LEEReg;UintlS KeyReg 1:Uitit321 = 0;Uint16Ctrl ; int 16Sec=0;1 Tltl6M IL =0;int 16 Hor-Cl ; UintlSLight[3];秒,按键编码,LED 编码和控制位。
② 共阳字形码O K jOOO.Oxf 900, OxA4OO J .0iBDOO,0x9900,0x5200, OMfl^OD^OxFSOD, O K B000y0x9000.0zBBOO,Oz3300,OxcEDO,Oxa IDO,OxB&OD^OssEciOO , 0x5G (J0,Uxbf DU,Osa7UQ,OzffOa,0x4000,CK79Da,DM240D r Dx^ 000, 0 itl900, O K ISOQ, 0s DEOO,Oz 7000,030000,0x1000);分析:由于这次实验要用到数码管,所以我们要定义一个数码管共阳端字形码,使每一个代码对应一种显 示状态。
微机原理——数码管显示
微机原理与接口技术实验报告实验名称:数码管显示数字的原理姓名:学号:专业班级:指导老师:实验日期: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五:实验难点与重点实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广东海洋大学寸金学院学生实验报告书
实验名称数码显示课程名称微机原理与接口技术系机电工程系专业机械设计制造及其自动化班级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:CODE
ORG 2DF0H
START: JMP START0
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
BUF DB ?,?,?,?,?,?
data1:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H
START0: CALL BUF1 ;缓冲区写初值
CON1: CALL DISP ;调显示子程序
JMP CON1 ;循环
DISP: MOV AL,0FFH ; 位码
MOV DX,PA ;数码管字位口
OUT DX,AL ;关位码
MOV CL,0DFH ; 最高位位码;显示子程序 ,5ms
MOV 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 ;出栈
成绩指导教师日期
第页,共页。