实验指导书MCU宁大.doc

上传人:文库蛋蛋多 文档编号:2888361 上传时间:2023-03-01 格式:DOC 页数:32 大小:2.86MB
返回 下载 相关 举报
实验指导书MCU宁大.doc_第1页
第1页 / 共32页
实验指导书MCU宁大.doc_第2页
第2页 / 共32页
实验指导书MCU宁大.doc_第3页
第3页 / 共32页
实验指导书MCU宁大.doc_第4页
第4页 / 共32页
实验指导书MCU宁大.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《实验指导书MCU宁大.doc》由会员分享,可在线阅读,更多相关《实验指导书MCU宁大.doc(32页珍藏版)》请在三一办公上搜索。

1、目 录1. 实验板介绍22. 让实验箱成为仿真器3实验1 熟悉实验环境与简单编程4实验2 数据排序实验17实验3端口的输入、输出实验18实验4 阵列键盘与显示20实验5 外部中断实验24实验6 计数器实验25实验7 定时器实验28实验8 A/D实验29实验9 串口RS232实验30实验10 数字时钟311. 实验板介绍COM1COM2miniUSBUSBS2S1主芯片测温电路基准电压自定义扩展区SW19实时时钟LED流水灯红外收发数码管7459574595SP3232CH3401204IS62C256sw17sw18ADC按键4*4扫描阵列键盘J8J9J7J10J5J1274573实验板的布局

2、功能介绍:(1) 供电:通过miniUSB或USB口供电(实验箱提供miniUSB数据口),然后通过SB1204稳压后作为整个实验板的工作电源(2) 主芯片:IAP15F2K61S2,可在线仿真(3) 电路板复位:SW19,按下断电,松开上电(4) 流水灯:由LED7、LED8、LED9、LED10组成(5) 串行口:电路板上有三个串口,主芯片通过芯片SP3232电平转换连接到COM1和COM2口。另外一个COM通过芯片CH340实现USB转串口,用于程序的下载及在线调试。(6) 数码显示:八个数码管由2芯片74595驱动(7) 红外收发:实现红外的信号收发(8) 实时时钟:芯片为PCF856

3、3(9) 测温电路:未提供热敏电阻SDNT2012X103F3950FTF(10) 基准电压:由芯片CD431给ADC提供基准电压2.5V(11) 阵列接盘:通过扫描端口的方式检测按键(12) ADC键盘:通过AD采样的方式检测键盘(13) 中断按键:外部中断按键SW17、SW18(14) 扩展RAM:通过外部并行总线的方式扩展了32K SRAM,芯片为IS62C256AL,其中74573为地址锁存器(15) 自定义扩展区:过孔焊盘,可根据需要进行扩展(16) 其他接插口:J5、J7、J8、J9、J10、J12(扩展液晶12764接口)2. 让实验箱成为仿真器为了方便学习单片机的硬件编程,一般

4、采用在线仿真的方式进行。因此每次实验前,请先做这一步“创建仿真器”烧写仿真器设置用USB线将PC电脑和实验箱连接,单片机型号选择IAP15F2K61S2,串口号会自动检测USB-SERIAL CH340 (COMx),一般不需要调整。然后如上图,进入到“Keil仿真设置”页面,点击“将IAP15F2K61S2设置为仿真芯片(5.0V系统)”按钮,再在实验箱中按一下SW19按钮,当程序下载完成后仿真器便制作完成了。烧写仿真器的过程实验1 熟悉实验环境与简单编程一、实验目的1. 熟悉基于KEIL下的实验环境。2. 掌握程序调试的单步、断点、连续运行方法。 3. 熟悉在KEIL环境下观察内部RAM

