1、1实验 1 汇编语言简单试验-Keil C51 的使用一、实验目的:熟悉Keil C51 集成开发环境的使用方法,初步掌握Keil C51基本的操作和使用,能够输入、编译和仿真调试简单的程序。二、实验内容:在 Keil C51 集成开发环境编写程序,实现 P1.0口单灯闪烁的功能(假设 P1.0口所接发光二极管低电平点亮) ,编写程序后在 Keil C51 集成开发环境完成编译和仿真,实现全速运行、单步运行、并学会设置断点、查看相关寄存器等操作。三、实验设备:安装 Keil C51的计算机一台。四、实验步骤:(参考教材第 11章)1)建立一个工程项目选择芯片确定选项。执行 Keil C51软件
2、的菜单“Project | New Project”,弹出一个名为“Create New Project”的对话框。先选择一个合适的文件夹准备来存放工程文件,最后,为工程取名,并保存。如图 1-1所示,紧接着,Keil C51提示您选择 CPU器件。在这里可以选择 Atmel公司的 AT89S52。图 1-1 Keil C51 工程的建立2)编写(或加入)汇编源文件或 C 源文件,并添加到工程中。执行菜单“File | New”,出现一个名为“Text n”(其中 n表示序号)的文档。如图1-2所示。执行菜单“File | Save”,弹出一个名为“Save As”的对话框。将文件名改为你事先
3、起好的名称,然后保存。注意:扩展名“.ASM 或 .c”不可省略。单击Keil C51软件左边项目工作窗口“Target 1” 上的 “”,将其展开。然2后右击“Source Group 1”文件夹,会弹出如图 1.7 所示的选择菜单。单击其中的“Add Files to Group Source Group 1”项,将源程序文件添加到工程中。然后编写如下程序源文件,并再次保存。 ORG 0000HMAIN: CLR P1.0 ;(1) 点亮LEDMOV30H,#255LCALL DELAY ;(2) 调用延时子程序SETB P1.0 ;(3) 熄灭LEDMOV30H,#200LCALL DE
4、LAY ;(4) 调用延时子程序AJMP MAIN ;(5) 返回MAIN处执行DELAY:MOV R7,30H ;(6) 延时程序D1:MOV R6,#250 ;(7)D2:DJNZ R6,D2 ;(8) R6存放内循环次数DJNZ R7,D1 ;(9) R7存放外循环次数RET ;(10)END3)设置参数单击“Option ”选项,在“Output”标签页,选中“Create HEX File”项,然后“确定”。其他参数的设置可参考相关教材。4)编译源程序单击工具栏的按钮“ ”编译当前源程序。编译结果会显示在输出窗口内。如果是“ 0 Error(s), 0 Warning(s).”就表示
5、程序没有问题了(至少是在语法上不存在问题了)。如果存在错误或警告,请仔细检查您的程序。修改后,再编译,直到通过为止。编译后的结果会生成 HEX 格式的程序文件“LedFlash.hex” 。5)编译连接通过后进行软件模拟仿真。直接点击工具栏红色的“ ”图标。进入仿真状态。执行菜单“Pe ripherals | I/O-Ports | Port 1”,弹出 P1端口的界面,如图 1-3。在位 07 中,用表示高电平,无 表示低电平。图 1-3仿真 I/O 端口点击工具栏“ ”图标,进行全速运行,观察 P1.0口电平的变化。点击停止运行“ ”,再点击单步进入“ ”,单步运行程序,观察观3察 P1.
6、0口电平的变化。设置/清除断点“ ”: 在程序的中设置断点,( 如在 CLR P1.0和SETB P1.0语句前加入断点),再多次点击工具栏“ ”图标,进行全速运行,每次遇到断点,程序会停止运行,可观察 P1.0口电平的变化。单击工具栏的“ ”图标,将显示出存储器窗口,可在存储器窗口中观察某一具体位置的内容,如;30H 中的内容。6)编译连接通过后如果有硬件装置,可将程序下载到单片机中,是程序在硬件进行实际运行,观察运行结果。五 实验思考题(1) 试写编写把片内RAM 50H59H 单元清零的程序。(2) 试写编写把片内RAM 50H59H 单元写入01H 的程序实验3 I/O口实验-流水灯一
7、、实验目的掌握8051单片机输入/输出端口的使用方法。 掌握PROTEUS软件的使用方法。二、实验内容使用Proteus画出硬件电路图,如图3-1所示,单片机的P1口接8个LED发光二极管,试编写程序实现8个发光二极管循环点亮,即实现发光二极管组成的流水灯控制,鼓励用多种编程方法实现流水灯控制的编程。利用Proteus硬件仿真功能,完成流水灯的仿真运行。三、实验设备:安装 PROTEUS软件的计算机一台。4X T A L 21 8X T A L 11 9A L E3 0E A3 1P S E N2 9R S T9P 0 . 03 9P 0 . 13 8P 0 . 23 7P 0 . 33 6P
8、 0 . 43 5P 0 . 53 4P 0 . 63 3P 0 . 73 2P 1 . 01P 1 . 12P 1 . 23P 1 . 34P 1 . 45P 1 . 56P 1 . 67P 1 . 78P 3 . 01 0P 3 . 11 1P 3 . 21 2P 3 . 31 3P 3 . 41 4P 3 . 71 7P 3 . 61 6P 3 . 51 5P 2 . 72 8P 2 . 02 1P 2 . 12 2P 2 . 22 3P 2 . 32 4P 2 . 42 5P 2 . 52 6P 2 . 62 7U 1A T 8 9 C 5 1C 13 0 P FC 23 0 P FX
9、 1C R Y S T ALD 1V C CG N DC 31 0 u FR 21 0 kD 2D 3D 4D 5D 6D 7D 8123456781 61 51 41 31 21 11 09R N 11 0 0图 3-1 流水灯硬件电路图四、参考程序框图四、实验步骤:(参考教材附录 B)1)新建设计文件 “ File - New Design”,选用DEFAULT 默认模板。保存设计,扩展名为.DSN。2) 选取元件 选择元件模式 ,如图3-3的左侧, 再单击工具栏上的“P”,进入元件选取,如图3-3所示,在左上角Keyword框中输入元件名查找( 例如查找AT89C51),在需要的元件上双
10、击,则自动将元件放入对象选取器中。3) 放 置 元 件 到 编 辑 区在对象选取器中单击AT89C51选中元件,将光标移动到编辑,鼠标变成铅笔形状,单击左键,框中出现一个元件原理图的轮廓图,可以移动。鼠标移到合适的位置后,按下鼠标左键,即可放置一个元件,连续单击,可放置多个同样的元件。5设置 点亮第1 个灯的值设置左移8 次点亮一盏灯延时左移1 位是否显示完8 位否是图3-2 程序参考流程图图 3-3 元 件 选 取4) 移 动 元 件选 择 左 侧 工 具 栏 上 的 “箭 头 ”图 标 , 主 模 式 切 换 为 选 取 模 式 , 把 鼠 标 移 到右 侧 的 原 理 图 中 , 鼠 标
11、 经 过 元 件 时 会 就 成 “手 形 ”, 把 鼠 标 移 到 LED-RED 上 , 按 下 左 键 , LED-RED 高 亮 显 示 , 鼠 标 变 成 “手 形 ”并 带 有 方 向 键 头 。移 动 鼠 标 , 把 元 件 移 动 到 合 适 位 置 。5) 连 线你 一 定 发 现 没 有 画 线 的 图 标 按 钮 。 这 是 因 为 ISIS的 智 能 化 足 以 在 你 想要 画 线 的 时 候 进 行 自 动 检 测 。 这 就 省 去 了 选 择 画 线 模 式 的 麻 烦 。在 元 件 和 终 端 的 管 脚 末 端 都 有 连 接 点 。 左 击 第 一 个 对
12、 象 连 接 点 , 如 果 你想 让 ISIS自 动 定 出 走 线 路 径 , 只 需 左 击 另 一 个 连 接 点 。 另 一 方 面 , 如 果 你 想自 己 决 定 走 线 路 径 , 只 需 在 想 要 拐 点 处 点 击 鼠 标 左 键 。 依 照 原 理 图 3-1次 将 各 元 件 之 间 的 线 连 接 好 。6)元器件属性设置右键单击元器件弹出菜单,选择 Edit Properties,弹出属性对话框,设置相应的属性值。7) 添 加 仿 真 执 行 程 序6鼠 标 移 动 到 要 单 片 机 元 件 上 点 击 鼠 标 左 键 , 器 件 变 成 红 色 表 示 被 选
13、 中 ,再 点 击 鼠 标 右 键 弹 出 如 下 对 话 框 。 在 程 序 文 件 下 选 择 微 处 理 器 所 需 要 的 程 序文 件 ( .HEX) , 选 择 合 适 的 工 作 频 率 即 可 确 认 。 如 图 3-4所 示 。图 3-4 属性对话框点 击 ”OK”,返 回 图 形 编 辑 窗 口 。8) 仿 真 调 试点 击 编 辑 窗 下 边 的 仿 真 按 钮 程 序 便 可 执 行 了 。 或 者 选 择 调 试 菜 单Debug下 的 执 行 功 能 即 可 执 行 。单 击 运 行 图 标 , 即 可 仿 真 运 行 程 序 。五 实验思考题(1) 试写编改变流水
14、灯闪烁的速度?(2) 试写编写简单的交通灯(红、绿灯)控制程序的程序实验4 数码管显示实验一、实验目的掌握MCS-51单片机输入/输出端口控制数码管的使用方法。 掌握PROTEUS软件的使用方法。二、实验内容使用Proteus画出硬件电路图,如图4-1所示,单片机的P0口接共阳数码光的段码,P2口的低六位通过74LS04接六位数码管的位码,试编写程序实现动态扫描的方式显示“123456”。利用Proteus硬件仿真功能,完成数码管显示的仿真运行。三、实验设备:安装 PROTEUS软件的计算机一台。7D 0D 1D 2D 3D 4D 5D 6D 7D0D2D3D4D5D6D7D1S 0S 1S
15、2S 3S 4S 5S 1S 2S 3S 4S 5S 0X T A L 2X T A L 1A L EE AP S E NR S TP 0 . 0P 0 . 1P 0 . 2P 0 . 3P 0 . 4P 0 . 5P 0 . 6P 0 . 7P 1 . 0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7P 3 . 0 / R X DP 3 . 1 / T X DP 3 . 2 / I N T 0P 3 . 3 / I N T 1P 3 . 4 / T 0P 3 . 7 / R DP 3 . 6 / W RP 3 . 5 / T 1P 2 .
16、7P 2 . 0P 2 . 1P 2 . 2P 2 . 3P 2 . 4P 2 . 5P 2 . 6U 1A T 8 9 C 5 1S R C F I L E = 7 S E G . A S MC 13 0 u FX 1C R Y S T A LC 23 0 u FC 31 0 u FGNDVCCR 11 0 k7 4 L S 0 47 4 L S 0 47 4 L S 0 47 4 L S 0 47 4 L S 0 47 4 L S 0 4图4-1 六位数码管显示应将电路图四、参考程序框图第一个显示数字1显示位码查表取显示段码段码送P 0 口位码送P 2 口位码 右一位显示数字加1是否显示完
17、6 位否是图4-2 程序参考流程图五 实验思考题8(1) 共阴极数码管和共阳极数码的控制有什么不同。(2) 试写编写共阴极数码管显示的程序(3) 试写编写两位数码管0-99动态显示的程序实验6 按键外中断实验一、实验目的掌握MCS-51单片机外中断的原理。 掌握PROTEUS软件的使用方法。二、实验内容使用Proteus画出硬件电路图,如图6-1所示,单片机的外部中断0的输入引脚P3.2口接一个弹性小按键,P0.0口接一个发光二极管,当快速按下小按键时,通过 向CPU申请中断。要求:单片机上电后,发光二极管点亮,当按键按INT下,产生一次中断,发光二极管闪烁点亮10次。利用Proteus硬件仿
18、真功能,完成数码管显示的仿真运行。三、实验设备:安装PROTEUS软件的计算机一台。+ 5 VX T A L 21 8X T A L 11 9A L EE AP S E N2 9R S T9P 0 . 03 9P 0 . 13 8P 0 . 23 7P 0 . 33 6P 0 . 43 5P 0 . 53 4P 0 . 63 3P 0 . 73 2P 1 . 0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7P 3 . 01 0P 3 . 11 1P 3 . 21 2P 3 . 31 3P 3 . 41 4P 3 . 71 7P 3 . 61
19、6P 3 . 51 5P 2 . 72 8P 2 . 02 1P 2 . 12 2P 2 . 22 3P 2 . 32 4P 2 . 42 5P 2 . 52 6P 2 . 62 7U 1A T 8 9 C 5 1C 13 0 P FC 23 0 P FX 1C R Y S T ALG N DC 31 0 u FR 21 0 kR 21 0 0R 31 0 k+ 5 vD 2L E D - G R E E Nk e y图6-1 按键外中断硬件原理图四、参考程序(见课本 p113)五 实验思考题(1) 单片机中断执行的过程?(2) 试写编写其他形式的中断程序的程序实验7 定时器实验一、实验目的掌
20、握MCS-51单片机定时器中断方式的原理。 掌握PROTEUS软件的使用方法。二、实验内容使用Proteus画出硬件电路图,如图7-1所示,利用定时/计数器0方式1定时、9中断方式,在P1.0端输出50HZ方波,控制发光二极管闪烁。设晶振频率为12MHZ。利用Proteus硬件仿真功能,完成数码管显示的仿真运行。三、实验设备:安装PROTEUS软件的计算机一台。+ 5 VX T A L 21 8X T A L 11 9A L EE AP S E N2 9R S T9P 0 . 03 9P 0 . 13 8P 0 . 23 7P 0 . 33 6P 0 . 43 5P 0 . 53 4P 0 .
21、 63 3P 0 . 73 2P 1 . 0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7P 3 . 01 0P 3 . 11 1P 3 . 21 2P 3 . 31 3P 3 . 41 4P 3 . 71 7P 3 . 61 6P 3 . 51 5P 2 . 72 8P 2 . 02 1P 2 . 12 2P 2 . 22 3P 2 . 32 4P 2 . 42 5P 2 . 52 6P 2 . 62 7U 1A T 8 9 C 5 1C 13 0 P FC 23 0 P FX 1C R Y S T A LG N DC 31 0 u FR
22、21 0 kD 1L E D - G R E E NR 21 0 0图7-1 定时器硬件电路图四、参考程序(见课本 p122)五 实验思考题(1) 单片机定时器中断方式和查询方式的区别?(2) 试写编写定时器查询方式的程序?实验10 液晶显示实验一、实验目的掌握MCS-5控制液晶显示原理。 二、实验内容1602液晶显示模块可以和单片机AT89C51直接接口,使用Proteus画出硬件电路图,如图10-1所示,利用C语言编程,让液晶第一行显示字符串“”,第二行显示字符串“”。利用Proteus硬件仿真功能,完成数码管显示的仿真运行。也可在试验开发板上完成此试验。三、实验设备:安装Keil C51
23、 软件的计算机一台(51单片机开发板一套)。10X T A L 21 8X T A L 11 9A L E3 0E A3 1P S E N2 9R S T9P 0 . 0 / A D 03 9P 0 . 1 / A D 13 8P 0 . 2 / A D 23 7P 0 . 3 / A D 33 6P 0 . 4 / A D 43 5P 0 . 5 / A D 53 4P 0 . 6 / A D 63 3P 0 . 7 / A D 73 2P 1 . 0 / T 21P 1 . 1 / T 2 E X2P 1 . 23P 1 . 34P 1 . 45P 1 . 56P 1 . 67P 1 .
24、78P 3 . 0 / R X D1 0P 3 . 1 / T X D1 1P 3 . 2 / I N T 01 2P 3 . 3 / I N T 11 3P 3 . 4 / T 01 4P 3 . 7 / R D1 7P 3 . 6 / W R1 6P 3 . 5 / T 11 5P 2 . 7 / A 1 52 8P 2 . 0 / A 82 1P 2 . 1 / A 92 2P 2 . 2 / A 1 02 3P 2 . 3 / A 1 12 4P 2 . 4 / A 1 22 5P 2 . 5 / A 1 32 6P 2 . 6 / A 1 42 7U 1AT89C52X 11 2 M H zC 12 2 p FC 22 2 p FC 32 0 u FR 11 k+ 5 V+ 5 V+ 5 V+5VR V 11 0 k234567891R P 11 0 K+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCDL M 0 1 6 L图10-1 1602液晶显示硬件原理图四、参考程序(见课本 p263)五 实验思考题(1) 液晶显示的原理?(2) 试写编写其他液晶的显示程序?