《单片机原理及应用》实验指导书(C语言).docx
《《单片机原理及应用》实验指导书(C语言).docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》实验指导书(C语言).docx(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机原理及应用实验指导书(C语言) 单 片 机 原 理 及 应用 实 验 指 导 书 (C语言) XX高校物电学院 微机教研室 XX 2011 前 言 由于单片机具有高牢靠性、超小型、低价格、简单产品化等特点,在仪器仪表智能化、实时工业限制、实时数据采集、智能终端、通信设备、导航系统、家用电器等限制应用领域,具有非常广泛的用途。由于目前在国内单片机应用中,MCS-51系列单片机仍旧是一种主流单片机,所以本试验指导书为学习MCS-51单片机的学生,协作单片机原理及应用课程的教学,结合本学院自制单片机教学试验板编写了这本试验指导书。 单片机原理应用及是一门实践性很强的课程,提高教学质量的一个重要
2、环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的。本试验指导书供应多个试验的指导性材料,有些试验还有一些有肯定难度的选做项目,可以依据课时的支配和教学要求进行取舍。为了达到某些试验的目的,书中供应的参考程序与实际应用中的程序会有些差别,所以不肯定是最优的。 由于时间紧迫,须要赶课程进度与试验时间的同步,加上编者学识有限,如有不妥之处,欢迎读者指责指正。 实 验 须 知 1. 试验前必需阅读教科书的有关部分和本试验指导书,了解试验目的、内容、步骤,做好试验前的打算工作,编写好试验中要求自编
3、或修改的程序;完成试验前要求完成的打算工作后方可以上机试验,否则不得上机操作。 2. 各种电源的电压和极性不能接错,严禁带电接线和接插元器件。通电前须经过指导老师检查认可后方能通电。3. 不准随意拨弄各种与试验无关的旋钮和开关,凡与本次试验无关的任何设备都禁止动用和摸弄,留意平安。4. 严禁用手触摸试验系统印制电路板和元器件的引脚,防止静电击穿芯片。5. 试验中若损坏仪器或元器件,应刚好向指导老师报告。6. 在试验室内保持宁静和卫生,不得随意走动和喧哗,集中精力完成试验。7. 试验完成后,关掉电源,刚好整理试验台桌面,保持环境整齐。8. 按规定仔细完成试验报告,在规定的时间内缴上试验报告。9.
4、 凡试验或试验报告未能按规定完成的学员,不能参与本课程的考试或考查。 单片机试验报告格式 试验报告标题 一、试验目的 二、试验内容 三、试验设计及调试: (1)试验分析及内容。 (2)试验电路:画出与试验内容有关的简洁试验电路。(3)试验设计及调试步骤:依据内容写出试验程序。调试程序,视察结果。(4)试验调试过程中所遇到的问题、解决问题的思路和解决的方法。四、试验后的阅历教训总结。五、对试验课的建议 目 录 试验一 试验板运用,KEIL C51软件运用 6 试验二 单片机限制LED灯点亮 12 试验三 模拟开关灯 16 试验四 单片机限制数码管试验 21 试验五 中断系统应用试验 25 试验六
5、 LED 数码管的动态驱动 29 试验七 定时器/计数器运用 32 试验八 数字电子钟 36 试验九 矩阵键盘识别试验 37 试验十 自动演奏乐曲 41 试验十一 综合试验 交通信号灯限制器的设计 45 试验十二 教学板自检程序设计 46 试验十三 综合试验:数据采集火灾报警装置的软硬件设计 47 附录:试验教学板电路原理图 48 试验一 试验板运用,Keil C51软件运用 一、试验目的 1. 熟识单片机试验板、Keil C51软件运用 二、试验说明 本试验介绍试验板的组成、Keil C51软件运用以及烧录软件的运用。通过该试验学生可以了解单片机编程、调试方法。三、试验内容及步骤 1.启动P
6、C机,安装好Keil C51软件以及烧录软件,用串口线连接计算机与试验板(USB线供应电源)。2.打开Keil uVision2仿真软件,首先建立本试验的项目文件,接着建立源程序,编译无误后,全速运行程序。3.可把源程序编译成可执行文件,用烧录器烧录到89芯片中。四、Keilc 软件运用说明 1、打开程序: 双击程序 2、新建工程:Project New Project保存工程选择CPU(一般选ATMEL公司的AT89S51) -17- 3、设置工程:右击Options for Target 1 选择Create HEX (输出HEX文件)。 -18- 4、新建源文件:选FileNew输入、编
7、辑源程序保存(汇编源程序:文件名.asm;C源程序:文件名.c) 5、为工程添加源文件:在Project出口File页上单击文件组,选择Add Files to GroupSource Group 1选项,选择你的源文件和文件类型,然后点击ADD,再点击close。 -19- 6、编译:点击 ,或右击Target 1 Build Target F7,就可对源程序进行编译。当程序有语法错误时,会在输出窗口(Output Windows)中显示错误信息和警告信息,修改编译胜利后会生成 HEX文件。 7、下载、调试: 编译胜利后,用在线烧录程序将.HEX文件下载到单片机内部ROM中运行,在运行过程中
8、若发觉错误要重新修改程序,并编译后再下载运行。 五、烧录软件的运用 1、打开在线烧录程序 2、选择MCU类型(STC89C51RC) 1、 点击, 打开工程书目下的hex文件 2、 选择端口(一般是COM1) 3、 点击Download烧录程序 4、 打开试验板上的电源(假如烧录的时候出现问题,点击stop) 留意: 5、6 两步骤的依次不能颠倒!即在点击Download之前要先关掉试验板上的电源。 试验二 单片机限制LED灯点亮 一、试验目的 1.进一步熟识编程和程序调试 2.学习P1口的运用方法 3.学习延时子程序的编写和运用 二、试验说明 (1)输出限制。 如图1所示 ,当P1 . 0端
9、口输出高电平,即P1.01时 ,依据发光二极管的单向导电性 可知,这时发光二极管L1熄灭;当 P1 .0端口输出低电平,即 P1 .00时,发光二极管L 1亮;我们可以运用SETB P1.0指令使 P 1. 0端口输出高电平 , 运用CLR P1.0指令使 P1 .0 端口输出低电平 。 (2)延时子程序的设计方法 作为单片机的指令的执行时间是很短的,数量达微秒级,因此,假如我们要求的闪耀时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面详细介绍其原理: 石英晶体为12MHz,因此,1个机器周期为1微秒 机
10、器周期 微秒 MOV R6,#20 2个机器周期 2 D1: MOV R7,#248 2个机器周期 220 DJNZ R7,$ 2个机器周期 224820 DJNZ R6,D1 2个机器周期2204010002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R610、R7248时,延时5ms,R620、R7248时,延时10ms,以此为基本的计时单位。如要求0.2秒200ms,10msR5200ms,则R520,汇编延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ
11、 R5,D1 RET C语言延时子程序如下: void delay02s(void) /延时0.2秒子程序 unsigned char i,j,k; for(i=20;i>0;i-) for(j=20;j>0;j-) for(k=248;k>0;k-); 三、试验步骤及参考例子 试验步骤说明: 本试验须要用到单片机最小应用系统。用P1口做输出口,程序功能使发光二极管点亮。1.用串行数据通信线连接计算机与试验板,用USB给试验板供应电源 3.打开Keil uVision2仿真软件,首先建立本试验的项目文件,输入源程序(参考程序1),进行编译,直到编译无误。生成hex文件。5.通
12、过STCISP下载软件,将hex文件下载到试验板内,视察发光二极管显示状况。参考例子: (1) 点亮板子上的第一个灯D0 (2) 让第一个灯闪耀 四、参考程序 (一)适用于mini80E试验板 1) #include<reg52.h> void main() P1=0xfe; 2) #include<reg52.h> #define uint unsigned int #define uchar unsigned char delay(); void main() while(1) P1=0xfe; delay(); P1=0xff; delay(); void del
13、ay() uint x,y; for(x=100;x>0;x-) for(y=600;y>0;y-) ; (二)适用于自制最小系统试验板 (1) #include <reg52.h> void main (void) P2=0x00; P2=0x10; P0=0xfe; (2) #include <reg52.h> void delay(void); void main (void) P2=0x00; while(1) P2=0x10; P0=0xfe; delay(); /P2=0x00; P0=0xff; delay(); void delay(void
14、) int x,y; for(x=600;x>0;x-) for(y=100;y>0;y-); 六、试验内容 请在keil环境下编写以下程序: 1)点亮最终一个LED(或者随意一个LED,或者随意几个LED) 2)让点亮的LED闪耀 3)点亮板子上的D0、D2、D4、D6灯,与D1、D3、D5、D7灯交替闪耀 4)设计出流水灯程序,从D7D0或从D0-D7 试验三 模拟开关灯 1试验目的 1.进一步熟识编程和程序调试 2.学习独立按键的运用方法 2试验说明 假如系统只需几个按键,可干脆采纳I/O线构成单个按键电路,各个按键之间相互独立,一根线上的按键状态不会影响其他输入线上的工作状
15、态,又称独立式键盘接口电路。检测是否有键闭合,如有键闭合,则去除键抖动,推断键号并转入相应的按键处理。编写单片机的键盘检测程序时,一般在检测按下时加入去抖延时,检测松手时就不用加了。3、参考例子 1)通过四个按键来限制LED灯的显示状况: S1:D0点亮 S2:D1点亮 S3:D2点亮 S4:D3点亮 4、参考程序 (一)适用于自制试验板 #include <REG51.H> #define uint unsigned int #define uchar unsigned char uchar flag; uchar key_down; sbit LED2 = P00; sbit
16、LED3 = P01; sbit LED4 = P02; sbit LED5 = P03; /*/ void delay(uint k) uint data i,j; for(i=0;i<k;i+) for(j=0;j<121;j+) ; /*/ uchar scan_key(void) uchar temp; temp=P3; return temp; /*/ void main(void) key_down=0; P3=0xf7; P2=0x10; P0=0xff; while(1) P3=0xf7; if(P3!=0xf7)(key_down=0) delay(20); if
17、(P3!=0xf7)(key_down=0) flag=scan_key(); key_down=1; switch(flag) case 0xe7:LED2 = LED2;break; case 0xd7:LED3 = LED3;break; case 0xb7:LED4 = LED4;break; case 0x77:LED5 = LED5;break; default: break; if(P3=0xf7) key_down=0; (二)适用与mini80E板 #include <REG51.H> #define uint unsigned int #define uchar
18、 unsigned char uchar flag; /*/ void delay(uint k) uint data i,j; for(i=0;i<k;i+) for(j=0;j<121;j+) ; /*/ uchar scan_key(void) uchar temp; temp=P3; return temp; /*/ void main(void) while(1) P3=0xff; if(P3!=0xff) delay(20); if(P3!=0xff) flag=scan_key(); else flag=0; switch(flag) case 0xfe:P1=0xf
19、e;break; case 0xfd:P1=0xfd;break; case 0xfb:P1=0xfb;break; case 0xf7:P1=0xf7;break; default:P1=0xff;break; 或者 include <REG51.H> #define uint unsigned int #define uchar unsigned char uchar flag; uchar key_down; sbit LED2 = P10; sbit LED3 = P11; sbit LED4 = P12; sbit LED5 = P13; /*/ void delay(u
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 单片机 原理 应用 实验 指导书 语言
限制150内