单片机io口控制实验报告

合集下载

实验三单片机IO口控制实验

实验三单片机IO口控制实验

实验三单片机I/O口控制实验一、实验目的利用单片机的P1口作I/O口,学会利用P1口作为输入和输出口。

二、实验设备及器件PC机一台单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮。

2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED亮,不按时LED灭)。

四、实验要求学会使用单片机的P1口作为I/O口,如果有时间用户也可以利用P3口作I/O口来做该试验。

五、实验步骤1.用导线把A2区的J61接口与D1区的J52接口相连。

原理如图所示。

2.先编写一个延时程序。

3.将LED轮流亮的程序编写完整并使用TKStudy ICE仿真器调试运行。

4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连。

原理如上图所示。

5.编写P1.7控制LED的程序,并调试运行。

(按下K1看是否全亮)6.A2区J61接口的P1.7与D1区的J54的SW1相连。

然后再使用TKStudy ICE仿真器运行程序,查看结果。

六、实验预习要求仔细阅读实验箱介绍中的各个接口内容,理解该实验的硬件结构。

还可以先把程序编好,然后在Keil C51环境下进行软件仿真。

七、实验参考程序程序1:ORG 0000HLJMP MainORG 0100HMain: MOV A,#0FFHCLR C MainLoop:CALL DelayRLC AMOV P1,ASJMP MainLoop Delay:MOV R7, #0 Loop:MOV R6, #0DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R7, LoopRETEND程序2:ORG 0000HLJMP MainORG 0100HMain: JB P1.7,SETLED CLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP Main SETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETB P1.4SETB P1.5SETB P1.6SJMP MainEND八、实验思考题(1)请同学们思考一下,还可以用哪些其它的方法编程能够实现以上功能。

单片机io口控制实验

单片机io口控制实验

单片机实验报告实验名称:I/O口控制姓名:高知明学号:班级:通信3时间:南京理工大学紫金学院电光系一、实验目的1、学习I/O口的使用。

2、学习延时子程序的编写和使用。

3、掌握单片机编程器使用和芯片烧写方法。

二、实验原理1.灯闪烁实验(1)在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。

电原理图如图3.1所示。

(2)系统板上硬件连线把“单片机系统”A2区的J61接口的P1.0- P1.6端口与D1区的J52接口相连。

(3)程序设计流程本实验程序设计可参考程序流程3.2图3.1灯闪烁实验电路原理图3.2程序流程图2.广告流水灯实验(1)做单一灯的左移右移,硬件电路图如图3.3所示,八个发光二极管L1-L8分别接在单片机的接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→…→P1.7→P1.6→…P1.0亮,重复循环。

(2)系统板上硬件连线把“单片机系统”A2区的J61接口的P1.0- P1.6端口与D1区的J52接口相连。

