单片机原理与接口技术实验报告.docx

上传人:夺命阿水 文档编号:919269 上传时间:2024-01-16 格式:DOCX 页数:34 大小:130.24KB
返回 下载 相关 举报
单片机原理与接口技术实验报告.docx_第1页
第1页 / 共34页
单片机原理与接口技术实验报告.docx_第2页
第2页 / 共34页
单片机原理与接口技术实验报告.docx_第3页
第3页 / 共34页
单片机原理与接口技术实验报告.docx_第4页
第4页 / 共34页
单片机原理与接口技术实验报告.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《单片机原理与接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《单片机原理与接口技术实验报告.docx(34页珍藏版)》请在课桌文档上搜索。

1、“单片机原理与接口技术”实验报告姓名:张键学号:201821010128专业班级:自动化1班实验一闪烁LED实验(2学时)一、实验目的1、学会使用Keil建立51单片机Project和编译程序;2、学会程序延时的方法;3、学会使用单片机I/O口实现输出。二、实验内容通过软件延时,控制一位LED按设定的时间间隔闪烁。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图J128765432miIjRI2JR23JR31JR45JR56,JR67,JR78JRS9,GND1LE11OEVCCLEGNDrled474-jl83D12,i112力CiDB161rL由、D14154rL4一.-5CD1

2、5J143(6D16iB2T1,71CD171218CD18TLRP2010120QOQ1MQ33Q5Q6QD0D-lD2D3D4D5D6D7WCrp211101JIOGND745732、程序(自行编写,C语言与汇编均可)ORGOOOOHSTART:MOVA,#OOHMOVPO,ALCALLDELAYMOVA,#01HMOVPO,ALCALLDELAYLJMPSTARTDELAY:MOVR5,#20Dl:MOVR6,#20D2:MOVR7,#20DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND四、思考题1、如何改变LED闪烁的时间间隔?答:通过改变延迟函数,即DELAY函数中赋

3、予的Ri工作寄存器区不同的立即数,即可改变LED闪烁的时间间隔;赋给Ri的值越大,即延时的时间越长,LED闪烁的时间间隔越长,相反地,赋给Ri的值越小,即延时的时间越短,LED闪烁的时间间隔越短。2、如何实现更精确的闪烁时间间隔?答:采用单片机的内部资源,即定时器来进行计时;先确定要延时的时间,根据公式计算出THl(THO)和TLl(TLO)要赋予的值,当定时器计数溢出后则会使单片机进入中断子程序,在中断子程序中执行点亮和熄灭LED灯的操作,即可实现精确的闪烁时间间隔。实验二移位LED实验(2学时)一、实验目的1、学会二进制移位操作和循环语句在单片机中的用法;2、认识CY位在汇编中如何参与移位

4、。二、实验内容1、1个LED从左到右循环依次点亮;2、1个LED左右来回循环依次点亮;3、花式流水灯,自定义样式点亮8个LED。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图,同实验一。2、程序(自行编写,C语言与汇编均可)1):ORGOOOOHSTART:MOVR2,#8MOVA,#01HCLRCLOOP:MOVPO,ALCALLDELAYRLCADJNZR2,LOOPLJMPSTARTDELAY:MOVR5,#20Dl:MOVR6,#20D2:MOVR7,225DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND2) :ORGOOOOHSTART:MOVR2,#7MO

5、VA,#01HCLRCLOOP:MOVPO,ALCALLDELAYRLCADJNZR2,LOOPMOVR2,#7LOOPl:MOVPO,ALCALLDELAYRRCADJNZR2,LOOPlLJMPSTARTDELAY:MOVR5,#20Dl:MOVR6,#20D2:MOVR7,#225DJNZR7,$DJNZR5,D1RETEND3) :ORGOOOOHstartmovR2,#i28MOVA,#128CLRCLOOP:MOVPO,ALCALLDELAYDECADJNZR2,LOOPMOVR2,#7LOOPl:MOVPO,ALCALLDELAYRLCADJNZR2,LOOPlLJMPSTART

