ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:514.99KB ,
资源ID:3252892      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3252892.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理及应用实验指导书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机原理及应用实验指导书.docx

1、单片机原理及应用实验指导书 单 片 机 原 理 及 应 用 实 验 指 导 书信息学院2010年3月目 录实验一 熟悉单片机软件开发环境 1实验二 MCS-51单片机I/O实验 4实验三 七段数码管动态显示实验 7实验四 键盘扫描及显示实验 12实验五 MCS-51单片机中断实验 15实验六 定时器计数器实验 19实验七 单片机AD转换及串行异步通信 23实验八 单片机软件实现IIC存储接口 29实验九 单片机综合应用设计实验 33实验一 熟悉单片机软件开发环境一、实验目的1、了解单片机软件开发环境的主要软件PROTEUS和KEIL;2、掌握软件的安装、使用、程序的调试方法,包括跟踪、单步运行

2、和断点设置等;3、熟悉51单片机的指令系统,掌握汇编语言程序的设计方法。二、实验仪器P4电脑一台,软件PROTEUS6.7、KEIL UV2以上版本。三、实验内容1、PROTEUS、KEIL软件的安装。2、PROTEUS和KEIL软件联合调试的设置。3、简单程序调试(1) 传送指令设置内部RAM的值,(30H)=40H, (40H)=10H,单步执行下列程序,检查结果。MOV 30H,#40HMOV 40H,#10HMOV R0,#30HMOV A,R0MOV R1, AMOV B, R1 SJMP $执行后:(R0)= ,(R1)= ,(A)= ,(B)= ,(30H)= ,(40H)= 。

3、(2) 运算指令单步执行MOV A, #0BFHMOV 20H, #85HSETB CADD A, 20H MOV A, #0BFHMOV 20H, #85HSETB CADDC A, 20HMOV A, #0BFHMOV 20H, #85HSETB CSUBB A, 20HMOV A, #0BFHMOV B, #85HMUL ABSJMP $结果标志(A)= CY= AC=OV= P= (A)= CY= AC=OV= P= (A)= CY= AC=OV= P= (A)= (B)=CY= AC=OV= P= 4、多字节十进制数加法被加数加数结果低位20H6730H6520H21H4531H72

4、21H22H2332H9822H23H0133H8923H高位图1-2 4字节十进制数相加两个4字节十进制数1234567和89987265相加,将其8421-BCD码按低位到高位存放在地址为20-23H、30-33H的RAM中,运算结果存放在20-23H的地址中,如上图示。运算程序如下,ADD_BCD为多字节十进制数加法子程序的首地址。分别按“跟踪”、“单步”和“全速”方式调试程序。检查运算结果,区别“跟踪”、“单步”调试方式的不同。在“ADD_BCD子程序”的指令“DA A”处设置断点,再用“全速”方式运行,到达断点后,观察“A”的值,然后用“单步”运行,观察指令“DA A”的功能。同时理

5、解“断点” 方式调试程序的特点。;主程序 ; MOV R0, #20H ;置被加数首地址 MOV R1, #30H ;置加数首地址 MOV R2, #04H ;置被加数和加数的长度(字节数) ACALL ADD_BCD ;调用多字节十进制数加法子程序ADD_BCDSTOP:SJMP STOP ;停止; 多字节十进制数加法子程序 ;入口: R0、R1为被加数和加数的首地址,按低位到高位存放;出口: R0为运算结果的首地址,也按低位到高位存放ADD_BCD:CLR C ;进位清零LOOP: MOV A, R0 ;一字节的被加数AADDC A, R1 ;一字节加DA A ;十进制数调整MOV R0,

6、 A ;存一字节的运算结果INC R0 ;被加数指向下一字节INC R1 ;加数指向下一字节DJNZ R2, LOOP ;循环控制RET ;子程序返回END四、预习要求1、读懂各程序;2、预先给出运算结果,以便和实验结果比较;3、回忆“跟踪”、“单步”和“断点”调试方式的特点。五、思考题1、为什么程序结束用“STOP:SJMP STOP”指令?用没有其他的停止方式? 51单片机启动后,是否一直不断地在执行指令?2、比较“跟踪”、“单步”和“断点”调试方式的特点。实验二 MCS-51单片机I/O实验一、实验目的1、掌握单片机基本I/O口的使用特点,了解扩展I/O口的方法;2、了解LED动态显示电

