
《单片机原理及应用》实验指导书.doc
32页《单片机原理及应用 》102G05A实验指导书2016.02目 录实验 1 C 语言编程 ....................................................................................................................3实验 2 Keil 开发环境与编程 ....................................................................................................5实验 3 数据排序 ......................................................................................................................18实验 4 数据搬运 ......................................................................................................................19实验 5 汇编程序实验 ..............................................................................................................20实验 6 流水灯 实验 ..................................................................................................................21实验 7 C8051F020 单片机基本配置方法 ..............................................................................23实验 8 外部中断 实验 ..............................................................................................................25实验 9 按键接口与数码管输出 ..............................................................................................26实验 10 定时 器 ..........................................................................................................................27实验 11 数字频率计设计 ..........................................................................................................28实验 12 串口通信实验 ..............................................................................................................30实验 13 数据采集系统设计 ......................................................................................................31实验 14 函数信号发生器设计 ..................................................................................................32- -3实验 1 C 语言编程一、实验目的1. 复习C语言编程。
二、实验内容1. 熟悉C语言编程软件调试一下题目:(1) 两数相加(2) 两数比大小(3) 1+2+3+……+10(4) 其他简单数学计算………三、实验步骤(简单操作可参见实验2中项目创建步骤)1. Keil软件,使用“Project”菜单中的“New μVision Project”选项来创建项目,放置到你指定的文件夹2. 选择单片机型号AT89C513. 编写源程序,并保存(扩展名用C),例程见图1-14. 将文件添加到工程中5. 调试编写源程序注意:1. AT89C51为通用8051系列单片机2. 头文件reg51.h用于51单片机特殊功能寄存器标识,stdio.h用于一些标准输入输出函数的调用如printf()3. 因单片机没有PC机那样的显示器标准输出,printf()函数的输出通过单片机串口输出实现,所以要完成两件事:(1) printf()函数之前要执行“TI=1;”用于打开串口发送,只有执行“TI=0;”(2) 软件仿真调试时,信息在“串口输出”窗口中输出可在debug模式下使用菜单ViewSerial WindowsUART #1打开“串口输出”4. 使用单片机端口P0、P1、P2等输出,可在debug模式下使用菜单Peripherals—>I/O-Ports—>指定哪个端口5. 调试界面如图1-2- -4图1-1 C语言例程图1-2 C语言程序调试界面输出端口点击后进入调试模式分别为“复位” 、“运行” 、 “暂停”串口输出打开串口标准输出从端口输出头文件- -5实验 2 Keil 开发环境与编程一、实验目的1. 熟悉基于KEIL下的实验环境。
2. 掌握程序调试的单步、断点、连续运行方法 3. 熟悉在KEIL环境下观察内部RAM , 特殊功能寄器的方法二、实验内容编写并调试一个双字节无符号十进制数加法程序其功能为将被加数写入30H、31H单元,加数写入40H、41H单元,运行程序结果写入50H、51H、52H单元中,加法程序功能为:(30H)(31H)+(40H)(41H)=(50H)(51H)(52H)(都是高位在前、低位在后)三、实验设备1. PC机一台四、实验步骤1. 启动PC 机, 打开桌面上的 Keil μVision4 软件,进入μVision4 界面,如图2-1图2-1 μVision4 界面2. 创建和打开项目(项目管理)- -6项目是用来保存文件、链接工具、目标代码生成和窗口配置信息的可以使用“Project”菜单中的“New μVision Project”选项来创建项目一旦项目被保存,将保存如下信息:● 当前所有打开的文件● 集成链接工具的设置● 目标生成配置● 主IDE 窗口及已经打开的调试窗口的位置和大小● 编辑器的设置如字体和文字颜色等2.1 创建新项目2.1.1 选择【Project】/【New μVision Project】选项,并打开。
如图2-2 2.1.2 在弹出的“Create New Project”对话框中选择要保存项目文件的路径,如图2-3在“E盘” 以自己的学号建立一文件夹,以后自己的实验程序都存在此文件夹中例如:新文件夹为“12345678” , 然后单击“保存”按钮图2-2 Project菜单图2-3“Create New Project”对话框2.1.3 在弹出的“Create New Project”对话框中的“文件名”文本框中输入项目名,例新建文件夹按钮- -7如:shiyan1(该文件名不要用数字开头),然后单击“保存”按钮如图2-4建立项目完成图2-4 建立项目2.1.4 在弹出的对话框中要求选择单片机的型号在输入项目名称后单击确定后,会弹出器件选择窗口;在此窗口中选择合适的 CPU窗口中的器件按公司名称排列在此选择“AT89C51”的型号,点击“确定”完成选择图2-5 选择AT89C51型号2.1.5 弹出的对话框点击“确定”按钮后,会弹出的如图2-6 的对话框,询问是否要将启动代码“Startup Code”加入到项目中点击“否” -8图2-6 “Startup Code”3. 源程序编辑IDE 包括一个全功能的编辑器。
可用文件菜单中的“New File”命令来新建文件,或用文件工具栏中的“New”按钮 ,然后开始键入源程序只有当文件的扩展名为.asm或.c时,才具有源程序关键字符彩色显示功能可用文件保存按钮,或用文件菜单中的“Save”或“SaveAs”命令保存文件然后再将编辑好的源代码添加到项目中3.1 建立一个新的实验源程序文件选择【File】/【New】选项,或者单击工具栏 按钮如果已经有源程序文件,可以忽略这一步3.2 在弹出的程序文本框中输入一个简单的程序,如图2-7 所示图2-7 输入新的实验源程序 3.3 程序输入完成后,要保存程序文件选择【File】/【Save】选项,或者单击工具栏 按钮,保存文件在弹出的对话框中选择要保存的路径,在“文件名”文本框中输入文件名注意一定要输入文件扩展名,如果是C 程序文件,文件名为 *.c ;如果是汇编文件,文件名为 * .asm 例如:shiyan1.c ,单击“保存”按钮注意一定要有扩展名.Cinclude “STC15F2K61S2.H”- -9#include #include unsigned char a[5] _at_ 0x50; unsigned char ww0 _at_ 0x30;unsigned char ww1 _at_ 0x31;unsigned char ww2 _at_ 0x32;unsigned char ww3 _at_ 0x33;unsigned char ww4 _at_ 0x34;unsigned char ee0 _at_ 0x40;unsigned char ee1 _at_ 0x41;unsigned char ee2 _at_ 0x42;unsigned char bdata BZW _at_ 0x20; //标志位sbit BB0 = BZW^0; //标志位 0sbit BB1 = BZW^1; //标志位 1sbit BB2 = BZW^2; //标志位 2unsigned char xx;yy;zz;int i,k,y,z,x;void main(){ww0=0x95; //存储器窗口 察看 30hww1=0xa6; // 察看 31hww2=0xb7; // 察看 32hww3=0x88; // 察看 33hww4=0x08; // 察看 34hk=ww0+ww1+ww2+ww3+ ww4; // 观察和堆栈窗口 察看 k=0x282ww4=k/4; // 察看 34h =0xa0 ee0=ww4/100; //察看 40h =0x01xx=ww4%100; //察看 xx 观察和堆栈窗口 察看 xx=0x3cee1=xx/10; //察看 41h =0x06ee2=xx%10; //察看 42h =0x00if (ee0>2) BB0=1; //察看 20h 位 0if (ee1>=5) BB1=1; 。