6、DELAY:MOVR5,#20DkMOVR6,#20D2:MOVR7,#255DJNZR7,$DJNZR6,D2RETEND四、思考题1、比较RR,RL和RRC,RLC指令的异同。答:RRRL分别是累加器A循环右移和循环左移的指令,是不带进位位CY的;而RRC,RLC则分别是累加器A连同进位位循环左移指令和循环右移指令。2、LED共阳极接法与共阴极接法,输出I/O口时有什么不同?答:当LED采用共阳极接法时,I/O口输出必须是0,即低电平信号才可点亮;而采用共阴极接法时,I/O口输出必须是1,即高电平信号才可点亮。实验三七段数码管实验(2学时)一、实验目的1、学习七段数码管静态显示阿拉伯数字;

7、2、学习查表指令的使用。二、实验内容采用静态显示的方法,编程实现单个七段数码管循环显示09,主程序中的循环语句反复将09的段码送至PO口,使数字09循环显示。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图,其中七段数码管采用共阳极接法。VCCJP3DSlAMBERCA41T21 45 3-62 15RPlOIKRPlIlK77T772、程序(自行编写,C语言与汇编均可)ORGOOOOHmain:MOVDPTR,#TABMOVR2,#10MOVA,#255LOOPkpushACCMOVCA,(g)A+DPTRMOVPO,APOPACCLCALLDELAYINCADJNZR2,LOOPl

8、LJMPmainDELAY:MOVR5,#100Dl:MOVR6,#20D2:MOVR7,255DJNZR7,$DJNZR6,D2DJNZR5,D1RETTAB:DBOcOh,0f9h,0a4h,ObOh,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0alh,86h,8ehEND四、思考题1、数码管静态显示与动态显示有何异同?请写出各自适用范围。答:动态显示是指几块LED分时显示,静态显示是指几块LED同时显不,动态显示,可以节省硬件资源即I/O口,但占用较多CPU时间,适用于接口数量较少或外部设备连接较多的情况;静态显示方式编程较简单,但占用I/O口线多,硬件

9、成本高,适用于显示位数比较少的场合。2、数码管的共阳极接法与共阴极接法,输出字表有什么不同?答:共阳极接法数码管:当输出为低电平(即。接地时)选中各数码段,由0到f的编码为:OxcO,0xf9,0xa4,OxbO,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,Oxal,0x86,0x8e共阴极接法数码管:当输出为高电平(即1接+5V时)选中各数码段,由0到f的编码为:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71当共阳极数码管和共阴极数码管

10、显示相同字码时,对应的字码编码是为按9位取反的关系。实验四独立按键与外部中断实验(2学时)一、实验目的1、学习独立按键的使用;2、学习外部中断的使用。二、实验内容判断独立按键输入(8位),当按下按键后,一位数码管显示对应的键值;将独立按键连接到P3口,触发对应的外部中断源,数码管依次加一。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图,其中LED与数码管部分同前述实验,按键部分原理图如下:独立按健2、程序(自行编写,C语言与汇编均可)1)独立按键:ORGOOOOHLI:JNBP2.0,L2JNBP2.1,L3JNBP2.2,L4JNBP2.3,L5JNBP2.4,L6JNBP2.5,

11、L7JNBP2.6,L8JNBP2.7,L9LJMPLIL2:MOVA,#01HLCALLDISPLAYL3:MOVA,#02HLCALLDISPLAYL4:MOVA,#03HLCALLDISPLAYL5:MOVA,#04HLCALLDISPLAYL6:MOVA,#05HLCALLDISPLAYL7:MOVA,#06HLCALLDISPLAYL8:MOVA,#07HLCALLDISPLAYL9:MOVA,#08HLCALLDISPLAYLJMPLlRETTAB:DB0C0H.0F9H,0A4H,OBOH,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,OAiH,86

12、H,8EHEND2)外部中断ORGOOOOHAJMPMAINORG0003HAJMPINTXORGOlOOHMAIN:SETBITOSETBEASETBEXOMOVA,#OOHMOVDPTR,#TABMOVR1,#OOHMOVR2,#OFHSJMPSINTX:MOVA,RlMOVCA,A+DPTRMOVPO,AINCRiJNZLOOPMOVRl,#00LOOP:NOPRETITAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0AlH,86H,8EHEND四、思考题1、为什么需要按键防抖?如何实现软件去抖?答:由于机械

