1、微机原理与接口技术实验报告实验名称: 继电器控制 姓 名: 学 号: 专业班级: 指导老师: 实验日期: 一:实验目的1.了解微机控制直流继电器的一般方法。2.进一步熟悉使用 8255、8253。二:实验内容实验电路如图 25,按虚线连接电路:CLK0 接 1MHz,GATE0,GATE1,接+5V ,OUT0 接 CLK1, OUT1 接 PA0,PC0 接继电器驱动电路的开关输入端Ik。继电器常开触点串联一个 220V 灯泡,接交流 220V。编程使用 8253 定时,让继电器周而复始的闭合 5 秒钟(指示灯灯亮) ,断开 5 秒钟(指示灯灯灭)三:硬件电路四:源程序ASM 程序iopor
2、t equ 0d400h-0280hio8255a equ ioport+280hio8255b equ ioport+281hio8255c equ ioport+283hio8255d equ ioport+288hio8255e equ ioport+28bhcode segmentassume cs:codestart: mov dx,io8255e ;设8255为A口输入,C口输出mov al,90hlll: out dx,almov al,01 ;将PC0置位out dx,alcall delay ;延时5smov al,0 ;将PC0复位out dx,alcall delay ;
3、延时5sjmp lll ;转llldelay proc near ;延时子程序push dxmov dx,io8255c ;设8253计数器为方式3mov al,36hout dx,almov dx,io8255amov ax,10000 ;写入计数器初值10000out dx,almov al,ahout dx,almov dx,io8255cmov al,70h ;设计数器1为工作方式0out dx,almov dx,io8255bmov ax,500 ;写入计数器初值500out dx,almov al,ahout dx,alll2: mov ah,06 ;是否有键按下mov dl,0f
4、fhint 21hjne exit ;若有则转exitmov dx,io8255din al,dx ;查询8255的PA0是否为高电平and al,01jz ll2 ;若不是则继续pop dxret ;定时时间到,子程序返回exit: mov ah,4chint 21hdelay endpcode endsend startCPP 程序/*/* 继电器控制 */*/#include #include #include “ApiEx.h“#pragma comment(lib,“ApiEx.lib“)void m_delay();void main()printf(“-EXP12_6_JDQ-n
5、“);printf(“1. 8253 (CLK0) = (1MHz) or (2MHz)n“);printf(“2. TPC (+5V) = 8253 (GATE0,GATE1)n“);printf(“3. 8253 (OUT0) = 8253 (CLK1)n“);printf(“4. 8253 (OUT1) = 8255 (PA0)n“);printf(“5. I/O (280-287) = 8253 (CS)n“);printf(“6. 8255 (PC0) = JDQ (Ik)n“);printf(“7. I/O (288-28F) = 8255 (CS)n“);printf(“8. (
6、J4) of JDQ = (JDQ)n“);printf(“Press any key to begin!nn“);getch();if(!Startup() /*打开设备*/printf(“ERROR: Open Device Error!n“);return;printf(“press any key to return!n“);PortWriteByte(0x28b,0x90); /*设置8255为A口输入C口输出*/while(true)PortWriteByte(0x28b,1); /*PC0置位接通继电器*/m_delay(); /*延时5S*/PortWriteByte(0x28
7、b,0); /*PC0复位断开继电器*/m_delay(); /*延时5S*/Cleanup(); /*关闭设备*/void m_delay()BYTEdata;PortWriteByte(0x283,0x36); /*设8253计数器0工作方式3*/PortWriteByte(0x280,10000%256); /*先写计数器初值10000的低字节*/PortWriteByte(0x280,10000/256); /*后写计数器初值10000的高字节*/PortWriteByte(0x283,0x70); /*设8253计数器1工作方式2*/PortWriteByte(0x281,500%2
8、56); /*写计数器初值*/PortWriteByte(0x281,500/256);doif(kbhit()exit(0); /*有键按下则退出*/PortReadByte(0x288,while(!(data /*若PA0为1则表明计数时间到,返回*/五:实验难点与重点在各种自动控制设备中,都要求用一个低压电路控制一个高压的电气电路。这样不仅可以为电子线路和电气电路提供良好的电隔离,还可以保护电子电路和人员安全,而电磁继电器一般有两股电路,低压控制电路和高压工作电路。它利用电磁效应实现电路开、关控制作用,很好地实现了低压控制高压这一功能,因此广泛应用在电子设备、仪器仪表及自动化设备中。六:实验感想通过这次继电器控制实验,我学到了很多。通过对该课题的了解,收集资料,研究其可行性,前期做了很多准备工作,查看了很多资料,但这都是值得的,为后面程序的编写和调试打下了基础,不仅学到了编程,还加深了对电路的了解,比如继电器工作原理、延时定时、外扩芯片等等,虽然都是一些已经学习过的知识,但结合起来还是有一定的难度。我对于单片机实际的应用也加深了理解。