关闭

关闭

关闭

封号提示

内容

首页 单片机实验报告

单片机实验报告.doc

单片机实验报告

zhou凤艳
2018-12-03 0人钱柜777手机版登陆 0 0 0 暂无简介 举报

简介:本文档为《单片机实验报告doc》,可适用于IT/计算机领域

单片机实验报告学生姓名       学号   专  业     指导教师        学  院   信息与电气工程学院          年月单片机实验报告实验一 MCS指令系统实验数据排序实验目的熟悉MCS指令系统掌握程序设计方法加深对内部存储器读写的认识熟悉仿真开发环境学会源程序的编写、汇编编译、调试熟悉单片机硬件实验系统以及良好的实验习惯培养等学会检查结果的正确性。实验内容将程序存储器的一个列表中的个单字节无符号数据传送到内部RAM然后用冒泡法对其按从小到大的次序重新排列,并送到外部RAM以H开始的地址单元内。实验流程图调试程序ORG HLJMPSTART将程序存储器的一个列表中的个单字节无符号数据传送到内部RAMORG HSTART: MOV R,#     设置传送次数MOV R,#H   设置数据传送的内部RAM的首地址MOV DPTR,#TAB   LOOP: CLR A      MOVCA,ADPTR   将程序存储器中的代码字节传送给AMOV R,A     A传送到间接寻址RINC DPTR     数据指针加INC R       寄存器R加DJNZR,LOOP   R减若为结束循环传送结束冒泡法对其按从小到大的次序重新排列MOV R,#     设置外循环次数LOOP: MOV A,RMOV R,A     设置内循环次数MOV R,#H   数据首地址送RLOOP: MOV A,RMOV  H,RINC RMOV H,RCLR C       进位标志位清零SUBBA,R     前一个地址单元的内容和后一个地址单元内容比较JC LOOP     若有借位前者小不必交换程序跳转到LOOP若无借位前者大进行交换MOV R,HDEC RMOV R,HINC RLOOP: DJNZR,LOOP  R=内部循环结束DJNZR,LOOP   R=外部循环结束LOOP: LJMPNEXT送到外部RAM以H开始的地址单元内NEXT: MOV DPTR,#H 设置外部存储器数据存放的首地址MOV R,#H   数据区数据首地址传送给RMOV R,#     传送次数LOOP: MOV A,R     MOVXDPTR,A   A传送到外部RAMINC RINC DPTRDJNZR,LOOP   R=传送结束SJMP$ORG HTAB:  DB ,,,,,,,,,   程序存储器的一个列表中的个单字节无符号数据END实验收获万事开头难、要勇敢迈出第一步。开始的时候不要老是给自己找借口说KEIL不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克不会建项目就先学它这方面网上教程很多随便找找看一下做几次就懂了。然后可以参考别的人程序抄过来也无所谓写一个最简单的让它运行起来先培养一下自己的感觉知道写程序是怎么一回事无论写大程序还是小程序个人认为一块学习板还是必要的写好程序在上面运行一下看结果学习效果会好很多仿真器就看个人需要了。单片机是注重理论和实践的光看书不动手是学不会的。通过实验熟悉MCS指令系统掌握程序设计方法加深对内部存储器读写的认识熟悉仿真开发环境学会源程序的编写、汇编编译、调试熟悉单片机硬件实验系统以及良好的实验习惯培养学会了用汇编语言实现冒泡法排序受益匪浅实验二 IO口输入输出实验.实验目的学习P口作为输出输入方式使用的方法掌握延时子程序的编写和使用.实验内容()P口做输出口接个发光二极管编写程序使发光二极管循环点亮。()P~P口做输入口接位拨码开关P~P做输出口接个发光二极管。编写程序读取P口低四位的开关量输入状态输出到P口的高四位由二极管指示出来。 实验流程图 调试程序()、循环点亮发光二极管ORG HLJMPSTARTORG HSTART: MOVA,#HLOOP: RL A                 左移一位点亮下一个发光二极管MOVP,ALCALLDELAY     延时秒JMP  LOOPDELAY: MOVR,#    延时秒DEL:  MOVR,#DEL:  DJNZ R,DELDJNZ R,DELRETEND、通过发光二极管将P口的状态显示ORG HLJMPSTARTORG HSTART: MOVP,#FFH        复位P口为输入状态MOVA,P                  读P口的状态值入累加器ASWAP A                   MOVPAJMP  START               继续循环监测端口P的状态END()P~P口做输入口接位拨码开关P~P做输出口接个发光二极管。编写程序读取P口低四位的开关量输入状态输出到P口的高四位由二极管指示出来。ORGHSTART:   JBP,NEXT 判断P=,跳转NEXTCLRPSJMPNEXNEXT:   SETBPNEX:    JBP,NEXT 判断P=,跳转NEXTCLRPSJMPNEXNEXT:   SETBPNEX:    JBP,NEXT 判断P=,跳转NEXTCLRPSJMPNEXNEXT:   SETBPNEX:    JBP,NEXT 判断P=,跳转NEXTCLRPSJMPNEXNEXT:   SETBPNEX:    SJMPSTARTEND实验收获知识点用到才学不用的暂时丢一边。厚厚的一本书看着人头都晕了学了后面的前面的估计也快忘光了所以最好结合实际程序用到的时候才去看不必说非要把书从第一页看起看完它才来写程序。比如你写流水灯完全就没必要看中断的知识专心把流水灯学好就是了这是把整本书化整为零一小点一小点的啃。通过实验学习P口作为输出输入方式使用的方法掌握了延时子程序的编写和使用。并且用二极管生动形象的表现了输入输出情况。实验三定时器计数器实验.实验目的了解MCS单片机中定时器计数器的基本结构、工作原理和工作方式掌握工作在定时器和计数器两种方式下的编程方法。.实验内容()定时器实验:在使用MHz晶振的条件下用定时器产生ms定时由P口输出周期为s的方波信号并通过发光二极管指示P的输出波形。()定时器实验(选作):在使用MHz晶振的条件下用端口输出不同频率的脉冲(不同频率的脉冲用定时器实现)控制蜂鸣器发出“DoReMiFaSolLaSiDo”不同音调(这些音调的频率可以参考书中P的表)()计数器实验:按计数器模式和方式工作对P(T)引脚进行计数。将其数值按二进制数在P口驱动LED灯上显示出来。 实验流程图 调试程序MHz晶振的条件下用定时器产生ms定时由P口输出周期为s的方波信号并通过发光二极管指示P的输出波形。ORGHLJMP START    转程序入口ORG BH    T的中断入口LJMP TimerInterrupt    转T中断处理程序ITPORG HSTART:MOV SP,#H    设堆栈指针SETBPLCALLInitTimerInitTimer:    定时器初始化MOV B,#H    设循环次MOV TMOD,#H  设T工作在方式MOV TL,#H   给T设初值 MOV TH,#ECHSETB TR     启动TSETB ET     允许T中断SETB EA     开中断RETTimerInterrupt:PUSHDPHPUSHDPLPUSHACCMOVTH,#ECHMOVTL,#HCPLP输出方波POPACCPOPDPLPOPDPHRETIEND附加题SPEAKER  EQU  P    P当做蜂鸣器的输出口ORG    H  LJMP  MAINORG    BHLJMP  ITPORG    BHLJMP  ITPORG    HMAIN:    MOV    SP,#H  LCALL  INITIALMOV    TH,CHMOV    TL,BHLOOP:    MOV    DPTR,#TONELOOP:    MOV    R,#CLR    PTSETB  PTSETB  FACALL  READTONESETB  TRSETB  TRSETB  EALJMP  SPEAKINITIAL:  MOV    TMOD,#HSETB  ETSETB  ETRETREADTONE:  CLR    AMOVC  A,ADPTRJZ    LOOPMOV    H,AMOV    TH,AINC    DPTRCLR    AMOVC  A,ADPTRMOV    H,AMOV    TL,AINC    DPTRRETSPEAK:    CLR    PTSETB  PTJB    F,SPEAKCLR    TRLJMP  LOOPITP:    CPL    SPEAKERCLR    TRMOV    A,HMOV    TH,AMOV    A,HMOV    TL,ASETB  TRRETIITP:    CLR    TRCLR    EAMOV    TH,CHMOV    TL,BHSETB  TRSETB  EADJNZ  R,RECLR    EACLR  TRCLR    FRE:      RETITONE:    DB    FH,BDH,FH,H,FH,CBHDB    FH,BH,FH,DH,FH,DHDB    FH,DDH,FH,EHEND()计数器实验:按计数器模式和方式工作对P(T)引脚进行计数。将其数值按二进制数在P口驱动LED灯上显示出来。ORG  HLJMP  MAINORG  HMAIN: MOV  TMOD,#H  设定T工作在方式计数器方式MOV  TL,#H   给T设定初值MOV  TH,#HSETB  TR  启动TMOV  P,TLHERE: AJMP  HERE    无条件跳转至HEREEND 实验收获程序不要光看不写一定要自己写一次。最开始的时候啥都不懂可以抄人家的程序过来看看每一句是干什么用的达到什么目的运行后有什么后果看明白了之后就要自己写一次你会发现原来看明白别人的程序很容易但到自己写的时候却一句也写不出来这就是差距。。。当你自己能写出来的时候说明你就真的懂了。通过实验了解了MCS单片机中定时器计数器的基本结构、工作原理和工作方式掌握工作在定时器和计数器两种方式下的编程方法。由于定时器和计数器在不同的工作方式下有不同的性质因此学会选取恰当的工作方式十分重要。实验四外部中断实验.实验目的学习外部中断技术的基本使用方法学习中断处理程序的编程方法。.实验内容通过按键产生单脉冲作为中断源触发外部中断在中断处理程序中对输出信号进行反转由P口输出信号使发光二极管点亮或熄灭。 实验流程图 调试程序ORG    HLJMP  MAINORG  H      外部中断LJMP  INORG    HMAIN:  MOV    SP,#H   设堆栈指针SETB  IT        跳变出发方式SETB  EXSETB  EA     开中断clr    pHERE:  SJMP  HEREIN:  CLR    EA      关闭中断允许位CPL    PSETB  EARETIEND实验收获必须学会掌握调试程序的方法。不少人写程序把代码写好了然后一运行不是自己想要的结果就晕了然后跑到论坛上发个帖子把程序一贴问:为什么我的程序不能正常运行?然后就等别人来给自己分析。这是一种很不好的行为应该自己学会发现问题和学会如何解决问题。这就需要学习调试程序的方法比如KEIL里可以下断点啦查看寄存器内容等等这些都是调试程序的手段当你发现你写的程序运行结果和你想象中不一样的时候你可以单步也可以下断点然后跟踪查看各相关寄存器内容看看程序运行过中是不是有什么偏差找出影响结果的地方改正过来。这一个过程非常重要通过程序的排错你可以学到的知识是书上得不到的。通过实验学习了外部中断技术的基本使用方法学习中断处理程序的编程方法。并由二极管发光生动显示。实验五串行通信实验.实验目的()了解MCS单片机串行口(UART)的结构、PC机串行通信的基本要求、串行通信的原理和数据交换过程掌握单片机与单片机间以及单片机与PC机间进行串行通信的编程方法。()掌握存储器扩展接口电路的设计方法掌握单片机内部RAM和外部RAM之间数据传送的特点。.实验内容单片机之间串行通信实验:甲机将存储在片外RAM的一组立即数(H~FH)通过串口发送到乙机乙机接收到后保存到片外RAM中串口采用工作方式波特率为。晶阵为MH 实验流程图 调试程序ORG  H 甲机发送程序LJMP  MAINAORG  HAJMP  SA   串口中断ORG  HMAINA: MOV  SP,#H   设置堆栈指针MOV  SCON,#H  设置串行方式MOV  TMOD,#H  使用定时器T的方式MOV  TL,#FDH  设置波特率为MOV  TH,FDHMOV  PCON,#H  电源控制SETB  TR      TCON控制SETB  EA      IE控制SETB  ESMOV  DPTR,#H 取片外RAM的一组立即数首地址MOV  R,#H   设计数初值为MOVX  A,DPTR 取发送数据MOV  SBUF,A 启动串行口SJMP  $   等待中断SA:  CLR  TI     清发送中断标志CJNE  R,#FH,LOOPACLR  ES     接收完关串行口中断AJMP  ENDALOOPA: INC  R    计数指针加INC  DPTR   地址指针加MOVX  A,DPTR 取发送数据MOV  SBUF,A  启动串行口ENDA: RETI       中断返回END    ORG  H 乙机接受程序LJMP  MAINBORG  HAJMP  SB   串口中断ORG  HMAINB: MOV  SP,#H   设置堆栈指针MOV  SCON,#H  设置串行方式允许串行接收位MOV  TMOD,#H  使用定时器T的方式MOV  TL,#FDH  设置波特率为MOV  TH,FDHMOV  PCON,#H  电源控制SETB  TR      TCON控制SETB  EA      IE控制SETB  ESMOV  DPTR,#H 数据缓冲区首地址MOV  R,#H    设计数初值为SJMP  $   等待中断SB:  CLR  RI      清接收中断标志MOV  A,SBUF     取接收的数据MOVX  DPTR,A     接收的数据送缓存区CJNE  R,#FH,LOOPB   判别是否接收完CLR  ES        接收完关串行口中断AJMP  ENDBLOOPB: INC  R        计数指针加INC  DPTR       地址指针加ENDB: RETI           中断返回END 实验收获找到解决问题思路比找到代码更重要。我们用单片机来控制周边器件达到我们想到的目的这是一个题目而如何写出一个程序来控制器件按你想要的结果去运作这个就是解题的思路。要写程序就得先找到解决问题的思路你学会找出这个解题思路比你找到代码更为重要。不少人很喜欢找人家的代码有的人甚至有了代码就直接复制到自己的程序中可以说这不是一种学习的态度无助于你编程水平的提高。通过实验了解了MCS单片机串行口(UART)的结构、PC机串行通信的基本要求、串行通信的原理和数据交换过程掌握单片机与单片机间以及单片机与PC机间进行串行通信的编程方法。掌握了存储器扩展接口电路的设计方法掌握单片机内部RAM和外部RAM之间数据传送的特点。实验六数码管显示实验.实验目的了解数码管动态显示的原理了解用总线方式控制数码管显示。.实验内容编写程序使数码管显示当前日期(年月日)。说明:本实验仪提供了位段码LED显示电路学生只要按地址输出相应数据就可以实现对显示器的控制。显示共有位用动态方式显示。位段码、位位码是由两片LS输出。码经MC或ULN倒相驱动后选择相应显示位。本实验仪中位段码输出地址为XH位码输出地址为XH。此处X是由KEYLEDCS决定参见地址译码。做键盘和LED实验时需将KEYLEDCS接到相应的地址译码上。以便用相应的地址来访问。例如将KEYLEDCS接到CS上则段码地址为H位码地址为H。 实验流程图 调试程序ORGHLJMPSTARTORGHSTART: MOVDPTR,#TABLEMOVR,#HMOVR,#HNEXT: MOVA,RMOVCA,ADPTRMOVP,A   p决定要显示的数MOVA,RMOVP,A   p决定哪个数码管亮LCALLDAYINCRRLAMOVR,ACJNER,#H,NEXTSJMPSTARTDAY:  MOVR,#  延时msD:  MOVR,#DJNZR,$DJNZR,DRETTABLE:DBBH,FH,H,H,H,H 段码END实验收获开动脑筋运用多种方法不断优化自己的程序。想想用各种不同方法来实现同一功能。这是一个练习和提高的过程一个问题你解决了那么你再想想能不能换种写法也可以实现同一功能或者说你写出来的代码能不能再精简一点让程序执行效率更高这个过程就是一个进步的过程。很多知识和经验的获得并不是直接写在书让你看就可以得到的需要自己去实践开动脑筋经验才能得到积累编程水平才能有所提高。通过实验了解数码管动态显示的原理了解用总线方式控制数码管显示。实验总结

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续钱柜777手机版登陆或者下载,敬请购买!

评分:

/28

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料

博聚网