实验指导书大学中山学院2014年8月目录-1单片机实验箱
实验指导书教学单位:电子信息学院课程名称:微处理器实验电子科技大学中山学院2014年8月目录TOC\o"1-5"\h\zHYPERLINK\l"bookmark6"\o"CurrentDocument"第1章ZSC-1单片机实验箱简介1HYPERLINK\l"bookmark8"\o"CurrentDocument"主要特点1HYPERLINK\l"bookmark10"\o"CurrentDocument"系统组成1HYPERLINK\l"bookmark12"\o"CurrentDocument"实验项目3技术性能4HYPERLINK\l"bookmark14"\o"CurrentDocument"调试下载说明4HYPERLINK\l"bookmark16"\o"CurrentDocument"第2章KeilC51软件的使用5HYPERLINK\l"bookmark18"\o"CurrentDocument"集成开发环境简介5HYPERLINK\l"bookmark20"\o"CurrentDocument"工程(项目)的创建与处理5HYPERLINK\l"bookmark22"\o"CurrentDocument"脱机运行8HYPERLINK\l"bookmark24"\o"CurrentDocument"第3章实验部分9实验一集成开发环境的熟悉与程序设计练习9实验二程序设计实验16实验三并口输入/输出实验23实验四中断与定时/计数器实验20实验五串口实验23实验六音乐门铃设计26第1章ZSC-1单片机实验箱简介1.1主要特点ZSC-1单片机实验箱是由电子科技大学中山学院研发的单片机教学实验与应用开发平台,除满足单片机原理与接口技术等相关课程的实验教学需要外,还可用于课程设计、电子竞赛培训、创新训练、毕业设计等实践环节的项目开发。该实验箱结构先进,外设丰富,通信能力强,扩展性好,能使学生快速熟悉单片机及常用外设的工作原理,掌握典型单片机系统的设计流程,提高应用开发能力,有效培养工程素质。ZSC-1单片机实验箱的主要特点包括:1、结构先进:设置4个以不同单片机为核心的实验分区,每个单片机既可独立工作,控制分区内各种外设,也可通过串行总线与其它单片机通信,实现信息交换。另设一个公用外设区,包括多种串行芯片/模块,由4个单片机通过串行总线分时访问。2、外设丰富:配置多种人机设备、传感器件、执行设备、通信设备、存储设备并支持外部扩展,其中TFTLCD、TTS语音合成器、ZigBee模块、陀螺仪/加速度传感器、非接触式RFID读卡器等新型外设均为标配,提高了实验项目的交互性和趣味性。3、外部通信能力强:提供RS232、RS485、USB、红外等多种通信接口,4个单片机均可利用这些接口与PC机等设备进行通信,实现程序下载、数据上传等功能。4、扩展性好:单片机多个并行及串行10口通过排针引出,用于外部扩展设备的连接。5、可靠性高:每个实验区设有独立的电源开关和稳压电路,确保一个实验区的断电或故障不会影响其它实验区的正常工作。
6、实验项目丰富:支持不少于50个基础性、综合性和设计性实验项目。7、开发效率高:提供设备驱动API、二级BootLoader、上位IAP编程软件,大幅提高单片机系统开发效率。1.2系统组成ZSC-1实验箱由4个实验分区、公用外设区、外部通信区、串行总线、电源电路组成,如图1-1所示。每个实验分区包括一个单片机以及多种由单片机直接控制的外设,公用外设区包括多种可由4个单片机分时共享的串行芯片/模块,外部通信区提供RS232、RS485、USB、红外等多种通信接口,串行总线用于各实验分区、公用外设区、外部通信区之间的通信。RS232RS485USB红外图1-1ZSC-1实验箱的总体结构表1-1为4个实验分区以及公用外设区的外设清单。1#与2#实验分区均采用80C51内核的STC12C5A60S2单片机(只是封装不同),且配置外设较多。3#实验分区采用AVR内核的ATmega32,4#实验分区采用基于80C51内核并内置IEEE802.15.4无线收发器的CC2530。表1-1ZSC-1实验箱外设清单1#实验分区(STC12C5A60S2)人机设备发光二极管无源蜂鸣器独立按键行列键盘LED数码管LED点阵管16*2字符LCD显示器执行设备直流电机步进电机传感器DS18B20温度传感器电位器2#实验分区(STC12C5A60S2)人机设备发光二极管无源蜂鸣器独立按键传感器DHT11温湿度传感器电位器通信设备nRF24L01+射频收发器存储设备8MB串行Flash存储器RC522RFID读卡器3#实验分区(ATmega32)人机设备发光二极管无源蜂鸣器独立按键传感器:电位器4#实验分区(CC2530)人机设备发光二极管无源蜂鸣器独立按键传感器:电位器公用外设区异步串行外设MzTH24TFTLCD显示器SYN6288TTS语音合成器2IC外设AT24C64串行EEPROMPCF8563T实时钟PCF8591串行AD/DAMPU6050陀螺仪/加速度传感器图1-2为ZSC-1实验箱的PCB布局图。
各功能分区、主要元器件、1#单片机引脚、扩展排针引脚的名称均有丝印标注,1个总电源开关和4个分电源开关集中安排在位于上方的电源区,程序下载口(RS232/USB)设在左上方外部通信区。JCC1rEHs'ildLjAJLiAjUlAAJMirR-.™品H胡二常[o凸3iHH!rt■HUiurainnisaeunU3电克卩kL3RUTFT-LCD电子科技大学中山学院单片机教学实验与应用幵&¥&V4tQ2014-03IE.需丢曙齧艦常鬻他!5™pua9BUOOOQOQOOOOQOOOOOOOOQOQOOoooooooooooooooo00080000008000OOOQQ0OOcc-L€no:B■匚jra■〜匸Im图1-2ZSC-1实验箱PCB布局图1・3实验项目一、基础性实验1、并口实验;2、串口实验;3、定时/计数器实验;4、外部中断实验;5、A/D转换实验;6、D/A转换实验;7、看门狗实验。二、综合性实验1、数码管显示实验;2、行列键盘扫描实验;3、直流电机实验;4、步进电机实验;5、字符型LCD显示实验;6、LED点阵显示实验;7、TFTLCD显示实验;8、TTS语音实验;9、l2C接口实验;10、SPI接口实验;11、RS485实验;12、无线数传实验;13、红外通信实验;14、多机通信实验;15、RFID实验;16、陀螺仪与加速度传感器实验三、设计性实验1、多功能电子钟设计;2、音乐门铃设计;3、数字温度计设计;4、温湿度测试仪设计;5、数字记录仪设计;6、交通灯设计;7、门禁系统设计;&多通道遥控系统设计;9、信号发生器设计;10、数字频率计设计;11、电子密码锁设计;12、简易游艺机设计;13、ZigBee无线传感器网络设计;14、小型物联网设计;15、高速公路自动收费系统设计;16、智能小区管理系统设计;17、倒车避障系统设计1.4技术性能电气参数:输入电压AC220\±10%50Hz,输出功率<20W机械参数:采用铝合金箱体,外形尺寸400mM280mM120mm使用环境:温度-10C〜+40C,相对湿度V85%,海拔v4000m1.5调试下载说明用USB电缆连接实验箱和PC机,运行PC机上的STC_ISP.exe,进行程序下载。
具体步骤如下:1、在STC_ISP主界面选择MCU型号为STC12C5A60S2,打开实验中生成的HEX格式程序文件,选择相应串口,设置最高波特率为38400bps;2、将实验箱电源电路中的总电源开关拨到左侧位置,使主电源接通,将MCU1电源开关拨到下方位置,使1#单片机断电;3、点击STC_ISP主界面中的下载按钮,约等待5s,待系统提示请给MCU上电”时再将MCU1电源开关拨到上方位置,使1#单片机通电,开始下载程序,数秒后下载结束,写入单片机Flash存储器中的程序自动开始运行。第2章KeilC51软件的使用KeilC51集成开发环境是基于80C51内核的微处理器软件开发平台,用户可以在集成开发环境下学习编写、调试单片机程序。通过学习,实验用户可以掌握运用单片机进行项目开发的过程、步骤和方法,积累一定的调试方法、技巧。2.1集成开发环境简介安装KeilC51软件后,点击桌面KeilC51快捷图标即可进入如图2.1所示的集成开发环境,各种调试工具、命令菜单都集成在此开发环境中。以下列出的是常用菜单项的主要功能及对应的快捷键,工具栏上有常用菜单命令对应的工具按钮。関1矯前口血|t*>.Uurs*lXiMyHi!lDhktap^JXLjsit^Ftj^fhRedphiirjlfTg«lt$VC£翌1rH*guv曲Ip話-JO?)4?F©瞄i理扫雪^厂!士壽场产BtfadipIKd"JflwoorLOxHI矽目或MltT■hb二”UM,_DsdXIWIT”^rajwtfSMctpjiPM•-kIT・」3林氛TmOt?GmfflKL.I000^咏隰总专rT~c1—II-1JY-II-1.J-■0100HSP3朋DHRO.33OH«RQ,#55H逸R1,UOAAHA,0R1b片1n*x]«fl;SP=?:R0=?-Rl=?'(30H)=?;(40H)=?:A=?D:0x3D:0000DO0000000000000000D::Dz3D:DODODQonOD00□DaoaooaDODODOD:0x4A;0000DO0000000D0000oa000000D:Dx57iDODODOonODanaoao□aoaoaDODOA_『丹nnnri~i~i"■~i~ii~i~i■"~i~~i~i■*■■"■*■■"■"■■"«¥11NHtanxF云*略個11/話RRi3dr.il|430hRunnin-gwithCodsLimt"?KLoad*CsxMJserisxsiiB«yaD>M>Mlktop^\I^M11凉出彳誰砲二ASMASSIGt]BrcakDisablfl:Br«eikEnahlaBrukK.i11$bniul.^iQn(1:p.«WWOTWU9C71QNUM图2.1操作界面2.2工程(项目)的创建与处理2.2.1创建一个KeilC51工程(项目)在KeilC51集成开发环境下使用Project(工程,也叫项目)来管理程序包含的所有文件模块,包括源程序(C程序,汇编程序)文件、头文件甚至说明性的技术文档。
对于刚刚使用KeilC51的用户来讲,一般可以按照下面的步骤来创建一个KeilC51工程(项目)。1、双击桌面的KeilC51快捷图标,进入KeilC51集成开发环境。2、执行Project菜单中的NewProject命令,新建一个工程。在工程保存对话框中为工程取一个名字(这里以LedFlash.V3为例),工程名应能反映其功能且名字不宜太长(最好不超过8个西文字符),每个工程最好单独建一个目录(文件夹)。3、接下来会立即弹出一个器件选择窗口。器件选择的目的是告诉最终使用的51芯片是哪一家公司的哪一种型号。因为不同型号的51芯片其内部资源不完全相同,可以根据所选器件进行SFR的预定义,在软硬件仿真过程中可提供相应的外设浮动窗口等。4、到现在用户已经建立了一个空的工程项目,并为工程选择好了目标器件,但是这个工程里没有任何程序文件。下面先用KeilC51集成开发环境自带的编辑器创建一个源程序文件。执行File菜单中的New命
令,会出现名为Text1的新文件窗口(如果多次执行New命令则会出现Text2,Text3••等多个新文件窗口)。在此窗口中输入自己的源程序并保存为LedFlash.asm。以下是LedFlash.asm源程序清单:DELAY:MOVR2,#5DELAY2:MOVR3,#100DELAY3:MOVR4,#100DJNZR4,$DJNZR3,DELAY3DJNZR2,DELAY2MAIN:XRLP1,#0FFHACALLDELAYSJMPMAIN使P1口翻转RETEND5、接下来再把LedFlash.asm源程序文件添加到LedFlash.Vp工程中。在工程管理窗口内,展开Targetl,用鼠标右键单击SourceGroupl,执行快捷菜单中的AddfilestoGroup‘SourceGoupl'令,出现添加源程序文件”窗口,找到并选择LedFlash.asm并单击Add按钮即可把已经编好的源程序文件LedFlash.asm添加到工程中。可以将多个文件加到工程中(对LedFlash.V3只需要LedFlash.asm一个源程序文件就够了),添加完以后,按Close结束。2.2.2程序文件的编译(汇编)、连接1、工程选项的设置:用鼠标右键单击Target1,执行快捷菜单中的OptionsforTarget‘T命get1'令,出现如图2.2所示的工程选项设置窗口,该窗口包含多组选项。
一般情况下只需设置部分组中的部分选项。点击Output标签,选中其中的CreateHexFile”,系统将在编译(汇编)、连接进制程序)。图2.2KeilC51工程选项设置窗口还可根据需要对其它选项进行相应的设置。最后选确定”退出。2、程序的编译(汇编)、连接接下来就可以对程序进行编译(汇编)、连接处理了。执行Project菜单中的BuildTarget或RebuildAllTargetFiles命令可对程序进行编译(汇编)、连接、生成HEX文件等一系列连续操作,可以在Build输出窗口看到处理过程的相关信息。如果有错误发生,用户可根据系统提示修改程序中的语法错误或环境设置方面存在的问题,直到完全正确(0Error(s),0Warning(s))为止。到这里,一个没有语法错误的工程项目算是完成了。但是,是否完全符合设计要求、是否含有潜在的BUG(逻辑错误),还是不敢肯定的。一个符合要求的、好的工程项目(系统、文件或程序)是要经得起考验的。它往往还需要经软件模拟、硬件仿真、现场系统调试等反复修改、更新的过程。3、Debug调试模式的设置:从图2.3可以看出,yVision3的两种工作模式分别是:UseSimulator(软件模拟)和Use(硬件仿真)。
在实验中选择使用软件模拟方式。OptionsforTarget'Target1'VK10图2.3Debug调试模式设置软件模拟工作方式选择其中UseSimlator选项,将^Vision3调试器设置成软件模拟仿真,它只能对程序的语法及其结构做一般性的分析,与硬件没有联系。在此模式下不需要实际的目标硬件就可以模拟80C51微控制器的很多功能,在准备硬件之前就可以测试您的应用程序,这是很有用的。在纯软件模拟工作方式下,用户程序仍定位于0000H,源程序的起始定位也不需变。当然,因为是软件模拟调试,程序中对外设的访问就无法观察运行效果,如灯亮、电机转等。但是KeilC51集成开发环境也提供了一个外设窗口来模拟外设动作,对于简单的应用程序基本上也够用了。在调试过程中可交替采用连续、断点、单步(stepinto)、宏单步(stepover)、至U光标所在行等运行方式,还可以复位CPU,重新开始程序的调试。断点巧妙的设置一些断点,能够更好帮助用户分析程序的运行机制、程序中变量的变化状况,提高工作效率。Nision3可以用几种不同的方法定义断点,即使在程序代码编译前,您也可以在编辑源程序的时候设置ExecutionBreaks,设断点前要从View菜单中选中FileToolbar选项,让主窗口的顶部出现FileToolbar工具栏。
断点可以用以下的方法定义和修改:用FileToolbar按纽。在Editor或Disassembly窗口中的代码行点击断点按钮即可在该设置断点。用快捷菜单的断点命令。在Editor或Disassembly窗口中的代码行点击鼠标右键在打开的快捷菜单中选择Insert/RemoveBreakpoint命令也同样可以在该行设置断点。在OutputWindow—Command输入框,可以使用Breakset、Breakkill、BreakEnable、Breaklist、Breakpoint命令来设置断点。如果已经在某行设置了断点,再次在此行设置断点将取消该断点,断点设置成功后,会在该行的行首出现红颜色的断点标志。«复位CPU用Debug菜单或工具栏的ResetCPU命令。在不改变程序的情况下,若想使程序重新开始运行,这时执行此命令即可,执行此命令后程序指针返回到0000H地址单元,另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如A将变为00H,DPTR为0000H,SP为07H,I/O口变为OFFH。«单步跟踪(F11)用Debug工具栏的Step或快捷命令StepInto命令按钮可以单步跟踪程序,每执行一次此命令,程序将运行一条指令(以指令为基本执行单元),当前的指令用黄色箭头标出,每执行一步箭头都会移动,已执行过的语句呈现绿色。
单步跟踪在C语言环境调试下最小的运行单位是一条C语句,如果一条C语句只对应一条汇编指令,则单步跟踪一次可以运行C语句对应一条汇编指令;如果一条C语句对应多条汇编指令,则一次单步跟踪要运行完对应的所有汇编指令。在汇编语言调试下,可以跟踪到每一个汇编指令的执行。单步运行(F10)用Debug工具栏的StepOver或快捷命令StepOver按钮即可实现单步运行程序,此时单步运行命令将把函数和函数调用当作一个实体来看待,因此单步运行是以语句(这一条语句不管是单一命令行还是函数调用)为基本执行单元。执行返回(Ctrl+F11)在用单步跟踪命令跟踪到了子函数或子程序内部时,可以使用Debug菜单栏中的StepOutofCurrentFunction或快捷命令按钮StepOut即可实现程序的PC指针返回到调用此子程序或函数的下一条语句。执行到光标所在命令行(Ctrl+F10)用工具栏或快捷菜单命令RuntolCursorLine即可执行此命令,使程序执行到光标所在行,但不包括此行,其实质是把当前光标所在的行当作临时断点。全速运行(F5)用Debug工具栏的Go快捷命令Run命令按钮即可实现全速运行程序,当然若程序中已经设置断点,程序将执行到断点处,并等待调试指令。
按钮可以启动/停止调试(Crtl+F5)2.3脱机运行经过在KeilC51集成开发环境下的软件模拟、或是实验仪联机进行的硬件仿真,用户程序中的错误和不足已基本上得到了纠正。但在实际的工作环境中它是否仍然符合用户的要求呢?还需要将调试好的程序下载到样机并脱机运行”才可以确定(单片机实验系统脱离主机,独立运行)。在下载程序前首先需要确定KeilC51软件的编译环境:1、点击菜单栏上的Project项,在弹出的下拉式菜单中选择Optionfortarget'命令et1在Output选项中选中CreateHexFile,即表示在编译连接后自动生成目标文件(*.HEX),点击确定命令按钮加以确认。2、用Build或Rebuild命令重新编译连接程序,生成所需的HEX文件。3、按照1.5的方法将HEX文件下载到实验箱中。第3章实验部分实验一集成开发环境的熟悉与指令练习实验名称:集成开发环境的熟悉与指令练习实验类别:验证性学时安排:4学时实验要求:必做一、实验目的和任务1熟悉KeilC51集成开发环境的使用方法;2熟悉KeilC51集成开发环境仿真条件下调试功能的使用;3学会程序存储器、寄存器、片上存储器、片外存储器内容的查看和修改。
二、实验原理介绍Keil集成开发环境为我们提供了强大的学习、调试和开发工具。我们可以利用这套工具在计算机上直接进行汇编语言的编辑、连接和调试。在程序调试时,可以通过查看相关寄存器和存储器内容来判断程序的执行是否正确,通过修改相关寄存器和存储器的内容来改变程序,再执行,来修改和验证程序。三、实验设备PC机一台四、实验内容和步骤1、编写程序,完成内存中两个字节内容的交换。1)建立工程文件。双击桌面的Keil快捷图标,进入Keil集成开发环境。点击工具栏的Project选项,在弹出的下拉菜单中选择NewProject命令,建立一个新的工程,为工程取一个名字,并选择将要使用的器件的型号(ATMEL公司的AT89C51CPU)。注意:由于实验箱MCU1所用的STC单片机是新发展的芯片,一般情况下载Keil设备库没有STC系列单片机,在编译STC系列单片机应用程序时,可选其他厂家的51或52系列单片机。2)编写程序,加入到刚才建立工程文件中。在File下采用New命令,建立新文件,送入程序内容,并保存为ASM类型文件。在ProjectWindows窗口内,选中SourceGroup1后点击鼠标右键,在弹出的快捷菜单中选择AddfilestoGroup“SourceGroup向工程中添加源程序文件)命令,选择刚才创建单击Add命令即可把源程序文件添加到项目中。
ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#60H;SP=?MOVR0,#30H;R0=?MOVR1,#40H;R1=?MOV@R0,#55H;(30H)=?MOV@R1,#0AAH;(40H)=?MOVA,@R1;A=?XCHA,@R0;A=?(30H)=?XCHA,@R1;A=?(40H)=?下面是另一种方法MOV@R0,#33H;(30H)=?MOV@R1,#44H;(40H)=?MOVA,@R0;A=?PUSHACC;SP=?(61H)=?MOVA,@R1;A=?PUSHACC;SP=?(62H)=?NOPPOPACC;SP=?A=?MOV@R0,A;(30H)=?POPACC;SP=?A=?MOV@R1,A;(40H)=?NOPSJMP$END3)选择Project下的Rebuildalltargetfiles对工程文件进行汇编和连接,如果出错,系统会提示出错并指出出错地方和出错类型,请按照提示返回程序进行修改,直到系统提示0warnings,0errors,表明程序没有语法错误,成功完成了汇编过程,就可以进行动态调试了。4)选择Project下的Optionsfortarget'进行g动态调试的参数设置,点击debug,再点击UseSimulator,最后点击完成。
5)对程序进行动态调试,学会查看和修改相关寄存器(左边的register窗)、内部和外部存储器的内容。常用的工具条上的命令有开始/暂停动态调试、,单步执行⑴或片,执行到光标处门等。查看存储器内容的方式是在存储区(View/memory窗)的地址栏内写上要查看的初始地址就可以了。比如看内部存储器用D:0000H,程序存储器用C:0000H,外部存储器用X:0000H。将每行程序执行后的结果写到该行程序的注释部分。2、编写一个数据填充和数据块搬移程序。仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,查看和验证数据区的内容是否正确。ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#30H:R0指向30H单元MOVR2,#16:R2作循环计数器NEXT1:MOV@R0,#'*':填充当前单兀
INCR0:指针下移一个单元DJNZR2,NEXT1:未填完16个单元,继续;以下程序将30H开始的16个字节内容送到100H开始的外部存储器中MOVR1,#30HMOVDPTR,#0100HMOVR3,#10HNEXT2:MOVA,@R1MOVX@DPTR,AINCR1INCDPTRDJNZR3,NEXT2SJMP$END3、编写一个多字节的算术运算程序。仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,将运行结果写到程序的注释部分。ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#60HMOVR1,#12HMOVR0,#34HMOVR2,#21HMOVR3,#0EFH;下面是加法运算MOVA,R0ADDA,R2MOVR4,AMOVA,R1ADDCA,R3MOVR5,AMOVA,#0ADDCA,#0MOVR6,ANOP;R1R0=?;R3R2=?;低8位相加J;高8位相加;R6存放进位R6R5R4=?;以下是乘法运算NOPMOVA,R0MOVB,R2MULABMOVR4,AMOVR5,BMOVA,R1MOVB,R2MULABADDA,R5MOVR5,AMOVA,BADDCA,#00HMOVR6,ANOPMOVA,R0MOVB,R3MULABADDA,R5MOVR5,AMOVA,BADDCA,R6MOVR6,AMOVA,R1MOVB,R3MULABADDA,R6MOVR6,AMOVA,BADDCA,#00HMOVR7,A;R7R6R5R4=?SJMP$END4、思考题:编写并运行程序,把两个字节的二进制数转换成对应的ASCII码。
五、注意事项和要求1、按照实验步骤学会建立工程文件、加入文件、编辑文件直至产生可执行文件的过程。2、学习动态调试程序、单步运行程序并查看寄存器和存储器内容,标明程序执行后相关寄存器和存储器内容。学时安排:4学时实验要求:必做实验二程序设计实验实验名称:程序设计实验实验类别:验证性一、实验目的和任务1、掌握分支、循环结构程序以及子程序的设计方法。2、进一步熟悉KeilC51集成开发环境。二、实验原理介绍在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。本实验在实验一的基础上,要求掌握分支、循环结构程序以及子程序的设计方法。三、实验设备PC机一台四、实验内容和步骤1、分支程序:分支程序是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系如下式所示:TOC\o"1-5"\h\zxx>0y=〒20Hx=0x5x:0仿照实验一的过程,编写程序、汇编、连接和软件仿真。
ORG0000HJMPMAINORG0100HMAIN:MOV30H,MOVA,30HJZNEXT;x=0,转移ANLA,#80H;保留符号位JZED;x>0,转移MOVA,#05H;x标准excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载80C51单片机增强了许多。本课程的全部实验只用到MCU1。图3-1为本实验对应的硬件电路。P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。P3口的4根口线连接独立按键KX0~KX3,由于P3口内部上拉电阻的作用,按键松开时,对应的口线表现为1状态(高电平),按键按下时,对应的口线表现为0状态(低电平)。注意:在做本实验时,须将拨码开关JUMP2置为接通状态(向左)。P3.2P0.0P3.4P0.1P3.5P0.2P3.7P0.3P0.4P0.5P0.6P0.7MCU1STC12C5A60S23938373635343332KX0120—心114OOKX2「15—KX3■,仃00VccJUMP2TOC\o"1-5"\h\zL101470QW—~~1L102470QW弋L103470QHYPERLINK\l"bookmark62"\o"CurrentDocument"W&弋L104470QK■=»-L105470Q-nL106470QW=-住L107470Q忖—=-矗L108470Q图3.3.1并口输入输出实验电路三、实验设备1、PC机一台(已安装KeilVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。
四、实验内容和步骤1、设计程序,控制发光管L101~L108以一定的时间间隔轮流点亮。在Keil中编写源程序。参考程序如下(请将下划线部分补充完整)ORG0000HLJMPMAINORG0100HMAIN:MOVA,#11111110B;准备点亮第一只发光管NEXT:MOV,AACALLDELAY;软件延时1s左右—A;准备点亮下一只发光管SJMPNEXTDELAY:MOVR2,#200DELAY2:MOVR3,#200DELAY3:MOVR4,#100DJNZR4,$DJNZR3,DELAY3DJNZR2,DELAY2RETEND在Keil中创建工程,加入源程序文件,设置选项,进行汇编/编译、连接、转换处理,生成HEX格式的单片机程序文件。用串行电缆连接实验箱和PC机各自的串行通信口,并运行PC机上的STC_ISP程序,进行单片机程序下载。具体步骤如下:在STC_ISP主界面选择MCU型号为STC12C5A60S2,打开②中生成的HEX格式程序文件,选择正确的串口号,设置最高波特率为38400bps;将实验箱总电源开关拨到左侧位置,接通主电源,将MCU1电源开关拨到下方位置,使1#单片机断电;点击STC_ISP主界面中的下载按钮,待系统提示请给MCU上电”时再将MCU1电源开关拨到上方位置,使1#单片机通电,开始下载程序,数秒后下载结束,写入单片机Flash存储器中的程序自动开始运行。
观察程序运行结果,若LED显示效果与要求的效果不同,或者想试验其它效果,则须修改源程序,重新进行汇编/编译、连接、转换处理,生成最新HEX文件,再按③中介绍的步骤下载和运行最新程序。2、设计程序,通过查表操作,控制L101~L108逐个点亮,再逐个熄灭。11111110B,11111100B,11111000B,11110000B;LED控制表参考程序如下(请将下划线部分补充完整):ORG0000HLJ
MPMAINORG0100HMAIN:MOVDPTR,#;DPTR指向表首单兀MOVA,#0;A从0开始NEXT:PUSHACC;A中的数据入栈保存A,@A+DPTR;查表MOVP0,A;输出当前字节ACALLDELAY;软件延时1s左右POPACC;恢复入栈保存的A值A;调整A的值CJNEA,#,NEXT;检查是否已到表尾SJMPMAINDELAY:MOVR2,#200DELAY2:MOVR3,#200DELAY3:MOVR4,#100DJNZR4,$DJNZR3,DELAY3DJNZR2,DELAY2RETLEDTBL:DBDB11100000B,11000000B,10000000B,00000000BDB00000001B,00000011B,00000111B,00001111BDB00011111B,00111111B,01111111B,11111111BEND3、设计程序,利用按键KX0~KX3分别控制发光管L101~L104的亮灭,具体要求是:每按一次按键,对应的发光管便翻转一次状态(由灭变亮或由亮变灭)。参考程序如下(请将下划线部分补充完整):KX0EQUP3.2;声明外设对应口线KX1EQUP3.4KX2EQUP3.5KX3EQUP3.7L101EQUPO.OL102EQUP0.1L103EQUP0.2L104EQUP0.3ORG0000HLJMPMAINORG0100HMAIN:NOPCHKKXO:JBKX0,CHKKX1;KX0未按下,则检测KX1LCALLDELAY;软件延时10ms左右(按键消抖)JBKX0,CHKKX1;KX0未按下,则检测KX1L101;KX0按下,则求反L101KX0,;等待KX0松开SJMPMAIN;跳转到主程序开头(以下请自行编写)R2,#2R3,#200R4,#100R4,$R3,DELAY3DELAY:MOVDELAY2:MOVDELAY3:MOVDJNZDJNZDJNZR2,DELAY2RETEND五、注意事项和要求1、注意程序的完整性、正确性和逻辑性,对出现的语法和逻辑错误要认真分析原因。
2、必要时可利用Keil进行软件模拟调试。3、STC12C5A60S2采用了优化的内部时钟电路,程序运行速度可达传统80C51单片机的8-12倍,因此软件延时子程序中循环变量的取值也增加了相应倍数。六、作业及预习要求1、仔细分析各参考程序的结构和功能。2、对程序2进行改进,添加更多LED显示花样。3、对程序3进行改进,用按键控制多种LED显示花样的动态切换(选做)。学时安排:4学时实验要求:必做实验四中断与定时/计数器实验实验名称:中断与定时/计数器实验实验类别:验证性一、实验目的和任务1、理解和学会单片机外部中断的使用;2、学习单片机定时器/计数器的应用。二、实验原理介绍中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。51类单片机至少包括5个中断源:INTO:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。(本实验用)INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
TO:定时器/计数器0中断,由TO计满回零引起。(本实验用)T1:定时器/计数器I中断,由T1计满回零引起。TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。与实验三相同,图3-1为本实验对应的硬件电路。P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。P3口的4根口线连接独立按键KX0~KX3,其中KX0对应外部中断0,进行KX0按键动作的时候可以触发外部中断。注意:在做本实验时,须将拨码开关JUMP2置为接通状态(向左)。三、实验设备1、PC机一台(已安装KeilVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。四、实验内容和步骤1、编写一段程序,用P0口作为控制端口,使实验箱上的LED轮流点亮。用外部中断0/KX0控制走马灯的暂停/继续。ORG0000HLJMPMAINORG0003LJMPZEX0ORG0100HMAIN:MOVSP,#60HSETBIT0SJMP$;延时子程序R2,#3R3,#200R4,#200R4,$R3,DELAY3R2,DELAY2DELAY:MOVDELAY2:MOVDELAY3:MOVDJNZDJNZDJNZRET;外部中断0服务子程序ZEXO:PUSHACCSETBRS0MOVR2,#2ACALLDELAY2CLRRS0JBP3.2,EXITMOVA,R5XRLA,#0FFHMOVR5,AXRLP0,#0FFHEXIT:POPACCCLRIE0END观察实验结果,解释如何实现走马灯的暂停和继续。
比较电平触发和边沿触发时走马灯控制的难易程度。2、编写一段程序,用P0口作为控制端口,使实验箱的LED轮流点亮。用定时/计数器0控制走马灯的闪烁速度。ORG0000HLJMPORGMAINLJMPZIT0ORG0100HMAIN:MOVSP,#60HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HMOVR6,MOVR7,:准备点亮第一只发光管SETBET0SETBEASETBTR0SJMP$;定时中断0服务子程序ZIT0:DJNZR6,ZRETMOVA,R7MOV,ARLAMOVR7,AMOVR6,ZRET:MOVTH0,#3CHMOVTL0,#0B0HEND修改R6=0或1时,观察走马灯的速度快慢。ZRET:处没有重置初值时的走马灯的速度与ZRET处有重置初值时的走马灯的速度的比较。R6=50时,改变TO的初值,设为最大、最小时,比较走马灯的速度。去掉R6的软件辅助延时,是否可以?速度怎样?五、注意事项和要求1、程序建立和软件仿真,保证语法正确和关键程序段的正确;3、掌握外部中断和定时器的原理和应用;3、对三个走马灯程序作出注释,回答程序后面的问题,并解释原因。
学时安排:4学时实验要求:必做实验五串口实验实验名称:串口实验实验类别:验证性一、实验目的和任务1、理解单片机的串口通信原理,学会单片机串行口的使用;2、学会单片机串行口中断的使用。二、实验原理介绍串行通信是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信。串行接口通讯实验是单片机和主机之间进行的通讯实验。图5-1为ZSC-1实验箱串口通信电路的硬件结构,该电路提供RS232、USB两种接口,用于单片机与PC机之间的串行连接。CH340G为USB-UART协议离婚协议书模板免费下载离婚协议模板下载离婚协议书范本免费下载合伙人协议 下载渠道分销协议免费下载转换芯片,在驱动程序支持下,CH340G可将PC机USB口映射为虚拟串口,其信号电平和数据格式与单片机串口兼容。MAX232A为串口电平转换芯片,可实现PC机RS232口与单片机串口之间的电平匹配。Vcc1N5817Vcc1N5817USB1234VCCD-D+GNDII10uF|0.1uF4O.luFVCCUSBDMUSBDPTXDRXDV3GNDXIXO6CH340G625317812MHz22pF1N58172K22pFVcc1O.luF1331440.1uFI2RS232VCCV+C1+C1-T1OUTR1INMAX232AV-GNDC2+C2-R1OUTT1IN15.451211O.luF1N58171011MCU1STC12C5A60S2P3.0/RXDP3.1/TXD图3.5.1串行通信电路三、实验设备1、PC机一台(已安装KeilVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。
四、实验内容和步骤1、编写一段程序,利用单片机的串行口向PC机发送字符串。1)编写程序,设置目标选项成功通过KEIL系统的编辑、编译和部分程序的动态调试。ORG0000HLJMPMAINORG0050HDB'WELCOMETOZSC!'ORG0100HCLREAMOVSP,#60HMOVTMOD,MOVTH1,MOVTL1,MOVSCON,MOVPCON,#00HSETBTR1MOVR7,MOVDPTR,#0050HMOVA,#00HMOVCA,@A+DPTRMOV,AJNBTI,$CLRTIINCDPTRDJNZR7,LOOPSJMP$ENDMAIN:LOOP:2)下载程序到单片机的FLASH中。;给堆栈指针赋初值;设置T1为方式2;设置波特率为9600;设置串口位方式1;定时器1开始计数;开始发送3)运行PC机上的串口调试助手软件,设置串口参数和接收显示格式(STC-ISP.exe)。'A勺时候返回一个'T'表示正确,否则返回一个ORGF表示错误。0000HMAIN:LJMPORGMOVMAIN0100HSP,#60H;给堆栈指针赋初值MOVTMOD,#20H;设置T1为方式2MOVTH1,#0FDH;设置波特率为9600MOVTL1,#0FDHMOVSCON,#50H;设置串口为方式1MOVPCON,#00HSETBTR1;定时器1开始计数LOOP:JNBRI,$CLRRIMOVA,SBUFCJNEA,#'A',FSENDMOVA,#'T'AJMPSENDFSEND:MOVA,#'F'SEND:MOVSBUF,A;回发数据JNBTI,$CLRTISJMPLOOPEND4)运行单片机程序,观察PC机串口调试助手收到的字符串是否正确。
2、编写一段程序,接收主机串行口发送来的字符,在单片机接收到3、采用串行口中断方式,实现实验内容和步骤2的要求。ORG0000HLJMPMAINORG0023HLJMPZRS232ORG0100HMAIN:CLREAMOVSP,#60H;给堆栈指针赋初值MOVTMOD,#2OH;设置T1为方式2MOVTH1,#0FDH;设置波特率为9600MOVTL1,#0FDHMOVSCON,#50H;设置串口位方式1,允许接收MOVPCON,#OOHSETBESSETBTR1;定时器1开始计数SETBEASJMP$ZRS232:JBRI,ZRZT:CLRTIAJMPZENDZR:CLRRIMOVA,SBUFCJNEA,#'A',FSENDMOVA,#TAJMPSENDFSEND:MOVA,#'F'SEND:MOVSBUF,A;开始发送ZEND:RETIEND试编写程序并运行,接受主机发来的一串字母(大小写兼有)和数字(以$结束),然后将其中的大写字母变成小写(其余不变),再回送给主机。五、注意事
页:
[1]