13、触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,因此需要按键消抖,其主要目的是为了提高按键输入可靠性。软件消抖的方法是编制一段时间大于IOomS(但不能延迟太长时间,否则需要长按才有响应)的延时程序,在第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。2、查询式按键与外部中断按键有何区别?答:采用中断的话,在没有键按下时,是不占用CPU资源,只有按键事件发生时,才会触发中断使程序开始执行相应的中断子程

14、序,此时才会占用CPU的资源;如采用查询方式,CPU要利用循环语句一直查询是否有按键按下,要消耗CPU资源。实验五矩阵键盘实验(2学时)一、实验目的1、学习矩阵键盘的使用;二、实验内容判断矩阵键盘按键输入(16位),当按下按键后,一位数码管显示对应的键值;三、实验过程与结果记录1、单片机开发试验仪相关部分原理图,其中LED与数码管部分同前述实验,矩阵键盘部分原理图如下:2、程序(自行编写,C语言与汇编均可)ORGOOOOHLjmpmainmain:MOVP0,#0FFHMOVP2,#0FFHKEYDOWN:MOVP2,#OFOHLCALLDELAYOMOVA,P2CJNEA,#OFoH,KEY

15、SCANLJMPKEYDOWNKEYSCAN:MOVA,P2CJNEA,#7OH,N1MOVR4,M)0HLJMPNEXTNI:CJNEA,#OBoH,N2MOVR4,#04HLJMPNEXTN2:CJNEA,#ODOH.N3MOVR4,#08HLJMPNEXTN3:CJNEA,#OEOH.NEXTMOVR4,#0CHLJMPNEXTNEXT:MOVP2,#00FHMOVA,P2CJNEA,#07H,N4MOVR3,#00HLJMPNEXTN4:CJNEA,#0BH,N5MOVR3,#01HLJMPNEXTN5:CJNEA,#0DH,N6MOVR3,#02HLJMPNEXTN6:CJNEA,#

16、0EH,DISPLAYMOVR3,#O3HLJMPDISPLAYDISPLAY:MOVA,R4ADDA,R3MOVDPTR,#LEDTABMOVCA,A+DPTRMOVPO,ALJMPKEYDOWNDELAY:MOVR6,#25D2:MOVR7,#100DJNZR7,$DJNZR6,D2RETLEDTAB:DB0C0H,0F9H,0A4H,OBOH,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,OAlH,86H,8EHEND四、思考题1、简述矩阵键盘的行/列检测流程?答:矩阵键盘采用行列扫描的检测方法,具体步骤就是一开始让八位I/O口的高4位输出高电平,低4位输出

17、低电平,若这4行按键里,有按键按下了,那么那一行按键对应的I/O口的电平就会被拉低,我们就可以知道按键的行坐标。获取按键列坐标的方法也是类似的,就是一开始让Pl口高4位输出低电平,低4位输出高电平,若这4列按键里,有按键按下了,那么那一列按键对应的I/O口的电平就会被拉低,我们就可以知道按键的列坐标,获得了行坐标X,列坐标y后,单片机便可知道是哪个按键被按下。实验六串口通信实验(2学时)一、实验目的1、学习单片机与PC之间的串口通信;二、实验内容1、通过一位独立按键,每按一次,数字(从0开始)加一发送到PC调试软件上显示。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图,其中按键部分同

