实验二 I-O口输入、输出实验报告
南邮微机原理实验报告

微机原理硬件实验报告实验一 I/O 地址译码一、实验目的1、掌握 I/O 地址译码电路的工作原理。
二、实验内容及原理实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,…… 当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
根据图1-1,我们可以确定A9~A3,AEN,IOW,IOR的值。
要使译码电路正常工作,必须使处于低电平有效。
因而可以确定A6=A8=0,A7=A9=1,AEN=0,IOW与IOR不可同时为1(即不能同时读写)。
当要从Y4输出低脉冲时,A5A4A3=100;从Y5输出时,A5A4A3=101。
综上所述,Y4输出时,应设置值2A0H(A9~A0=1010100000B);Y5输出时,应设置值2A8H(A9~A0=1010101000B)。
执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲到D触发器的CLK上,因为D=1(接了高电平+5V),所以Q被赋值为1.延时一段时间(delay);执行下面两条指令;MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲到CD,D触发器被复位,Q=0。
再延时一段时间,然后循环上述步骤。
利用这两个个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
三、硬件接线图与软件流程图硬件接线:Y4/IO 地址接 CLK/D 触发器Y5/IO地址接 C/D触发器D/D触发器接 SD/D角发器接+5VQ/D触发器接 L7(LED灯)或逻辑笔软件流程图:四、源程序OUTPORT1 EQU 2A0H ;预置,方便修改OUTPORT2 EQU 2A8HCODE SEGMENTASSUME CS:CODESTART: MOV DX,OUTPORT1 ;根据原理图设定A9~A0 的值(Y4)OUT DX,AL ;让译码器Y4 口输出一个负脉冲CALL DELAY ;延时MOV DX,OUTPORT2 ;根据原理图设定A9~A0 的值(Y5)OUT DX,AL ;让译码器Y5 口输出一个负脉冲CALL DELAY ;延时MOV AH,1 ;调用1 号DOS 功能,等待键盘输入INT 16HJE START ;若有键盘输入则退出程序,否继续循环MOV AH,4CHINT 21HDELAY PROC NEAR ;延时子程序MOV BX,200 ;时延长度 (200)A: MOV CX,0B: LOOP BDEC BXJN E ARETDELAY ENDPCODE ENDSEND START五、实验结果LED 灯处于闪烁状态,键盘有输入后,成功退出。
单片机独立按键识别实验报告

桂林电子科技大学
实验报告
2016-2017 学年第一学期
开课单位海洋信息工程学院
适用年级、专业 14级机械设计制造及其自动化
课程名称《单片微型计算机与接口技术-课内实验》
主讲教师周旋
课程序号 BS1615000_03
课程代码 BS1615000 实验名称《独立按键识别》
学号 1416010516 - 17 姓名林亦鹏卢炳荣
独立按键识别实验报告
电路采用无源蜂鸣器,从P1.5口形成脉冲来驱动。
因为单片机开机初始化瞬间,其I/O口为高电平,会有误响动作。
单片机的独立键盘使用的是P1口。
当有键按下时,P1口相应位为低电平。
、查找资料说明按键抖动的原因。
、延时程序是怎么实现延时的?
定义蜂鸣器的连接端口--//。
单片机控制发光二极管实验报告