要求:P1.0对应着L1,P1.1对应着L2,…,P1.7对应着L8.(3)程序设计流程本实验程序设计可参考程序流程,如图3.4所示图3.3P1口广告流水灯实验电路原理图图3.4广告流水灯实验流程3、模拟开关实验(1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭,如图3.5所示(2)系统板上硬件连线把“单片机系统”A2区的P1.0端口用导线连接到D1区的LED1端口上;把“单片机系统”A2区的P3.0端口用导线连接到D1区的KEY1端口上;(3)程序设计流程本实验程序设计可参考程序流程,如图3.6所示图3.6 程序流程图图3.5模拟开关实验原理图三、实验内容1.流水灯实验C51程序:#include<reg51.h>void time(){long int i;for(i=0;i<=10000;i++);}void delay(unsigned char tmp){unsigned char j;while(tmp--){j=255;while(j--);}}code unsigned char tmpled[8]={0Xfe,0Xfd,0Xfb,0Xf7,0xef,0xdf,0xbf,0x7f}; code unsigned char smpled[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; void main(void){unsigned char i;while(1){for(i=0;i<8;i++){P1=tmpled[i];delay(100);}P1=0xff;time();for(i=0;i<8;i++){P1=smpled[i];delay(100);}P1=0xff;time();}} }}硬件图2.闪烁灯实验C51程序:#include<reg51.h>#define uint unsigned int sbit led=P1^0;void delay(){uint a;a=50000;while(a--);}main(){while(1){led=0;delay();led=1;delay();}}硬件图3、模拟开关实验C51程序:#include<reg51.h>void main(){unsigned char a;sbit key=P3^0;sbit led=P1^0;while(1){if(key==0){for(a=500;a>0;a--);if(key==0)led=0;}else led=1;}}硬件图四、小结与体会通过这次实验,熟悉并掌握了proteus以及keil软件的使用,对I/O口的控制有所了解,学习延时子程序的编写和使用。

单片机IO口控制实验

单片机IO口控制实验

单片机IO口控制实验单片机IO口控制实验是一项基础的实验课程,它涉及到单片机的硬件接口和软件编程,是学习单片机的重要环节之一。

本文将详细介绍单片机IO口控制实验的环境搭建、实验步骤和实验结果等方面。

环境搭建1. 单片机开发板:如STC89C52,AT89C52等。

2. 软件集成开发环境:如Keil,IAR等。

3. 通信工具:USB转串口转换器,串口线等。

4. 其他相关组件:电阻、LED灯、导线等。

实验步骤1. 准备工作将单片机开发板进行电源供应,检查是否正常。

在电脑上安装Keil和STC-ISP等软件工具,安装好后打开Keil,新建一个工程。

3. 写入程序进入Keil中,选择打开工程,新建一个文件,并编写程序。

下面是一个简单的程序示例:#include <reg52.h>void delay(int i) //延时函数{while(i--);}4. 烧录程序在编写好程序后,选择编译,生成一个HEX文件。

将单片机开发板接入电脑,选择工具,打开STC-ISP软件。

选择好COM口和需要烧录的HEX文件,连接单片机开发板和电脑,点击下载。

等待下载成功后,即可将程序烧录到单片机中。

5. 实验验证实验时,可以将LED灯和几个外设连接到单片机的IO口,通过程序控制IO口的电平,达到控制LED灯、外设等的效果。

实验结果实验成功后,可以通过单片机控制LED灯的亮灭、外设的工作状态等,验证程序的正确性。

此外,实验成功还可以提高学生的动手实践能力和编程能力,为后续单片机应用开发打下基础。

结论单片机IO口控制实验是单片机学习中的重要实践环节。

通过实验,可以让学生了解单片机的硬件接口和软件编程,提高学生的实践能力和编程能力,培养学生独立思考和解决问题的能力。

单片机实验一IO口实验

单片机实验一IO口实验

单片机实验一IO口实验实验一单片机IO口操作一、实验目的:1、学习IO口的使用方法;2、学习延时子程序的编写和使用;3、能控制LED灯的亮灭,并做出动态效果。

二、实验原理:1、通过程序控制单片机端口,使其各端口按要求实现高低电平的输出,从而控制LED灯的亮与灭;2、用独立按键控制LED灯的亮灭,用部分IO做输入接到按键上,用部分IO做输出接到发光二极管上,当按键按下时,相应的发光二极管亮。

DELAY: ; 延时子程序MOV R0, #0FFHDEL: MOV R1, #0FFHDJNZ R1, $DJNZ R0, DELRET ; 延时子程序结束三、实验程序:实验1:Org 0000hLjmp mainMain:org 1000hmov A,#0FEH /*向累加器赋初值AA: RL A /*循环左移,灯循环点亮MOV P1,A /*从P1口输出CALL DELAY /*延时JMP AADELAY: ; 延时子程序MOV R0, #0FFHDEL: MOV R1, #0FFHDJNZ R1, $DJNZ R0, DELRETEND实验2:Org 0000hLjmp mainorg 1000hmain: MOV A,P1 /*从P1口读取高四位键值SWAP A /*高四位与低四位交换数据MOV P1,A /*从低四位输出高四位的键值MOV P1,#0FFH /*P1口初始化,即向锁存器置1JMP mainEND四、实验结论与心得:通过本次试验掌握了IO口的使用方法;延时子程序的编写和使用;通过编写程序能控制LED灯的亮灭,并做出动态效果。

单片机(IO输入输出实验)

单片机(IO输入输出实验)

实验报告实验课程:单片机学生姓名:邱永洪学号:6100210026专业班级:中兴101 班2012年 11月28 日实验一 I/O 口输入、输出实验一、实验目的掌握单片机P1口、P3口的使用方法,对实验板的熟悉,如何根据实验板原理图进行连线。

二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。

以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。

三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。

因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。

若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。

八位逻辑电平显示电路原理图参见图1-2。

五,程序为:;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.1口);; 用8位数据线连接八位逻辑电平显示模块的JD4B到CPU模块的JD8(P1口)。

;//****************************************************************** DIR BIT P3.1ORG 0000HLJMP STARTORG 0200HSTART:Output1:mov A, #0fEH ;把11111110二进制赋给A变量mov R5, #8 ;把8送到R5寄存器中loop1:CLR C ;把标志位清零mov C,DIR ;读入开关K0的值JC Output2 ;K0的状态为1则跳转到Output2mov P1, A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮rl A ;把A进行循环左移,相当于把0进行左移,由此二极管从右到左依次点亮》》》向左的跑马灯AcAll Delay ;调用延时子程序djnz R5, loop1 ;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output1,否则继续loop1Sjmp Output1Output2:mov A, #07fH ;把01111111二进制赋给A变量mov R5, #8 ;把8送到R5寄存器中loop2:CLR C ;把标志位清零mov C,DIR ;读入开关K0的值JNC Output1 ;K0的状态为0则跳转到Output1mov P1, A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮rr A ;把A进行循环右移,相当于把0进行左移,由此二极管从左到右依次点亮》》》向右的跑马灯AcAll Delay ;调用延时子程序djnz R5,loop2 ;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output2,否则继续loop2Sjmp Output2Delay: ;0减1后为-1其补码为11111111mov R6,#0 ;该延时为双重循环,总延时约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us= 0.264456s这个值与实验现象很匹配DelayLoop1:mov R7,#0DelayLoop2:NOP ;空指令NOPdjnz R7,DelayLoop2 ;R7中值为0则跳转djnz R6,DelayLoop1 ;R6中值为0则跳转retend六、实验步骤1)系统各跳线器处在初始设置状态。