18、前述,串口部分通过下载程序的USB(CH340-USBtoTTD实现。2、程序(自行编写,C语言与汇编均可)ORGOOOOHLJMPSTARTSTART:M0VSP,#60HLCALLInitUARTMOVA,#00HLOOP:JNBP2.0,L3LJMPLOOPL3:LCALLDELAYJNBP2.0,L4L4:INCALCALLSendOneByteLJMPLOOPInitUART:MOVTMOD,#20HMOVSCON,#50HMOVTH1,#OFDHMOVTLl,THlMOVPCON,#00HSETBEASETBESSETBTRlRETSendOneByte:CLRESCLRTIMOV

19、SBUEAWaitSendFinish:CLRTISETBESRETDELAY:MOVR5,#50Dl:MOVR6,#20D2:MOVR7,#255DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND四、思考题1、单片机串行口通信需要注意什么?从硬件电平,软件设置(波特率,停止位)等方面描述。答:若是实现单片机之间的串口通信,连线的方式必须是TXD-RXD,RXD-TXD;软件设置上一定要选择定时器的工作模式2,即自动再载入8位计数器,这是配置串行口通信的波特率;除此之外,还需要使能中断总开关和串口中断;在CPU响应中断之后,必须对TI、Rl标志为进行清零,否则会影响下一次的发送或

20、者接收。实验七点阵LED实验(2学时)一、实验目的1、学习8X8点阵LED的使用。二、实验内容分别采用两组IO口驱动一个8X8点阵LED,编程实现循环显示09。三、实验过程与结果记录1、单片机开发试验仪相关部分原理图如下:8*飙色点阵JI7J182、程序(自行编写,C语言与汇编均可)#includeunsignedcharwei8=Oxfe,Oxfd,OxiKOxfV,Oxef,Oxdf,Oxbf,0x7f);unsignedcharduan80=(0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x0

21、0,0x00,OXoO,0x27,0x45,0x45,0x45,0x39,0x00,0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00,0x00,OxOc,Ox14,0x24,0x7f,0x04,0x00,0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00,0x00,0x3e,0x49,0x49,0x49t0x26,0x00,0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,0x(X),0x36,0x49,0x49,0x49,0x36,0x00,0x00,0x00,0x32,0x

22、49,0x49,0x49,0x3e,0x00,0x00);voiddelayms(unsignedintm)inti,j;fbr(i=O;im;i+)(for(j=0;j120;j+);voidmain(void)(inti,j;while(l)(for(j=0;j50;j+)(for(i=0;i8;i+)(P2=weiil;P3=duani;delayms;1)for(j=0;j50;j+)(for(i=0;i8;i+)P3=duani+8;delayms(2);)for(j=0;j50;j+)(for(i=0;i8;i+)(P2=weii;P3=duani16;delayms;1)for(

23、j=0y50y+)(for(i=0;i8;i+)(P2=weii;P3=duani+24;delayms;1)for(j=0;j50;j+)(for(i=0;i8;i+)P3=duani+32;delayms(2);)for(j=0;j50;j+)(for(i=0;i8;i+)(P2=weii;P3=duani+40;delayms;1)for(j=0y50y+)(for(i=0;i8;i+)(P2=weii;P3=duani+48;delayms;1)for(j=0;j50;j+)(for(i=0;i8;i+)P3=duani+56;delayms(2);)for(j=0;j50;j+)(f

24、or(i=0;i8;i+)(P2=weii;P3=duani+64;delayms;1)for(j=0y50y+)(for(i=0;i8;i+)(P2=weii;P3=duani+721;delayms;四、思考题1、共阳极与共阴极点阵LED字码有何异同?答:当共阳极点阵LED和共阴极点阵LED显示相同字码时,对应的字码编码为按位取反的关系。2、如果实现双色显示?答:在原有的程序和硬件配置上,配置多八位I/O(Pl或PO)口来控制另一种颜色的显示,在一段时间内不断切换对两种颜色的控制信号,即当一种颜色亮时,另一种颜色熄灭,即可实现LED点阵的双色显示(现象是不同颜色的字码分时显示)。实验八LC

25、Dl602实验(2学时)一、实验目的1、学习1602LCD的使用。2、学习定时器的使用二、实验内容1、LCD第一行显示秒,从1到60循环显示,采用定时器定时。2、LCD第二行显示固定字符串,可随意显示三、实验过程与结果记录1、单片机开发试验仪相关部分原理图如下:LcDI602LCD1602VCCOGND11(JO、OleEVS9CJIBZNJOsMCQCQCQCQCQCQffiCfiOAAHXBaaaaaaaaRJ6(1602)1032、程序(自行编写,C语言与汇编均可)#include#defineLCD1602_DATAPINSPO#defineucharunsignedchar#defi

26、neuintunsignedintsbitLCD1602-E=P27;sbitLCD1602.RW=P25;sbitLCD1602-RS=P26;intcounl=0;intlime=0;uchartimenum11=(0,l,2,3,4,5,6,778,9,;uchartext=,Iamhandsome;voidLed1602_Delay1ms(uintc);voidLcdWriteCom(ucharcom);voidLcdWriteData(uchardat);voidLcdlnit();voidLed1602_Delay1ms(uintc)uchara,b;for(;c0;c-)(for

27、(b=199;bO;b-)(for(a=l;a0;a-);#ifndefLCD1602.4PINSvoidLcdWriteCom(ucharcom)(LCD1602.E=0;LCD1602_RS=0;LCD1602_RW=0;LCD1602_DATAPINS=com;Lcdl602.Delaylms(l);LCD1602.E=1;Lcdl602_DeIaylms(5);LCDI602.E=0;#elsevoidLcdWriteCom(ucharcom)LCD1602_E=0;LCDI602.RS=0;LCD1602_RW=0;LCD1602_DATAPINS=com;Lcdl602_Delay

28、lms(l);LCDI602-E=1;Lcdl6O2_Delayims(5);LCD1602.E=0;LCD1602_DATAPINS=com4;Lcdl602_Deiaylms(l);LCDI602-E=1;Lcdl6O2_DelayIms(5);LCD1602.E=0;)#endif#ifndefLCD1602_4PINSvoidLcdWriteDa(a(ucharda()(LCDI602.E=0;LCD1602_RS=1;LCD1602_RW=0;LCD1602_DATAPINS=dat;Led1602_Delay1ms(l);LCD1602-E=1;Led1602_Delay1ms;L

29、CD1602_E=0;I#elsevoidLcdWriteData(uchardat)(LCD1602_E=0;LCDI602.RS=1;LCDI602_RW=0;LCD1602_DATAPINS=dat;Led1602_Delay1ms(1);LCD1602.E=1;Led1602_Delay1ms(5);LCDI602.E=0;LCD1602_DATAPINS=dat4;Led1602_Delay1ms(l);LCD1602-E=1;Led1602_Delay1ms(5);LCD1602_E=0;)#endif#ifndefLCDI602_4PINSvoidLcdInitO(LcdWrit

30、eCom(0x38);LcdWriteCom(OxOc);LcdWriteCom(0x06);LcdWriteCom(OxOl);LcdWrileCom(0x80);I#elsevoidLcdInitO(LcdWriteCom(0x32);LcdWrileCom(0x28);LcdWriteCom(OxOc);LcdWriteCom(0x06);LcdWriteCom(OxOl);LcdWriteCom(OxSO);)#endifvoidinit()EA=I;ETO=1;TRO=1;TMOD=0X01;THO=OXFC;TLO=OX18;)voidmain()inti;init();Lcdln

31、it();LcdWriteCom(0x80+0x07);LcdWriteData(timenumtime);LcdWriteCom(0x80+0x08);LcdWriteData(timenumtime);LcdWrileCom(0x80+0x07);for(i=0;i13;i+)(LcdWrileCom(0x80+0x40+i);LcdWriteData(texti);)while(l);IvoidInil()interrupt1count+;THO=OXFC;TLO=OX18;if(count=1000)(time+;LcdWriteCom(0x80+0x07);LcdWriteData(

32、timenumlime/10);LcdWrileCom(0x800x08);LcdWriteData(timenumtime%10);if(time=60)(time=0;)count=0;四、思考题1、如何实现超过65536微秒初值的长时间定时?答:在中断控制程序中增添循环语句即可实现超过65536微秒初值的长时间定时。假设定时器溢出后进入一次中断子程序,则进入中断子程序的次数(COUnt)对应加1,当进入中断子程序的次数达到预先设置的值时,执行相应的功能,即可实现由次数(COUnt)决定的任意时间的定时,执行结束后对次数(COUnt)进行清零,即可进行下一次的计时。2、简述LCD1602引脚RW的作用,解释为何当程序不检测液晶“忙”状态的时候,RW可不用K)口控制。答:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。因为检测液晶“忙”状态的时候是读命令操作,又知读命令操作时,RW32引脚必须先置1,才可检测液晶是否为“忙”状态。因此,当程序不检测液晶是否为“忙”状态时,即不读LCD1602内部数据的时候,RW可不用IO控制。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号