2023年单片机原理及其应用实验报告.pdf
《2023年单片机原理及其应用实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年单片机原理及其应用实验报告.pdf(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北航单片机原理及其应用实验报告班级:1 1 0 3 23姓名:赵敏杰学号:1103 1 064同组者:郑硕学号:1 1 03 1 105实验一单片机开发环境以及I/O使用实验一.实验目的1 .熟悉M C S 5 1系列单片机开发软件的使用2 .掌握单片机I/O 口的使用3 .学习延时子程序的编写和使用二.实验内容1.验证性实验(1)实验内容:I/O 口做输出口,1/0 口接一个LED发光二极管,使其闪烁。有关说明:根 据L E D的单向导通性,可以用单片机的P l.0(也可以是其他I/0 )作为L E D 的控制端。当P 1.0输出为低电平时,L E D灭,反之,LED亮。本实验系统晶振为1
2、1.0 592 M H z ,则一个机器周期为1 2/11 .0592 u s=l.085u s,为方便编写延时函数,认为一个机器周期为1 U So硬件连接:用导线将实验箱中的P 1.0与L1相连。I O a -|vc c程序:C语言程序#i n elu d e /89S 5 2 寄存器定义头文献/*-延时子程序(有参函数),t=n*1 0m s-*/vo i d d ela y(u n s i gn ed c h a r n)(u n s i gn ed c h a r i ,j ,k ;fo r (i=0;i n;i+)fo r (j =0;j 1 4;j +)fo r (k=0;k 2
3、3 7 ;k+);)/*-主函数-*/vo i d m a i n()w h i le(l)(P l_ 0=0;/P 1.0 赋值为 0,LED 灭d ela y (1 00);调用延时子程序,t=1 0 0*1 0m sP l_ 0=l;/P l.0 赋值为 1,L E D 亮d el a y (1 0 0);汇编语言程序ORG 0 OHA J M P STA RT;在首地址处放置跳转指令;以免主程序占用中断入口地址ORG 3 0HSTA R T:C L R P 1.0;P 1.0 赋值为 0,L E D 灭M OV R0,#1 00;R 0的值决定延时时间长短t=R 0*1 0m sL C
4、 A L L D E L A Y ;调用延时函数SE TB P l.0;P 1.0 赋值为 1 ,L E D 亮M OV RO,#1 0 03L C A L L D E L A Y ;调用延时函数A J M P STA RT;无条件跳转至S T A R T,继续循环执行/*-延时子程序,t=R 0*1 0m s */D E L A Y:D 1:M OV RI,#2 0D 2 :M 0V R2,#2 4 8D J N Z R2,$D J N Z R1,D 2DJN Z RO,D 1RETEND实验现象:可 以 看 到 LED1大体亮I s 后灭1 s,如此循环。(2)实验内容:I/O 口做输入口
5、,一个I/O 口接一个拨动开关,另一个I/O 口接一个LED发光二极管,单片机读取开关的状态并通过L E D 显示出来。有关说明:P0 口是一组漏极开路型双向I/O 口,也即地址/数据总线复用口。对端口写“1”可作为高阻抗输入端用。硬件连接:用导线将实验箱中的 P 1 .0与 LED 发光二极管L 1相连,P0.0 与拨动开关K1相连。程序:C 语言程序ttincl ude /8 9 S52 寄存器定义头文献void ma i n()whi 1 e(1)PO=O xf f ;/对端口写1 ,作为高阻抗输入端用if (P0 _0)/判断P 0.0是否为高电平P 1 _0=0;e l s e 假如
6、P 0.0 不是高电平,则执行后面的语句Pl _0 =1 ;)汇编语言参考程序O RG 0 0 HL J M P M A I NO RG 3 0 HM A I N J B P0.0,D E L ;辨认按键是否闭合SE TB P1.0L J M P M A I ND E L:C L R Pl.0L J M P M A INE N D实验现象:可以看到L E D 1 的状态和开关1的状态一致。2.设计性实验实验内容:模拟舞台灯光控制实验具体规定:P 0.0和P 0.1 口连接两路拨动开关,P1 口连接8路LED。不同的开光状态控制LED进行流水灯、闪烁等,从而达成模拟舞台炫耀灯光控制的目的。当 P
7、 0.1和P 0.0的状态为0 0时,8路L E D从右至左流水点亮,具体循环顺序为:LI L2 L 3 L4 L5 L6 L7 L8L1,如此反复循环;当P 0.1和P0.0的状态为0 1时,8路L E D从左至右流水点亮,具体循环顺序为:L8 L7 L 6 L5 L4 L3 L2 L I L8,如此反复循环;当P 0.1和P0.0的状态为1 0时,8路L E D交替闪烁,具体循环顺序为:LI、L3、L5、L7 L2、L4、L 6、L8 L I、L3、L5、L 7,如此反复循环下去;当P0.0和P 0.1的状态为1 1时 一,8路LED 一起闪烁,具体循环顺序为:全灭 全亮 全灭,如此反复下
8、去。硬件连接:用导线将实验箱中的P 0.0与开关K 1相连,P 0.1与开关K 2相连,P 1.0 P1.7分别与LED发光二极管L1L 8相连。程序:C语言程序#include /89 S 5 2 寄存器定义头文献v o i d d e la y (un s ig n ed c har n)unsign e d c h a r i,j,k;for(i=0;i n;i+)f or(j=0;j14;j+)f o r (k=0;k 2 37;k+);)void main()(un s igned c h a r i;P0=0 xff;whi 1 e(1)oif(P0_l=0&P0_0=0)(Fl=
9、0 x 0 1;ofor(i=l;i=8;i+)de 1 a y(1 0 0);P1=P l l;if(P 0 l!=0|P0_0!=0)brea k;6)i f (P O _ 1 =0&P0 _0=l)(F l=0 x 8 0;f o r (i=l;i=8;i +)d e 1 a y(1 0 0 );P 1 =P 1 1 ;g i f (P0 _l !=0|P0 0!=l)br e a k ;if(PO l=l&P0 _0=0)Pl=0 x0 1;o f o r (i=l;i =4 ;i+)M d e l a y(1 0 0);P 1=P 1 2;if (P0 _l!=1 I P 0 _ 0
10、 !=0 )g b r e a k;Pl =0 x0 2;。f o r (i=1 ;i=4 ;i+)o d e 1 a y(1 0 0);P1=P 1 2;o if (P0 _l!=l|P0 0!=0)o br e a k;)6。i f (P0 _l=l&P0 _0=1 )Pl =0 xf f;。d e l a y(1 0 0);。P 1 =0 xO 0 ;d e l a y(1 0 0);。i f (P0 _ 1 !=1|PO _O!=1)br e a k;s 三.实验分析与感想本次实验的内容是单片机的开发环境以及I/O 的使用,重要规定我们熟悉M CS-5 1 系列单片机开发软件的使用,掌
11、握单片机I/0 口和延时子程序的使用。第一次接触编写程序的软件有些不纯熟,慢慢摸索之后逐渐掌握了编写和倒入单片机的过程,但是由于电脑串口的问题,经常出现串口被占用的情况,多次检查之后仍然不能排除错误,最后重启电脑之后可以继续完毕实验,但一两次使用之后又出现串口的情况,十分奇怪,最近不得不换电脑才干完毕实验。本次实验基本完毕了老师规定的内容,但由于串口被占用的情况,被浪费太多时间,以至于最后一个实验没有完全完毕,但整体思想及程序上已没有问题。第二次实验二 单片机中断及定期器使用实验一.实验目的1.学习外部中断技术的基本使用方法及中断解决的编程方法。2.学习单片机定期器的基本使用方法及其编程方法。
12、二.实验内容1.验证性实验(1)实验内容:外部中断的实验,8 路 L E D 做流水灯,当接受到外部中断后,LE D 所有点亮一段时间,之后恢复到流水灯状态。有关说明:采用外部中断0 负边沿产生中断信号,中断响应函数应尽量简洁。硬件连接:用导线将实验箱中的Pl.O-P1.7分别与L E D 发光二极管L1L 8 相连。INTO与负脉冲相连(硬件在实验箱的具体位置可以参照文档最后面的附图)。4-|vccor-piT oI PL4:OE z n x-omr-or n-n-or-pix oL8 INTO-o o-程序:c语言程序#i n cl u d e u n s i g n e d ch a r
13、 S T A T E;u n s i g n e d c h a r s O;/*-延时子程序(有参函数),t=n*l 0 m s-*/v o i d d e l a y (u n s i g n e d ch a r n)u n s i g n e d ch a r i,j,k ;f o r (i=0 ;i n ;i +)f o r (j=0 ;j 1 4 ;j+)f o r(k=0 ;k 2 3 7;k+);v o i d m a i n ()E A=1 ;/C P U 开中断E X O=1;开外部中断0I T O=1;/边沿触发方式s00 x 0 1;w h i l e(1)(i f (
14、!S T A T E)假如标志位STATE为 0,则做流水灯 P l=s 0;s 0=s 0 1,7分 别 与L E D发光二极管L 1 L 8相连。程序:C语言程序#i n c l u d e i n t t i m e;v o i d m a i n()T M 0 D=0 x 0 1 ;/定期器0工作方式1T H0=646 1 4/2 56;/计算初值T L 0=64 6 1 4%2 5 6;EA =1;/CP U 开中断ET O=1;/开定期器中断0T R O=1;/启动定期器0并开始工作w h i l e(l);/等待中断/*-一定期器0中断服务函数*/v o i d t i m e
15、O()i n t e r r u p t 1 t i m e+;每 1 m s,t i m e 加 1i f (t i m e=50 0)/t i m e 加满 5 0 0 次后,0.5s 时间到 t i m e=0;/t i m e清零,重新计数P 1+;T H0 =6461 4/2 56;重新装载定期器初值T L 0=646 1 4%2 56;汇编语言参考程序O R G 0 0 0 0 HJ M P S T A R T ;在首地址处放置跳转指令;以免主程序占用中断入口地址0 R G 0 0 0 B H;定期器0 程序入口地址J M P ET 0 PO R G 0 0 3 0 HS T A
16、R T :M 0 V T M O D,#0 1 H;定期器 0,工作方式 1M O V T HO,#4CH;定期器装载初值,50 m s 中断一次M O V T L 0,#0 0 H;这里需要注意,前面的c程序定期时间为;1 m s,这里汇编定期时间为50 m s,由于汇编;数据长度只支持到8 位,假如定期时间为1 m s,;50 0 m s 需要中断50 0 次,汇编无法支持,所以;定期时间改为50 m sS ET B EA ;CP U 开中断S ET B ET O ;开定期器中断S ET B T R O ;定期器开始工作M O V A,#0 A HCA L L L O O PL O O P
17、:CJ N E A,#0 0 H,L O O P ;A 不等于零,跳转 L O O PI N C B ;B 加 1 1M O V P l,BM O V A,#O A HJ M P L O O P ;/*-一定期器0 中断程序-*/E T O P:DEC A ;A 减 1M O V T HO,#4CHM O V T L O,#0 O HR ET IEN D实验现象:可以看到用 P l 口所接的8 路 LE D 表达的二进制数每隔0.5s 加 1。2.设计性实验实验内容:模拟救护车优先的交通灯控制实验具体规定:具体规定为用两组不同颜色的LED分别模仿两个路口的“红灯”、“绿灯”、“黄灯”。平时两组
18、交通灯按规律点亮,具体规律为:南北路口:绿灯(5 s)黄灯(2 s)红 灯(5s)黄灯(2 s)绿灯(5 s).东西路口:红 灯(5 s)黄 灯(2 s)绿 灯(5 s)黄 灯(2 s)红灯灯s)当救护车来时(用负脉冲触发外部中断表达救护车到来),两个路口立即都变成红灯让救护车优先通过,红灯保持3 s,待救护车通过以后,两个路口的交通灯恢复正常的工作状态。实验中的交通灯点亮的时间需要用定期器精拟定期,不能使用延时函数。硬件连接:INTO与负脉冲相连,LED与单片机的连接没有固定规定,下图只是提供一种参考接法。程序:#i n c 1 ud e un si g n e d c h a r S T
19、A T E;u n s i g n e d c h a r s 0;/*-延时子程序(有参函数),t=n*1 0 m s-*/v o i d d e l a y(u n s i g n e d c h a r n)un s i g n e d c h a r i,j ,k;f o r(i=0;i n;i+)f o r(j=0;j 14;j+)f o r(k=0 ;k 2 37;k+);)v o i d m a i n()E A=1;/C P U 开中断E X O=1;开外部中断0I T 0=1;边沿触发方式s0=0 x 0 1;w h i 1 e(l)i f (!ST A T E)/假如标志位
20、S TATE为0,则做流水灯 P 1=s 0;S0=S0 1;i f (s 0=0 x 0 0 )s 0 =0 x 0 1;d e 1 a y (3 0 );e l se 假如标志位S TATE为1,贝I J L E D全亮 ST A T E=0;P l=0 x f f ;d e 1 a y (1 0 0);)/*中断服务函数-*/v o i d i n t 0 ()i n t e r r up t 0 S T A T E=1;)标志位S T A T E 置 1#i n c l u d e i n t ti m e ,i;u n s i g n e d c h a r ST A T E;un
21、s i g n e d c h a r m;v o i d d e l a y (un s i g n e d c h a r n)(u n s i g n e d c h a r i ,j,k;f o r(i=0;i n;i+)f o r (j=0;j l 4;j+)f o r(k=0;k 2 37;k+);v o i d m a i n ()T M 0 D=0 x 0 1;/定期器0 工作方式1T H 0=6461 4/2 5 6;/计算初值T L 0=6 4614%2 5 6;E A=1;/C P U 开中断E T O=1;/开定期器中断0T R O=1;启动定期器0并开始工作E X O
22、=1;/开外部中断0I T O=1 ;边沿触发方式w h i l e (1);)/*定期器0中断服务函数-*/void ti m e O ()i n t e rrup t 1 t i m e +;/每 1m s,ti m e 力 口 1i f(t i m e =5 0 0 0&ti m e =70 0 0&ti m e =12 0 2 3&ti m e 1 40 0 0 )t i m e=0;T H 0=6 46 1 4/2 5 6;/重新装载定期器初值T L 0=646 1 4%2 5 6;v o i d i n t 0 ()i n t e rrup t 0(P l=0 x 2 4;E T
23、1=1;T R 1=1;T H 1=64 6 14/2 5 6;/重新装载定期器初值T L 1=64614%2 5 6;w h i l e (m =3 0 0 0);ET 1=0;TR1=O;)vo i d t 1()inte r ru p t 3(m+;TH1=64 6 14/2 5 6;/重新装载定期器初值TL1=64614%256;三.实验分析与感想本次实验是单片机中断及定期器使用实验,规定我们学习外部中断技术的基本使用方法及中断解决的编程方法,学习单片机定期器的基本使用方法及其编程方法。前两个小实验都比较顺利,分别运用了中断和定期器的功能。只要注意一下实验使用的LED灯是共阳的还是共阴
24、的,应当就可以较顺利完毕。第三个设计性实验综合了前两个实验的内容,并且规定中出现了三个时间,但 是5 1单片机没有三个定期器,故要运用软件的辅助才干完毕。但是始终没有结果,调试将近半节课还是不行,在老师的帮助下再次调试,发现单片机出现了问题。这让我领悟到:出现问题不要一味埋头找程序错误或者硬件连接错误,应当灵活的判断器件是否出现了故障。这会让我们节约很多时间,少走一些弯路。实验三单片机串口使用实验一.实验目的1 .学习单片机与上位机串行通信的基本使用方法。2.学习动态数码管显示的基本使用方法。二.实验内容1.验证性实验(1)实验内容:单片机串行接受数据实验:6位数码管通过动态扫描作为显示模块,
25、上位机通过串口调试助手以十六进制形式向单片机发送0 0 -f f,范围内的数据,波 特 率 为96 0 0,单片机接受到数据以后,在数码管的最后两位显示出来,数码管其它位熄灭。有关说明:LED数码管显示是单片机应用系统中最常用、最基本的输出设备,用户可以运用显示器件显示各种需要输出的视觉信息,实现人机对话。单片机对数码管的显示方式可分为静态显示与动态显示两种。静态显示中每一个数码管需要一个独立的输出口控制,静态显示的特点是显示程序简朴、亮度高、稳定性好、占用C PU时间少,但占用的I/O 口较多,所以静态显示常用在显示器数目较少的应用系统中。当显示位数较多时,可以采用动态显示。动态显示是指数码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 单片机 原理 及其 应用 实验 报告
限制150内