




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 实验一实验一 KeilKeil uVision2等软件使用 等软件使用 2 2 学时 学时 一一 实验目的实验目的 1 熟悉 Keil uVision2 软件的使用方法 2 熟悉下载流程 二二 实验设备实验设备 1 Keil Keil uVision2 开发系统 一台 2 5V 电源 一台 3 仿真器 一个 4 THKSCM 2 型单片机实验台 一台 三三 实验内容及步骤实验内容及步骤 一 Keil uVision2 软件的实验步骤 1 点击桌面快捷图标 可以直接进入主画面 2 新建的工程要起个与工程项目意义一致的名字 可以是中文名 我们这里的 程序是实验测试程序 所以起的名字为 Test 并将 Test 工程 保存 到 C Keil 下 2 3 Keil 环境要求我们为 Test 工程选择一个单片机型号 我们选择 Atmel 公司的 89C51 虽然我们使用的是 89S51 但由于 89S51 与 89C51 内 外部结 构完全一样 所以这里依然选择 89C51 确定 后工程项目就算建立了 3 4 点击 文件 中的 新建 新建一个空白文档 这个空白文档就是让我 们编写单片机程序的场所 在这里你可以进行编辑 修改等操作 mov p0 01010101B 将 01010101 二进制代码送 P0 口 ajmp 程序在此原地踏步 end 程序结束标志 5 保存文件 保存文件时 其文件名最好与前面建立的工程名相同 当然这里 为 Test 了 其扩展名必须为扩展名必须为 Asm Asm 文件名 中一定要写全 如 Test Asm 4 6 将 Asm 文件添加到工程中 具体做法如下 见下图 鼠标右键点击 Source Group 1 在弹出的菜单中选 增加文件到组 Source Group 1 在接下来出现的窗口中 选择 文件类型 为 Asm 源文件 a src 由于我们使用的是汇编语言 所以选择 Asm 源文件 选中刚才保存的 Test Asm 按 Add 再按 关闭 文件就添加到了工程中 5 7 设置目标属性 向工程添加了源文件后 鼠标右键点击 TarGet 1 在弹出的菜单中选 目标 Target 1 属性 如下图 在打开的话框中 选择 输出 选项卡 在这个选项卡中 E 生成 HEX 文 件 选项前要打勾 按 确定 退出 6 最后 从菜单的 工程 中执行 R 重新构造所有目标 或者按下图红圈 中的按钮 汇编 连接 创建 Hex 文件一气呵成 在工程文件的目录下就会 生成与工程名相同的一些文件 其中大部分文件我们并不必关心 而生成的 HexHex 文件是我们需要的 它是要烧写到单片机中的最终代码 也就是单片机可 以执行的程序 这里生成的是 Test HEXTest HEX 稍后就写入 若在下面的状态窗中有错误提示 就需要再次编辑 修改源程序 如语法 字符有错等 保存 构造所有 直至没有错误 8 模拟调试 在没有语法错误的情况下 按下图红圈中的按钮就可以进行模 拟调试 7 下面是调试窗 由于我们的程序是让 P0 口 8 个脚隔一个输出 0 隔一个输 出 1 所以要从菜单的 外围设备 中打开 Prot 0 P0 口窗 单击 单步运行 在 P0 窗中就可以看到我们原先设想的效果 8 实验二实验二 MCS 51MCS 51 单片机指令学习 单片机指令学习 2 2 学时 学时 一一 实验目的实验目的 1 在 Keil 软件平台下学习常用指令的特点 2 写出下面两实例各条指令的含义 3 写出各实例实现的功能 二二 实验设备实验设备 1 Keil Keil uVision2 开发系统 一台 2 5V 电源 一台 3 仿真器 一个 4 THKSCM 2 型单片机实验台 一台 三三 实验内容及步骤实验内容及步骤 实例一 指令的含义 机器操作代码 MOV PSW 08H MOV 30H 25 MOV R0 30H MOV A R0 MOV DPTR 0006H MOV A 35H MOVX DPTR A MOV A R0 MOVX DPTR A MOVC A A DPTR SJMP 功能 1 将程序输入 Keil 编辑器 保存文件名为 MOV ASM 2 对源程序进行编译 修改语法错误 3 打开窗口写出每条指令的机器操作代码 4 写出 R0 在数据存储单元中的地址 执行到 SJMP 时 R0 DPTR A 的内容 实例二 指令的含义 机器操作代码 A P0 ORG 0000H MOV A 34H MOV P0 56H MOV B 12H LCALL PP 9 SJMP PP push a push p0 mov a 78h mov p0 a pop p0 pop a RET END 1 将程序输入编辑器 保存文件名为 STACK ASM 2 对源程序进行编译 修改语法错误 3 打开窗口写出每条指令的机器操作代码 4 打开 CPU 窗口 单步执行写出每条指令 A P0 的值 四 实验报告要求四 实验报告要求 1 写出上述两试验程序各条指令的含义 与预习时相比是否一致 整理试验 一试验二的结果 2 区分实例一个条传输指令的不同 3 写出指令在执行调用时堆栈 SP 的变化过程和堆栈在堆栈区所保存内容 10 实验三实验三 I OI O 口简单实验 口简单实验 2 2 学时 学时 一一 实验目的实验目的 学习 89S51 单片机的 32 根 I O 口的基本输出功能 以 P1 口为例 P0 P1 P3 口道理均相同 学习延时子程序的编程和应用 二二 实验设备实验设备 1 Keil Keil uVision2 开发系统 一台 2 5V 电源 一台 3 仿真器 一个 4 THKSCM 2 型单片机实验台 一台 三三 实验内容实验内容 1 1 使 8 个 LED 发光二极管循环闪亮 时间间隔为 1 秒 2 使 8 个 LED 发光二极管同时亮 灭 时间间隔为 1 秒 四四 实验步骤实验步骤 1 用 8P 数据线连接 80C51 MCU 模块的 JD1C P1 口 到八位逻辑电平输出模 块的 JD1F5 连接 JD0C P0 口 到八位逻辑电平显示模块的 JD1E5 2 用串行数据通信线连接计算机与仿真器 把仿真器插到 80C51 MCU 模块的 40P 锁紧插座中 请注意仿真器的方向 缺口朝上 3 将 80C51 MCU 模块的电源扭子开关 S1C 拨到上端 将直流稳压电源模块的 直流控制开关 S1G1 打到 ON 本实验所用到的相关模块的电源指示灯 VCC 亮 五 分析程序五 分析程序 1 8 个发光二极管循环闪亮 时间间隔为 1 秒 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV SP 60H MOVA 01H LOOP MOV P1 A LCALLDELAY RLA SJMPLOOP 11 DELAY MOV R0 10 DELY0 MOV R7 100 DELY1 MOV R6 250 DJNZR6 DJNZR7 DELY1 DJNZR0 DELY0 RET END 2 使 8 个 LED 发光二极管同时亮 灭 时间间隔为 1 秒 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV SP 60H MOVA 0FFH LOOP MOV P1 A LCALL DELAY CPLA SJMPLOOP DELAY MOV R0 10 DELY0 MOV R7 100 DELY1 MOV R6 250 DJNZR6 DJNZR7 DELY1 DJNZR0 DELY0 RET END 三 实验报告要求三 实验报告要求 1 写出上述实验程序各条指令的含义 与预习时相比是否一致 整理实验的 结果 12 2 试分析改变 A 的值将影响什么 4 试分析改变 R7 R6 的值将影响什么 实验四实验四 单片机内部定时器实验 单片机内部定时器实验 2 2 学时 学时 一 实验目的一 实验目的 1 学习 80C51 内部定时 计数器使用方法 2 学习计数器各种工作方式的用法 3 进一步掌握中断处理程序的编写方法 二 实验说明二 实验说明 关于内部定时 计数器的编程主要是定时常数的设置和有关控制寄存器的设 置 内部计数器在单片机中主要有定时器和计数器两个功能 定时 计数器有关 的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON TMOD 用于设置定时器 计 数器的工作方式 0 3 并确定用于定时还是用于计数 TCON 主要功能是为定时 器在溢出时设定标志位 并控制定时器的运行或停止等 三 实验电路图三 实验电路图 本实验用到 80C51 MCU 模块 C 区 八位逻辑电平显示模块 E5 区 和单 次脉冲模块 G3 区 80C51 MCU 模块电路原理参考附录三 八位逻辑电平显示 模块电路原理图参考实验一图 1 1 单次脉冲模块电路原理参考实验三图 3 1 四 实验步骤四 实验步骤 实验 一 计数器 1 用 8P 数据线连接 80C51 MCU 模块的 P1 口到八位逻辑电平显示模块的 JD1E5 口 用二号导线连接 80C51 MCU 模块的 T0 口到单次脉冲模块的任一输出 端 2 用串行数据通信线连接计算机与仿真器 把仿真器插到 80C51 MCU 模块 的 40P 锁紧插座中 请注意仿真器的方向 缺口朝上 3 将 80C51 MCU 模块的电源扭子开关 S1C 拨到上端 将直流稳压电源模块 的直流控制开关 S1G1 打到 ON 本实验所用到的相关模块的电源指示灯 VCC 亮 4 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 接着添加 TH4 计数器 ASM 源程序 进行编译 编译无误后 全速运行程序 5 实验现象 连续按动单次脉冲的按键 8 位发光二极管显示按键次数 6 也可以把源程序编译成可执行文件 把可执行文件用 ISP 烧录器烧录到 89S52 芯片中运行 注意 芯片缺口朝上 ISP 烧录器的使用查看附录二 实验 二 定时器 13 1 用二导线连接 80C51 MCU 模块的 P1 0 到八位逻辑电平显示模块的任一只 发光二极管上 2 用串行数据通信线连接计算机与仿真器 把仿真器插到 80C51 MCU 模块 的 40P 锁紧插座中 请注意仿真器的方向 缺口朝上 3 将 80C51 MCU 模块的电源扭子开关 S1C 拨到上端 将直流稳压电源模块 的直流控制开关 S1G1 打到 ON 本实验所用到的相关模块的电源指示灯 VCC 亮 4 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 接着添加 TH4 定时器 ASM 源程序 进行编译 编译无误后 全速运行程序 5 实验现象 发光二极管隔一秒点亮一次 点亮时间为一秒 6 也可以把源程序编译成可执行文件 把可执行文件用 ISP 烧录器烧录到 89S52 芯片中运行 注意 芯片缺口朝上 ISP 烧录器的使用查看附录二 五 实验流程图及源程序五 实验流程图及源程序 1 流程图 计数器流程图 定时器流程图 2 源程序 六 思考题六 思考题 开始开始计数设置工作方式计数 输出计数 值 开始 输出状态位 中断允许 设置秒计数值 设置初始状态位 设置定时常数 置 T 1 中断工作方式 等待中断 主程序框图 是 否 中断返回 定时中断入口 状态位取反 保护现场 恢复现场 秒计数值减 1 重新设置秒计数值 是否到一秒 14 1 80C51 单片机的最高计数频率为多少 2 如何将定时器的状态间隔改为 2 秒 程序如何改写 3 如果更换不同频率的晶振 会出现什么现象 如何调整程序 实验 一 计数器 ORG 0000H LJMP START ORG 0030H START MOV TMOD 00000101B 置 T0 计数器方式 1 MOV TH0 0 置 T0 初值 MOV TL0 0 SETB TR0 T0 运行 LOOP MOV P1 TL0 记录 P1 口脉冲个数 LJMP LOOP 返回 END 实验 二 定时器 Tick EQU 5000 10000 x 100us 1s T100us EQU 156 100us 时间常数 12M C100us EQU 5H 100us 记数单元 LEDBuf BIT 00H LED BIT P1 0 ORG 0000H LJMP Start ORG 0030H ORG 000BH LJMP T0Int ORG 0100H T0Int PUSH PSW MOV A C100us 1 JNZ Goon DEC C100us Goon DEC C100us 1 MOV A C100us ORL A C100us 1 JNZ Exit 100us 记数器不为 0 返回 MOV C100us HIGH TICK high Tick MOV C100us 1 LOW TICK low Tick CPL LEDBuf 取反 LED Exit POP PSW RETI Start MOV TMOD 02H 方式 2 定时器 MOV TH0 t100us 15 MOV TL0 t100us MOV IE 10000010B EA 1 IT0 1 SETB TR0 开始定时 CLR LEDBuf CLR P1 0 MOV C100us high Tick MOV C100us 1 low Tick Loop MOV C LEDBuf MOV P1 0 C LJMP Loop END 实验五实验五 数码管动态显示实验 数码管动态显示实验 3 3 学时 学时 一 实验目的一 实验目的 1 掌握数字 字符转换成显示段码的软件译码方法 2 动态显示的原理和相关程序的编写 二 实验说明二 实验说明 动态显示 也称扫描显示 显示器由 6 个共阴极 LED 数码管构成 单片机的 P1 口输出显示段码 经由一片 74LS245 驱动输出给 LED 管 由 P0 口输出位码 经由 74LS06 输出给 LED 管 三 实验电路图三 实验电路图 本实验用到 80C51 MCU 模块 C 区 动态数码显示模块 A5 区 80C51 MCU 模块电路原理参考附录三 动态数码显示电路原理参考图 5 1 1 2 3 4 5 6 7 8 JD1A5 DATA 1 2 3 4 5 6 7 8 JD2A5 BIT g0 g1 g2 g3 g4 g5 a dp b dp f 8 c g g f d ee d DPY1 c b a 7 6 5 4 3 1 2a bf c g d e DPY2 9 10 com1 com2 dp DISP3A5 a dp b dp f 8 c g g f d ee d DPY1 c b a 7 6 5 4 3 1 2a bf c g d e DPY2 9 10 com1 com2 dp DISP2A5 a dp b dp f 8 c g g f d ee d DPY1 c b a 7 6 5 4 3 1 2a bf c g d e DPY2 9 10 com1 com2 dp DISP1A5 c d e f g h a b OE 19 DIR 1 A1 2 B1 18 A2 3 B2 17 A3 4 B3 16 A4 5 B4 15 A5 6 B5 14 A6 7 B6 13 A7 8 B7 12 A8 9 B8 11 VCC 20 GND 10 U1A5 74LS245 b c d e f g h a b c d e f g h a b c d e f g h a BIT0 BIT1 BIT2 BIT5 BIT0 BIT1 BIT2 BIT3 BIT4 VCC A5 VCC A5 9 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 1 RP1A5 10K SEGA SEGB SEGD SEGC SEGE SEGF SEGG SEGH VCC A5 C1A5 0 1uF VCC A5VCC A5 C2A5 0 1uF SEGA SEGB SEGD SEGC SEGE SEGF SEGG SEGH BIT5 BIT3 BIT4 9 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 1 RP2A5 10K GND BIT1 BIT2 BIT3 BIT4 BIT5 BIT0 12 U2A5A 74LS06 34 U2A5B 74LS06 56 U2A5C 74LS06 98 U2A5D 74LS06 1110 U2A5E 74LS06 1312 U2A5F 74LS06 VCC VCC A51 2 3 J1A5 VCC LED1A5 VCC R1A5 510 VCC A5 g1 g2 g3 g0 g4 g5 16 图 5 1 动态数码显示电路 四 实验步骤四 实验步骤 1 用 8P 数据线分别连接 80C51 MCU 模块的 JD0C P0 口 JD1C P1 口 到 动态数码显示模块的 JD2A5 JD1A5 2 用串行数据通信线连接计算机与仿真器 把仿真器插到 80C51 MCU 模块的 40P 锁紧插座中 请注意仿真器的方向 缺口朝上 3 将 80C51 MCU 模块的电源扭子开关 S1C 拨到上端 将动态数码显示模块的 电源短路帽 J1A5 打在上端 将直流稳压电源模块的直流控制开关 S1G1 打到 ON 本实验所用到的相关模块的电源指示灯 VCC 亮 4 打开 Keil uVision2 仿真软件 首先建立本实验的项目文件 接着添加 TH9 动态显示 ASM 源程序 进行编译 编译无误后 全速运行程序 5 实验现象 动态数码显示模块显示 168168 6 也可以把源程序编译成可执行文件 把可执行文件用 ISP 烧录器烧录到 89S52 芯片中运行 注意 芯片缺口朝上 ISP 烧录器的使用查看附录二 五 实验源程序五 实验源程序 DBUF EQU 30H TEMP EQU 40H ORG 0000H LJMP DISP ORG 0100H DISP MOV 30H 8 MOV 31H 6 MOV 32H 1 MOV 33H 8 MOV 34H 6 MOV 35H 1 MOV R0 DBUF MOV R1 TEMP MOV R2 6 17 MOV DPTR SEGTAB DP00 MOV A R0 MOVC A A DPTR MOV R1 A INC R1 INC R0 DJNZ R2 DP00 DISP0 MOV R0 TEMP MOV R1 6 MOV R2 1 DP01 MOV A R0 MOV P1 A MOV A R2 MOV P0 A ACALL DELAY MOV A R2 RL A MOV R2 A INC R0 DJNZ R1 DP01 SJMP DISP0 SEGTAB DB 3FH 06H 5BH 0 1 2 DB 4FH 66H 6DH 3 4 5 DB 7DH 07H 7FH 6 7 8 DB 6FH 77H 7CH 9 A B DB 58H 5EH 7BH C D E DB 71H 00H 40H F DELAY MOV R4 03H AA1 MOV R5 0FFH AA NOP NOP 18 DJNZ R5 AA DJNZ R4 AA1 RET END 六 思考题六 思考题 1 如何修改程序 实现六位 LED 数码管只显示其中的两位 2 调试课例题 6 1 的程序 并且在试验箱上演示结果 参考程序 参考程序 ORG 0000H ALMP MAIN ORG 0030H MAIN MOVTMOD 10H 定时器 T1 工作在方式 1 MOV TH1 3CH T1 置 50 ms 计数初值 MOV TL1 0B0H SATRT MOV R1 00H 计数显示初始化 MOV DPTR TAB DISP MOV A R1 MOVC A A DPTR 查表得显示的字型码 MOV P1 A 数码管显示 0 ACALLDELAY1S 延时 1 s INC R1 计数值加 1 CJNER1 10 DISP 秒值不到 10 继续 显示 否则清 0 MOVR1 00H 计数值清 0 SJMPDISP TAB DB 0C0H 0F9H 0A4H 0 1 2 DB0B0H 99H 92H 3 4 5 DB82H 0F8H 80H 6 7 8 DB90H 9 1 s 延时子程序 DEALY1S 19 MOV R3 14H 置 50 ms 计数循环初值 SETBTR1 启动 T1 LP1 JBCTF1 LP2 查询计数溢出 SJMPLP1 未到 50 ms 继续计数 LP2 MOV TH1 3CH 重新置定时器初值 MOV TL1 0B0H DJNZR3 LP1 未到 1 s 继续循环 RET 返回主程序 END 实验六实验六 串行静态数码显示实验 串行静态数码显示实验 3 3 学时 学时 一 实验目的一 实验目的 1 掌握数字 字符转换成显示段码的软件译码方法 2 静态显示的原理和相关程序的编写 二 实验说明二 实验说明 显示器由 5 个共阴极 LED 数码管组成 输入只有两个信号 它们是串行数 据线 DIN 和移位信号 CLK 5 个串 并移位寄存器芯片 74LS164 首尾相连 每片 的并行输出作为 LED 数码管的段码 74LS164 为 8 位串入并出移位寄存器 1 2 为 串行输入端 QA QH 为并 行输出端 CLK 为移位时钟脉冲 上升沿移入一位 CLR 为清零端 低电平时并 行输出为零 三 实验电路图三 实验电路图 本实验需要用到 80C51 MCU 模块 C 区 和静态数码显示模块 A6 区 80C51 MCU 模块电路原理参考附录三 静态数码显示电路原理参考图 6 1 a bf c g d e DPY 3 9 10 1 2 8 5 a b c d e f g 4 dp dp 7 6 DISP1A6 a1 b1 c1 d1 e1 f1 g1 h1 a2 b2 c2 d2 e2 f2 g2 h2 a3 b3 c3 d3 e3 f3 g3 h3 a4 b4 c4 d4 e4 f4 g4 h4 R1A6 51 R2A6 51 R3A6 51 R4A6 51 a5 b5 c5 d5 e5 f5 g5 h5 R5A6 51 A 1 B 2 Q0 3 Q1 4 Q2 5 Q3 6 Q4 10 Q5 11 Q6 12 Q7 13 CLK 8 MR 9 VCC 14 GND 7 U1A6 74LS164 a1 b1 c1 d1 e1 f1 g1 h1 a2 b2 c2 d2 e2 f2 g2 h2 a3 b3 c3 d3 e3 f3 g3 h3 a4 b4 c4 d4 e4 f4 g4 VCC A6 VCC A6 VCC A6VCC A6 h4 DIN CLK a5 b5 c5 d5 e5 f5 g5 h5 VCC A6 1 2 3 J1A6 VCC VCC VCC A6 a bf c g d e DPY 3 9 10 1 2 8 5 a b c d e f g 4 dp dp 7 6 DISP2A6 a bf c g d e DPY 3 9 10 1 2 8 5 a b c d e f g 4 dp dp 7 6 DISP3A6 a bf c g d e DPY 3 9 10 1 2 8 5 a b c d e f g 4 dp dp 7 6 DISP4A6 a bf c g d e DPY 3 9 10 1 2 8 5 a b c d e f g 4 dp dp 7 6 DISP5A6 LED1A6 VCC R6A6 510 VCC A6 A 1 B 2 Q0 3 Q1 4 Q2 5 Q3 6 Q4 10 Q5 11 Q6 12 Q7 13 CLK 8 MR 9 VCC 14 GND 7 U2A6 74LS164 A 1 B 2 Q0 3 Q1 4 Q2 5 Q3 6 Q4 10 Q5 11 Q6 12 Q7 13 CLK 8 MR 9 VCC 14 GND 7 U3A6 74LS164 A 1 B 2 Q0 3 Q1 4 Q2 5 Q3 6 Q4 10 Q5 11 Q6 12 Q7 13 CLK 8 MR 9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出租车客运安全培训内容课件
- 出生证明档案管理课件
- 2025年版个人北京租房合同范本
- 2025【合同范本】实习合同模板
- 2025入职协议:食品加工行业劳动合同范本(一线工人)
- 2025品牌代理合作合同模板
- 鉴赏古代诗歌的表达技巧讲课文档
- 病毒式传播策略-洞察及研究
- 2025新款借款合同范本
- 2025拆迁安置补偿合同范本参考文献
- 地砖铺贴分包合同协议书
- 湖北省宜昌市2024-2025学年七年级上学期起点监测英语试卷(含答案无听力音频及原文)
- 大语言模型与安全 课件 第3章 多模态大语言模型
- 尿液感染组学在尿路感染诊断中的价值
- 2025 年扬州市四年级数学秋季期末测 - 基础卷及答案(苏教版)
- 土石方工作安全培训课件
- 人民医院开展“改善就医感受提升患者体验”主题活动实施方案
- 2025中华医学会肺癌临床诊疗指南解读课件
- 神经外科专科建设与发展
- 2025年小学生宪法素养竞赛题库
- 2025专精特新小巨人打分表(密件)
评论
0/150
提交评论