您好,欢迎访问三七文档
学号14142203527序号35单片机原理与接口技术实验报告实验项目序号实验一实验项目名称跑马灯实验姓名赵吉婷专业电子信息工程班级电信1班完成时间2016.4.08一、实验目的1、熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法;2、掌握采用汇编语言与C语言开发单片机系统的程序结构;3、掌握51系列单片机通用I/O口的使用。二、实验前准备1、完成作业3;2、根据实验内容编写好相关程序,并进行Proteus仿真。三、实验内容实验内容为3项,其中第1、2项必做。1、基本的流水灯。根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。2、简单键控的流水灯。不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。3、键控的流水灯。上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。四、实验原理图如图3.1所示。图3.1跑马灯实验电路原理图电路原理图如图3.1,AT89S52的P0.0~P0.7作为输出连接8个发光二极管,输出低电平0时对应发光二极管发光;由于发光二极管的导通电压为1.7V,所以HNIST-2型实验装置在电源与二极管之间加一个阻值为1K限流电阻保护二极管。AT89S52的P2.0、P2.1作为输入连接2个按键K1、K2,若检测到P2.0=0,则说明K1键按下。五、软件设计思想1、基本的流水灯软件延时采用例题程序delay(j),可调整延时时间。2、简单键控的流水灯。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D0D1D2D3D4D5D6D7+5VK1K2K3K4由于是按下键不松手,键值一直保留,所以判断P2.0=0即是按下K1,采用如例题所示的while(P2.0==0)或while(P2==0xfe)的模式。3、键控的流水灯由于是按一下键后马上松手,所以要设置一个变量b保留按键键值,要在延时程序中检测是否按键,当按键后立即设置b的值。六、实验过程:编写延时程序:ORG00HJMPMAINORG30HMAIN:MOVA,#0FFHCLRCMOVR2,#08H;循环八次LOOP:RLCA;带进位左移MOVP2,AMOVR7,#05HLOOP1:CALLDELAYDJNZR7,LOOP1DJNZR2,LOOP;反复循环JMPMAINDELAY:延时0.2s子程序MOVR3,#20D1:MOVR4,#20D2:MOVR5,#248DJNZR5,$DJNZR4,D2DJNZR3,D1RETEND2、控键流水灯#includereg52.h#defineuintunsignedint#defineucharunsignedcharvoidmain()//主函数{datauchara;a=1;//保证只有一个点亮while(1)//不断循环{P0=0xff;a=1;//全灭while(P2!=0xfe)//P1.2按下处理{P0=~a;//低电平点亮a=a1;//左移一位if(a==0)a=1;//全0delay(150);}//流动点亮延时a=128;while(P2==0xfe)//P1.3按下处理{P0=~a;//低电平点亮a=a1;//右移一位if(a==0)a=128;//若全0,则10000000delay(150);}//流动点亮延时}}3、键控的流水灯while(b==0xfe)//P1.2按下处理{P0=~a;//低电平点亮a=a1;//左移一位if(a==0)a=1;//全0,则00000001delay(150);}//流动点亮延时a=128;while(b==0xfd)//P1.3按下处理{P0=~a;//低电平点亮a=a1;//右移一位if(a==0)a=128;//若全0,则10000000delay(150);}//流动点亮延时while(b==0xfb)//P1.3按下处理{P0=0xff;//全灭delay(150);}}}七、实验心得:单片机是一门应用性和实践性非常强的学科,必须要多动手,多做实验。在编写程序上有多种方法,但是多次比较后选择了相对较简单的一种编写指令方法,因为前期有C语言的基础所以在单片机上对于汇编语言也比较好上手,总之实验就是要多实践再多次验证,才会成功。八、实验思考题:1、采用I/O口作为输出口时要考虑哪些因素?为什么实验装置中LED要串联一个电阻?答:电压的大小(包括它能感知的最小电压作为高电平),电流的驱动能力例如51的p0口若作为io口使用就要加上拉电阻,不然的话高电平是高阻态的形式。还有就是io口默认是不是作为io口,有的io口有第二功能的。LED属于发光二极管,本身的电阻非常的小,但要接入电路时,要注意进行保护,因而要串联一个电阻进行保护它。2、采用I/O口作为输入口时要注意什么?键控的流水灯时为什么要在延时程序中检测是否按键?答:当作为输出口时候就是单片机向外发出数据,或者再产生拉电流,单片机的拉电流一般要比灌电流小,基本上就能点亮2,3个LED,功率很有限,所以一般时候必须用驱动芯片来驱动单片机的外围器件!放在主程序里,每个延时周期内,只能检测按键一次,反应比较慢。放在延时程序里,检测时间间隔比较短,反应快3、为什么延时程序要做一个函数?答:为了提高程序的可执行度,使延时更加精准
本文标题:单片机实验1
链接地址:https://www.777doc.com/doc-7160361 .html