小型直流电机闭环调速系统PID控制器设计 -CSU_第1页
小型直流电机闭环调速系统PID控制器设计 -CSU_第2页
小型直流电机闭环调速系统PID控制器设计 -CSU_第3页
小型直流电机闭环调速系统PID控制器设计 -CSU_第4页
小型直流电机闭环调速系统PID控制器设计 -CSU_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理课程设计报告 小型直流电机闭环调速系统 PID 控制设计(限 2-3人设计题目:_学 院:_专业班级:姓 名:学 号:指导老师:目录一、 实验设计要求 -2二、控制系统总体设计方案 -3三、系统框图 -4四、程序流程图 - -4-5五、 重要单元的介绍 -5-9六、硬件连接图 - -9-10七、系统连接图 -11八、调试及结果 - -11-12九、程序代码 - -13-31十、心得体会 -32 十一、参考文献 -33一、设计要求:1、设计基于 80x86微机接口控制电路;2、分别用 C 语言和汇编语言编程完成硬件接口功能设计;3、程序功能要求:电机速度由按键分段给定或电位器连续给定,计

2、算 机屏幕和数码管同步跟踪显示当前给定速度和电机实际运行速度, 实现 PID 参数在线显示和修改。二、 控制系统总体设计方案本设计是利用 PC 微机一台、 TD-PIT 实验系统一套实现对直流电机转速调节 的应用。编写程序,用 ADC0809完成模拟信号到数字信号的转换。输入模拟信号有 A/D转换单元可调电位器提供的 05V, 将其转换后的数字信号读入累加器, 做为 控制电机的给定转速。用 8255的 B 口作为直流电机的控制信号输出口,通过对 电机转速反馈量的运算, 调节控制信号, 达到控制电机匀速转动的的作用。 并将 累加器中给定的转速和当前测量转速显示在屏幕上。 再通过 LED 灯显示出

3、转速的 大小变化。整个程序设计过程分为基本功能实现阶段, 检测程序阶段, 功能扩展和功能 验证及程序补充四个实验阶段。基本功能实验阶段,在“轻松编程”软件中完成,主要完成各个子程序的调 试;在检测程序阶段,在“轻松编程”软件中通过编译和链接,并反复检查没有 逻辑错误; 调试结果正确以后在进行相应的连接, 将各个子模块联系起来功能扩 展及程序的补充, 在实验室里完成, 使用唐都硬件实验箱, 用 TDPIT 来编程实现; 功能验证阶段 , 在实验室里完成。由于程序中要用到中断,但是在 windows 下不 能使用中断,所以必须在 dos 环境下才能进行程序的调试。三、系统框图 四、程序流程图 主程

4、序流程图 中断服务子程序流程图五、 重要单元的介绍5.1 8255工作原理:本设计利用 8255的 A 口作为输出口,控制 8个单色 LED 灯,来实现电机转 速的大小调节。并行接口是以数据的字节为单位与 I/O设备或被控制对象之间传递信息, CPU 和接口之间的数据传递总是并行的,即可以同时进行传递 8位, 16位, 32位等。 8255可编程外围接口芯片是具有 A 、 B 、 C 三个并行接口, +5V单电源供电, 能在以下三种方式下工作:方式 0基本输入 /出方式、方式 1选通输入 /出方 式、方式 2双向选通工作方式。其控制字、内部结构图和引脚图见图 1-1-1、 图 1-1-2.图

5、1-1-1 8255控制字 图 1-1-2 8255内部结构图和引脚图5.2 转速调节原理:PWM的占空比决定输出到直流电机的平均电压 .PWM 不是调节电流的 .PWM 的意思是脉宽调节 , 也就是调节方波高电平和低 电平的时间比 , 一个 20%占空比波形 , 会有 20%的高电平时间和 80%的低电平时间, 而一个 60%占空比的波形则具有 60%的高电平时间和 40%的低电平时间 , 占空比越 大 , 高电平时间越长 , 则输出的脉冲幅度越高 , 即电压越高 . 如果占空比为 0%,那 么高电平时间为 0, 则没有电压输出 . 如果占空比为 100%,那么输出全部电压 . 所以通过调节

6、占空比 , 可以实现调节输出电压的目的 , 而且输出电压可以无级连 续调节 .在使用 PWM 控制的直流无刷电动机中, PWM 控制有两种方式:(1使用 PWM 信号,控制三极管的导通时间,导通的时间越长,那么做功 的时间越长,电机的转速就越高(2使用 PWM 控制信号控制三极管导通时间,改变控制电压高低来实现 直流电机单元由 DC12V 、 1.1W 的直流电机, 小磁钢, 霍尔元件及输出电路构 成。 PWM 示意图如图 1-1-3所示。通过调节 T1的脉冲宽度,改变 T1的占空比, 从而改变输出,达到改变直流电机转速的目的 图 1-1-3 PWM示意图利用 8255的 PB 0产生脉冲信号

7、作为控制量,经驱动电路驱动电机运转。霍 尔测速元件输出的脉冲信号记录电机转速构成反馈量。 在参数给定的情况下, 经 PID 运算,电机可在控制量的作用下,按 PC 机累加器给定的转速运转。通过 PC 的 0号通道,设置为输出 1ms 方波,作为采样时钟, PB 0产生 PWM 脉冲计时及转 速累加,系统总线上 INTR 中断用于测量电机转速。5.3 AD转换原理 图 1-1-4 ADC0809外部管脚图本设计用 ADC0809完成模拟信号到数字信号的转换。输入模拟信号有 A/D转换单元可调电位器提供的 05V,将其转换后的数字信号读入累加器,做为控 制电机的给定转速。_5.4 LED灯的工作原

8、理:LED 灯显示器有 8个单色发光二极管构成,在共阳极接法中,各二极管的 阳极被连在一起,使用的时候要将它与 +5V项链,而把各段的阴极连到器件的 相 应 引 脚 上 。 当 某 的 LED 灯 的 引 脚 为 低 电 平 的 时 候 , 该 灯 工 作 。 图 1-1-5 LED灯管脚图通过 8255的 A 口信号作为输入信号,控制各灯的工作状态。来显示出此时电机转速的大小变化六、硬件连接图6.1 单元接线图: 图 1-1-5 AD转换接线图ADC转换单元中, D0-D7分别与系统总线的 XD0-XD7对应相连, WRRD 、 CLK 分别与系统总 线 XIOW 、 XIOR 、 CLK

9、相 连 , 片 选 引 脚 与 系 统 IOY0相连, A 、 B 、 C 接 地, IN0接 +5V直流电压源,1-1-6所示。 图 1-1-6 直流电机闭环接线图直流电机闭环接线中, 8255芯片的 A 口作为输出信号与 LED 灯项连, 即 PA0-PA7与系统总线的 XD0-XD7相连 , 同时与 ADC0809的 D0-D7相连; B 口的 PB0作为直 流电机控制信号输出口, 经驱动电路 A 口, 与直流电机相连驱动电机运转; 片选 信号线接系统的 IOY1,读写信号线分别对应系统的 XIO 、 RXIOW 相连,其中 , 系 统的中断 INTR 引脚用于测量电机转速与直流电机的

10、HR 引脚相连。 七、系统连线图 八、调试及结果8.1 调试步骤:(1确认从 PC 机引出的两根扁平电缆已经连接在平台上。(2首先运行 CHECK 程序,查看 I/O空间始地址。(3利用查出的地址编写程序,然后编译连接。(4参照接线图连接电路。(5 运行程序, 调节电位器的大小, 观察电机的运行情况以及显示在屏幕上的 结果和 LED 灯的变化。9.2 结果分析:A/D实现模拟信号转换为数字信号,通过电位器调节输入电压(05V ,改 变输出的数字信号,进而改变 8255的给定信号(给定转速 ,即通过改变 PB0通道输出方波的占空比,实现 PWM 调速,改变脉冲的宽度。若占空比越大 , 高电平时间

11、越长 , 则输出的脉冲幅度越高 , 即电压越高 . 根据 直流电动机的机械特性,电机转速与电压呈正比变化。基本功能实验阶段,在“轻松编程”软件中完成,主要完成各个子程序的调 试;在检测程序阶段,在“轻松编程”软件中通过编译和链接,并反复检查没有 逻辑错误; 调试结果正确以后在进行相应的连接, 将各个子模块联系起来, 由于 自己不具备硬件资源, 所以调试的时候只能检查程序本身的错误, 经过调试能显 示各个子程序的功能, 同时嵌套有延时子程序, 方便程序的调用, 而端口地址的 选择与确定,只能在实验室里完成,功能扩展及程序的补充,在实验室里完成, 使用唐都硬件实验箱,用 TDPIT 来编程实现,实

12、验的过程中,注意端口地址,要 与硬件实验箱上的匹配;功能验证阶段,实验发现已经编好的程序仍存在问题, 其中菜单显示和 A/D转换是好的,然而电机不转, LED 灯也不能正确的显示电机 的转速 (即相应的速度对应的相应的等不能正常显示 针对原来的程序及老师给 的要求进行修改, 并添加了一个判断是否有按键输入的子程序通过调整不同的速 度后来实现任意状态下的按键停止。九、程序代码*根据 CHECK 配置信息修改下列符号值 * INTR_IVADD EQU 01CCH ;INTR对应的中断矢量地址INTR_OCW1 EQU 0A1H ;INTR对应 PC 机内部 8259的 OCW1地 址INTR_O

13、CW2 EQU 0A0H ;INTR对应 PC 机内部 8259的 OCW2地 址INTR_IM EQU 0F7H ;INTR对应的中断屏蔽字PCI_INTCSR EQU 0EC38H ;PCI卡中断控制寄存器地址IOY0 EQU 0C400H ;片选 IOY0对应的端口始地址IOY1 EQU 0C440HIOY2 EQU 0C480HIOY3 EQU 0C4C0H;* MY8255_A EQU IOY0+00H*4 ;8255的 A 口地址MY8255_B EQU IOY0+01H*4 ;8255的 B 口地址MY8255_C EQU IOY0+02H*4 ;8255的 C 口地址MY825

14、5_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址PC8254_COUNT0 EQU 40H ;PC机内 8254定时器 0端口地址 PC8254_MODE EQU 43H ;PC机内 8254控制寄存器端口地址AD0809 EQU IOY1+00HSTACK1 SEGMENT STACKDW 64 DUP(?TOP LABEL WORDSTACK1 ENDSDATA SEGMENTTABLE1 DB 'Assumed Fan Speed:(/s','$' ;字符串变量TABLE2 DB 'Current Fan Speed:(/s&

15、#39;,'$' ;字符串变量ENT DB ' ','$' ;换行,回车 CS_BAK DW ? ;保存 INTR 原中断处理程序入口段地址 的变量IP_BAK DW ? ;保存 INTR 原中断处理程序入口偏移地 址的变量IM_BAK DB ? ;保存 INTR 原中断屏蔽字的变量CS_BAK1 DW ? ;保存定时器 0中断处理程序入口段地址 的变量IP_BAK1 DW ? ;保存定时器 0中断处理程序入口偏移地 址的变量IM_BAK1 DB ? ;保存定时器 0中断屏蔽字的变量DTABLE DB 3FH,06H,5BH,4FH,66H,6D

16、H,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;键 值表, 0F 对应的 7段数码管的TS DB 14H ;采样周期SPEC DW ? ;转速给定值IBAND DW 0060H ;积分分离值KPP DW 1060H ;比例系数KII DW 0010H ;积分系数KDD DW 0020H ;微分系数YK DW ?CK DB ?VADD DW ?ZV DB ?ZVV DB ?TC DB ?FPWM DB ?CK_1 DB ?EK_1 DW ?AEK_1 DW ?BEK DW ?AAAA DB ?VAA DB ?BBB DB ?VBB DB ?MARK DB ?

17、R0 DW ?R1 DW ?R2 DW ?R3 DW ?R4 DW ?R5 DW ?R6 DW ?R7 DB ?R8 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,3000H ;建立缓冲区,存放要显示的键值 MOV AL,00H ;先初始化键值为 0MOV SI,ALMOV SI+1,ALMOV SI+2,ALMOV SI+3,ALMOV DI,3001H; MOV DX,OFFSET TABLE1 ;显示字符串 1; MOV AH,09H; INT 21H; MOV AX,SP

18、EC ;显示给定值; CALL DECSHOW; MOV DX,OFFSET ENT ;回车,换行; MOV AH,09H; INT 21H; MOV DX,OFFSET TABLE2 ;显示字符串 2; MOV AH,09H; INT 21HCLIMOV AX,0000HMOV ES,AXMOV DI,0020HMOV AX,ES:DIMOV IP_BAK1,AX ;保存定时器 0中断处理程序入口偏移地址 MOV AX,OFFSET TIMERISRMOV ES:DI,AX ;设置实验定时中断处理程序入口偏移地址 ADD DI,2MOV AX,ES:DIMOV CS_BAK1,AX ;保存定

19、时器 0中断处理程序入口段地址 MOV AX,SEG TIMERISRMOV ES:DI,AX ;设置实验定时中断处理程序入口段地址IN AL,21HMOV IM_BAK1,AL ;保存 INTR 原中断屏蔽字AND AL,0F7HOUT 21H,AL ;打开定时器 0中断屏蔽位MOV DX,PCI_INTCSR ;初始化 PCI 卡中断控制寄存器MOV AX,1F00H ;向 PCI_INTCSR中写入 003F1F00H OUT DX,AXADD DX,2MOV AX,003FHOUT DX,AXMOV DI,INTR_IVADDMOV AX,ES:DIMOV IP_BAK,AX ;保存

20、INTR 原中断处理程序入口偏移地址 MOV AX,OFFSET MYISRMOV ES:DI,AX ;设置当前中断处理程序入口偏移地址ADD DI,2MOV AX,ES:DIMOV CS_BAK,AX ;保存 INTR 原中断处理程序入口段地址 MOV AX,SEG MYISRMOV ES:DI,AX ;设置当前中断处理程序入口段地址MOV DX,INTR_OCW1IN AL,DXMOV IM_BAK,AL ;保存 INTR 原中断屏蔽字AND AL,INTR_IMOUT DX,AL ;打开 INTR 的中断屏蔽位MOV AL,00HMOV DX,AD0809 ;启动 A/D转换OUT DX

21、,ALMOV VADD,0000H ;变量的初始化MOV ZV,00HMOV ZVV,00HMOV CK,00HMOV YK,0000HMOV CK_1,00HMOV EK_1,0000HMOV AEK_1,0000HMOV BEK,0000HMOV BBB,00HMOV VBB,00HMOV R0,0000HMOV R1,0000HMOV R2,0000HMOV R3,0000HMOV R4,0000HMOV R5,0000HMOV R6,0000HMOV R7,00HMOV R8,0000HMOV MARK,00HMOV FPWM,01HMOV AAAA,7FHMOV VAA,7FHMOV

22、 TC,00HMOV AL,80H ;初始化 8255MOV DX,MY8255_MODEOUT DX,ALMOV AL,00HMOV DX,MY8255_BOUT DX,ALMOV DX,PC8254_MODE ;初始化 PC 机定时器 0,定时 1ms MOV AL,36HOUT DX,ALMOV DX,PC8254_COUNT0MOV AL,8FHOUT DX,ALMOV AL,04HOUT DX,ALSTIM1: MOV AL,TS ;判断采样周期到否?SUB AL,TC;JNC M1 ;没到则继续等待; MOV DX,OFFSET TABLE1 ;显示字符串 1; MOV AH,09

23、H; INT 21HMOV AL,00HMOV DX,AD0809 ;启动 A/D转换OUT DX,ALCALL DALLYMOV DX,AD0809 ;读出转换结果IN AL,DXMOV CL,00HCMP AL,CLJS B2MOV CL,3chCMP CL,ALJS B2JMP B3B1: MOV AL,00HJMP B3B2: MOV AL,3cHB3: MOV DI,OFFSET SPECMOV DI,ALMOV AX,DICALL DECSHOWCALL SHOW1MOV DX,OFFSET ENT ;回车,换行MOV AH,09HINT 21H; MOV DX,OFFSET TA

24、BLE2 ;显示字符串 2; MOV AH,09H; INT 21HMOV TC,00H ;采样周期到,将采样周期变量清 0 MOV AL,ZVVMOV AH,00HMOV YK,AX ;得到反馈量 YKCALL PID ;调用 PID 子程序,得到控制量 CKMOV AL,CK ;把控制量转化成 PWM 输出SUB AL,80HJC IS0MOV AAAA,ALJMP COUIS0: MOV AL,10H ;电机的启动值不能低于 10H MOV AAAA,ALCOU: MOV AL,7FHSUB AL,AAAAMOV BBB,ALMOV AX,YK ;将反馈值 YK 送到屏幕显示CALL D

25、ECSHOWMOV DL,0DH ;回车MOV AH,02HINT 21HMOV AH,1 ;判断是否有按键按下INT 16HJZ M1 ;无按键则跳回继续等待,有则退出EXIT: CLIMOV AL,00H ;退出时停止电机运转MOV DX,MY8255_BOUT DX,ALMOV DX,PC8254_MODE ;恢复 PC 机定时器 0状态MOV AL,36HOUT DX,ALMOV DX,PC8254_COUNT0MOV AL,00HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX,PCI_INTCSR ;恢复 PCI 卡中断控制寄存器MOV AX,0000HOUT

26、DX,AXMOV AX,0000H ;恢复 INTR 原中断矢量MOV ES,AXMOV DI,INTR_IVADDMOV AX,IP_BAK ;恢复 INTR 原中断处理程序入口偏移地址 MOV ES:DI,AXADD DI,2MOV AX,CS_BAK ;恢复 INTR 原中断处理程序入口段地址 MOV ES:DI,AXMOV DX,INTR_OCW1 ;恢复 INTR 原中断屏蔽寄存器的屏蔽字 MOV AL,IM_BAKOUT DX,ALMOV DI,0020HMOV AX,IP_BAK1 ;恢复定时器 0中断处理程序入口偏移地址 MOV ES:DI,AXADD DI,2MOV AX,C

27、S_BAK1 ;恢复定时器 0中断处理程序入口段地址 MOV ES:DI,AXMOV AL,IM_BAK1OUT 21H,AL ;恢复屏蔽字STIMOV AX,4C00HINT 21HMYISR PROC NEAR ;系统总线 INTR 中断处理程序21PUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXMOV AL,MARKCMP AL,01HJZ IN1MOV MARK,01HJMP IN2IN1: MOV MARK,00H ;计算转速VV: MOV DX,0000HMOV AX,03E8HMOV CX,VADDCMP CX,0000HJZ MM1DIV CX

28、MM: MOV ZV,ALMOV VADD,0000HMM1: MOV AL,ZVMOV ZVV,ALIN2: MOV DX,PCI_INTCSR ;清 PCI 卡控制寄存器标志位SUB DX,19HIN AL,DXMOV DX,PCI_INTCSRADD DX,2MOV AX,003FHOUT DX,AXMOV DX,INTR_OCW2 ;向 PC 机内部 8259发送中断结束命令 MOV AL,20H22OUT DX,ALMOV AL,20HOUT 20H,ALPOP DXPOP CXPOP AXIRETMYISR ENDPTIMERISR PROC NEAR ;PC机定时器 0中断处理程

29、序 PUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXINC TC ;采样周期变量加 1CALL KJCLCCMP MARK,01HJC TT1INC VADDCMP VADD,0700H ;转速值溢出,赋极值JC TT1MOV VADD,0700HMOV MARK,00HTT1: MOV AL,20H ;中断结束,发 EOI 命令 OUT 20H,ALPOP DXPOP CXPOP AX23IRETTIMERISR ENDPKJ PROC NEAR ;PWM子程序PUSH AXCMP FPWM,01H ;PWM为 1,产生 PWM 的高电平 JNZ TEST2

30、CMP VAA,00HJNZ ANOT0MOV FPWM,02HMOV AL,BBBCLCRCR AL,01HMOV VBB,ALJMP TEST2ANOT0: DEC VAAMOV AL, 01H ;PB0=1 电机转动MOV DX, MY8255_BOUT DX,ALTEST2: CMP FPWM,02H ;PWM为 2,产生 PWM 的低电平 JNZ OUTTCMP VBB,00HJNZ BNOT0MOV FPWM,01HMOV AL,AAAACLCRCR AL,01HMOV VAA,ALJMP OUTT24BNOT0: DEC VBBMOV AL,00H ;PB0=0 电机停止MOV

31、DX,MY8255_BOUT DX,ALOUTT: POP AXRETKJ ENDPPID: MOV AX,SPEC ;PID子程序SUB AX,YK ;求偏差 EKMOV R0,AXMOV R1,AXSUB AX,EK_1MOV R2,AXSUB AX,AEK_1 ;求 BEKMOV BEK,AXMOV R8,AXMOV AX,R1 ;求偏差变化量 AEKMOV EK_1,AXMOV AX,R2MOV AEK_1,AXTEST R1,8000HJZ EK1 ;若偏差 EK 为正数,则不需要求补码 NEG R1 ;若偏差 EK 为负数,则求偏差 EK 的补码 EK1: MOV AX,R1 ;判

32、断偏差 EK 是否在积分分离值的范围内 SUB AX,IBANDJC II ;在积分分离值范围内,则跳转到 II 计算积分项 MOV R3,00H ;若不在积分分离值范围内,则将积分项清 0 JMP DDD ;计算微分项II: MOV AL,TS ;计算积分项,结果放在 R3变量中 (R3=EK*TS/KIIMOV AH,00H ;其中 TS 和 KII 均为正数,所以 R3的正负由 EK 决定25MUL CXMOV CX,KIIDIV CXMOV R3,AXTEST R0,8000H ;判断积分项的正负JZ DDD ;为正数,则跳转去计算微分项NEG R3 ;为负数,则将积分项的结果求补码

33、DDD: TEST BEK,8000H ;判断 BEK 的正负JZ DDD1 ;为正数,则 BEK 不变NEG BEK ;为负数,则求 BEK 的补码DDD1: MOV AX,BEK ;计算微分项 (R4=KDD*BEK/8TS MOV CX,KDDMUL CXPUSH AXPUSH DXMOV AL,TSMOV AH,00H ;将微分项缩小 8倍,防止溢出MOV CX,0008HMUL CXMOV CX,AXPOP DXPOP AXDIV CXMOV R4,AXTEST R8,8000H ;判断微分项的正负JZ DD1 ;为正数,则结果不需要求补码NEG R4 ;为负数,则微分项结果 R4求

34、补码 DD1: MOV AX,R3 ;积分项和微分项相加,结果放在 R5变量中 ADD AX,R4MOV R5,AXJO L9 ;判断溢出L2: MOV AX,R5ADD AX,R2MOV R6,AX ;R6=R5+R2=积分项 +微分项 +AEKL5: MOV AX,R6 ;计算 KPP*R6MOV CX,KPPIMUL CXMOV CX,1000HIDIV CXMOV CX,AXRCL AH,01H ;判断溢出,溢出赋极值PUSHFRCR AL,01HPOPFJC LLL1CMP CH,00HJZ LLL2MOV AL,7FHJMP LLL2LLL1: CMP CH,0FFHJZ LLL2

35、MOV AL,80HLLL2: MOV R7,AL ;CK=CK_1+CKADD AL,CK_1JO L8L18: MOV CK_1,ALADD AL,80HMOV CK,ALRETL8: TEST R7,80H ;CK溢出处理程序JNZ L17MOV AL,7FH ;若为正溢出,则赋给正极值 7FH JMP L18L17: MOV AL,80H ;若为负溢出,则赋给赋极值 80H JMP L18L9: TEST R3,8000HJNZ L1MOV R5,7FFFH ;若为正溢出,则赋给正极值 7FFFHL1: MOV R5,8000H ;若为负溢出,则赋给负极值 8000H JMP L2L3

36、: TEST R2,8000HJNZ L4MOV R6,7FFFHJMP L5L4: MOV R6,8000HJMP L5DECSHOW PROC NEAR ;完成两位十进制数显示子程序 MOV DX,0MOV BX,10 ;计算 AX/10DIV BXADD AL,30H ;商 +30H,即为十位数 ASCII 码MOV AH,0EHINT 10HADD DL,30H ;余 +30H,即为个位数 ASCII 码 MOV AH,2INT 21HRETDECSHOW ENDPSHOW1 PROC NEAR;BEGIN: CALL DIS ; 显示刷新;CALL CLEAR ; 清屏;JMP GE

37、TKEY1;INT 16H;JZ BEGIN;QUIT: MOV AX,4C00H ;返回到 DOS; INT 21H;GETKEY1:CALL DIS ;显示刷新;CALL DALLY1; CALL DALLY1; CALL CLEAR ;清屏; JMP GETKEY2;GETKEY2:MOV CH,0FEH; MOV CL,00H ;设置当前检测的是第几列;COLUM: MOV AL,CH; MOV DX,MY8255_C; OUT DX,AL;CLEAR PRC NEAR;MOV DX,MY8255_A ;段位置 0 即可清除数码管显示 ;MOV AL,00H;OUT DX,AL;RET

38、;CLEAR ENDP;RET;MOV AX,SPEC;DIS PROC NEAR ;显示键值子程序MOV AX,SPECMOV DX,0MOV BX,10 ;计算 AX/10DIV BXMOV SI,3001HMOV SI,AL ;在缓冲区存入十位数字MOV SI-1,DL ;在缓冲区存入个位数字PUSH AXMOV SI,3000HMOV DL,0FDHMOV AL,DLMOV CX,2AGAIN: PUSH DX;CALL DALLY1MOV DX,MY8255_COUT DX,AL ;设置 X1X4,选通一个数码管 MOV AL,SI ;取出缓冲区中所放个位数值 MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,BX ;求得数字对应数码管的段位值 MOV DX,MY8255_AOUT DX,AL ;写入数码管 ADpCALL DALLY1MOV AL,00H;取出缓冲区中所放个位数值OUT DX,ALINC SI;取十位数 ?POP DX ;判断是否显示完?MOV AL,DL ;显示完,返回ROR AL,1MOV DL,ALLOOP AGAIN ;未显示完,跳回继续OUT1: POP AX;DIS;RETRET SHOW1 ENDP DAL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论