5、, 特殊功能寄器的方法。二、实验内容编写并调试一个双字节无符号十进制数加法程序。其功能为将被加数写入30H、31H单元,加数写入40H、41H单元,运行程序结果写入50H、51H、52H单元中,加法程序功能为:(30H)(31H)+(40H)(41H)=(50H)(51H)(52H)(都是高位在前、低位在后)。三、实验设备1.STC学习板套。2.PC机一台。四、实验步骤1. 启动PC 机, 打开桌面上的 Keil Vision4 软件,进入Vision4 界面,如图1-1。图1-1 Vision4 界面2. 创建和打开项目(项目管理)项目是用来保存文件、链接工具、目标代码生成和窗口配置信息的。

6、可以使用“Project”菜单中的“New Vision Project”选项来创建项目。一旦项目被保存,将保存如下信息: 当前所有打开的文件。 集成链接工具的设置。 目标生成配置。 主IDE 窗口及已经打开的调试窗口的位置和大小。 编辑器的设置如字体和文字颜色等。2.1 创建新项目2.1.1 选择【Project】/【New Vision Project】选项,并打开。如图1-2 。2.1.2 在弹出的“Create New Project”对话框中选择要保存项目文件的路径,如图13。在“E盘” 以自己的学号建立一文件夹,以后自己的实验程序都存在此文件夹中。例如:新文件夹为“12345678

7、” , 然后单击“保存”按钮。图1-2 Project菜单新建文件夹按钮图1-3“Create New Project”对话框2.1.3 在弹出的“Create New Project”对话框中的“文件名”文本框中输入项目名,例如:shiyan1,然后单击“保存”按钮。如图1-4。到此建立项目完成。 图1-4 建立项目2.1.4 在弹出的对话框中要求选择单片机的型号。在Keil中新建项目时选择芯片型号时,便会有“STC MCU Database”的选择项,如下图 图1-5 选择单片机类型然后从列表中选择相应的MCU型号(目前STC支持仿真的型号只有STC15F2K60S2),所以我们在此选择“

8、STC15F2K60S2”的型号,点击“确定”完成选择图1-6 选择STC15F2K60S2型号2.1.5 弹出的对话框点击“确定”按钮后,会弹出的如图1-7 的对话框,询问是否要将启动代码“Startup Code”加入到项目中。C 语言文件编程点击“是”;汇编文件点击“否”。图1-7 “Startup Code”3. 源程序编辑IDE 包括一个全功能的编辑器。可用文件菜单中的“New File”命令来新建文件,或用文件工具栏中的“New”按钮 ,然后开始键入源程序。只有当文件的扩展名为.asm或.c时,才具有源程序关键字符彩色显示功能。可用文件保存按钮,或用文件菜单中的“Save”或“Sa

9、veAs”命令保存文件。然后再将编辑好的源代码添加到项目中。3.1 建立一个新的实验源程序文件。选择【File】/【New】选项,或者单击工具栏 按钮。如果已经有源程序文件,可以忽略这一步。3.2 在弹出的程序文本框中输入一个简单的程序,如图1-8 所示。图1-8 输入新的实验源程序 3.3 程序输入完成后,要保存程序文件。选择【File】/【Save】选项,或者单击工具栏 按钮,保存文件。在弹出的对话框中选择要保存的路径,在“文件名”文本框中输入文件名。注意一定要输入文件扩展名,如果是C 程序文件,文件名为 *.c ;如果是汇编文件,文件名为 * .asm 。例如:shiyan1.c ,单击

10、“保存”按钮。注意一定要有扩展名.C。#include “STC15F2K61S2.H”#include #include unsigned char a5 _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

11、 ee2 _at_ 0x42; unsigned char bdata BZW _at_ 0x20; /标志位sbit BB0 = BZW0; /标志位0sbit BB1 = BZW1; /标志位1sbit BB2 = BZW2; /标志位2 unsigned char xx;yy;zz;int i,k,y,z,x; void main() ww0=0x95; /存储器窗口 察看30h ww1=0xa6; / 察看31h ww2=0xb7; / 察看32h ww3=0x88; / 察看33h ww4=0x08; / 察看34h k=ww0+ww1+ww2+ww3+ ww4; / 观察和堆栈窗口