7、路结构,掌握LED动态显示方法;3、掌握程序延时的计算及应用;二、实验仪器P4电脑一台,软件PROTEUS6.7、KEIL UV2以上版本。三、实验内容1、P1口输出在PROTEUS中绘制仿真原理图,P1口做输出口,P1口连接8只发光二极管,如图2-1所示,编写程序,使发光二极管指示灯循环点亮,并进行仿真。图2-1 P1口输出CPU AT89C51的振荡频率为12MHz,发光二极管循环点亮需要一个延时子程序DELAY1S。延时时间为 (14+2)250+2) 250=1.0005(秒)。参考程序ORG 0000HLJMP STARTORG 0100HSTART:MOV A,#1 ;循环点亮LE

8、D初值,假定P1.0灯先亮LOOP:MOV P1,A ;向P1端口输出亮灯信号MOV R0,#250 ;延时程序初始化MOV R1,#250ACALL DELAY1S ;延时程序调用RL A ;前一盏灯亮完后,让亮灯信号向下一盏灯移动;同学们可以将此指令换成RLC,观察仿真结果有无变化AJMP LOOPDELAY1S:DEL1: NOP ;对于12M晶振,14个NOP有14us,1个DJNZ 2us 16us*250=4ms NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ R0,DEL1 ;实际延时4002*250=1.0005

9、sDJNZ R1,DEL1RETEND2、P1口输入P1做输入口,连接至DIP开关,P2口输出连接至8只发光二极管,如图2-2所示。编写程序,使DIP开关的电平通过发光二极管指示灯显示出来。图2-2 P1口输出由于51单片机的I/O口特点,输入口读入数据前要求先置1,使口上的下拉管截止,为外部数据的输入做准备。参考程序 ORG 0000H LJMP START ORG 0040HSTART:MOV P1,#0FFH ;P1口置1 MOV A,P1 ;读入P1口的DIP电平MOV P2,A ;P2口输出至指示灯 SJMP START四、预习要求1、读懂教材相应章节内容,掌握51单片机的并行I/O

10、口逻辑结构和使用特点;2、掌握LED动态显示原理;3、编写出各个实验内容的相应程序。五、思考题1、修改2-1程序,使指示灯两两右循环;2、修改2-1程序,使指示灯右循环间隔为0.1秒;3、对2-2实验,仿真时将拨码开关换成按键,再调整其开关时间属性,看看有什么效果。实验三 七段数码管动态显示实验一、实验目的1、进一步掌握单片机I/O口的使用;2、了解7段数码管动态显示电路原理及结构特点,掌握LED动态显示方法;3、进一步掌握程序延时的计算及应用。二、实验仪器P4电脑一台,软件PROTEUS6.7、KEIL UV2以上版本。三、实验内容1、七段LED动态显示输出AT89C51控制多只LED七段数

11、码管显示常采用动态方式显示,本实验的4只LED显示器采用动态方式显示,参见图3-1。图3-1 动态LED显示器电路4只LED七段显示器的4个共阴极1234分别连接8位寄存器(U3)74LS374的Q0-Q3上, 8位寄存器(U2)74LS374的Q0-Q7分别连接到上七段显示器的ABCDEFG和DP上。因此U2寄存器输出LED显示的字形,U3寄存器输出控制显示的灯位,如:(U2)=00111111,(U3)=11111110,1号灯显示“0”,其余灯不亮;(U2)=00000110,(U3)=11110011,3号灯和4号灯显示“1”,其余灯不亮。其中“00111111”和“00000110”