单片机控制发光二极管实验报告发光二极管广东石油化工学院单片机实验一实验报告实验报告实验一发光二极管实验学院: 电信学院专业:班级学生学号:实验时间一、实验目的1、掌握AT89C51 单片机IO 口的输入输出。
2、掌握用查表方式实现AT89C51 单片机IO 口的控制。
3、练习单片机简单延时子程序的编写。
4、熟练运用Proteus 设计、仿真AT89C51 系统。
二、实验内容1、编写延时子程序,延时时间为0.1S。
代码:void delay(){int i, j;for (i = 0; i 100; i++)for (j = 0; j 125; j++);}2、见图一。
通过AT89C51 单片机控制8 个发光二极管发光,实现亮点以由上到下循环移动,间隔时间为0.1S。
代码:#includereg51.h#includeintrins.hvoid delay(){int i, j;for(i = 0; i 100; i++)for(j = 0; j 125; j++);}void main(){P1 = 0xFE;while(1){P1 (转载于: 写论文网:单片机控制发光二极管实验报告)= _crol_(P1,1);delay();}}运行结果截图:图一3、见图一。
通过AT89C51 单片机控制8 个发光二极管发光,循环实现亮点由上到下移动1 次(间隔时间为0.2S),由下到上移动1 次(间隔时间为0.2S),闪烁1 次(即先全亮0.1S,再全灭0.1S)。
代码:#includereg51.h#define uchar unsigned char#define uint unsigned intvoid delay(){uint i, j;for (i = 0; i 100; i++){for (j = 0; j 128; j++){//delay 100ms, do nothing.}}}void shangXia(){uchar k;P1 = 0xFE;for (k = 0; k 8; k++){delay();P1 = _crol_(P1,1);}}void xiaShang(){uchar k;P1 = 0x7F;for (k = 0; k 8; k++){delay();P1 = _crol_(P1,-1);}}void main(){while(1){shangXia();xiaShang();}}截图与题一相同,增加由下至上。
51单片机智能机器人实验报告

51单片机智能机器人实验报告智能机器人实验报告电子稿实验一教你的机器人“走路”一、要求与目的熟悉机器人用于走路的“脚”,要教你的机器人学会走路,同时你要掌握控制机器人走路的基本方法。
二、内容1、机器人为什么会“走”要想让机器人移动,就要控制电机的转动。
控制机器人“行走”的基本指令是motor(x,y)函数和drive(x,y)函数。
2、驱动电机的函数通过JC程序控制电机转动,使机器人行走的指令有两个,它们是motor(x,y)函数和drive(x,y)函数,介绍:一、motor(x,y)函数此函数是“启动”电机,x取值1、2,分别表示左右两个电机;y表示电机转速两个电机同时以相同速度启动,意味着什么?机器人将怎样运动?答:机器人将直走。
进一步讨论:如果将一侧电机速度改为0,机器人将会怎样运动?(顺时针、逆时针旋转)答:左侧电机速度为零,则逆时针旋转;反之,则顺时针旋转。
实验题一:让机器人顺时针、逆时针旋转(1)用vjc语言或者流程图让能力风暴顺时针走直径约1米的圆形路径;程序:void main(){while(1){motor( 1 , 80 );motor( 2 , 20 );}stop();}(2)用vjc语言或者流程图让能力风暴逆时针走约1米立方的正方形路径;程序:void main(){while(1){drive( 100 ,0);wait( 1.000000 );stop();motor( 1 , -20 );motor( 2 , 20 );wait( 0.500000 );stop();}}实验题二:首先机器人前进2秒,之后机器人逆时针旋转1.8秒,然后机器人前进1秒,最后停下来。
小结:motor函数主要是实现旋转。
实验代码:Void main(){Drive(60,0);Wait(2.000000);Stop();Drive(0,-60);Wait(1.800000);Stop();Drive(80,0);Wait(1.000000);Stop();}二、drive(x,y)函数此函数是“直行”,x表示基准速度,y表示左右电机与基准速度的差。
单片机原理实验报告(详细)