单片机实验一I/O端口实验报告参考模板

单片机实验一I/O端口实验报告参考模板

单片机原理与接口技术实验实验一 I/O端口实验(2)系别:通信工程系专业:通信工程系11级学号:233201122041姓名:实验时间:2014年3月6日撰写日期:2014年3月9日实验一 I/O端口实验(2)一、实验目的1、掌握单片机通用I/O端口的使用方法;2、掌握I/O端口数据输入/输出的方法。

二、实验内容(与本次实验报告标题括号中的数字对应)2、当开关状态为0101(K5K6K7K8)时,四个灯循环右移;当开关状态为1010(K5K6K7K8)时,四个灯循环左移;当开关为其它状态时,在LED1~LED4上显示开关状态。

程序运行时,拨动开关,显示立即跟着变化。

【基础,周四下午每人做】三、实验设计思路对于该题,因为有3种情况,所以参考课本P68程序,在while循环结构内添加if-else条件判断语句,分别区分右移、左移、与开关状态一致3种情况。

四、电路原理图及接线说明绘制本次实验用到的部分完整电路原理图如下:开关K5K6K7K8与P2.0~P2.3相连线;LED:1~8和P1.0~P1.7相连线。

五、实验流程图见下图:六、调试过程及实验现象对于第该题,一开始运行灯全亮,经按F8逐步调试后,发现P2的值怎么也无法赋给变量b,导致无论如何拨动开关,b的值都不会改变,一直等于FF,使灯全亮。

后来经助教指点方知是P2口没有设置为I/O模式,以致于无法将P2的值传输给b。

修改设置后,一切运行正常。

七、总结本次实验的实验难度不大,第一题参考课本的8位左移右移例子稍作修改便可运行,因为实验原理一样;但却因为一开始自己不够细心导致的一些软件设置问题而严重影响到了自己的实验进度,像这样的错误今后一定要避免。

第一次接触单片机,感觉还挺有趣意思的。

附录:实验源程序以压缩包提供整个项目文件例如: s03-lab01-1a.rar友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。

i0口输入输出实验报告

i0口输入输出实验报告

竭诚为您提供优质文档/双击可除i0口输入输出实验报告篇一:实验二I-o口输入、输出实验报告单片机实验报告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----LeD0p1.0-----s0p0.1----LeD1p1.1-----s1p 0.2----LeD2p1.2-----s2p0.3----LeD3p1.3------s3p 0.4----LeD4p1.4------s4p0.5----LeD5p1.5------s5 p0.6----LeD6p1.6------s7p0.7----LeD7p1.7------s8 实验1:p0口循环点灯实验2:p1、p0口输入输出agfbabcdefgh(dp)eh(dp)实验2:LeD数码管各段与I/o的连接dcp2.0p2.1p2.2p2.3p2.4p2.5p2.6p2.7六、程序框图及程序p0口循环点灯oRg0000hmoVA,#07FhLp:moVp0,ARRALcALLDeLAYLcALLDeLAYsJmpLpDeLAY:moVR2,#0FAhL1:moVR3,#0FAhL2:DJnZR3,L2DJnZR2,L 1ReT;设定程序汇编起始地址;设置初始值01111111;点亮LeD0;将A里面的值循环右移一位;调用延时子程序;循环点亮LeD灯;0.25s的延时程序;2*250=500us;500*250*2=250000us;返回主程序p1口输入/输出oRg0000Loop:moVA,p1cJneA,0FFh,LeDsJmpLoopLeD:moVp0, AAcALLDeLAYmoVR5,#00hLoop1:RRcAJncLoop2IncR5sJmpLoo p1Loop2:moVDpTR,#TAbmoVA,R5;设定起始地址;读p1口;查询是否有按键按下;等待;有键按下,将值读入p0;调用延时子程序;置计数初值=0;输入右移1位;若cy=0,则数码显示;cy=1,则计数加1;跳回继续移位;所查表的首地址赋给DpTR;计数值做偏移量moVp1,#0FFh;p1口置1moVcA,@A+DpTRmoVp2,A;显示相应按键值sJmpLoopTAb:Db60h,0DAh,0F2h,66h;Db0b6h,0beh,0e0h,0Feh;DeLAY:moVR2,#0FAhL1:moVR3,#0FAhL2:DJnZR3,L2DJnZR2,L1ReT;0.25s的延时程序;2*250=500us;500*250*2=250000us;返回主程序七、思考题1、实验1欲改变LeD循环的方向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算方法。

单片机io口实验结论

单片机io口实验结论

单片机io口实验结论单片机IO口实验结论单片机IO口是单片机与外部设备交互的重要接口,通过IO口可以实现输入输出功能。

在进行单片机IO口实验的过程中,我们得出了以下几点结论。

1. 单片机IO口具有输入和输出功能。