12、为和字形“0”和“1”的段码,表2-1为字段码和字形对应表。(U3)的低4位控制显示的4个灯位,低电平显示,高电平不显示,显示的字形由(U2)输出值决定,可参见表2-1字段码和字形对应表。所谓的动态显示,就是4只LED显示器不能同时显示,一次只能点亮一只LED显示器,4只LED显示器轮流点亮,利用人眼的视觉暂留和LED显示器余辉,就可看到4只LED显示器同时点亮,但亮度有所下降。可见,动态显示也需要合适延时,才会有较好的显示效果。实验要求1:编写程序,从左到右显示“1”、“2”、“3”、“4”,调整延时时间,观察显示效果。实验要求2:编写程序,让显示的数值按秒递增或递减。表3-1 字段码和字形

13、对应表字段码字形字段码字形DpGFEDCBA十六进制码DpGFEDCBA十六进制码0 0 1 1 1 1 1 13FH0 1 1 1 1 1 1 17FH0 0 0 0 0 1 1 006H0 1 1 0 1 1 1 16FH0 1 0 1 1 0 1 15BH0 1 1 1 0 1 1 177H0 1 0 0 1 1 1 14FH0 1 1 1 1 1 0 07CH0 1 1 0 0 1 1 066H0 0 1 1 1 0 0 139H0 1 1 0 1 1 0 16DH0 1 0 1 1 1 1 05EH0 1 1 1 1 1 0 17DH0 1 1 1 1 0 0 179H0 0 0 0

14、 0 1 1 107H0 1 1 1 0 0 0 171H参考程序;从左到右显示“1”、“2”、“3”、“4” ORG 0000HLJMP START ORG 0040HSTART:MOV R7,#04H ;灯数 MOV R6,#0FEH ;起始灯位,1号灯 MOV DPTR,#TAB ;LOOP: MOV A,R7 ; MOVC A,A+DPTR ;读字段码 MOV P0,A ;输出字段码 MOV P2,#40H ;字段码地址 MOV A,R6 MOV P0,A ;输出灯位控制 MOV P2,#80H ;灯位控制地址 RL A ;灯位右移 MOV R6,A LCALL DELAY ;延时 D

15、JNZ R7,LOOP ;灯数计数 SJMP STARTDELAY: MOV R0,#3 ;延时程序初始化(R0,R1调整到250约延时一秒) MOV R1,#3DEL1: NOP ;对于12M晶振,14个NOP有14us,1个DJNZ 2us 16us*250=4ms NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ R0,DEL1 ;实际延时4002*250=1.0005s DJNZ R1,DEL1RETTAB:DB 00H,66H,4FH,5BH,06H ;“空”,“4”,“3”,“2”,“1”的字段码END2、以外部RAM

16、扩展方式连接时要增加一定的硬件电路,但可以帮助我们了解外部RAM的扩展,电路如图3-2:图3-2 以外部RAM扩展方式连接的电路图程序如下:;从左到右显示“1”、“2”、“3”、“4” ORG 0000HLJMP START ORG 0040HSTART:MOV R7,#04H ;灯数 MOV R6,#0FEH ;起始灯位,1号灯 MOV DPTR,#TAB ;LOOP: MOV A,R7 ; MOVC A,A+DPTR ;读字段码 ;MOV P0,A;此指令将被下面的movx r0,a替代; ;输出字段码 MOV P2,#40H ;字段码地址 MOVX R0,A ;输出字段码,替代了上面的M

17、OV P0,A 指令 MOV A,R6 ;MOV P0,A;此指令将被下面的movx r0,a替代;输出灯位控制 MOV P2,#80H ;灯位控制地址 MOVX R0,A ;输出灯位控制 RL A ;灯位右移 MOV R6,A LCALL DELAY ;延时 DJNZ R7,LOOP ;灯数计数 SJMP STARTDELAY: MOV R0,#250 ;延时程序初始化 MOV R1,#250DEL1: NOP ;对于12M晶振,14个NOP有14us,1个DJNZ 2us 16us*250=4ms NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NO