12、 察看 k=0x282 ww4=k/4; / 察看34h =0xa0 ee0=ww4/100; /察看40h =0x01 xx=ww4%100; /察看 xx 观察和堆栈窗口 察看 xx=0x3c ee1=xx/10; /察看41h =0x06 ee2=xx%10; /察看42h =0x00 if (ee02) BB0=1; /察看20h 位0 if (ee1=5) BB1=1; /察看20h 位1 if (ee29) BB2=1; /察看20h 位2 for(i=0,k=0x55;i5;i+,k+) ai=k; / 察看 存储器窗口 (50h-54h) ACC=0xa0; /专用寄存器窗口

13、察看 A B=0xbb; /专用寄存器窗口 察看 B switch(ACC+1) case 0xa1: TL0=0x77;TH0=0x88; /存储器窗口 察看8ah,8ch break; case 0xa2: TL0=0x33;TH0=0x44; /存储器窗口 察看8ah, 8ch break; default: TL0=0x11; TH0=0x22; /存储器窗口 察看8ah, 8ch break; while(1); 3.4 将编辑好的源代码文件添加到项目中。单击Target1 前面的 + 号,展开里面的内容Source Group1,如图1-9 所示。3.5 用右键单击Source G

14、roup1,在弹出的快捷菜单中选择Add File to GroupSourceGroup1选项,如图1-10所示。3.6 如果是C 文件,则选择 “C Source file”;如果是汇编文件,则选择“Asm Source file”, 选择刚才源程序文件“shiyan1”,单击“Add”按钮,如果要添加多个文件,可以不断添加。添加完毕后单击“Close”按钮,关闭该窗口,如图1-11 。 图1-9 Target 展开图 图1-10 Add Files to Group Source Group1菜单图1-11 Add Files to Group Source Group1对话框3.7 接

15、下来要对目标进行一些设置。用鼠标右键(注意用右键)单击Target1,在弹出的会计菜单中选择Options for Target “Target 1”选项,如图1-12 所示。 图1-12 Options for Target “Target 1”选项3.11 选择设置Debug 选项卡,这里有两类仿真形式可选:Use Simulator 和Use:STC Monitor-51 Driver,前一种是纯软件仿真,后一种是带有Monitor-51 目标仿真器的仿真。如图1-13 所示。 纯软件仿真仿真,选择“Use Simulator”即可。选择STC仿真驱动图1-13 设置Debug 选项如上

16、图,首先进入到项目的设置页面,选择“Debug”设置页,第2步选择右侧的硬件仿真“Use ”,第3步,在仿真驱动下拉列表中选择“STC Monitor-51 Driver”项,然后点击“Settings”按钮,进入下面的设置画面,对串口的端口号和波特率进行设置,波特率一般选择115200或者57600。到此设置便完成了。4. 源程序的编译和链接编译程序,选择【Project】/【Rebuild all target files】选项.或者单击工具栏中的 按钮,开始编译程序。如果编译成功,开发环境下面会显示编译成功的信息,图1-14;如果不成功,图1-15,需修改程序语法等,选中图中程序错误的行

17、,双击左键,则在程序编辑窗口中,在错误源代码所在的行处显示一标记,对程序错误进行修改,全部修改后,重新编译,直至编译成功。图1-14 编译成功图1-15 编译不成功5. 调试,运行程序菜单5.1 编译完毕之后,选择【Debug】/【Start/Stop Debug Session】选项,或者单击工具栏中的铵钮,即就进入调试环境,如图1-16 ,或图1-17,单击工具栏 铵钮,可在汇编程序与反汇编程序之间来回切换。 开始调试程序。程序调试前应先要熟悉调试菜单Debug 、调试命令,视图菜单View、项目菜单Project 和项目命令Project。见表1、表2、表35.2 单步执行程序:A. 单

