单片机实验指导书.docx
《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(109页珍藏版)》请在冰豆网上搜索。
单片机实验指导书
前言
单片机由于其微小的体积和极低的成本,广泛地应用于诸如玩具、家用电器、机器人、仪器仪表、汽车电子、工业控制、办公自动化、金融电子、船舶运控、个人终端及通信产品中,已成为现代电子系统中不可或缺的智能化工具。
因此牢固掌握和熟练应用单片机技术是电类专业学生必备的最重要的基本技能之一,也是电子工程师争宠的获胜筹码。
《单片机原理及应用》课程的开设就是为此而设置的。
《单片机原理及应用》课程无非三方面的内容—基元、扩展、应用。
基元包括单片机的结构、软硬件资源;扩展则是充分利用和统筹兼顾单片机的软硬件资源进行的单片机功能的延伸;而应用则要面向实际,在基元和扩展较为娴熟的前提下实施软件和硬件结合才能成为现实。
基元是基础,扩展是精华,应用是目的。
《单片机原理及应用》是一门技术性极强的课程。
要掌握单片机技术,光看不行,要亲历亲为,不断实践。
与其临渊羡鱼,不如张而结网。
所有单片机应用的技巧和方法都是通过实践检验、摸索、体会出来的,无论你阅读、参考了多少单片机方面的书籍或文献,没有实践都是纸上谈兵,收获甚微。
而实验则是单片机技术实践的基本手段。
《单片机原理及应用》课程的实验内容必须考虑单片机自身资源的发挥与利用,围绕如何应用、怎样应用、能够应用这个前提来安排。
通过实验要使学者达到掌握、理解、应用单片机技术的目的。
单片机应用系统由硬件系统和应用软件两部分构成。
硬件系统虽然会因面向的具体对象不同而各式各样,但万变不离其宗,基本且经典的硬件单元电路掌握了,其它也就迎刃而解;而应用软件也有一些基本的方法和技巧。
掌握了这些硬件单元的原理与设计、编程的基本方法与技巧,应用也就没有太多问题。
所以《单片机原理及应用》实验要充分考虑这样的特点来合理安排实验内容。
《单片机原理及应用实验指导书》正是在这样的背景下立意编写的。
本书共安排了7个实验,囊括了单片机技术的基本内容。
如何合理、充分利用单片机的软件、硬件资源,如何设计硬件电路,如何编写应用程序,书中都有一定的体现。
所有案例都是经过实验检验且成功的。
实验内容做到了精心组织、合理安排、深入浅出、循序渐进、案例经典,其中的编程方法与技巧是编者集二十多年单片机应用与开发的经验之浓缩。
编者以为,本书是学习、理解、掌握单片机技术的有力工具。
可以这样说,如果你掌握了本书中的这些内容,你就迈进了单片机应用的门槛;再经过进一步的提升,你就能够顺利的登上单片机技术的阶梯,将单片机玩弄于股掌之中。
天苍苍,野茫茫,风吹草低见牛羊。
若学者认真研习,于单片机技术的学习有所裨益,编者将感到无限欣慰!
缘光阴匆忙,学识见底,书中纰漏,毋庸置疑。
倘蒙赐教,不胜感激!
目录
实验一单片机认识及简单开关量输入/输出实验………………………………………………………3
实验二定时/计数器实验…………………………………………………………………………………7
实验三数码管显示实验…………………………………………………………………………………10
实验四键盘及显示实验…………………………………………………………………………………14
实验五D/A及A/D转换实验……………………………………………………………………………18
实验六电子钟设计………………………………………………………………………………………22
实验七波形发生器设计…………………………………………………………………………………23
实验一源程序清单…………………………………………………………………………………………24
TEST1-1-1.ASM………………………………………………………………………………………24
TEST1-1-2.ASM………………………………………………………………………………………24
TEST1-1-3.ASM………………………………………………………………………………………24
TEST1-2-1.ASM………………………………………………………………………………………24
TEST1-2-2.ASM………………………………………………………………………………………25
TEST1-3.ASM…………………………………………………………………………………………25
实验二源程序清单…………………………………………………………………………………………26
TEST2-1-1.ASM………………………………………………………………………………………26
TEST2-1-2.ASM………………………………………………………………………………………26
TEST2-2.ASM…………………………………………………………………………………………27
TEST2-3.ASM…………………………………………………………………………………………28
实验三源程序清单…………………………………………………………………………………………29
TEST3-1-1-1.ASM……………………………………………………………………………………29
TEST3-1-1-2.ASM……………………………………………………………………………………30
TEST3-1-2.ASM………………………………………………………………………………………32
TEST3-2-1-1.ASM……………………………………………………………………………………33
TEST3-2-1-2.ASM……………………………………………………………………………………34
TEST3-2-2.ASM………………………………………………………………………………………36
实验四源程序清单…………………………………………………………………………………………37
TEST4-1.ASM…………………………………………………………………………………………37
TEST4-2.ASM…………………………………………………………………………………………39
TEST4-3.ASM…………………………………………………………………………………………41
实验五源程序清单…………………………………………………………………………………………45
TEST5-1-1.ASM………………………………………………………………………………………45
TEST5-1-2.ASM………………………………………………………………………………………45
TEST5-2-1.ASM………………………………………………………………………………………46
TEST5-2-2.ASM………………………………………………………………………………………46
实验六参考…………………………………………………………………………………………………50
实验七参考…………………………………………………………………………………………………54
实验一单片机认识及简单开关量输入/输出实验
一、实验目的
1、熟悉单片机实验装置;
2、熟悉单片机的运行环境;
3、熟悉单片机应用系统的建立过程与方法;
4、掌握单片机对开关量的处理方法。
二、实验仪器设备
1、DPJ实验台1台;
2、PC机1台;
3、程序烧写器1台。
三、实验内容与要求
1、指示灯的控制
①单个指示灯的闪烁控制
用P1.0作为输出,控制LED0以0.5s的时间间隔闪烁。
②指示灯的循环移动控制
用P1口作为输出,控制8个发光二极管中的相邻两个发光,实现从左向右的循环移动,移动速度0.5s。
③多个指示灯的开关控制
用P2口检测八个开关的状态,P1口控制8个发光二极管。
要求任意时刻任意开关合上时,对应的发光二极管点亮;否则熄灭。
2、蜂鸣器的控制
①蜂鸣器的鸣叫与静音控制
用P1.0作为输出,控制蜂鸣器以0.5s的时间间隔鸣叫。
②蜂鸣器的开关控制
用P2口检测八个开关的状态,P1.7控制蜂鸣器。
要求任意时刻合上任意开关时,蜂鸣器鸣叫一次。
3、声光报警
用P2口检测八个开关的状态,P1.3控制蜂鸣器,用P1.6控制LED0。
要求任意时刻合上任意开关,蜂鸣器和指示灯分别周期性的鸣叫和闪烁;无开关合上,禁声无光。
四、实验步骤
1、按实验内容的5个子项顺序分别实验;
2、设计子项实验电路并在实验台上搭建;
3、设计相应程序,然后汇编,最后下载到单片机
4、接通电源,实施操作,仔细观察实验现象并认真做好记录。
五、实验说明
1、必须先预习以便熟悉实验内容;
2、按照子项顺序进行实验;
3、搭建线路和插拔元器件时,必须在断电状态下进行;
4、实验线路必须仔细检查无误,由老师确认后方可通电进行实验。
六、思考题
1、本次实验,用到了延时子程序,它起什么作用?
如何改变延时时间?
2、如何实现指示灯从右向左的循环移动控制?
3、声光报警有什么意义?
如何实现?
4、并行口作为一般I/O口使用时起什么作用?
七、实验报告要求
1、画出实验原理图;
2、画出程序流程图;
3、写出源程序;
4、说明和分析实验过程中的现象;
5、描述实验过程中出现的问题,并分析原因以及采取的解决措施;
6、作答思考题。
实验二定时/计数器实验
一、实验目的
1、熟悉单片机的实验电路构成;
2、掌握定时/计数器的应用。
二、实验仪器设备
1、DPJ实验台1台;
2、PC机1台;
3、程序烧写器1台;
4、信号发生器1台。
三、实验内容与要求
1、定时控制
①单个指示灯的闪烁控制
用P1.0作为输出,控制LED0以0.5s的时间间隔闪烁。
要求用定时/计数器定时。
②指示灯的循环移动控制
用P1口作为输出,控制8个发光二极管中的1个发光,实现从左向右的循环移动,移动速度0.5s。
要求用定时/计数器定时。
2、脉宽测量
实时测量信号发生器产生的周期为1us~140ms的方波的正脉宽,并对测量结果用LED6~LED0七个发光二极管定性指示(tw<10msLED0亮,10ms≤tw<20msLED1~LED0亮,20ms≤tw<30msLED2~LED0亮,30ms≤tw<40msLED3~LED0亮、40ms≤tw<50msLED4~LED0亮、50ms≤tw<60msLED5~LED0亮、50ms≤tw<60msLED5~LED0亮、60ms≤tw<70msLED6~LED0亮)。
3、计数控制
通过定时计数器0对单脉冲源的脉冲计数,每轮计数20次,每20次满使蜂鸣器鸣叫1秒,并用LED7~LED0发光二极管以二进制形式实时显示计数结果。
四、实验步骤
1、按实验内容的4个子项顺序分别实验;
2、设计子项实验电路并在实验台上搭建;
3、设计相应程序,然后汇编,最后下载到单片机
4、接通电源,实施操作,仔细观察实验现象并认真做好记录。
五、实验说明
1、必须先预习以便熟悉实验内容;
2、按照子项顺序进行实验;
3、搭建线路和插拔元器件时,必须在断电状态下进行;
4、实验线路必须仔细检查无误,由老师确认后方可通电进行实验。
六、思考题
1、比较软件延时和定时器定时的异同。
2、什么情况下选择定时计数器定时?
什么情况下选择定时计数器计数?
如何确定它们的工作方式?
3、当定时时间超过了定时计数器的范围时,该怎样处理?
计数情况下又当如何?
4、利用一个定时计数器测量脉冲的宽度,最多可以测多宽?
七、实验报告要求
1、画出实验原理图;
2、画出程序流程图;
3、写出源程序;
4、说明和分析实验过程中的现象;
5、描述实验过程中出现的问题,并分析原因以及采取的解决措施;
6、作答思考题。
实验三数码管显示实验
一、实验目的
1、熟悉本单片机的实验电路构成;
2、掌握利用单片机的串行口扩展静态显示系统;
3、掌握利用单片机的并行口扩展动态显示系统。
二、实验仪器设备
1、DPJ实验台1台;
2、PC机1台;
3、程序烧写器1台。
三、实验内容与要求
1、静态显示器的显示
(1)定位显示
①2位LED数码管显示器从0开始至99显示,每0.5s显示值加一,循环往复。
②6位LED数码管显示器从0开始至100000显示,每0.5s显示值加一。
要求只显示有效数字位,即不够六位的前面不显示0,个位总在最右边。
(2)飞字显示
6位LED数码管显示器间隔1s左移显示123456,循环往复。
2、动态显示器的显示
(1)定位显示
①2位LED数码管显示器从0开始至99显示,每0.5S显示值加一,循环往复。
②6位LED数码管显示器从0开始至100000显示,每0.5s显示值加一。
要求只显示有效数字位,即不够六位的前面不显示0,个位总在最右边。
(2)飞字显示
6位LED数码管显示器间隔1s左移显示123456,循环往复。
四、实验步骤
1、按实验内容的6个子项顺序分别实验;
2、设计子项实验电路并在实验台上搭建;
3、设计相应程序,然后汇编,最后下载到单片机
4、接通电源,实施操作,仔细观察实验现象并认真做好记录。
五、实验说明
1、必须先预习以便熟悉实验内容;
2、按照子项顺序进行实验;
3、搭建线路和插拔元器件时,必须在断电状态下进行;
4、实验线路必须仔细检查无误,由老师确认后方可通电进行实验。
六、思考题
1、何谓定位显示?
何谓飞字显示?
2、比较静态显示和动态显示的异同。
3、什么情况下LED显示程序要用到造表查表技术?
4、如何将二进制数转换成十进制BCD码数?
七、实验报告要求
1、画出实验原理图;
2、画出程序流程图;
3、写出源程序;
4、说明和分析实验过程中的现象;
5、描述实验过程中出现的问题,并分析原因以及采取的解决措施;
6、作答思考题。
实验四键盘及显示实验
一、实验目的
1、熟悉单片机的实验电路构成;
2、掌握单片机键盘操作的扫描及处理方面的应用。
二、实验仪器设备
1、DPJ实验台1台;
2、PC机1台;
3、程序烧写器1台。
三、实验内容与要求
通过2×8键盘输入数据和操作指令,并通过LED显示器实现输入数据的显示。
1、要求在确定键号后,按下K1、K2至K16分别显示0、1至F。
2、在键盘上定义“0”~“9”十个数字键,输入任意1个6位十进制数,通过6位LED显示器挤队显示。
3、在键盘上定义“0”~“9”十个数字键和一个“报警”键。
当任意时刻按下“报警”键后,6位LED显示器左移(速度0.5s)循环显示“8”,提示输入报警声数;通过数字键输入使报警响声不超过10次(左边数码管显示次数)的数字后,即开始声音间隔2s的声报警;报警期间6位LED显示器左边显示报警总声数,右边剩余声数;报警完毕显示器变黑。
四、实验步骤
1、按实验内容的3个子项顺序分别实验;
2、设计子项实验电路并在实验台上搭建;
3、设计相应程序,然后汇编,最后下载到单片机
4、接通电源,实施操作,仔细观察实验现象并认真做好记录。
五、实验说明
1、必须先预习以便熟悉实验内容;
2、按照子项顺序进行实验;
3、搭建线路和插拔元器件时,必须在断电状态下进行;
4、实验线路必须仔细检查无误,由老师确认后方可通电进行实验。
六、思考题
1、键盘处理程序包括哪些内容?
2、如何识别键盘上的各键?
键值有何意义?
3、何为消抖,又和意义,如何实现?
七、实验报告要求
1、画出实验原理图;
2、画出程序流程图;
3、写出源程序;
4、说明和分析实验过程中的现象;
5、描述实验过程中出现的问题,并分析原因以及采取的解决措施;
6、作答思考题。
实验五D/A及A/D转换实验
一、实验目的
1、熟悉D/A及A/D转换电路的构成;
2、掌握单片机进行D/A转换的方法;
3、掌握单片机进行A/D转换及RAM应用的方法。
二、实验仪器设备
1、DPJ实验台1台;
2、PC机1台;
3、程序烧写器1台;
4、示波器1台。
三、实验内容与要求
1、D/A转换
①从0~5V每隔10s输出值增加1V输出,反复循环。
②产生一电压幅值为2V,频率为100Hz的方波。
2、A/D转换
①采用查询方式转换IN0输入的0~5VDC,转换结果用2位LED数码管动态显示器实时显示。
②巡回检测8路模拟电压信号,将每路每连续8次的平均值存入RAM中,并循环显示每一路的路号和平均值(16进制),每一路的显示时间为2s。
四、实验步骤
1、按实验内容的4个子项顺序分别实验;
2、设计子项实验电路并在实验台上搭建;
3、设计相应程序,然后汇编,最后下载到单片机
4、接通电源,实施操作,仔细观察实验现象并认真做好记录。
五、实验说明
1、必须先预习以便熟悉实验内容;
2、按照子项顺序进行实验;
3、搭建线路和插拔元器件时,必须在断电状态下进行;
4、实验线路必须仔细检查无误,由老师确认后方可通电进行实验。
六、思考题
1、如何确定A/D、D/A转换器的端口地址?
2、怎样巡回检测?
3、A/D、D/A的分辨率有什么影响?
七、实验报告要求
1、画出实验原理图;
2、画出程序流程图;
3、写出源程序;
4、说明和分析实验过程中的现象;
5、描述实验过程中出现的问题,并分析原因以及采取的解决措施;
6、作答思考题。
实验六电子钟设计
一、实验目的
1、进一步掌握定时器的使用和编程方法;
2、掌握七段数码管显示数字的原理。
二、实验仪器设备
1、DPJ实验台1台;
2、PC机1台;
3、程序烧写器1台。
三、实验内容与要求
本实验为设计性实验,由学生自主设计并完成。
要求利用DPJ实验台提供的资源设计一个数字电子钟,具体要求如下:
1、利用定时器控制电子钟走时。
2、利用实验台的六位数码管显示时、分、秒。
3、可人为校时。
四、实验步骤
1、根据要求设计硬件电路,编写实现程序;
2、在实验台上搭建实验电路并认真检查;
3、装载程序到单片机;
4、接通电源,认真调试,仔细观察实验现象;
5、反复修改程序,直到有满意的效果。
五、实验报告要求
1、画出实验原理图;
2、画出程序流程图;
3、写出源程序;
4、说明和分析实验过程中的现象;
5、描述实验过程中出现的问题,并分析原因以及采取的解决措施。
实验七波形发生器设计
一、实验目的
1、掌握单片机与D/A转换器的接口及编程方法;
2、进一步熟悉D/A转换器的工作原理及性能。
二、实验仪器设备
1、DPJ实验台1台;
2、PC机1台
3、示波器1台。
三、实验内容与要求
本实验为设计性实验,由学生自主设计并完成。
要求利用DPJ实验台提供的资源设计一个频率、幅值数字输入可调的单一波形发生器,并且能实时显示输出波形的频率和幅值,输出波形为下列任选:
①正弦波②三角波③矩形波④梯形波⑤锯齿波⑥尖脉冲
四、实验步骤
1、根据要求设计硬件电路,编写实现程序;
2、在实验台上搭建实验电路并认真检查;
3、装载程序到单片机;
4、接通电源,认真调试,仔细观察实验现象;
5、反复修改程序,直到有满意的效果。
五、实验报告要求
1、画出实验原理图;
2、画出程序流程图;
3、写出源程序;
4、说明和分析实验过程中的现象;
5、描述实验过程中出现的问题,并分析原因以及采取的解决措施。
实验一源程序清单
TEST1-1-1.ASM
org0
loop:
cplp1.0
lcalldelay500ms
sjmploop
delay500ms:
movr5,#5
lop1:
movr6,#178
lop2:
movr7,#0
djnzr7,$
djnzr6,lop2
djnzr5,lop1
ret
TEST1-1-2.ASM
org0
mova,#00111111b
loop:
movp1,a
lcalldelay500ms
rra
sjmploop
delay500ms:
movr5,#5
lop1:
movr6,#178
lop2:
movr7,#0
djnzr7,$
djnzr6,lop2
djnzr5,lop1
ret
TEST1-1-3.ASM
org0
loop:
mova,p2
cpla
movp1,a
sjmploop
TEST1-2-1.ASM
org0
loop:
cplp0.0
lcalldelay500ms
sjmploop
delay500ms:
movr5,#5
lop1:
movr6,#178
lop2:
movr7,#0
djnzr7,$
djnzr6,lop2
djnzr5,lop1
ret
TEST1-2-2.ASM
org0
loop:
mova,p2
jzloop
setbp1.7
lcalldelay500ms
clrp1.7
sjmploop
delay500ms:
movr5,#5
lop1:
movr6,#178
lop2:
movr7,#0
djnzr7,$
djnzr6,lop2
djnzr5,lop1
ret
TEST1-3.ASM
org0
loop:
mova,p2
jzloop
again:
cplp1.3
cplp1.6
lcalldelay500ms
mova,p2
jnzagain
sjmploop
delay500ms:
movr5,#5
lop1:
movr6,#178
lop2:
movr7,#0
djnzr7,$
djnzr6,lop2
djnzr5,lop1
ret
实验二源程序清单
TEST2-1-1.ASM
org0
ljmpmain;转主程序
org0bh
ljmptc0;转定时计数器0中断处理程序
;************主程序************
org100h
main:
movtmod,#01h;定时计数器0定时,方式1
movth0,#4ch;定时计数器0定时50ms
movtl0,#01h
setbtr0;启动定时计数器0
setbet0;开定时计数器0中断
setbea;开总中断
movr2,#5;计数5次,实现0.25s定时
sjmp$;等待中断
;************定时计数器0中断处理程序************
tc0:
djnzr2,next
cplp1.0;反复点亮LED0
movr2,#5
next:
movth0,#4ch;重复定时50ms
movtl0,#01h
reti
TEST2-1-2.ASM
org0
ljmpmain;转主程序
org0bh
ljmptc0;转定时计数器0中断处理程序
;************主程序************
or