《单片机原理与应用指导书.doc》由会员分享,可在线阅读,更多相关《单片机原理与应用指导书.doc(18页珍藏版)》请在三一办公上搜索。
1、单片机原理与应用实验指导书黑龙江工程学院 汽车系2009年9月第1章 斯迈特 S51E 在线学习板该学习开发板采用 ISP 在系统可编程技术,完全摆脱了单片机仿真器、编程器的束缚,大大降低了单片机学习开发的成本。采用将编程电缆与实验板分离技术,能够将编程电缆线用于其它用户板,完全实现了 ISP 技术。利用 S51E 板板上资源可以学习键盘控制、LED 动态显示、A/D 转换、D/A 转换、IIC 总线 RAM(掉电内存)、继电器控制、步进电机控制、液晶显示、以及 RS232 多机通信控制使用等,利用 89S51_E 板还可以根据用户的不同要求进行外围扩展。一、原理图(参见 S51E.SCH F
2、OR PROTEL99)二、资源介绍(1)开发板资源说明6 位 LED 数码管、8 只小灯、6 只按键、1 路蜂鸣器、串行 EEPROM 系列:AT24C02、RS232串行通讯、2 路串行 AD 转换 ADC0832、步进电机、直流电机、电子琴、时钟、继电器、LCD 液晶接口、AT89S51 在线编程接口(2)资源引脚说明ZIF_40 脚锁进座:用于锁紧 AT89S51/52/53 系列芯片。CPU 周围共有 4 X 8=32 个跳线器,分别对应 P0,P2,P1,P3 口线选择:跳线器位于下方则:焊盘 P0.(00 07)与 CPU 的 P0.0 P0.7 口一一对应焊盘 P1.(10 1
3、7)与 CPU 的 P1.0 P1.7 口一一对应。焊盘 P2.(20 27)与 CPU 的 P2.0 P2.7 口一一对应焊盘 P3.(30 37)与 CPU 的 P3.0 P3.7 口一一对应跳线器位于上方则:数码管 LED1_6(笔段 A H)与 CPU 的 P0.0 P0.6 口一一对应数码管 LED1_6(位)与 CPU 的 P2.7 P2.2 口一一对应指示灯(L1 L6)与 CPU 的 P1.0 P1.7 一一对应。P3.0 口对应 RS232 的 RX 端P3.1 口对应 RS232 的 TX 端按钮 SW0 SW6 与 CPU 的 P3.3 口相连、并与 P0.0-P0.5
4、共享P3.2 口对应 AT24C02 的 SCK 端P3.4 口对应 AT24C02 的 SDA 端P3.5 口对应 ADC0832 的 CS 端P3.6 口对应 ADC0832 的 DI 端P3.7 口对应 ADC0832 的 DO 端P2.1 口对应 ADC0832 的 CLK 端注意:LED1-6、L1-L6 均为共阳接法,因此低电平点亮 LED 及指示灯。按钮 SW1-SW6 按下时,并分别对应于 P2.7-P2.2 接中断,该程序请参考样例程序。RESET 为 RESET 开关。OSC 为晶体(0-33MHz)插接区。小 LED 为电源指示灯。RS232 接线端:RX 为 89S51
5、/52/53 的 232 电平 RDX 端弯脚 DB9 接线:2 为串形输出口3 为串形输入口5 为接地用户接线时只需使用不交叉的串口线与计算机相连RST、PSEN、 ALE、VCC、GND 与 CPU 的 ALE,PSTN,RESET、VCC、GND 端直接相连,用于系统扩展。电源输入为:使用 9V 稳压电源即可、电源芯为正、外筐为地 。三、出厂方式介绍可以使用A/D转换,AT24C02,串口通讯,数码管的动态扫描、蜂鸣器、ADC0832、24C02、在线编程等资源,可以查阅光盘中的 PDF 文件来熟悉这些资源的应用。(CPU 管座)液晶接口 LCD可以自己接线将接口上的焊盘与 89s52
6、的 I/O 口相连,必须参考液晶的说明书,了解其特性,方可进行连接,以免减少不必要的损失。在演示盘中提供了扩展一个液晶的 ASM 样例程序(DEMO_LCD.ASM),用户可以通过参考样例程序来熟悉对液晶的控制技术。步进电机和继电器:RS232 串口通讯:电路中的 RS232 芯片是用来将 TTL 电平与 232 电平互转。我们可以将两块 51A/D/E板进行通讯实验如:用 A 板(发出信号的 51_E 板)向 B 板(接收信号的 51E 板)发出信号,即用不同的按键来发出信号,则 B 板上的数码管会出现相应的数字(SW1 为 1,SW2 为 2,SW3 为 3,-SW6 为 6)。A/D 转
7、换接口串行 EEPROM AT24C02说明:采用动态扫描方式,若检测键盘,不采用 LED 数码显示时:只需将 P3.3 口置成低电平,然后判断 P2.2-P2.7 哪一个口线为低电平即可;若采用数码显示,先将 P3.3 置高,在对 P2.2-P2.7 顺序扫描(相应的一位置低电平)的同时,读取 P3.4引脚是否为低电平,如为低电平,则表示相应的一位置按键按下.8 只 LED 小灯及 6 位数码管:说明:采用共阳接法,若要将 LED 点亮,则只须将单片机 P1 口上相应的 I/O 置成低电平。数码管由 2N5401 驱动!集成温度传感器 DS18B20,量程:-20-+120 度,分辩率:12
8、 位,自校零。用户自行购买后,将其焊接在传感器位置上,运行可测量温度。本机电源输入为:9V 12V第2章 建立KeilC51项目运行KEIL软件,接着按下面的步骤建立您的第一个项目:(1)点击 Project 菜单,选择弹出的下拉式菜单中的 New Project,如图 21。接着弹 出一个标准 Windows 文件对话窗口,如图 22。在“文件名”中输入您的第一个 C 程序项 目名称,这里我们用“test”。“保存”后的文件扩展名为 uv2,这是 KEIL uVision2 项目文件扩展名,以后能直接点击此文件以打开先前做的项目。图 21 New Project 菜单图 22 文件窗口(2)
9、选择所要的单片机,这里选择常用的 Ateml 公司的 AT89s52。此时屏幕如图 23 所示。AT89s52 有什么功能、特点呢?看图中右边有简单的介绍。完成上面步骤后,就可 以进行程序的编写了。(3)首先在项目中创建新的程序文件或加入旧程序文件。如没有现成的程序,就要新建一个程序文件。在 KEIL 中有一些程序的 Demo,在这里我们还是以一个C程序为例介绍如何新建一个C 程序和如何加到您的第一个项目中。点击图 24 中 1 的新建文 件的快捷按钮,在2 中出现一个新的文字编辑窗口,这个操作也可通过菜单 FileNew 或 快捷键 Ctrl+N 来实现。下面是经典的一段例程序:#inclu
10、de #include void main(void)SCON = 0x50; /串行口方式 1,允许接收TMOD = 0x20; /定时器 1 定时方式 2TCON = 0x40; /设定时器 1 开始计数TH1 = 0xE8; /11.0592MHz 1200 波特率TL1 = 0xE8; TI = 1;TR1 = 1; /启动定时器while(1)printf (Hello World!n); /显示 Hello World图 23 选取芯片图 24 新建程序文件这段程序的功能是不断从串行口输出“Hello World!”字符,先不管程序的语法和意思吧,先 看看如何把它加入到项目中和如何
11、编译试运行。(4)点击图 24 中的 3 保存新建的程序,也能用菜单 FileSave 或快捷键 Ctrl+S进行保存。因是新文件所以保存时会弹出类似图 24 的文件操作窗口,把第一个程序命名为 test1.c,保存在项目所在的目录中,这个时候会发现程序单词有了不一样的颜色,说明 KEIL的C语言语法检查生效了。如图 25 鼠标在屏幕左边的 Source Group1 文件夹图标上右击弹出 菜单,在这里能做在项目中增加减少文件等操作。选“Add File to Group Source Group 1” 弹出文件窗口,选择刚刚保存的文件,按 ADD 按钮,关闭文件窗,程序文件已加到项目中了。这
12、个时候在 Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它能展开查看。图 25 把文件加入到项目文件组中(5)C程序文件已被加到了项目中了,下面可以编译运行了。这个项目只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用 于芯片烧写的 HEX 文件。先看图 26,图中 1、2、3 都是编译按钮,不一样是 1 是用 于编译单个文件。2 是编译链接当前项目,如果先前编译过一次之后文件没有做动编辑改动, 这个时候再点击是不会再次重新编译的。3 是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在 3 右边的是
13、停止编译按钮,只有点击了前三个中的任一个,停止按钮 才会生效。5 是菜单中的它们。在 4 中能看到编译的错误信息和使用的系统资源情况等, 以后我们要查错就靠它了。6 是有一个小放大镜的按钮,这就是开启关闭调试模式的按钮,它也存在于菜单 DebugStartStop Debug Session,快捷键为 Ctrl+F5。图 26 编译程序(6)进入调试模式,软件窗口样式大致如图 27 所示。图中 1 为运行,当程序处于停止状态时才有效,2 为停止,程序处于运行状态时才有效。3 是复位,模拟芯片的复位,程序回到最开头处执行。按4 能打开 5 中的串行调试窗口,这个窗口能看到从 51 芯片的串行口输
14、入输出的字符,这里的第一个项目也正是在这里看运行结果。这些在菜单中也有。首先按4打开串行调试窗口,再按运行键,这个时候就能看到串行调试窗口中不断的打印“Hello World!”。最后要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启关闭调试 模式按钮。然后就能进行关闭 KEIL 等相关操作了。图2-7为了让编译好的程序能通过编程器写入51芯片中,要先用编译器生成HEX文件,下面来看看如何用KEIL uVISION2来编译生成用于烧写 芯片的HEX文件。HEX文件格式是Intel公司提出的按地址排列的数据信息,数据宽度为字 节,所有数据使用16进制数字表示, 常用来保存单片机或其他处理
15、器的目标程序代码。它保 存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。我们先来打开第一个 项目,打开它的所在目录,找到test.Uv2的文件就能打开先前的项目了。然后右击图28 中的1项目文件夹,弹出项目功能菜单,选Options for TargetTarget1,弹出项目选项设置窗口, 同样先选中项目文件夹图标,这个时候在Project菜单中也有一样的菜单可选。打开项目选项窗口, 转到Output选项页图28所示,图中1是选择编译输出的路径,2是设置编译输出生成的文件 名,3则是决定是否要创建HEX文件,选中它就能输出HEX文件到指定的路径中。选好了再将它重新编译一次,很快
16、在编译信息窗口中就显示HEX文件创建到指定的路径中了,如图29。这样就可用自己的编程器所附带的软件去读取并烧到芯片了,再用实验板看结果,编程器可以利用ISP下载程序。(技巧:一、在图28中的1里的项目文件树形目录中,先选中对象,再单击它就可对它进行重命名操作,双击文件图标便可打开文件。二、在Project下拉菜单的最下方有最近编辑过的项目路径保存,这里能快速打开最近在编辑的项目。)图21项目功能菜单图28 项目选项窗口图 29 编译信息窗口把编译好的文件烧到了芯片上,带串行口输出元件的学习实验板,就能把串行口和 PC 机串行口相联用串行口调试软件或Windows的超级终端,将其波特率设为120
17、0,就能看到不停输出的“Hello World!”字样。如果您还没有实验板,那这里先说说AT89s52 的最小化系统,再以一实例程序验证最小化系统是否在运行,这个最小化系统也易于自制用于实验。图 210 便是 AT89s52 的最小化系统,不过为了让我们能看出它是在运行的,加了一个电阻和一个LED,用以显示它的状态,晶体震荡器能根据自己的情况使用,一般实验板上是用 11.0592MHz 或 12MHz,使用前者的好外是能产生标准的串行口波特率,后 者则一个机器周期为 1 微秒,便于做精确定时。在自己做实验里,注意的是 VCC 是+5V 的,不能高于此值,不然将损坏单片机,太低则不能正常工作。在
18、 31 脚要接高电平,这样我们 才能执行片内的程序,如接低电平则使用片外的程序存储器。下面建一个新的项目名为 OneLED 来验证最小化系统是否能工作。程序如下:#include /预处理命令void main(void) /主函数名/这是第一种注释方式unsigned int a; /定义变量 a 为 int 类型/* 这是第二种注释方式*/do /do while 组成循环for (a=0; a50000; a+); /这是一个循环 P1_0 = 0; /设 P1.0 口为低电平,点亮 LED for (a=0; a50000; a+); /这是一个循环 P1_0 = 1; /设 P1.0
19、 口为高电平,熄灭 LEDwhile(1);图 210 AT89s52 最小化系统KEIL C 编译器所支持的注释语句:一种是以“/”符号开始的语句,符号之后的语句都被视为注释,直到有回车换行。另一种是在“/*”和“*/”符号之内的为注释。注 释不会被 C 编译器所编译。一个C 应用程序中应有一个 main 主函数,main 函数能调用别的功能函数,但其它功能函数不允许调用 main 函数。不论 main 函数放在程序中的那个位置, 总是先被执行。用上面学到的知识编译写好的 OneLED 程序,并把它烧到刚做好的最小化系统中。上电,刚开始时 LED 是不亮的(因为上电复位后所有的 IO 口都置
20、 1 引脚为高电平),然后延时一段时间(for (a=0; a50000; a+)这句在运行),LED 亮,再延时,LED 熄灭, 然后交替亮、灭。第一个真正的小实验就做完,如果没有这样的效果那么您就要认真检查一下电路或编译烧写的步骤了。第3章 实验项目实验一 集成开发环境的使用实验目:1、了解KEIL集成开发环境的使用调试步骤 2、加强对MCS-51硬件认识 3、基本C程序调试实验设备:1、PC机 2、用户板S51-E 3、下载器实验内容:1、 KEIL软件的打开2、 集成开发环境的基本设定3、 集成开发环境的软件菜单4、 集成开发环境的主要窗口应用5、 程序编辑与修改6、 程序编译与器码对
21、应7、 程序调试8、 程序下载 9、设定断点思考题:1、 调试基本骤是什么2、 调试中遇到了哪些报错信息,错误原因分析3、 系统需要如何设定,有如注意事项。实验二 定时应用程序调试实验目:1、掌握仿真仿真器应用和仿真调试步骤 2、加强对MCS-51中断系统应用 3、定时器程序调试实验设备:1、PC机 2、用户板S51-E 3、下载器实验内容:1. 中断优先级设定2. 中断允许设定3. 中断触发方式设定4. 中断程序设计5. 编制时钟程序,并调试程序要求:利用T0中断方式定时,实现在RAM30H、 31H、32H、33H、34H、35H单元六位时钟,倒计时。思考题:1、 外部中断程序调试基本骤是
22、什么2、 中断调试中遇到了哪些报错信息,错误原因分析3、 MCS-51中断用到的中断服务程序入口矢量地址。4、 中断调试中遇到了哪些报错信息,错误原因分析5、 MCS-51中断系统的特点。实验三 LED(数码管)应用程序调试实验目:1、熟悉应用程序开发过程 2、加强对MCS-51定时计数器认识 3、定时计数器中断程序调试实验设备:1、PC机 2、用户板S51-E 3、下载器实验内容:1. LED显示时钟程序编辑2. 程序编译3. 基本计时显示程序调试4. 倒计时显示程序调试程序要求:六位LED时、分、秒计时显示。思考题:1、 LED程序调试基本骤是什么2、 LED调试中遇到了问题,原因分析及解决方法。实验四 测试程序调试实验目:1、熟悉应用程序开发过程 2、加强对MCS-51定时计数器认识 3、定时计数器中断程序调试实验设备:1、PC机 2、用户板S51-E 3、下载器实验内容:1、 计时器程序编辑2、 程序编译3、 基本计时显示程序调试4、 计时触发交互程序调试5、 ADC0832数据采集程序调试(选做)程序要求:六位LED时、分、秒计时显示。思考题:1、 计时程序调试基本骤是什么2、 调试中遇到了问题,原因分析及解决方法。