18、击工具栏 铵钮, 显示存储器窗口,在MEMORY#1 中的 / ddress 窗口处输入:D : 30H, 然后按回车键,在程序执行过程中,注意观察RAM 30H, 31H, 40H, 41H, 50H, 51H, 52H D1数据变化,注意观察特殊功能寄存器的存数据变化情况。(A,B,SP,DPTR,PC,PSW,R0R7)。B. 单击工具栏 或快捷键 F11 ,单步执行程序,观察RAM ,特殊功能寄器“ A” 变化情况。C. 当单步执行程序到 “ while(1); ” 时,停止向下执行,原地踏步。D. 单击工具栏 复位。E. 重新单步执行程。 观察和堆栈窗口专用寄存器窗口铵钮专用寄存器存

19、储器窗口观察和堆栈窗口铵钮汇编程序与反汇编程序切换铵钮存储器窗口铵钮图1-16 汇编程序汇编程序汇编程序与反汇编程序切换铵钮图1-17 反汇编程序5.2.2 程序的修改A. 如果程序需要修改,单击工具栏 退出调试状态。B. 对程序进行修改,并保存C. 编译程序D. 重新开始调试程序。5.2.3 断点执行程序:A. 断点的设置:单击要设置断点的程序行后,移动鼠标到工具栏,单击 ,此时要设置断点的程序行前,显示一红色标记,断点设置完成。可设置多个断点。B. 单击工具栏 或快捷键 F5,直到遇到一个中断后停止,C. 再次单击工具栏 或快捷键 F5,程序从断点处开始向下执行程序。D. 断点的取消:单击

20、要取消设置断点的程序行后,移动鼠标到工具栏,单击 ,此时设置断点的红色标记消除,断点被取消。 E. 单击工具栏 复位。5.2.3 连续执行程序:单击工具栏 或快捷键 F5 ,连续执行程序,单击工具栏 或快捷键 Esc,停止程序运行。6. 修改数据 :ww0=0x55; /存储器窗口 察看30h ww1=0x77; /察看31h ww2=0xaa; /察看32h ww3=0x44; /察看33h ww4=0xdf; /察看34hACC=0xa3; /专用寄存器窗口 察看 A B=0xbb; /专用寄存器窗口 察看 B7.重新调试。表1 视图菜单View。菜单工具栏描述Status Bar显示 /

21、 隐藏状态条File Toolbar显示 / 隐藏文件菜单条Build Toobar显示 / 隐藏编译菜单条Debug Toobar显示 / 隐藏调试菜单条Project Window显示 / 隐藏项目窗口Output Window显示 / 隐藏输出窗口Source Browser打开资源浏览器Disassembly Window显示 / 隐藏反汇编Watch & Call Stack Window显示 / 隐藏观察和堆栈窗口Memory Window显示 / 隐藏存储器窗口Code Coverage Window显示 / 隐藏代码报告窗口Performance Analyzer Window

22、显示 / 隐藏性能分析窗口Symbol Window显示 / 隐藏字符变量窗口Serial Window #1显示 / 隐藏串口1的观察窗口Serial Window #2显示 / 隐藏串口2的观察窗口Toolbox显示 / 隐藏自定义工具栏窗口Periodic Window Update程序运行时刷新观察窗口Workbook Mode显示 / 隐藏窗口框架模式Options . . .设置颜色,字体,快捷键和编辑器的选项表2 项目菜单Project 和项目命令Project 菜单工具栏快捷键描述New Project创建新项目Import Vision1Project转化 Vision1 的

23、项目Open Project打开一个已经存在的项目Close Project关闭当前的项目Target Environment定义工具、包含文件和库的路径Targets,Groups,Files维护一个项目的对象、文件组和文件Select Device for Target选择对象的CPURemove 从项目中移走一个组或文件Options Alt+F7设置对象、组或文件的工具选项File Extensions选择不同文件类型的扩展名Build TargetF7编译修改过的文件并生成应用Rebuild Target重新编译所有的文件并生成应用Translate Ctrl+F7编译当前文件Sto