通过设置相应的寄存器,可以将IO口配置为输入或输出模式。

输入模式时,可以读取外部信号的状态;输出模式时,可以向外部设备发送信号。

2. 单片机IO口具有高低电平控制能力。

通过设置相应的寄存器,可以将IO口输出高电平或低电平信号。

高电平一般表示逻辑1,低电平表示逻辑0。

通过控制IO口的高低电平,可以与其他设备进行通信。

3. 单片机IO口具有上拉和下拉功能。

当IO口配置为输入模式时,可以通过上拉或下拉电阻来确保输入信号的稳定性。

上拉电阻使得输入信号在未连接时保持高电平,下拉电阻使得输入信号在未连接时保持低电平。

4. 单片机IO口具有中断功能。

通过配置相应的寄存器和中断向量表,可以使IO口在特定条件下触发中断。

当IO口输入信号满足中断触发条件时,可以立即响应中断并执行相应的中断服务程序。

5. 单片机IO口的电流限制。

在使用IO口时,需要注意IO口的电流限制。

如果连接的外部设备需要较大的电流驱动能力,可以通过外部电流放大器或继电器等方式来实现。

6. 单片机IO口的电压范围。

在使用IO口时,需要了解IO口的电压范围。

不同的单片机IO口电压范围可能有所不同,需要根据具体的需求选择合适的单片机型号和IO口。

7. 单片机IO口的电平转换。

当单片机与其他设备进行通信时,可能存在电平不匹配的情况。

可以通过电平转换电路来实现不同电平之间的转换,以确保通信的稳定性。

8. 单片机IO口的使用限制。

在使用IO口时,需要遵守单片机的使用规范和限制。

例如,不同的IO口可能有不同的功能限制、电流限制和电压范围限制,需要根据具体的芯片手册进行配置。

总结:单片机IO口是单片机与外部设备交互的重要接口,通过IO 口可以实现输入输出功能。

单片机实验报告二 单片机IO口实验

单片机实验报告二 单片机IO口实验

南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.16 实验成绩:实验二单片机I/O口实验(一)实验目的1.掌握单片机最小系统的构成,学习如何控制I/O口来驱动发光二极管,掌握移位和软件延时程序的编写。

2.熟练掌握STC型开发板的使用方法和注意事项。

3.掌握应用STC_ISP烧录过程;(二)设计要求利用51单片机及4个LED发光二极管,设计一个单片机流水灯程序,P4.7 /P4.6/ P1.6/ P1.7 来演示跑马灯。

其中流水灯的变化形式多样。

(三)实验原理STC实验箱单片机型号为IAP15W4K32S4-Student,其在线编程与在线仿真可由Keil uVision4集成开发环境和STC系列单片机在线可编程(ISP)电路实现:1.设置STC仿真器:运行STC-ISP在线编程软件,选择“keil 仿真设置”选项,如图1所示,单击“添加型号和头文件到keil中/ 添加STC仿真器驱动到keil中”,弹出“浏览文件夹”对话框,在浏览文件夹中选择keil的安装目录,单击“确定”按钮即完成添加。

根据所用芯片,单击“将IAP15W4K32S4-Student设置为仿真芯片”。

图12.Keil uVision4环境设置:选择菜单命令Project →Options for Target →Debug,选中“STC Monitor-51 Driver”,勾选“Load Application at Startup”选项和“Run to main()”选项,如图2所示。

单击图2右上角的“settings”按钮,弹出硬件参数设置对话框,如图2所示,根据仿真电路所使用的串口号(本机所用为串口5)选择串口端口,如图3所示:图2图33.STC15单击串口TTL电平通信模块结构如图4所示,P1.6、P1.7、P4.6、P4.7所连接的LED灯为共阳极LED,控制对应I/O口为低电平即可点亮LED。

单片机io口控制led实验报告

单片机io口控制led实验报告

单片机io口控制led实验报告
一、实验背景
单片机是一种集成电路,它可以通过编程来控制各种电子设备。

在这个实验中,我们将学习如何使用单片机的IO口来控制LED灯。

二、实验材料
1. STC89C52RC单片机开发板
2. LED灯
3. 220欧姆电阻
4. 杜邦线
三、实验原理
单片机的IO口可以用来控制数字信号。

当IO口输出高电平时,LED 灯就会亮起来;当IO口输出低电平时,LED灯就会熄灭。

为了保护单片机和LED灯,我们需要使用一个220欧姆的电阻。

这个电阻可以限制电流流过LED灯和单片机之间的连接。

四、实验步骤
1. 将一个杜邦线连接到单片机的P
2.0引脚。

2. 将另一个杜邦线连接到单片机的GND引脚。

3. 将一个220欧姆的电阻连接到P2.0引脚和LED正极之间。

4. 将另一个杜邦线连接到LED负极。

5. 将另一个220欧姆的电阻连接到LED负极和单片机的GND引脚之间。

五、实验结果
当单片机的P2.0引脚输出高电平时,LED灯会亮起来;当P2.0引脚输出低电平时,LED灯会熄灭。

六、实验总结
这个实验展示了如何使用单片机的IO口来控制数字信号。

