欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    中国地质大学单片机实验.docx

    • 资源ID:15021295       资源大小:226.94KB        全文页数:32页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    中国地质大学单片机实验.docx

    1、中国地质大学单片机实验 中国地质大学单片机实验报告- 班级:xxx 姓名:xxx 学号:2012 指导老师:王巍 中国地质大学通信工程 实验一 实验开发环境学习一实验目的1) 学习 Keil 软件的使用方法;2) 学习单片机汇编程序的开发流程;3) 学习程序的调试仿真方法。2实验内容完成以下程序,并进行调试。(a)设有两个 4 位的 BCD 码,分别存放在片内 RAM 的 23H,22H 单元和 33H,32H 单元中,求他们的和,并送入 43H,42H 单元中(低位在低字节中,高位在高字节中)。(b)将 8bit 二进制数转换为 3 位 BCD 码。(c)找出放在内存单元40H开始的10个数

    2、中的最大值,并放在内存单元50H 中。三实验注意事项1) 由于实验学时很少,请提前预习和思考实验内容,将流程图及程序准备好,到实验室进行调试和验证。2) 由于实验室计算机 C 盘和 D 盘被保护,所以开始实验前在计算机 E 盘建立自己的文件夹,文件夹最好为英文名称。实验中及时保存自己的源文件。(3) 实验报告要求在实验报告中详细介绍自己的设计思路、流程图和程序编写、调试过程。4实验过程实验a:设计思路:首先将两个BCD码的低字节22H和32H相加放入42H单元中,再将高字节23H和33H相加放入43H单元中,注意要加入十进制加法修正DA指令。流程图:程序代码: ORG 0000H SJMP M

    3、AIN ORG 0030HMAIN: CLR A MOV A,22H ADDC A,32H DA A MOV 42H,A;低字节22H和32H相加放入42H单元中 MOV A,23H ADDC A,33H DA A MOV 43H,A;高字节23H和33H相加放入43H单元中 CLR A ADDC A,#00H MOV 41H,A SJMP $ END实验b:设计思路:设该8bit二进制数存放在R1中,则将其除以100,得到的商便为BCD码的最高位;余数除以10得到的商为第二位;此次余数为BCD码的最低位。流程图:程序代码: ORG 0000H SJMP START ORG 0030HSTAR

    4、T: MOV A,R1 MOV B,#100 DIV AB; 该二进制数除以100 MOV 10H,A; A中为商,即BCD码的最高位,存放在10H中 MOV A,B; 取余数 MOV B,#10 DIV AB; 余数除以10 MOV 11H,A ; A中为商,即BCD码的第二位,存放在11H中 MOV 12H,B; B中为余数,即BCD码的最低位,存放在12H中 END实验c:设计思路:首先将这10个数中的前两个进行比较,第一个数存于寄存器A中,第二个数存于40H单元中;若两数相等或(A)大于(40H),则继续比较A与下一个数;若(A)小于(40H),则把(40H)放到A中后再继续比较A与下

    5、一个数,比较9次后结束循环,最后把A中的值送入内存单元50H中。流程图 程序代码: ORG 0000H LJMP MAXP ORG 0030HMAXP: MOV R0,#0030H; 起始数据地址存放在R0 MOV A,R0; 寄存器间接寻址 MOV R7,#9; 比较次数存放在R7LOOP: INC R0 ; MOV 40H,R0; 下一个数据 CJNE A,40H,NEQ; 比较不相等则跳转到NEQ SJMP SUBNEQ: JNC SUB ; CY=0即(A)更大则跳转到SUB MOV A,R0; 取R0中的数据(大者)存放在ASUB: DJNZ R7,LOOP MOV 50H,A SJ

    6、MP $ END实验二 单片机输入及输出实验1实验目的1) 学习单片机的 I/O 口的使用方法;2) 学习延时子程序的编写和使用;3) 学习分支指令的使用;4) 学习使用定时器完成延时的方法。2实验内容1) P1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮,每个发光二极管点亮时间为 1 秒;仔细思考,画出程序流程图;编写程序并写清注释;2) P2.0、 P2.1 作输入口接两个拨动开关, P1 作输出口,接八个发光二极管,编写程序读取开关状态,根据此状态,改变八个发光二极管的点亮方式(至少两种)。编程时应注意 P2.0、P2.1 作为输入口时应先置 1,才能正确读入值。仔细思

    7、考,画出程序流程图;编写程序并写清注释;3) 考虑使用定时器完成需要的延时,可以采用查询或是中断的方式。首先根据延时时间确定定时器的工作方式(13 位、16 位还是 8 位),然后据此计算出定时器初值,最后确定选择使用 T0 还是 T1,并设置相应特殊功能寄存器(TMOD、TCON)。可根据课件中的例子进行修改。3实验注意事项1) 对于 MCS51MCU, P2 口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当 P2 口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。2) 8051 延时子程序的延时计算问题,需要考虑系统晶振和延时时长,对

    8、于较长的延时需要采用多重循环的方式得到。如实验要求发光二极管点亮1 秒,请参考课件上延时 50ms 的例子进行修改 。3) 如果需要使用定时器完成较长时间的延时,需要定时器多次定时来完成。4) 实验报告要求 在实验报告中详细介绍自己的设计思路、流程图和程序编写过程。4实验电路及连线连线 连接孔 1 连接孔 21 P1.0 L02 P1.1 L13 P1.2 L24 P1.3 L35 P1.4 L46 P1.5 L57 P1.6 L68 P1.7 L79 P2.0 S010 P2.1 S15实验过程实验a(流水灯):设计思路: 在晶振为12MHZ时,方式1 最大能实现的定时时间 为us,要使P1

    9、.0输出周期为2s的方波,定时时间为1s。对类似的定长时间定时要求,可以采用基准定时加循环的方法。比如要求定时1s,选择T0的方式1,基准定时50ms,循环20次即为1s。流程图: (a)主程序流程图 (b)中断服务程序流程图程序代码: ORG 0000H AJMP START ORG 001BH AJMP INT_T0 ORG 0030H START: MOV SP, #68H MOV P2,#0FFH MOV A,#001H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R7,#20 SETB TR1 SETB EA SETB ET0 SJMP

    10、$ INT_T0: PUSH PSW MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,EXIT MOV R7,#20 MOV P1,A RL A EXIT: POP PSW RETI END实验b(LED两种点亮方式):设计思路:P2.1P2.0作输入口接两个拨动开关, P1 作输出口,接八个发光二极管,编写程序读取开关状态,根据此状态,改变八个发光二极管的点亮方式,P2.1P2.0=11时右移依次点亮,P2.1P2.0=10时左移依次点亮。点亮LED用基准定时实现。因为数码管共阴极,所以高电平时亮。流程图: (a)主程序流程图 (b)中断服务程序流程图程序代码: ORG

    11、 0000H AJMP START ORG 000BH AJMP INT_T1 ORG 0030H START: MOV SP, #68H ;数据指针上移 MOV P2,#0FFH ; P2全高 ,P2.1P2.0=11 MOV A,#001H ; MOV TMOD,#10H ;定时器T1设定在0方式 MOV TH1,#3CH ;定时器设初值 MOV TL1,#0B0H MOV R7,#20 ;设定定时循环次数 SETB TR1 ;启动定时器 SETB EA ;开总中断 SETB ET1 ;开定时器T1中断 SJMP $ ;等待中断 INT_T1: ;中断服务程序 PUSH ACC PUSH

    12、PSW MOV TH1,#3CH ;重新赋初值 MOV TL1,#0B0H DJNZ R7,EXIT MOV R7,#20 MOV P1,A ;P1.0输出高电平 JNB P2.0,LOOP ;若P2.0=0,即P2.1P2.0=10程序转移 RL A ;P1口输出电平的引脚由1到2,2到3 ;呈现正向流水灯 AJMP EXIT LOOP: RR A ;P1口输出电平的引脚由7到6,6到5 ;呈现逆向流水灯 EXIT: POP PSW RETI END实验三 单片机定时器及中断实验1实验目的1) 学习单片机的定时器的使用方法;2) 学习中断的使用及中断服务程序的编写;3) 学习查询方式和中断方

    13、式进行信息传递的不同;二实验内容1)使用单片机定时器资源,在 P1.0 口上输出一个周期为 1s 的方波,占空比为 50%。 采用查询和中断的方式分别实现。 思考并回答以下问题:定时器工作在什么模式?定时器工作方式?定时器初值如何确定?使用 T0 还是 T1?如何用定时器得到较长的延时时间?中断还是查询方式?两种方法在设计时有何区别?给出设计思路并画出程序流程图。2)单片机 P1 口接 8 个 LED,有一个 LED 点亮;P2.0 接一个按键,首先采用查询的方式实现: 每按一次按键, LED 向左或向右移位一次。如初始时 L0亮,按一次按键,则 L0 熄灭,L1 点亮;再按一次按键,L1 熄

    14、灭,L2 点亮,给出设计思路并画出程序流程图。3)采用单片机外部中断实现同样的功能。思考并回答以下问题: 电路应该如何连接?如何设置中断控制寄存器?中断方式选择?采用 INT0 还是INT1?如何中断使能?中断入口地址在哪里?中断服务程序要做哪些工作?如何中断返回?主程序结构如何?给出设计思路并画出程序流程图。思考查询方式和中断方式实现同样功能在程序设计上有和不同?3实验注意事项1) 仔细阅读定时器及中断控制寄存器设置部分内容,理解每一位的意义,再根据程序设计确定相关控制字。2) 中断服务程序的设计要注意现场保护以保证退出中断后程序的状态不发生变化。3) 按键连接单脉冲电路 单脉冲电路由按键(

    15、PULSE)和去抖动处理组成,每按一次(PULSE)键产生一个单脉冲。板上有单脉冲的输出信号插孔,图为“ ”和“ ”,分别为正脉冲和负脉冲。4) 实验报告要求在实验报告中详细介绍自己的设计思路、流程图和程序编写过程。四.实验过程方波流程图(中断) (a)主程序流程图 (b)中断服务程序流程图程序代码:方波查询:ORG 0000HAJMP STARTORG 0030HSTART:MOV SP,#68H ;堆栈指针上移SETB P1.0 ;初始化P1.0MOV TMOD,#01H ;设置T0工作在方式1MOV R7,#10 ;循环次数赋值MOV TH0,#3CH ;定时器计数单元赋初值MOV TL

    16、0,#0B0HSETB TR0 ;启动定时器T0LOOP:LOOP1:JNB TF0,$ ;定时时间没有到,继续等待 CLR TF0 ;手动清除终端标志位 CPL P1.0 ; 将P1.0取反使其输出方波 MOV TH0,#3CH ;重新赋初值 MOV TL0,#0B0H DJNZ R7,LOOP SJMP LOOP END方波中断:ORG 0000HAJMP STARTORG 0000BHAJMP INT_T0ORG 0030HSTART: MOV SP,#68H ;堆栈指针上移 SETB P1.0 ;初始化P1.0 MOV R7,#10 ;循环次数赋值 MOV TMOD,#01H ;设置T

    17、0工作在方式1 MOV TH0,#3CH ;定时器计数单元赋初值 MOV TL0,#0B0H SETB TR0 ;启动定时器T0 SETB EA ;开总中断 SETB ET0 ;开定时中断T0 SJMP $ ;等待中断INT_T0:PUSH ACC ;中断服务程序 PUSH PSW MOV TH0,#3CH ;重新赋初值 MOV TL0,#0B0H DJNZ R7,EXIT ;循环次数减一不等于0则跳转 MOV R7,#10 CPL P1.0 ;循环次数完成改变P1.0使之输出方波EXIT:POP PSW POP ACC RETI END实验b流水灯:流程图: (a)主程序流程图 (b)中断服

    18、务程序流程图程序代码:流水灯查询:ORG 0000HSJMP START ORG 0030HSTART: MOV A,#01H MOV P1,A MOV SP,#70H SETB P2.0 WAIT1: JB P2.0 ,$ ACALL DELAYMS JB P2.0,WAIT1 WAIT2: JNB P2.0 ,$ ACALL DELAYMS JNB P2.0,WAIT2 RL A MOV P1,A ;P1口输出电平的引脚移一位 SJMP WAIT1 NOPDELAYMS: ; 延时程序 MOV R0,#20 LOOP1:MOV R1,#200 LOOP2: NOP DJNZ R1,LOOP

    19、2 DJNZ R0,LOOP1 RET END流水灯中断: ORG 0000H AJMP START ORG 0003H SJMP INT_IRQ ORG 0030H START:MOV A,#01H MOV P1,A MOV SP,#70H SETB P3.2 SETB EA SETB EX0 CPL IT0 LOOP1: SJMP $ NOPINT_IRQ: RL A MOV P1,A LOOP2: JNB P3.2,$ ACALL DELAYNSJ JNB P3.2,LOOP2 RETI DELAYNSJ: MOV R0,#20 HAHA: MOV R1,#200 HAHAA: NOP

    20、DJNZ R1,HAHAA DJNZ R0,HAHA RETI END实验四 单片机键盘及 LED 显示实验一实验目的1) 学习数码管动态显示的原理和程序编写;2) 学习矩阵键盘的扫描原理与扫描程序;二实验内容1)使用单片机 I/O 口,完成一个 6 位 7 段数码管动态显示程序,显示自己学号的后六位。数码管共阴,段码为 AH,位码为 G0G5。思考并回答以下问题:动态扫描的原理是什么?什么是位码?什么是段码?延时时间如何确定,在此实验要求下为多少合适?改变延时时间为 20ms 看看有什么现象发生?给出设计思路并画出程序流程图。2)使用单片机 I/O 口,完成键盘和动态显示程序。G0G5 是数

    21、码管的位码,也是键盘列扫描信号,键盘行信号为 K0K3。 要求:初始时所有数码管显示“0”,然后每按一次按键,都在最右边显示该键的符号,而旧数据逐渐左移。思考并回答以下问题:键盘扫描的原理是什么?怎么与动态显示结合?键盘在扫描过程中要注意什么?如何去抖?怎样判断一次正常的按键事件?给出设计思路并画出程序流程图。3实验注意事项1) 将驱动方式开关拨到“外驱”;2) 仔细阅读课本和课件键盘及动态显示部分内容,理解其原理;3) 理解动态扫描显示的过程,理解键盘扫描的过程;4) 七段数码管的字型代码表如下表: 显示字形 g f e d c b a 段码0 0 1 1 1 1 1 1 3fh1 0 0

    22、0 0 1 1 0 06h2 1 0 1 1 0 1 1 5bh3 1 0 0 1 1 1 1 4fh4 1 1 0 0 1 1 0 66h5 1 1 0 1 1 0 1 6dh6 1 1 1 1 1 0 1 7dh7 0 0 0 0 1 1 1 07h8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fhA 1 1 1 0 1 1 1 77hb 1 1 1 1 1 0 0 7chC 0 1 1 1 0 0 1 39hd 1 0 1 1 1 1 0 5ehE 1 1 1 1 0 0 1 79hF 1 1 1 0 0 0 1 71h5) 实验报告要求在实验报告中详细介绍自己

    23、的设计思路、流程图和程序编写过程。四实验电路及连线连线 连接孔 1 连接孔 21 可根据自己的需要选择 相应口线连接 键盘及数码管显示接口23456789 5实验过程设计思路:将流程图: .程序代码:MAIN: MOV P1,#0FH MOV P2,3FH MOV R4,#00H MOV R5,#00H MOV R6,#00H MOV R7,#00H LP:LCALL KEY1 MOV R0,A MOV A,R5 MOV R4,A MOV A,R6 MOV R5,A MOV A,R7 MOV R6,A MOV A,R0 MOV R7,A LCALL DIS AJMP LP KEY1:MOV P

    24、1,#0EFH MOV R7,#0FEH DJNZ R7,$ MOV A,P1 ANL A,#0FH CPL A JZ KEY2PANDDANKEY2:MOV P1,#0DFH MOV R7,#0FFHDJNZ R7,$MOV A,P1ANL A,#0FHCPL A JZ KEY3LJMP PANDDANKEY3:MOV P1,#0BFH MOV R7,#0FFH DJNZ R7,$ MOV A,P1 ANL A,#0FH CPL A JZ KEY4 LJMP PANDDANKEY4:MOV P1,#07FH MOV R3,#03 MOV R7,#0FFH DJNZ R7,$ MOV A,P1

    25、 ANL A,#0FH CPL A JZ EKEY LJMP PANDDANEKEY:RETDIS:MOV R2,#80H MOV A,P2 MOV DPTR,#7AH MOV P1,A MOV A,R7 MOVC A,A+DPTR MOV P0,A LCALL DIMS MOV A,R2 RR A MOV R2,AMOV P1,AMOV A,P6MOVC A,A+DPTRMOV P0,ALCALL DIMSMOV A,R2RR AMOV R2,AMOV P1,AMOV A,R5MOVC A,A+DPTRMOV P0,ALCALL DIMSMOV A,R2RR AMOV R2,AMOV P1,

    26、AMOV A,R4MOVC A,A+DPTRMOV P2,ALCALL DIMSRETDIMS:MOV R7,#02HDL:MOV R6,#0FFHDL1:DJNZ R6,DL1 DJNZ R7,DLRETEND六问题分析动态扫描的原理是什么?对于一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。各位数码管的段选线相应地并联在一起,由一个8位的IO控制。动态方式显示时,各数码管分别轮流选通。要其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应地段码,在

    27、另一时刻选通另一位数码管,并送出相应的段码。依次循环,即可使各位数码管显示将要先显示的字符。什么是段码?什么是位码?有几段数码管,就有几个引脚控制选取哪一位数码管(位选),还有8位段选是公用的,就是当位选为第几位时,段选码只对第几位点亮。段选用来控制被选中的LED灯哪一段亮,依次显示出不同的字形。延时时间如何确定?此实验为多少合适?逐位轮流点亮各个LED。每一位保持1ms,在1020ms之内再点亮一次,重复循环。这样利用了人的视觉暂留,就好像6位LED同时点亮一样,而且灯相对较亮。改变延时时间为20ms会发生什么现象?LED不会看起来同时亮,而是逐个亮,且亮度增加。实验感想 学习单片机没有捷径

    28、,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。 老师提前把任务告诉我们,就是希望我们私下把程序编好。于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。 我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。经过实习学会了坚持自己编写,即使套用时,也把每条语句弄懂。这也能激发了学习的兴趣。


    注意事项

    本文(中国地质大学单片机实验.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开