24、p Build停止生成应用的过程17打开最近打开过的项目表3 调试菜单和调试命令Debug菜单工具栏快捷键描述Start/Stop DebuggingCtrl+F5开始/停止调试模式GoF5运行程序,直到遇到一个中断StepF11单步执行程序,遇到子程序则进入Step overF10单步执行程序,跳过子程序Step out ofCtrl+F11执行到当前函数的结束Current function stopRuningEsc停止程序运行Breakpoints打开断点对话框Insert/Remove Breakpoint设置/取消当前行的断点Enable/Disable Breakpoint使能/

25、禁止当前行的断点Disable All Breakpoints禁止所有的断点Kill All Breakpoints取消所有的断点Show Next Statement显示下一条指令Enable/Disable TraceRecording使能/禁止程序运行轨迹的标识View Trace Records显示程序运行过的指令Memory Map打开存储器空间设置对话框Performance Analyzer打开设置性能分析的窗口Inline Assembly对某一行重新汇编,可以修改汇编代码Function Editor 编辑调试函数和调试设置文件Reset CPU复位CPU实验2 数据排序实验

26、一、实验目的1. 熟悉51指令系统,掌握程序设计方法。2. 掌握排序程序的设计方法。二、实验内容1. 本例程采用交换排序法将内部RAM 中的3039H 单元中的10个单字节无符号二进制数按从小到大的次序排列,2. 将排序后的数据中的最大的一个数和最小一个数去掉,求其他八个数的和,和放40H,41H 中, 求这八个数的平均值,放在50H中。三、实验步骤1用 C 语言语言编写程序。2编译、生成项目、下载程序,调试运行程序。3. 用单步、断点、连续执行程序的方法调试程序。4. 打开RAM数据窗口,分别观察看30H39H、40H, 41H(02H)(0C0H)和50H(58H)的单元。四、实验参考程序

27、#include #include unsigned char a10 _at_ 0x30;unsigned char data0 _at_ 0x40;unsigned char data1 _at_ 0x41;unsigned char data2 _at_ 0x50;void main() unsigned char tmp,i,j;unsigned int sum;a0=0x5f; a1=0x56;a2=0x5a;a3=0x5e;a4=0x51; a5=0x5b;a6=0x53;a7=0x58;a8=0x57;a9=0x55;for(i=1;i10;i+)for(j=0;jaj+1)tm

28、p=aj;aj=aj+1;aj+1=tmp; /数据排序 ; ; ;实验3端口的输入、输出实验一、实验目的1掌握单片机I/O口数据输入、输出的方法。2掌握独立按键的接口和编程方法。3了解实验系统板硬件机构。二、实验内容本实验提供了一个2位按键,如果有键按下,则相应输出位为低电平,否则输出为高电平。4位逻辑电平显示电路,当相应的输入位为低电平时,指示灯亮。 1.要求编写一程序实现下列功能:SW17键按下,一盏指示灯亮;SW18键按下两盏指示灯亮;两键都按下时,LED10指示灯连续闪烁;两键全释放时,指示灯全部熄灭。2.编写一程序实现下列功能:SW17键每按下一次,30H单元加一(30H初值为30

29、H=0x00),并将30H 单元内容送到4位逻辑电平显示电路显示(4位二进制数,LED亮代表1);SW18键每按下一次,31H单元加二(31H初值为31H=0x03),并将31H 单元内容送到4位逻辑电平显示电路显示(4位二进制数,LED亮代表1)。注意:MCU 判断有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。读出键值后,MCU 应再判断键按是否释放,如释放则根据键值进行相应操作。 三、实验步骤1. 将实验箱成为仿真器。2用 C 语言编写程序。3编译、生成项目、下载程序,调试运行程序。4. 观察发光二极管的亮灭与按键开关的要求是否一致。四、实验程序参考框图1. 按键点亮LED灯的