湖南城市学院实验报告2018-2019 学年上学期姓名:***班级学号:******实验课程:单片机原理及应用实验室名称:电子工程实验室湖南城市学院信息与电子工程学院实验中心印制实验项目名称:实验一指示灯和开关控制器实验一、实验目的及要求1、学习51单片机I/O基本输入/输出功能,掌握汇编语言的编程与调试方法;2、熟悉proteus软件,了解软件的结构组成与功能;3、学会在ISIS模块中进行汇编程序录入、编译和调试;4、理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。
二、实验原理实验电路原理图如图1所示,图中输入电路由外接在P3口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。
此外,还包括时钟电路、复位电路和片选电路。
图1 实验原理图在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的灯亮状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。
软件编程原理为:(1)8只发光二极管整体闪烁3次亮灯:向P2口送入数值0;灭灯:向P2口送入数值0FFH;闪烁3次:循环3次;闪烁快慢:由软件延时时间决定。
(2)根据开关状态控制灯亮或灯灭开关控制灯:将P3口(即开关状态)内容送入P2口;无限持续:无条件循环。
程序流程图如图2所示。
图2 实验程序流程图三、实验仪器设备及装置(1)硬件:电脑一台;(2)仿真软件:Proteus;(3)编程软件Keil uVision4。
其中,仿真软件ISIS元件清单如表1所示。
表1 仿真软件ISIS元件清单四、实验内容和步骤(一)实验内容:(1)熟悉ISIS模块的汇编程序编辑、编译与调试过程;(2)完成实验的汇编语言的设计与编译;(3)练习ISIS汇编程序调试方法,并最终实现实验的预期功能。
(二)实验步骤:(1)提前阅读与实验相关的阅读材料;(2)参考指示灯/开关控制器的原理图和实验的元件清单,在ISIS中完成电路原理的绘制;(3)参考程序流程图在Keil uVision4中编写和编译汇编语言程序;(4)利用ISIS的汇编调试功能检查程序的语法和逻辑错误;(5)观察仿真结果,检验与电路的正确性。
实验一 IO开关量输入输出实验