18、P NOP DJNZ R0,DEL1 ;实际延时4002*250=1.0005s DJNZ R1,DEL1RETTAB:DB 00H,66H,4FH,5BH,06H ;“空”,“4”,“3”,“2”,“1”的字段码END四、预习要求1、读懂教材相应章节内容,掌握51单片机的I/O口逻辑结构和使用特点;2、查阅参考文献,掌握七段LED动态显示原理;3、编写出各个实验内容的相应程序。五、思考题1、如设置30H-33H为显示缓冲区,要显示的字段码送入显示缓冲区,反复调用显示子程序即可,试编写该显示子程序;(电路与3-2相同,程序自编,参考3-3.asm)2、能否显示“H”、“L”、“P”、“U”的字

19、形,试写出它们的字段码。实验四 键盘扫描及显示实验一、实验目的1、了解键盘和扫描电路结构,了解键盘的分类及各种键盘的特点和适用场合; 2、掌握键盘接口的工作原理、键盘扫描方法,了解按键的软件去抖动方法;3、学习并掌握常用的几种键盘接口编程方法。二、实验仪器P4电脑一台,软件PROTEUS6.7、KEIL UV2以上版本。三、实验内容1、键盘输入概述对于单片机,我们希望对其运行进行控制,而键盘是最重要和有效的控制输入方式之一。键盘接口的应用非常灵活,主要分独立式按键接口和行列式键盘接口。独立式按键接口各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断哪个键被按下,适于键数

20、较少或操作速度较高的场合。行列式键盘接口用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。对于按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。原则是既要保证能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。键盘工作层次如图4-1所示。图4-1 键盘工作层次2、独立式按键对于图4-2所示独立式键盘,试以编程扫描或定时扫描的方式编写键盘处理程序。要求KEY1打开流水灯显示,KEY2关闭显示,KEY3控制灯向上流水显示,KEY4控

21、制灯向下流水显示。图4-2 独立式键盘系统电路图编程扫描参考程序见exp4-1.asm。自己编写定时扫描程序,并对两种方式进行比较。启动初始化列线送低电平,行线送高电平N检查各列电平状态,有高电平出现?Y调用键识别程序并显示延时一秒图4-3 键盘扫描程序算法3、阵列式键盘对于图4-4所示3*3的键盘阵列,试编写键盘扫描程序实现按键的识别,即按下任一按键,在数码管上显示所按下的键号。识别键盘有无键被按下的方法,分两步进行,第1步识别键盘有无键按下:把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。第2步如有键被按下,识别出具体的按键:先把某一列置低电平,其余

22、各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。本例算法如图4-3 (先自主编写程序,如果实在无法写出正确的程序再参考exp4-2.asm程序,并找出自已程序的问题所在)。参考程序见exp4-2.asm。图4-4 3*3键盘电路4(选做):编写一个时钟程序(包含显示及按键输入)。四、预习要求1、读懂教材第十章第二节,掌握键盘电路结构、键盘扫描原理及软件去抖动方法;2、复习并掌握七段LED动态显示原理及显示程序;3、自主编写出各个实验内容的相应程序。五、思考题1、独立式按键和阵列式键盘有什么区别?编程上有什么不同?2、利用编程扫描和定时扫描方式扫描键盘有

23、什么区别?3、试使用线反转法编写图4-3所示电路的程序。实验五 MCS-51单片机中断实验一、实验目的1、掌握单片机中断的工作原理,体会中断的使用特点;2、掌握中断的技术编程方法和特点;进一步掌握汇编语言程序设计;3、将定时器中断和键盘定时扫描结合,复习键盘输入编程;4、将外中断和键盘中断扫描结合,复习键盘输入编程;二、实验仪器P4电脑一台,软件PROTEUS6.7、KEIL UV2以上版本。三、实验内容1、键盘定时扫描程序(定时中断)利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。与编程扫描相比,更能快速响应键盘事件,不会错过任何一次按键(请试着在图4-2所示实验中,快速按下和

24、松开按键,看看能不能响应键盘事件,想想为什么?)本实验仍以图4-2所示电路为硬件电路,首先请大家自主编程以定时扫描的方式改进实验4-2的缺点。参考程序见exp5-1.asm。2、键盘中断处理图5-1 单片机键盘中断处理工作方式原理图充分利用中断来接受用户键盘事件可以大大提高单片机的效率。在没有键盘事件时,单片机可以专注于运算和控制,不需要随时扫描键盘,而当有键盘事件发生时,利用中断可以最快地响应用户键盘事件,键盘处理完成后又可以回到其它主的工作。键盘的中断处理方式适合于单片机有大量运算、控制等其它重要事务,而用户按键次数不多的场合。请同学们根据实验四中阵列式键盘的原理,参考exp4-2.asm