我们还学习了如何使用电阻来保护单片机和LED灯。

在实际应用中,我们可以使用单片机的IO口来控制各种设备,例如电机、传感器等。

这个实验是学习单片机编程的基础,对于想要深入学习嵌入式系统开发的人来说是非常重要的。

单片机实验一,I/O端口实验报告(3)

单片机实验一,I/O端口实验报告(3)

单片机原理与接口技术实验实验一 I/O端口实验(3)系别:通信工程系专业:通信工程系11级学号:233201122041姓名:实验时间:2014年3月6日撰写日期:2014年3月9日实验一 I/O端口实验(3)一、实验目的1、掌握单片机通用I/O端口的使用方法;2、掌握I/O端口数据输入/输出的方法。

二、实验内容(与本次实验报告标题括号中的数字对应)3、模拟汽车转向指示灯:【提高,选做】P3.0接K5作为左转向开关,P3.1接开关K6作为右转向开关,P3.4接LED1作为左转向指示灯,P3.5接LED4作为右转向指示灯。

编程:当K5K6状态为01时,左转向灯以1秒/次的频率闪烁;当K5K6状态为10时,右转向灯以1秒/次的频率闪烁;当K5K6状态为00或11时,左右转向灯全灭。

三、实验设计思路对于该题,与上一题的主要区别在于使用位操作比较简单,便于对开关情况的判别及对LED灯闪烁情况的处理,其余设计方法同上在while里添加if-else 语句进行判别分类;对于延时一秒,当晶振为12MHz时,在原来的延时程序里再添加一个while循环,可延时大约0.8s,近似于1s。

四、电路原理图及接线说明P3.0连接K5,P3.1连接K6;P3.4连接LED1,P3.5连接LED4。

五、实验流程图六、调试过程及实验现象对于第该题,一开始运行程序后,发现除了指示灯没有闪烁外,其他功能都没问题。

后来仔细检查程序后发现是我的程序逻辑问题,忘记编写使灯由亮到灭的语句,经修改后程序运行结果良好,大约为每隔0.8s闪一次。

七、总结本次实验的实验难度不大,位操作可以很容易地解决。

但却因为一开始自己不够细心导致的延时函数运用地不大到位影响到了自己的实验进度,像这样的错误今后一定要避免。

第一次接触单片机,感觉还挺有趣意思的。

附录:实验源程序以压缩包提供整个项目文件例如: s03-lab01-1a.rar。

IO口控制实验

IO口控制实验

实验名称:单片机I/O口控制实验实验目的:利用单片机的P1口作为I/O口,学会利用P1口作为输入和输出口。

实验原理:一、 C51的IO口系统:P0~P3端口功能总结:(1)P0~P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。

而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无MUX。

P0口的MUX的一个输入端为“地址/数据”信号。

P2口的MUX的一个输入信号为“地址”信号。

(2)在4个口中只有P0口是一个真正的双向口,P1~P3口都是准双向口。

原因:P0口作数据总线使用时,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。

为此,P0口的输出缓冲器应为三态门。

P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。

P1~P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的-准双向口。

(3)P3口的口线具有第二功能,为系统提供一些控制信号。

因此P3口增加了第二功能控制逻辑。

这是P3口与其它各口的不同之处。

二、C51的中断系统单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。

1.五个中断请求源:(1)INT0*—外部中断请求0,由引脚INT0*输入,中断请求标志为IE0。

(2)INT1*—外部中断请求1,由引脚INT1*输入,中断请求标志为IE1。