30、参考程序如下,请补充后完成调试#include #define uchar unsigned charvoid delay1m(uchar i)uchar j;while(i-)for(j=0;j250;j+);void main (void) uchar key;while(1)if(key=0x08) /SW17 P16 = 0;else if(key=0x04) /SW18 . else if(key=0x00) /两键 . else . 2. 按键计数并显示#include #define uchar unsigned charvoid delay1m(uchar i) /延时子程序v

31、oid disp(uchar i) /二进制位: LED7、LED8、LED9、LED10 switch(i&0x0f) case 0: P17=1;P16=1;P47=1;P46=1;break; case 1: . default:P17=1;P16=1;P47=1;P46=1; unsigned char ww0 _at_ 0x30;unsigned char ww1 _at_ 0x31;/* 主函数 */void main (void) uchar key,new;ww0=0x00;ww1=0x03;while(1)while(!(.); /等按键按下delay1m(1);new=(P

32、3&0x0c);if(new=key) while(.); /等按键释放 switch(new) case /SW17 case /SW18 default: disp(ww0); 实验4 阵列键盘与显示一、实验目的1掌握数码管显示原理及编程方法。2掌握矩阵式键盘的接口和编程方法。3了解实验系统板硬件机构。二、实验内容本实验提供了一个4x4的矩阵式按键(实验箱右下角),其电路连接图如下。实验箱中上部为八位共阴极数码管,由两片串入并出的移位寄存器74595驱动。如下图。要求编写一程序实现下列功能:将按键0F值用一位数码管显示,按一次键,显示键符。三、实验步骤1. 将实验箱成为仿真器。2用 C 语

33、言编写程序。3编译、生成项目、下载程序,调试运行程序。4. 观察数码管的显示是否与按键一致。四、实验程序参考框图#include #define uchar unsigned char/*本地常量声明*/uchar code t_display=/标准字库/ 0 1 2 3 4 5 6 7 8 9 A B C D E F0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,/black0x00;/公阴极uchar code T_COM=0xFE,0xFD,0xFB,0xF7,0xEF,0

34、xDF,0xBF,0x7F;/位码/*IO口定义*/sbit P_HC595_SER = P40;/pin 14SERdata inputsbit P_HC595_RCLK = P54;/pin 12RCLkstore (latch) clocksbit P_HC595_SRCLK = P43;/pin 11SRCLKShift data clock/* 向HC595发送一个字节函数 */void Send_595(uchar dat)uchari;for(i=0; i8; i+)dat = 20)/1秒后重键IO_KeyHoldCnt = 18;F0 = 1;if(F0)j = T_KeyT

35、ableIO_KeyState 4;/第j行,1,2,3,4if(j != 0) & (T_KeyTableIO_KeyState& 0x0f != 0) /第几列KeyCode = (j - 1) * 4 + T_KeyTableIO_KeyState & 0x0f -1;/计算键码,015elseIO_KeyHoldCnt = 0;P0 = 0xff;/* 主函数 */void main(void)uchar i;for(i=0;i8;i+)Send_595(T_COMi);Send_595(t_display0x10); /消隐,全灭P_HC595_RCLK = 1; P_HC595_R

36、CLK = 0;/锁存输出数据while(1) IO_KeyScan();if(KeyCode=15) /有键按下 Send_595(0x07F); /显示在最右边 Send_595(t_displayKeyCode); P_HC595_RCLK = 1; P_HC595_RCLK = 0;/锁存输出数据实验5 外部中断实验一、实验目的1. 掌握外部中断技术的基本使用方法2掌握中断处理程序的编写方法 二、实验内容 要求编写一程序实现下列功能:主程序一盏指示灯亮(LED7)连续闪动,当SW17键按下,进入中断,另一盏指示灯亮(LED8)亮一定时间后熄灭。 三、实验内容及步骤1将实验箱成为仿真器。2编译、生成项目、下载程序,调试运行程序。3观察发光二极管的亮灭与按键开关的要求是否一致。 四、实验程序参考框图#include #define uchar unsigned char#define uint unsigned intvoid delay1m(uint i)void interEX0 () interru pt 0 /using 2P17=1;P16=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号