单片机原理实验报告实验一:IO开关量输入输出实验学院: 物理与机电工程学院专业: 电子科学与技术班级: 2013 级 2 班学号: 201310530208姓名: 何丽丽指导老师: 柳妮实验一IO开关量输入输出实验目的:学习单片机读取IO引脚状态的的方法。
内容:编程读取IO引脚状态。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:首先要把相关的引脚设置在IO的输入状态,然后写一个循环,不停地检测引脚的状态。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将试验箱上的的IO1--- IO8分别连接到SWITCH 的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INPUT下的工程文件IO_INPUT.Uv2编译程序,上电,在程序注释处设置断点,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,改变开关状态,运行程序到断点处,观察窗口的数值与开关的对应关系。
程序:ORG 0000HLJMP MAINORG 0030HMAIN:MOV P0,#0FFHMOV A,P0SWAP AMOV P0,ASJMP MAINEND程序分析:从上面的程序可以看出我们需要用导线将试验箱上的的IO1--- IO8分别连接到SWITCH的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。
在通过SWAP A MOV P0,A这组指令来对P0口所接的对应的发光二极管对应的状态通过拨码开关的开关来控制发光二极管。
结论:通过上面这段程序,我们实现了用拨码开关来控制P0口所接的发光二极管的亮灭。
通过I\O口P0.0—P0.3接拨码开关,P0.4—P0.7一一对应的接发光二极管。
单片机键盘显示实验报告
单片机的键盘和显示实验报告㈠实验目的1.掌握单片机I/O的工作方式;2.掌握单片机以串行口方式0工作的LED显示;3.掌握键盘和LED显示的编程方法。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台㈢实验内容及要求实验硬件线路图见附图从线路图可见,8051单片机的P1口作为8个按键的输入端,构成独立式键盘。
四个LED显示器通过四个串/并移位寄存器74LS164接口至8051的串行口,该串行口应工作在方式0发送状态下,RXD端送出要显示的段码数据,TXD则作为发送时钟来对显示数据进行移位操作。
编写一个计算器程序,当某一键按下时可执行相应的加、减、乘、除运算方式,在四个显示器上显示数学算式和最终计算结果。
注:①通过按键来选择加、减、乘、除四种运算方式。
②输入两个数字均为一位十进制数,可预先放在内存中。
㈣实验框图(见下页)㈤思考题1.当键盘采用中断方式时,硬件电路应怎样连接?P1.4~P1.7是键输出线,P1.0~P1.3是扫描输入线。
输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。
2.74LS164移位寄存器的移位速率是多少?实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。
其实这个问题确实不知道怎么回答。
LED 显示用的段码与教科书所提供的不同,本实验采用如下段码:显示数符段码显示数符段码0BBH A DBH109H B F1H2EAH C B2H36BH D E9H459H E F2H573H F D2H否有否P1口置输入读P1口开 始显示“0000”是否有键按下?延迟消抖是否有键按下?是读键码加法运算减法运算除运算6F3H—40H70BH.04H8FBH┗┛A1H97BH┗┛1AH灭00H P DAH实验代码:ORG 0000HAJMP MAINORG 0030HMAIN:MOV 41H,#0BBH ;对几个存放地址进行初始化MOV 42H,#0BBHMOV 43H,#0BBHMOV 44H,#0BBHMOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL DISPLAY ;初始化显示KEY:MOV R3,#08H;用来存放两个数据MOV R4,#02HMOV P1,#0FFH ;初始化P1口MOV A,P1 ;读取按键状态CPL A ;取正逻辑,高电平表示有键按下JZ KEY ;A=0时无键按下,重新扫描键盘LCALL DELAY1;消抖MOV A,P1 ;再次读取按键状态CPL AJZ KEY ;再次判别是否有键按下PUSH AKEY1:MOV A,P1CPL AANL A,#0FH ;判别按键释放JNZ KEY1 ;按键未释放,等待LCALL DELAY1;释放,延时去抖动POP AJB ACC.0,ADD1 ;K1按下转去ADD1JB ACC.1,SUB1 ;K1按下转去SUB1JB ACC.2,MUL1 ;K1按下转去MUL1JB ACC.3,DIV1 ;K1按下转去DIV1LJMP KEYADD1:LCALL BUFFER ;显示加数和被加数MOV 43H,#049HLCALL DISPLAY ;显示加号MOV A,R3ADD A,R4DA AMOV R3,A ;相加结果放入R6ANL A,#0FHMOV R4,A ;结果个位放入R7MOV A,R3SWAP A ;半字节交换,高四位放入低四位ANL A,#0FHMOV R3,A ;结果的高位放入R6LCALL L;显示缓存区设置LCALL DELAY2;延时一秒后显示LCALL DISPLAYLJMP KEYSUB1:LCALL BUFFER ;显示减数和被减数MOV 43H,#40HLCALL DISPLAY ;显示减号MOV A,R3CLR CY ;CY清零SUBB A,R4 ;做减法PUSH ARLC A ;带进位循环左移,最高位放入CYJC F ;判断最高位,若为1则跳转到负数ZHENG: POP AMOV R4,AMOV R3,#00H ;高位清零SJMP OUTFU:POP ACPL A ;取绝对值INC AMOV R4,AMOV R3,#11H ;显示负号OUT: LCALL L ;显示缓存区设置LCALL DELAY2 ;延时1s后显示LCALL DISPLAYLJMP KEYMUL1:LCALL BUFFER ;显示两位乘数MOV 43H,#99HLCALL DISPLAY ;显示乘号MOV A,R3MOV B,R4MUL AB ;结果放入AB,A中是低8位,B中是高8位MOV B,#0AHDIV AB ;十进制转换MOV R4,B ;结果个位放入R7MOV R3,A ;结果的十位放入R6LCALL LLCALL DELAY2LCALL DISPLAY ;延时1s后显示LJMP KEYDIV1:LCALL BUFFER ;显示除数和被除数MOV 43H,#62HLCALL DISPLAY ;显示除号MOV A,R3MOV B,R4DIV AB ;A除以BMOV R4,B ;余数放在R4中MOV R3,A ;商放在R3中MOV A,R4MOVC A,@A+DPTR ;调用段选号MOV 41H,A ;显示余数MOV A,R3MOVC A,@A+DPTRMOV 43H,A ;显示商MOV 42H,#00HMOV 44H,#00HLCALL DELAY2 ;延时1S后显示LCALL DISPLAYLJMP KEYBUFFER: MOV 41H,#22H ;显示初始化,在做计算之前显示两个操作数,显示等号MOV DPTR,#TABLMOV A,R4MOVC A,@A+DPTRMOV 42H,AMOV A,R3MOVC A,@A+DPTRMOV 44H,ARETDISPLAY:MOV R5,#04H;共四位需要显示MOV R0,#41HDISPLAY1:MOV A,@R0MOV SBUF,ADISPLAY2:JNB TI,DISPLAY2;是否传完了CLR TIINC R0DJNZ R5,DISPLAY1RETL:MOV A,R4MOVC A,@A+DPTRMOV 41H,A ;R4对应的段码MOV A,R3MOVC A,@A+DPTRMOV 42H,A ;R3对应的段码MOV 43H,#00HMOV 44H,#00HRETDELAY1: ;普通延时MOV R1,#20HDS1:MOV R2,#0FFHDS2:DJNZ R2,DS2DJNZ R1,DS1RETDELAY2:MOV R6,#14H ;定时1SMOV TMOD,#01HDS3:MOV TH0,#3CHMOV TL0,#0B0H ;50msSETB TR0LOOP:JNB TF0,LOOPCLR TF0CLR TR0DJNZ R6,DS3 ;1s到,中断返回RETTABL:DB 0BBH 09H 0EAH 6BH ;段码表DB 59H 73H 0F3H 0BHDB 0FBH 7BH 00H 0DBHDB 0F1H 0B2H 0E9H 0F2HDB 0D2H 40H实验结果及分析按键1:8+2= 结果:10按键2:8-2= 结果: 6按键3:8*2= 结果:16按键4:8/2= 结果:4从上面的结果可以看出,本次实验基本完成了实验要求。
PIC单片机实验报告
实验一循环点亮LED灯一、实验内容:将RE0-RE5配置为输出,连接6个LED灯;编写程序,调试并运行,下载到实验板上,实现循环点亮。
二、实验目的:学习PIC单片机I/O端口功能及特点,了解I/O端口引脚及连线,控制寄存器。
在开发板上实现循环点亮LED灯。
三、实验要求1.了解掌握PIC单片机的结构和功能。
2.应熟练掌握MPLAB开发环境的使用方法。
3.熟练掌握PIC单片机的程序编写方法。
4.掌握MPLAB IDE硬件调试的技巧。
四、实验准备:1、I/O引脚及连线:I/O端口特点:1、所有I/O 输入端口都是施密特触发器输入,以便增强抗干扰性。
2、外设复用:所有的器件引脚(除VDD、VSS、MCLR 和OSC1/CLKI之外),均为外设与I/O端口所共用。
3、如果外设使能,并且外设正在使用相关引脚时,该引脚将不再作为通用I/O 引脚使用。
4、优先级:I/O 与多个外设复用时I/O 引脚的名称定义了与该引脚相关的各个功能的优先级,如:I/O 引脚与两个外设复用(“外设A”和“外设B”)外设A 对引脚的控制具有最高优先权,若外设A 和外设B 同时使能,外设A将控制I/O 引脚5、电平变化通知引脚:电平变化通知引脚(CN)内接输入电平变化通知模块,使得dsPIC30F器件能够向处理器发出中断请求,以响应所选输入引脚上的状态变化。
I/O端口控制寄存器:所有的端口引脚,都有三个与端口引脚的操作直接相关的寄存器。
①TRISx:数据方向寄存器。
决定各个引脚是输入引脚还是输出引脚。
–若某个I/O 引脚的TRIS 位为“1”,则该引脚是输入引脚。
–某个I/O 引脚的TRIS 位为“0”,则该引脚被配置为输出引脚。
–复位以后,所有端口引脚被定义为输入。
②PORTx:I/O端口寄存器。
访问的是I/O引脚上的数据。
读的是端口引脚值;写端口引脚,写的是端口数据锁存器(LATx )。
③LATx:I/O端口锁存寄存器。
读的是数据锁存器里锁存的值;写锁存值,写的是端口数据锁存器(LATx )五、实验过程及结果:实验源程序:#include "p30f4011.h”int main(void){int led=0x01;unsigned long int i=0;TRISE =0x100;PORTE=led;while(1){PORTE =led;for (i=0;i<65000;i++){}; //延时led = led<<1; //当第6个LED灯亮后,重新从第1个LED灯点亮if (led == 0x40)led = 0x01;}return 0;}先编写程序,检验正确后,下载到实验板上并运行,实验板上6个LED灯开始循环点亮,通过修改程序,还可以改变延迟时间,即可控制LED灯点亮时间。
单片机实验报告流水灯双机通信交通灯定时时钟
实验一流水灯实验一、实验目的1)简单 I/O 引脚的输出2)掌握软件延时编程方法3)简单按键输入捕捉判断二、实验实现的功能1)开机是点亮 12 发光二极管,闪耀三下2)依据顺时针循环挨次点亮发光二极管3)经过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计流水灯原理图四、系统软件设计演示程序按键正转闪耀反转五、实验过程中碰到的问题及解决方法1) 每次循环不论正转仍是反转程序,总先是先履行P1 口的 8 位 led 灯。
原由:在利用 KEIL 自带的库函数中的 _crol_ 和_cror_ 时,在正转和反转程序中应当调动次序的,开始没注意到。
更正后显示正常。
2)在开始实验的时候推行的是向来循环的方式,利用按键嵌套。
以后发现不理想,每次按键按到三次以上后进入死循环。
解决方案:利用一个按键,显示一次。
并加入按键开释,防备误动作。
指导老师署名:日期:实验一程序 :/******************************************************************** **************工程说明:本工程主要达成了一下功能:1,复位后演示全部功能2,灯闪耀三次3,流水灯正转4,流水灯反转函数说明:yanshi() :演示程序dengss() :闪耀程序right():正转程序left():反转程序scankey() :按键扫描********************************************************************* **************/#ifndef _led_h#define _led_h#define uint unsigned int#define uchar unsigned charuchar i,j,a,b,c,d;uchar flag=0;//亮灯判断标记uchar aa,bb,cc,dd,ss;sbit H1=P3^6;sbit key1=P0^5;sbit key2=P0^6;sbit key3=P0^7;void delay(uint);//1ms 延时void yanshi(void);//演示全部亮灯方式void dengss(void);//闪耀三次void left(void); //左循环亮灯void right(void);//右循环亮灯void scankey(); //按键扫描#endif#include"stc10.h"#include<intrins.h>#include<led.h> //包含各样变量定义及函数申明main(){yanshi();delay(2000); //两秒后进入可控大循环while(1){scankey();if(flag==0)right();if(flag==1)left();if(flag==2)dengss();}}void delay(uint x){uint i,j;for(i=110;i>0;i--)for(j=x;j>0;j--);}void yanshi(){dengss();right();left();P2=0XFF;P3=0XFF;}void dengss(){for(ss=3;ss>0;ss--)P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);}flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void right(){aa=0xfe;for(a=8;a>0;a--){P2=aa;aa=_crol_(aa,1);delay(500);}bb=0xfb;P2=0xff;//熄灭循环后亮着的for(b=4;b>0;b--){P3=bb;bb=_crol_(bb,1);delay(500);}//D12 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void left(){cc=0xdf;for(c=4;c>0;c--){P3=cc;cc=_cror_(cc,1);delay(500);P3=0xff;// 熄灭 D9dd=0x7f;for(d=8;d>0;d--){P2=dd;dd=_cror_(dd,1);delay(500);}//D1 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void scankey(){H1=0;if(key1==0){delay(10);if(key1==0){flag=0;while(!key1);//等候按键开释}}if(key2==0){delay(10);if(key2==0){flag=1;while(!key2);//等候按键开释}}if(key3==0){delay(10);if(key3==0){flag=2;while(!key3);//等候按键开释}}}实验二准时器或实不时钟实验一、实验目的1)数码管动向显示技术2)准时器的应用3)按键功能定义二、实验实现的功能1) 经过按键能够设定准不时间,启动准时器,准不时间到,让12 个发光二极管闪耀,达成准时器功能。
plc实验报告
PLC原理及应用实验报告书目录实验一:基本实验一、实验目的 (3)二、试验内容 (3)三、实验一:走廊灯两地控制 (3)四、实验二:走廊三地灯控制 (4)五、实验三:圆盘正反转控制 (5)六、实验四:小车直线行驶正反向自动往返控制 (6)七、实验五:单按钮单路输出控制 (8)实验二:计时计数及其它应用实验一、实验目的 (10)二、实验内容 (10)三、实验一:计时计数控制 (10)四、实验二:多谐振荡电路 (12)五、实验三:圆盘计时计数控制 (14)六、实验四:移位指令应用 (15)七、实验五:十字路口交通灯的控制 (16)设计报告传输线的PLC控制系统设计一、控制要求 (20)二、I/O口分配 (20)三、确定PLC型号 (20)四、大体流程图 (21)五、梯形程序控制过程的分析与说明 (21)六、控制过程的梯形图程序 (21)七、PLC学习心得 (23)实验一:基本实验一、实验目的:掌握可编程控制器编程软件的操作方法,以熟悉基本指令为主、编写简单的梯形图程序,了解实验设备的使用方法。
二、试验内容:按照下面给出的控制要求编写梯形图程序,下载到可编程控制器中运行。
根据运行情况进行调试、修改程序、知道通过为止。
1、走廊灯两地控制2、走廊灯三地控制3、圆盘正反转控制4、下车直线行驶正反向自动往返控制5、单按钮单路输出控制用一只按钮控制一盏灯,第一次按下时灯亮,第二次按下时灯灭……奇数次灯亮,偶数次灯灭。
三、实验一:1、项目名称:走廊灯两地控制2、控制要求:走廊两地处有两个开关控制一个灯,无论按那个开关灯就亮,再按任何一个开关灯就熄灭。
3、I/O口分配:4、流程图5、梯形图程序:6、实验结果:①走廊两地,开关状态一致时电灯处于熄灭状态。
②走廊两地,开关状态不一致时,即随意拨动一个开关电灯即点亮。
四、实验二:1、项目名称:走廊三地灯控制2、控制要求:走廊三地处有三个开关控制一个灯,无论按那个开关灯就亮,再按任何一个开关灯就熄灭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
单片机实验报告 2
姓名 学号
时间 地点
实验题目 I/O口输入、输出实验
一、实验目的
1. 学习I/O口的使用方法。
2. 学习延时子程序、查表程序的编写和使用。
二、实验仪器和设备
PC机、WAVE软件、仿真器+仿真头、实验板、电源等。
三、实验说明
本实验1通过单片机的I/O口控制LED的亮灭,从而观察I/O口的输出。实
验2通过单片机的I/O口接受按键动作信息,然后通过LED和数码管指示。通过
本实验学生可以掌握单片机I/O口输入输出的控制方法,同时也可以掌握单片机延
时子程序、查表程序的编写和调试方法。要求预先编写好程序并通过伟福仿真软
件调试。
四、实验内容
1、P0口做输出口,接八只LED,编写程序,使LED循环点亮,间隔0.5秒。
2、P1.0--P1.7作输入口接拨动开关S0--S7;P0.0--P0.7作输出口,接发光
二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出
来,同时将开关编号(0—7)显示在LED数码管上。编程时应注意P1作为输入
口时应先置1,才能正确读入值。
五、实验电路连线
P0.0 ---- LED0 P1.0 ----- S0
P0.1 ---- LED1 P1.1 ----- S1
P0.2 ---- LED2 P1.2 ----- S2
P0.3 ---- LED3 P1.3 ------ S3
P0.4 ---- LED4 P1.4 ------ S4
P0.5 ---- LED5 P1.5 ------ S5
P0.6 ---- LED6 P1.6 ------ S7
P0.7 ---- LED7 P1.7 ------ S8
实验1:P0口循环点灯 实验2:P1、P0口输入输出
评
阅
2
a
b c d e f
g
h(dp)
a b c d e f g h(dp)
P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7
实验2: LED数码管各段与I/O的连接
六、程序框图及程序
P0口循环点灯
ORG 0000H ;设定程序汇编起始地址
MOV A,#07FH ;设置初始值01111111
LP: MOV P0,A ;点亮LED0
RR A ;将A里面的值循环右移一位
LCALL DELAY ;调用延时子程序
LCALL DELAY
SJMP LP ;循环点亮LED灯
DELAY: MOV R2,#0FAH ;0.25S的延时程序
L1: MOV R3,#0FAH
L2: DJNZ R3,L2 ;2*250=500us
DJNZ R2,L1 ;500*250*2=250000us
RET ;返回主程序
开始
延时
设置初始值
数据输出
左移一位
3
P1口输入/输出
ORG 0000 ;设定起始地址
MOV P1,#0FFH ;P1口置1
LOOP: MOV A,P1 ;读P1口
CJNE A,0FFH,LED ;查询是否有按键按下
SJMP LOOP ;等待
LED: MOV P0, A ;有键按下,将值读入P0
ACALL DELAY ;调用延时子程序
MOV R5 ,#00H ;置计数初值=0
LOOP1: RRC A ;输入右移1位
JNC LOOP2 ;若Cy=0,则数码显示
INC R5 ;Cy=1,则计数加1
SJMP LOOP1 ;跳回继续移位
LOOP2: MOV DPTR,#TAB ;所查表的首地址赋给DPTR
MOV A,R5 ;计数值做偏移量
MOVC A,@A+DPTR
MOV P2,A ;显示相应按键值
SJMP LOOP
TAB:DB 60H,0DAH,0F2H,66H ;
DB 0B6H,0BEH,0E0H,0FEH ;
DELAY: MOV R2,#0FAH ;0.25S的延时程序
L1: MOV R3,#0FAH
L2: DJNZ R3,L2 ;2*250=500us
DJNZ R2,L1 ;500*250*2=250000us
RET ;返回主程序
七、思考题
1、实验1欲改变LED循环的方向程序应如何修改?循环的时间间隔由什么决
定?写出间隔时间为1秒的延时程序并说明计算方法。
答:改变LED循环的方向仅需要将(
RR A)改成(RL A)即可。
循环的时间间隔由单条语句执行的时间和执行次数共同决定。
开始
读入P1口值
置计数初值=0
P1口置1
将读入的值输出到P0
P1=0FFH?
Y
N
输入值右移1位到Cy
Cy=0?
N
计数值+1
Y
以计数值查段码表
段码输出到P2
4
DELAY: ;1S的延时程序
DEL: MOV R7,#20
DEL1: MOV R6,#246
DEL2: MOV R5,#100
DEL3:DJNZ R5,DEL3 ;2*100=200μS
DJNZ R6,DEL2 ;(200+1+2)*246=49938μS
DJNZ R7,DEL1 ;(49938+1+2)*20=998820us
2、51单片机I/O口的输入/输出逻辑电平是多少?其负载能力有多大?若用I/O
口控制一个继电器(工作电压12V,工作电流100mA)电路该如何设计?
答:
51单片机I/O口的输入/输出逻辑电平是5V。若要用I/O口控制一个继电
器,可
串接一个100欧的降压电阻实现驱动。