(3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。

(4)定时器/计数器T1溢出中断请求,中断请求标志为TF1。

(5)串行口中断请求,中断请求标志为TI或RI。

由特殊功能寄存器TCON和SCON的相应位锁存。

2.中断控制:中断允许寄存器IE:CPU对中断源的开放或屏蔽,由片内的中断允许寄存器IE控制。

字节地址为A8H,可位寻址。

IE对中断的开放和关闭为两级控制。

总的开关中断控制位EA(IE.7位):EA=0,所有中断请求被屏蔽。

实验三、单片机IO实验

实验三、单片机IO实验

实验三单片机I/O及外部中断实验一、实验目的1.学习P1、P3口作为基本I/O口的使用方法,掌握对发光二极管和继电器的程序控制方法;2.学习在单片机系统中扩展简单I/O接口的方法,学习模拟交通灯控制的方法;3.掌握外部中断技术的基本使用方法和中断处理程序的编程方法。

二.实验仪器:1.仿真教学实验机(5196ET)一台2.直流稳压电源(DF 1731 SB 3A)一台3.PC机一台三、实验内容1、P1口做输出口实验(1)实验要求:P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

(2)电路及连线如下:(3)实验说明1.延时子程序的延时计算问题对于程序DELAY:MOV R0,#00HDELAY1:MOV R1,#0B3HDJNZ R1,$DJNZ R0,DELAY1查指令表可知MOV,DJNZ 指令均需用两个机器周期,而一个机器周期时间长度为12/11.0592MHz,所以该段程序执行时间为:((0B3+1)×256+1)×2×12÷11059200=100.002mS(4)实验框图(见TP1A.ASM主程序框图):(5)P1.0~P1.7接DL1.~DL8,运行程序TP1A,观察现象。

TP1A程序:ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HMOV A,#01HROTA TE: MOV P1,A;点亮一个LEDRL A;循环右移LCALL DELAY;延时NOPSJMP ROTA TEDELAY: ;延时子程序(1秒)MOV R0,#0AHDELAY1: MOV R1,#00HDELAY2: MOV R2,#0B2HDJNZ R2,$DJNZ R1,DELAY2DJNZ R0,DELAY1RETEND(6)修改程序TP1A,使指示灯左循环。

* (7)修改程序TP1A,使指示灯两两右循环。

* (8)修改程序TP1A,使指示灯从两边向中间循环。

单片机实验四IO显示控制实验(数码管显示实验)

单片机实验四IO显示控制实验(数码管显示实验)

电子信息工程学系实验报告课程名称:单片微型计算机与接口技术成绩:实验项目名称:实验四I/O 显示控制实验实验时间:2013.11.24指导教师(签名)班级: 姓名: 学号: ********一、实验目的:1、熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。

2、了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。

3、学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。

二、实验环境:1 、Windows XP 系统;2、Keil uVision2 、proteus系列仿真调试软件三、实验原理:1、L ED数码管的结构和原理LED显示器是由发光二极管显示字段的显示器件。

在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种。

(a)共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮;(b)共阳极LED显示器的发光二极管阳极并接。

2、七段显示器与单片机接口:只要将一个8位并行输出口与显示器的发光二极管引脚相连即可。

8位并行输出口输出不同的字节数据即可获得不同的数字或字符,如下表所示。

通常将控制发光二极管的8位字节数据称为段选码。

八段选码(显示码)的推导(以共阳数码管显示C为例):要显示C则a、f、e、d四个灯亮2.为是共阳数码管,则a、f、e、d应送0时亮3.dp-a为11000110B 3、多位数码管的显示:电路结构、动态静态两种实现原理:LED显示器有静态显示与动态显示两种方式。

(1)LED静态显示方式各位LED的位选线连在一起接地或接+5V;每位LED的段选线(a—dp)各与一个八位并行口相连;在同一时间里每一位显示的字符可以各不相同。

(2) LED动态显示方式将所有LED的段选线并联在一起,由一个八位制。

女口:8位LED动态显示电路只需要两个八位I /O 口控制,而位选线分别由相应的I / O 口线控I / 0口。

单片机实验-IO口的输入输出实验

单片机实验-IO口的输入输出实验

实验二I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。

2. 学习延时子程序、查表程序的编写和使用。

二、参考程序框图三、程序设计1、P0口循环点亮程序ORG 0030HSTART : MOV P2,#00H; //消影MOV A ,#01H; //LOOP : MOV P2 ,A; //点亮一个led灯ACALL DELAY; //延时500msRL A; //左移一位AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh值MOV DPTR,#TABLE; //表地址存入DPTRMOV 50H,#0FEH; //比较初值载入地址50hL0 :MOV A,P1; //按键消抖CJNE A,#0FFH,L1;AJMP L0;L1 :MOV A,P1;CJNE A,#0FFH,LL1;AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h中数据相等MOV P0,A; //相等输出对应led灯MOV A,#00H;MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管LCALL DELAY; //延时LJMP START; //返回程序开头LL2 :XCH A,50H; //交换数据RL A; //左移XCH A,50H; //再次交换,此时地址50h中数据左移一位INC DPTR; //表格数据地址加一LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R7,DE1;RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化MOV P1,#0FFH; //P1口赋FFH初值MOV P0,#00H;START : MOV P2,#00H; //P2清0;MOV P0,#00H; //P0清0;MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动MOV A,R1;CJNE A, #0FFH,LL1;AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码CPL A; //A取反MOV P0,A; //输出到P0口LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入MOV P2,#5BH; //以下同上CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下MOV P2,#4FH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下MOV P2,#6DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下MOV P2,#7DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下MOV P2,#07H;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下MOV P2,#7FH;CPL A;MOV P0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND四、思考题1、LED循环方向更改:RL A; 改成RR A;1S的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RET2、提高电阻阻值3、一般为5V或者3.3V。

实验二单片机IO口的使用

实验二单片机IO口的使用

实验二单片机IO口的使用实验目的:掌握单片机IO口的使用方法,了解IO口的输入输出功能。

一、实验介绍在单片机系统中,IO口是通过端口来实现与外部设备的通信。

IO口可以用来输入控制信号或者输出数据信号,是单片机与外部世界交互的重要接口。

二、实验器材与工具1.单片机开发板2.扁平灯泡3.蜂鸣器4.电阻、电容等元器件5.逻辑分析仪三、实验步骤1.简单的IO口输出实验将一个扁平灯泡连接到单片机的一个IO口上,并将该IO口配置为输出模式。

实验中,可以通过控制该IO口的高低电平来控制灯泡的亮灭。

2.IO口输入实验将一个开关连接到单片机的一个IO口上,并将该IO口配置为输入模式。

实验中,可以读取该IO口的电平状态,来判断开关的状态。

3.组合实验将多个扁平灯泡和开关连接到单片机的IO口上,并通过控制和读取IO口的电平状态来实现各种功能。

可以实现灯泡的闪烁、扁平灯泡的亮度调节、蜂鸣器的控制等功能。

四、实验原理1.IO口模式设置单片机内部有寄存器用于控制IO口的工作模式。

通过设置相应的寄存器来将指定的IO口配置为输入或者输出模式。

2.IO口输出控制IO口的输出控制是通过操作相应的寄存器来实现的。

输出操作可以将指定的IO口设置为高电平或者低电平。

3.IO口输入读取IO口的输入读取也是通过操作相应的寄存器来实现的。

读取操作可以获取指定IO口的电平状态,以判断外部设备的状态。

五、实验总结通过这次实验,我学会了单片机IO口的配置与使用方法。

IO口是单片机与外部设备交互的重要接口,掌握了IO口的使用方法后,可以实现各种功能,如灯光控制、开关检测等。

同时,我也了解到了IO口的原理和应用场景,为以后的电子设计打下了基础。

单片机实验报告IO口控制

单片机实验报告IO口控制

单片机实验报告实验名称:I/O口控制实验姓名:魏冶学号:090402105班级:光电一班实验时间:2011-11-15南京理工大学紫金学院电光系一、实验目的1、Keil C51软件的介绍,Proteus软件的应用,及结合使用。

2、学习I/O的使用;3、学习延时子程序的编写和使用;4、掌握单片机编程器使用和芯片烧写方法。

二、实验原理1.灯闪烁实验(1)在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。

(2)系统板上硬件连线:把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。

灯闪烁实验电路原理图(3)程序设计流程2.广告流水灯实验(1)做单一灯的左移右移,八个发光二极管L1~L8分别接在单片机的P1.0~P1.7接口上,输出“0”的时候,发光二极管亮,开始时P1.0->P1.1->P1.2->P1.3->...->P1.7->P1.6->...P1.0亮,重复循环。

(2)系统板上硬件连线:把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。

要求:P1.0对应着L1,P1.1对应L2,……,P1.7对应着L8。

P1口广告流水灯实验电路原理图(3)程序设计流程:流程图如下3.模拟开关实验(1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄火。

(2)系统板上硬件连线:把“单片机系统”A2区的P1.0端口用导线连接到D1区的LED1端口上;把“单片机系统”A2区的P3.0端口用导线连接到D1区的KEY1端口上;模拟开关实验原理图(3)程序设计流程三、实验内容1 灯闪烁利用单片机的I/O引脚控制一发光二极管,实现闪烁效果。

(1)c语言代码#include<reg51.h>sbit P10=P1^0;void delay(){long int i;for(i=0;i<7550;i++);}void main(){while(1){P10=1;delay();P10=0;delay();}}(2)系统板上硬件连线(3)时间控制2 广告流水灯利用单片机的任一组I/O引脚控制八个发光二极管,实现广告流水灯效果(1)c语言代码#include<reg51.h>void time(){long int i;for(i=0;i<=38000;i++);}void delay(unsigned char tmp){unsigned char j;while(tmp--){j=255;while(j--);}}code unsigned char tmpled[8]={0Xfe,0Xfd,0Xfb,0Xf7,0xef,0xdf,0xbf,0x7f}; code unsigned char smpled[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; void main(void){unsigned char i;while(1){for(i=0;i<8;i++){P1=tmpled[i];delay(100);}P1=0xff;time();for(i=0;i<8;i++){P1=smpled[i];delay(100);}P1=0xff;time();}}(2)系统硬件电路(3)时间控制3 模拟开关读取单片机的I/O引脚状态来控制发光二极管,引脚状态由外部开关控制。

单片机io口实验报告

单片机io口实验报告

实验一以下所有KEIL工程、程序均命名为自己姓名的拼音一、实验目的:熟悉KEIL软件的开发,掌握程序下载流程二、实验环境:1.硬件:PC微机、单片机开发板2.软件:KEIL三、实验步骤:1.在KEIL中新建工程文件,在工程文件下新建C文件“姓名首字母.c”并加入到工程中(注意C语言编程时,工程中要保留STARTUP.A51汇编文件)。

2.编写程序,初始化内部数据寄存器0x40开始的100个地址单元,写入0x55,然后复制到0x60开始的存储器中,使用软件仿真的方式调试程序,观察程序模拟运行的结果:#include "reg52.h"unsigned char *p,*q;unsigned char i;int main(){p=0x40;for(i=0;i<10;i++){*p=0x55;p++;}for(i=0;i<10;i++){*p=*q;q++;p++;while(1);}}调试时,在调试界面中依次找到a) 变量观察窗口b) 存储器窗口c) 单步运行d) 全速运行程序运行结果(存储器窗口截图):3.编写程序,控制实验板上的LED灯:D1-D3点亮,D4-D7熄灭,D8点亮#include”reg52.h”sbit P1_4=P1^4;int main(){P1_4=0;P0=0x1E;While(1);}4.编写C语言程序,实现LED灯循环点亮#include "reg52.h"void delay (unsigned z){while(z--);}int main(){unsigned char i;P1&=~(0x01<<4);P0=0xff;i=0x01;while (1){P0=~i;i=i<<1;if(i==0x0)i=0x01;delay(10000);}}四、实验总结。

实验一IO口控制实验

实验一IO口控制实验

实验一I/O口控制实验1.实验目的①掌握基本IO输入输出操作指令;②熟练运用keil环境对硬件接口进行调试。

2.预习要求①理解51单片机内部I/O接口的结构和功能,了解P0、P1、P2、P3口做为普通I/O接口时的应用特性。

②理解软件延时程序的设计方法,延时时间估算和精确计算方法;③认真预习本节实验内容,设计出实验的硬件连接,编写实验程序。

3.实验条件①基于51单片机的开发板或实验开发箱。

②PC微机一台。

③Keil uVision2软件开发环境。

4.基础型实验①在Keil环境运行如下程序,系统使用12MHz晶振,粗略计算此程序的执行时间为多少?ORG 0000HDelay: MOV R6,#0Dloop1: MOV R7, #0DLoop0: DJNZ R6,Dloop0DJNZ R7,Dloop1RET②8位逻辑电平显示的接口电路设计如图1-1所示,用P1口做输出口,接八个LED。

程序功能使发光二极管从右到左轮流循环点亮。

在Keil环境运行该程序,观察发光二极管显示情况。

图1-1 8位逻辑电平显示接口电路ORG 0LOOP: MOV A, #0FEHMOV R2,#8OUTPUT: MOV P1,ARL AACALL DELAYDJNZ R2,OUTPUTLJMP LOOPDELAY: MOV R6,#0MOV R7,#0DELAYLOOP: DJNZ R6,DELAYLOOP ;延时程序DJNZ R7,DELAYLOOPRETEND③8位拨动开关的接口电路设计如图1-3所示,P2口接收拨码开关的输入值,结合上面的8位八位逻辑电平显示接口电路,进行I/O输入输出实验。

在Keil环境运行该程序,使用单步、断点、连续运行调试程序,查看结果。

图1-3 拨码开关接口电路ORG 0000HLL: MOV P2,#0FFH NOP MOV A, P2NOPMOV P1,ALJMP LL END④ 双色LED 分有共阴、共阳两种封装形式,提供三个引脚,其中一个为公共端,两个为显示控制端。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TL0=55536%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
p10=0;
while(flag==0);
flag=0;
p10=1;p11=0;
while(flag==0);
flag=0;
p11=1;p12=0;
while(flag==0);
flag=0;
p12=1;p13=0;
while(flag==0);
{
while(1)
{
if(p30==0)
p10=0;
else
p10=1;
}
}
三、小结与体会
通过本次实验学会了I/O口的使用,学会了延时子程序的编写和使用以及掌握了单片机编程器的使用和芯片烧写方法。通过Proteus ISIS和Keil uvision软件的互相配合,使得单片机在电脑上的仿真轻松便捷。通过本次试验,利用简单的试验,2种软件以及硬件的使用。
(2)系统板上硬件连线:把“单片机系统”A2区的P1.0端口用导线连接到D1区的LED1端口上;把“单片机系统”A2区的P3.0端口用导线连接到D1区的KEY1端口上;
实验原理图如下图
程序设计流程
否 是
二、实验内容
1、流水灯
#include<reg51.h>
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
unsigned char count=0;
bit flag;
void main()
{
P1=0xff;
TMOD=0x01;
TH0=55536/256;
(2)系统板上硬件连线:把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。要求:P1.0对应着L1,P1.1对应L2,……,P1.7对应着L8。
P1口广告流水灯实验原理图如下
程序设计流程:流程图如下
2、模拟开关实验
(1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄火。
}
void t0_srv() interrupt 1
{
TH0=55536/256;
TL0=55536%256;
count++;
if(count==10)
{
flag=1;
count=0;
}
}
2、模拟开关
#include<reg51.h>
sbit p30=P3^0;
sbit p10=P1^0;
void main()
单片机实验报告
实验名称:
I/O口控制
姓 名:
张昊
学 号:
110404247
班 级:
南京理工大学紫金学院电光系
一、实验目的
1、学习I/O口的使用。
2、学习延时子程序的编写和使用。
3、掌握单片机编程器的使用和芯片烧写方法。
二、实验原理
1、广告流水灯实验
(1)做单一灯的左移右移,八个发光二极管L1~L8分别接在单片机的P1.0~P1.7接口上,输出“0”的时候,发光二极管亮,开始时P1.0->P1.1->P1.2->P1.3->...->P1.7->P1.6->...P1.0亮,重复循环。
flag=0;
p13=1;p14=0;
while(flag==0);
flag=0;
p14=1;p15=0;
while(flag==0);
flag=0;
p15=1;p16=0;
while(flag==0);
flag=0;
p16=1;p17=0;
while(flag==0);
flag=0;
p17=1;
}
相关文档
最新文档