25、,并结合中断编写键盘识别程序。单片机键盘中断处理工作方式对应的硬件原理图如图5-1。除参考exp4-2.asm外,大家还可以参考图5-2所示的扫描方式,键码值见表5-1。将键盘4根行线和4根列线(1-8)连接至P1口的P1.0-P1.7,试编写键盘扫描程序,将键盘码显示在LED数码管。图5-2 键盘分布图表5-1 键码表返回码扫描码7H0111BH1011DH1101EH11107H0111(77H)7(B7H)8(D7H)9(E7H)DBH1011(7BH)4(BBH)5(DBH)6(EBH)CDH1101(7DH)1(BDH)2(DDH)3(EDH)BEH1110(7EH)F(BEH)0(

26、DEH)E(EEH)A汇编参考程序 MOV A,0FFH ;清显示器 MOV P2,80H MOVX R0,A REP: MOV A,#0FEH ;扫描 MOV R7,#4 LOOP: MOV P1,A MOV B,P1 ;返回码 CJNE A,B,DITH ;有键 RL A ;有键 DJNZ R7,LOOP SJMP REP DITH: LCALL DELAY ;延时5ms,去抖动 MOV A,P1 ;返回码 CJNE A,B,REP ;无效键 LCALL SCAN_TO_KEY ;返回扫描码-键码 MOV DPTR,#TAB ;显示 MOVC A,A+DPTR MOV P2,#60H MO

27、VX R0,A MOV A,#0FEH MOV P2,#80H MOVX R0,A SJMP REPTAB: DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07HDB 7fH,6fH,77H,7cH,39H,5eH,79H,71H,00H SCAN_TO_KEY: ;返回扫描码-键码 MOV B, A CLR A MOV R6, AMOV DPTR, #SCAN_KEYNEXT1:MOV A, R6 MOVC A, A+DPTR CJNE A, B, NEXT MOV A, R6 ADD A, #16 MOVC A, A+DPTR RETNEXT:INC R6 CJNE R6,

28、 #16, NEXT1MOV A,#010H ;无效键 RETSCAN_KEY: DB 77H,0B7H,0D7H,0E7H,7BH,0BBH,0DBH,0EBHDB 7DH,0BDH,0DDH,0EDH,7EH,0BEH,0DEH,0EEH DB 7H, 8H, 9H, 0DH, 4H, 5H, 6H, 0CH DB 1H, 2H, 3H, 0BH,0FH, 00H, 0EH, 0AH DELAY: MOV A,R6 ;延时 5ms PUSH ACC MOV A,R7 PUSH ACC MOV R6,#014H DELAY1:MOV R7,#0E5H DJNZ R7,$ DJNZ R6,DELAY1 POP ACC MOV R7,A POP ACC MOV R6,A RET END四、预习要求1、复习中断及响应的过程;2、读懂教材相应章节的内容,复习掌握键盘电路结构、键盘扫描原理;3、复习并掌握七段LED动态显示原理及显示程序;4、编写出各个实验内容的相应程序。五、思考题1、利用中断方式扫描键盘,是否有提高CPU的效率,LED显示是否增亮?2、除处理键盘外,中断还有什么用途?请列举几个例子。实验六 定时器计数器实验一、实验目的1、掌握单片机定时器/计数器的工作原理,体会定时器/计数器的使用特点;2、进一步掌握中断的技术编程方法

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1