资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
微机原理及接口技术
实验指导书
北京联合大学机电学院
4月目 录
实验指南
GCMCU单片机实验箱简介
Keil集成开发环境使用简介
实验一、 数据传送及输入输出接口实验
实验二、 常见数据处理程序设计
实验三、 外部中断实验
实验四、 定时器/计数器的应用
实验五、 机电设备控制实验
实验六、 LED显示器实验
实验七、 模/数转换实验
实验八、 串行通讯实验
附录I、 预习报告格式
附录II、 实验报告格式
实验指南
千里之行, 始于足下。如果你想成为一个优秀的应用型性工程技术人员首先应该重视实验课程, 重视实验过程。养成良好的工作作风和习惯。
为了使实验安全、 可靠、 准确地进行, 为了避免造成实验失误, 实验之初应该仔细地了解你所使用设备的各种性能和要求, 认真思考。绝不可草率从事或操之过急马马虎虎。应该做到细心、 耐心, 逐渐培养严肃认真, 一丝不苟的工作作风。请注意以下几点:
1.根据授课教师给出的时间范围, 到实验室申请实验时间。
2.实验之前认真阅读实验指导书, 严格按照实验内容和实验要求撰写预习报告, 设计实验程序。
3.使用各种实验设备之前, 必须了解测量所用的范围、 额定值。应将输出量程置于最小, 输入量程置于最大。
4.熟悉操作设备的各项功能和作用, 做到心中有数, 如有疑问应立即向教师提出。
5.实验时严格按照实验要求和实验步骤进行实验。
6.连接线路后应仔细检查, 确保无误后才能开启电源。
7.各种开关不能用力硬扳, 各种接插头不得硬插, 各种连线应避免拉扯使用。
8.特别注意各输出引线( 特别是电源输出引线) , 不要与地或经过机壳造成短路。
9.实验过程中应仔细观察、 记录各种状态的微小变化。
10.实验结束后应先将电源关闭, 再撤除连线。清理实验台后才能离开。要做到有始有终。
11.实验完成后认真编写实验报告, 不要就事论事, 应该对实验结果深入进行分析讨论, 提出自己的看法和评价。
GCMCU单片机实验箱简介
GCMCU通用单片机实验开发平台是一种能够应用用于多种单片机实验的实验装置。用户能够根据自己的需要换用不同的单片机核心板来完成相应的单片机学习实验、 系统开发等。
下图为GCMCU单片机实验箱主板的功能资源分布图。
图2.1 GCMCU主板功能分区
单片机实验开发装置的各类单元电路按功能被分为了一个一个的小区, 每个小区的电路自成一体, 并用插针引出必要的控制信号线。用户在使用的时候能够利用飞线将单片机核心板于功能电路之间、 功能电路与功能电路之间进行连接, 经过这种灵活的连接方式来实现用户需要的电路系统的搭建。
为了方便用户利用示波器、 逻辑分析调试电路, 单片机实验箱主板上功能电路的控制信号线均采用”双接口”设计, 所有的接口信号都”一式两份”, 一组能够用来搭建功能电路, 另外一组能够用来连接到测量仪器, 来对该通路上的信号波形进行测量和监视, 方便用户使用。
Keil集成开发环境使用简介
1.建立工程
打开PC机电源, 双击桌面上的Keil图标进入Keil集成开发环境, 点击菜单栏中的”工程”菜单, 在下拉菜单中选择”新建工程”命令, 建立一个新的工程项目文件, 为工程取个名字( 应便于记忆, 名字不要太长) ; 选择工程存放的路径。工程建立后, Keil会立即弹出一个选择单片机型号的对话窗口, 用于选择一个51单片机的型号, 建议选择”Atmel”选项中的”AT89S52”, 接下来会弹出一个对话框, 询问用户是否添加启动代码, 无论用户使用汇编语言还是C语言, 一般选择”否”。如果用户用到了某些增强功能需要初始化配置时, 则能够选择”是”。到此, 一个空的新工程就建立完毕。
2.建立保存文件
点击菜单栏中的”文件”菜单, 在下拉菜单中选择”新建文件”命令, 则在Keil的集成开发环境的主窗体中出现一个空白的文件编辑窗口; 在这个窗口中就能够输入、 编辑源程序了; 在集成开发环境工具栏中点击的”保存”命令, 在弹出的保存对话框中, 为该程序源文件起个名字, 例如以”D1.asm”为名, 注意: 一定不要忘记文件的扩展名, 也就是使用汇编语言编写程序的用户, 在保存文件时必须输入文件的后缀名”.asm”, 然后点击”保存”。
3.添加文件
点击Keil的集成开发环境的主窗体中左边窗口中的”目标1”前面的”+”, 出现”源组1”, 选中”源组1”, 点击鼠标右键, 从下拉菜单中点击”添加文件到组‘源组1’”选项, 在弹出的对话框中, 选择文件类型为”All files”, 再选中D1.asm文件, 再点击”添加”, 然后关闭对话框, 此时文件就添加完成了。
4.设置选项
点击菜单栏中的”工程”选项, 在下拉菜单中选择”为目标‘目标1’设置选项”, 在弹出的对话框中, 先打开”输出”标签页, 选中”生成HEX文件”项, 然后”确定”, 再打开”调试”标签页, 在此调试页可设定此次调试是使用软件仿真还是使用仿真器仿真。
若要使用仿真器仿真, 则要选中右半边圆圈点击, 并点选使用”WAVE V series MCS51 Driver”仿真器, 同时勾选全部选项; 然后点击”设置”按钮, 在弹出的”仿真器设置”对话框中, 选择仿真器”SH51”, 选择CPU ”AT89S52”, 手工输入晶体频率( Hz) ”1 000”; 同时打开”仿真头设置”对话框, 勾选”P0、 P2口仅做为I/O使用”和”时钟输出端XATL2输出低”; 点击”好”, 确认设置完成退出。这样就能够进行硬件仿真了。
5.编辑、 编译源程序
文件编辑窗口输入、 编辑完源程序后, 保存到磁盘上。点击编译工具栏中有两个向下小箭头的图标对源程序进行编译( 或按F7快捷键) , 编译成功后, 会在左下方的信息输出窗口中出现”正在汇编……, ……, 0错误, 0警告”, 表示源程序没有错误, 没有警告, 能够运行调试了。若编写的源程序有错误, 则在左下方的信息输出窗口中有错误报告出现, 双击错误行, 会在文件编辑窗口定位到出错的位置, 将错误改正后, 再进行汇编, 直至编译成功。
6.调试运行程序
直接点击调试快捷图标( 或Ctrl+F5) , 进入调试模式, 在调试和运行工具栏中可采用”全速运行”-F5键、 ”单步跟踪运行”-F11键、 ”单步运行”-F10、 运行到当前行、 ”设置断点运行”等方式调试运行程序。
实验一、 数据传送及输入输出接口
1、 实验目的
1.1 掌握51单片机数据传送指令;
1.2 熟悉51单片机汇编语言程序设计方法;
1.3 掌握Keil 集成开发环境的使用;
1.4 练习51单片机汇编语言程序的编辑、 汇编和模拟调试。
2、 实验内容
2.1 Keil集成开发环境练习
经过运行下列练习程序学习Keil集成开发环境的使用
练习程序1:
ORG 0
MOV SP,#60H
MOV 30H,#0AAH
MOV DPTR,#0100H
MOV A,#55H
MOVX @DPTR,A
MOV R0,#30H
MOV A,@R0
PUSH ACC
MOV DPTR,#0100H
MOVX A, @DPTR
MOV 40H,30H
MOV @R0,A
POP ACC
MOVX @DPTR,A
MOV R5,40H
MOV R6,30H
SJMP $
END
练习程序2:
ORG 0
MOV SP,#60H
MOV P1,#0FFH
MOV R0,#40H
MOV R2,#10
LOOP1: MOV A,P1
MOV @R0,A
INC R0
DJNZ R2,LOOP1
MOV R0,#40H
MOV R2,#10
LOOP2: MOV A,@R0
MOV P2,A
INC R0
DJNZ R2,LOOP2
SJMP $
END
2.2 数据传送类程序设计
1) 设计数据区清零程序, 将片内RAM 20H~5FH单元清零。
2) 设计数据块传送程序, 将片内RAM 30H~3FH单元的数据顺序传送到片内RAM 50H~5FH单元。
3) 设计数据块传送程序, 将片内RAM50H~5FH单元的数据顺序传送到片外RAM 1000H~100FH单元。
4) 自行设计能完成一定数据传送功能的程序。
3、 参考程序流程图
见图1-1和图1-2。
4、 实验步骤
4.1 实验前根据实验内容要求, 参考程序流程图设计汇编语言源程序, 撰写实验预习报告。
4.2 运行练习程序。
4.2.1练习程序1
在PC机上, 启动Keil集成开发环境, 建立一个新的工程; 建立保存文件; 添加文件; 在文件编辑窗口输入、 编辑练习程序1。在”为目标‘目标1’设置选项”时, 在调试页选择此次调试是使用软件仿真; 编译建后, 点击调试快捷图标即可运行调试程序, 用单步跟踪运行-F11键运行程序。运行前观察DPTR、 累加器A、 SP、 工作寄存器、 内部RAM30H、 40H单元和外部RAM0100H单元的值, 运行程序后再重新观察上述寄存器和存储单元内容的变化, 记录每条指令的运行结果, 说明该程序的功能。
4.2.2 练习程序2
1) 接线
⑴ 使用8排导线将RC51核心板单片机的P2口的P2.0~P2.7与主板上J4口的LED1~LED8发光二极管相连接;
⑵ 使用8排导线将GC51核心板单片机的P1口的P1.0~P1.7与主板上J1口的SW1~SW8拨动开关相连接。
⑶ 连接仿真器与PC机的连线, 接通实验箱的电源。
⑷
2) 输入程序
在PC机上, 启动Keil集成开发环境, 建立一个新的工程; 建立保存文件; 添加文件; 在文件编辑窗口输入、 编辑练习程序2。在”为目标‘目标1’设置选项”时, 在调试页选择此次调试是使用仿真器仿真, 点击设置键设置参数, 按OK键退出。编译后调试程序。
3) 调试程序
点击调试快捷图标运行、 调试程序, 用单步跟踪运行-F11键单步运行程序。每执行一条指令观察相应寄存器、 或存储单元、 或I/O口的状态, 在执行MOV A,P1指令之前, 随意拨动SW1~SW8开关, 记录每条指令的运行结果, 说明该程序的功能。
4.3调试数据传送程序
编辑数据传送程序1) , 编译后, 点击调试快捷图标启动调试命令, 运行、 调试程序。学习用单步跟踪运行-F11键、 全速运行-F5键、 设置断点运行等方式运行程序。检查片外RAM现场和相关寄存器的内容, 记录每条指令的运行结果。
编辑数据传送程序2) , 编译后, 点击调试快捷图标启动调试命令运行、 调试程序, 在片内RAM 30H区放置16个数, 依次为11H、 22H、 33H、 44H、 55H、 66H、 77H、 88H、 99H、 0AAH、 0BBH、 0CCH、 0DDH、 0EEH、 0FFH, 00H, 运行程序。检查片内RAM现场和相关寄存器的内容, 记录每条指令的运行结果。
编辑数据传送类程序3) , 编译后, 点击调试快捷图标启动调试命令运行、 调试程序, 在片内RAM 50H区放置16个数, 依次为11H、 22H、 33H、 44H、 55H、 66H、 77H、 88H、 99H、 0AAH、 0BBH、 0CCH、 0DDH、 0EEH、 0FFH, 00H, 运行程序。检查片外RAM现场和相关寄存器的内容, 记录每条指令的运行结果。
5、 实验报告要求
5.1 整理本实验设计的各个程序, 编写实验报告, 实验报告格式见附录1。
5.2程序清单要求, 按反汇编格式, 在助记符指令的左端列出各指令代码的地址和指令代码, 在助记符指令的右端写出指令注释。
5.3 描述各程序运行结果。
5.4 画出各程序流程图。
6、 思考题
设计数据块传送程序, 将片外RAM的 H~201FH单元的数据循环传送到片外RAM 1050H~106FH单元。
开始
设数据区地址指针R0=20H
设计数器初值 R2=40H
0→(R0)
R2-1→R2, R2=0?
结束
R0+1→R0
开始
设数据区地址指针
移地址指针
设计数器初值
取源数据区数据
送入目的数据区
传送结束?
结束
N
Y
N
Y
图1-1 数据区清零程序流程图 图 1-2 数据块传送程序流程图 实验二、 常见数据处理程序设计
1、 实验目的
1.1、 熟悉51单片机汇编语言程序设计方法;
1.2、 熟悉51单片机常见子程序的设计方法;
1.3、 熟悉汇编程序伪指令的使用;
1.4、 练习51汇编语言程序的编辑、 汇编和模拟调试。
2、 实验内容
2.1 单字节数据表查表程序设计
应用数据指针DPTR设计查表程序, 在程序存储器 H设一单字节数据表( 表格长度小于256字节, 使用汇编DB伪指令置数) , 根据累加器A 中的查表参数( 或序号) 查找对应值送入R0寄存器中。
2.2 双字节数据表查表程序设计
应用数据指针DPTR设计查表程序, 在程序存储器 H设一双字节数据表( 表格长度小于128字节, 每个元素两个字节, 使用汇编DW伪指令置数) , 根据累加器A中的查表参数( 或序号) 查找对应值送入R0、 R1寄存器中。
2.3 多字节十六进制数加法子程序设计
设计N字节的无符号十六进制数加法子程序。将寄存器R0和R1分别指向的片内RAM中两个N字节无符号十六进制数( 高位字节在前) 相加, 结果存放于被加数单元中。
调用子程序前使寄存器R0、 R1分别指向被加数及加数的高位字节, 字节数N存于R2中; 子程序运行后寄存器R0指向和的高位字节单元, CY为进位。在主程序中为R0, R1, R2赋初值后, 调用子程序。
2.4 求16个无符号十六进制数之和
设计N( N<256) 字节无符号十六进制数求和子程序。在片内RAM从30H单元开始存放了16个无符号十六进制数, 调用子程序计算之和, 将和的高字节存于B寄存器 , 和的低字节存于累加器A。在主程序中使R0指向片内30H单元后调用子程序。
2.5 求16个BCD码之和
设计N( N<256) 字节无符号BCD码求和子程序。在片内RAM从50H单元开始存放了16个无符号BCD码, 调用子程序计算之和, 将和的高字节存于B寄存器 , 和的低字节存于累加器A。在主程序中使R1指向片内50H单元后, 调用子程序
2.6 求16个无符号数的最大值
设计N( N<256) 字节无符号十六进制数求最大值子程序。在片内RAM从30H单元开始存放了16个无符号十六进制数, 调用子程序寻找最大值, 将最大值存于B寄存器 。在主程序中使R0指向片内30H单元后, 调用子程序。
2.7 单字节十六进制数转换成BCD码子程序
设计单字节十六进制数转换BCD码子程序。待转换的单字节十六进制数在累加器A中, 转换后的BCD码的百位在B寄存器中, 十位和个位在累加器A。在主程序中为累加器A赋值后调用子程序。
2.8 单字节十六进制数转换成ASCII码子程序
设计单字节十六进制数转换ASCII码子程序。待转换的单字节十六进制数在累加器A中。转换后, 高四位的ASCII码在累加器A中, 低四位的ASCII码寄存器B中。在主程序中为累加器A赋值后调用子程序。
2.9 单字节BCD码转换成十六进制数子程序
设计单字节BCD码转换成十六进制数子程序。待转换的单字节BCD码在累加器A中。转换后的十六进制数仍在累加器A中。在主程序中为累加器A赋值后调用子程序。
2.10 双字节BCD码整数转换成十六进制数子程序
设计双字节BCD码转换成十六进制数子程序。待转换的双字节BCD码在寄存器R3,R4中。转换后的双字节十六进制数仍在寄存器R3,R4中。在主程序中为R3, R4赋值后调用子程序。
2.11 数值统计子程序
在片内RAM从31H单元开始存放了一组十六进制数, 数据长度存于30H中, 要求分别统计将该组数据中的奇数个数和偶数个数, 将奇数个数存于40H单元, 偶数个数存于32H单元。设计完成上述功能的子程序, 在主程序中调用。
2.12 数据分类子程序
在片外RAM从 H单元开始存放了一组十六进制数, 数据长度为20H个, 要求将数值大于等于60H的数据顺序送入片内31H区, 将数值小于60H的数据顺序送入片内51H区, 分别统计两类数据的个数, 将统计值分别存入30H单元和50H单元。设计完成上述功能的子程序, 在主程序中调用。
2.13 有符号数求和子程序
在片内RAM从41H单元开始存放了一组带符号数, 数据长度存于40H中, 要求将该组数据中的正数、 负数分别求和, 并统计负数的个数, 将正数之和存于30H、 31H单元, 负数之和存于32H、 33H单元, 统计的负数存于34H单元中。设计完成上述功能的子程序, 在主程序中调用。
2.14 求最小偶数程序
设计一主程序, 调用求最小偶数子程序, 找出片内RAM 40H为起始地址的连续10个存储单元中的最小偶数并存入4FH单元。
2.15 综合数据转换程序设计
设计一主程序, 调用双字节BCD码整数转换十六进制数的子程序, 将片内RAM 40H、 41H单元的双字节BCD码整数转换16进制数, 送入48H、 49H单元; 再将此16进制数转换相对应的ASCII码, 送入50H~53H单元。
4、 实验步骤
4.1 实验前根据指导教师选择的实验内容, 设计汇编语言源程序, 撰写实验预习报告。
4.2在PC机上, 启动Keil集成开发环境, 建立一个新的工程; 建立保存文件; 添加文件; 在文件编辑窗口输入、 编辑练习程序1。在”为目标‘目标1’设置选项”时, 在调试页选择此次调试是使用软件仿真; 编译建后, 点击调试快捷图标即可运行调试程序, 按程序设计要求在数据区设置程序运行所需参数, 用全速运行-F5键、 单步跟踪运行-F11键、 单步运行-F10、 运行到当前行、 设置断点运行等方式运行程序, 进行程序调试。检查相应寄存器、 存储单元, 观察、 记录各条指令的运行结果。
5、 实验报告要求
整理本实验设计的各个程序, 编写实验报告, 格式见附录1。对应各程序写出: 程序说明( 包括程序功能、 入口条件、 出口信息、 占用资源) , 程序清单( 要求在助记符指令的右端写出指令注释, 运行结果) , 程序流程图, 写出各程序的运行结果。
6、 思考题
总结单片机应用软件的设计方法, 程序调试的方法。
实验三 外部中断的应用
1、 实验目的
1.1学习51单片机的中断功能、 编程方法。
1.2掌握51单片机的中断过程。
1.3学习51单片机仿真开发系统的使用方法。。
2、 实验内容
利用单脉冲源( KEY8) 产生外部中断请求信号/INT1,在中断服务子程序中读入4个拨码开关( SW1~SW4) 设定的数据, 输出到4个LED发光二极管( LED1~LED4) 。
3、 实验设备与器材
3.1 GCMCU通用单片机实验箱一台;
3.2 IBM-PC机一台。
4、 实验线路
实验线路见 图3-1 外部中断线路
5、 实验步骤
5.1实验前, 根据实验内容要求设计汇编语言源程序, 撰写实验预习报告。
5.2连接GCMCU通用单片机实验箱
1) 使用4排导线将RC51核心板单片机的P1.0~P1.3与主板上J4口的LED1~LED4发光二极管的相连接;
2) 使用4排导线将RC51核心板单片机的P1.4~P1.7与主板上J1口的SW1~SW4拨动开关相连接;
3) 用导线将RC51核心板单片机的INT1( P3.3) 与主板上J2口的KEY8连接, 作为中断触发按键。
5.3连接仿真器与PC机的连线, 接通实验箱的电源, 此时为硬件仿真调试准备好了硬件环境。
5.4在PC机上, 启动Keil集成开发环境, 建立一个新的工程; 建立保存文件; 添加文件; 设置选项, 在调试页选择此次调试是使用仿真器仿真; 在文件编辑窗口输入、 编辑源程序; 调试运行程序。
5.5 按全速运行-F5键, 运行程序, 用拨码开关设定数据, 按动中断触发按键( KEY8) 申请中断, 观察LED灯点亮的状态是否与开关状态相符。
6、 实验报告要求
6.1整理本实验设计的程序, 按汇编语言源程序的格式列出调试后的程序清单。
6.2编写程序说明文件, 绘出程序框图。
6.3描述中断后程序运行的现象。
6.4写出思考题的答案。
6.5提出对本实验的改进意见。
7、 思考题
7.1在外部中断1( /INT1) 被占用时, 不得不改用外部中断0( /INT0) 。请问电路图和程序应如何改动?
7.2 本实验开关掷”0”时, LED指示灯亮;开关掷”1”时, LED指示灯灭, 如何修改程序使开关掷”1”时, LED指示灯亮。
图 3-1 外部中断线路
实验四、 定时器/计数器的应用
1、 实验目的
1.1掌握51单片机定时器/计数器初始化编程方法。
1.2熟悉51单片机定时器/计数器主要应用方式的程序设计方法。
1.3掌握51单片机中断处理程序的设计方法。
1.4掌握应用定时器编程控制宝贝小车机器人完成巡航控制的方法。
1.5学习51单片机单片机仿真开发系统的使用方法。
2、 实验原理
2.1 定时器/计数器
MCS-51单片机内部有两个完全独立的16位的定时器/计数器。
定时器的定时功能是经过计数的方式实现的, 计数脉冲来自单片机内部, 每一个机器周期提供一个计数脉冲。定时器工作于方式1( 16位计数器) 时, 可获得最大的定时时间为Tmax=216×12/fosc。当单片机的振荡频率fosc=12MHz时, Tmax=65536×12/12MHz=65.536ms。
计数器的计数功能是对T0/T1引脚输入的脉冲信号的下降沿计数, 至少需要两个机器周期记录一个脉冲信号, 因此计数器工作于方式1( 16位计数器) 时, 最大的计数频率为fmax=fosc/24。当单片机的振荡频率fosc=12MHz时, fmax=12MHz/24=0.5MHz。
2.2 机器人伺服电机的转动控制原理
图4-1 电机转速为零的控制信号时序图
控制宝贝车机器人行走需要给机器人的伺服电机发出连续的脉冲信号, 图4-1为机器人的伺服电机在转速为零时的控制信号时序图, 图4-2为机器人的伺服电机在顺时针全速旋转的1.3ms控制脉冲信号时序图, 图4-3为机器人的伺服电机在逆时针全速旋转的1.7ms控制脉冲信号时序图。
伺服电机安装在机器人底盘的两侧, 一个顺时针旋转而另一个逆时针旋转, 则机器人沿直线运动。如果两个伺服电机同时向一个方向旋转, 则机器人原地旋转。
可利用单片机的定时器/计数器发出时序精确的脉冲信号控制机器人行走。例如控制机器人沿直线全速运动, 需要在单片机的P1.0引脚输出1.3ms的连续脉冲, 在P1.1引脚输出1.7ms的连续脉冲序列给伺服电机。可使用定时器/计数器在P1.0引脚发出高电平, P1.1引脚发出低电平, 1.3ms之后使P1.0引脚变低, 马上在P1.1引脚发出高电平, 1.7ms后使其变低, 20ms后在重复上述过程。则机器人沿直线全速运动。
宝贝车机器人的单片机为了适应串行通讯的传输速率, 振荡频率fosc=11.0592MHz。
图4-3 1.7ms的连续脉冲序列使电机逆时针全速旋转
图4-2 1.3 ms的控制脉冲序列使电机顺时针全速旋转
3、 实验内容
3.1 利用定时器/计数器T0和工作寄存器串连达到秒级延时
利用8051定时器/计数器实现秒级定时, 控制连接在P1口上的8个LED灯顺序点亮, 即要求每隔N秒, 依次使一个LED灯点亮。
为获得较大的定时时间( 秒级) , 可利用定时器方式1定时, 溢出中断, 软件计数的方法。即: 设定定时器定时50ms, 时间到计数器溢出申请中断, 在中断服务程序中利用寄存器计数。则定时时间Tmax=定时器的定时时间×寄存器计数值。
定时器1秒延时的实现:
定时器定时50ms, 寄存器减1计数20次。定时时间T=50ms×20=1s
定时器时间常数X的计算:
定时器定时时间t=50ms, fosc=12MHz, 则定时常数X:
Tx初值: THx=3CH , TLx=B0H
3.2 脉冲信号发生器的设计
使用定时器T0以定时方式在P1.7引脚输出周期为20ms, 占空比为1: 10的连续脉冲信号。
连续脉冲信号的波形如图3-1所示, 要产生这样的信号, 可设置一个标志位flag, 经过标志位的状态来决定定时时间的长短。当标志flag=1时, 定时器按2ms定时, 定时时间到后对P1.7取反; 当标志flag=0时, 定时器按18ms定时, 定时时间到后对P1.7取反; 如此重复进行即可产生要求的脉冲信号。
t1=2ms t1=2ms t1=2ms
t2=18ms t2=18ms t2=18ms
图4-4 占空比为1: 10的脉冲信号
3.3利用定时器/计数器控制机器人运动
利用单片机的定时器/计数器T0定时, 在P1.0和P1.1引脚发出连续的脉冲信号控制机器人前、 后行走, 左右转向。
4、 实验设备与器材
4.1 GCMCU通用单片机实验箱一台;
4.2 IBM-PC机一台。
4.3函数信号发生器一台;
4.4示波器一台。
4.5 宝贝车机器人一辆。
5、 实验电路图
定时器实验电路原理图见图4-5。
宝贝车接线如图4-6所示。每个伺服电机的有三条控制电缆, 白线用来传送电机的控制信号, 红线是电源线, 黑线是地线。接线时确保教学底板的三位开关拨至”0”位( 关断教学底板的电源) 。将两个伺服电机控制电缆的接线端子分别插入教学底板X5插座中, 注意黑线对着Black,
图4-5 定时器/计数器实验线路
图4-6伺服电机与教学底板连线示意图
6、 实验步骤
6.1实验前, 根据实验内容要求设计汇编语言源程序, 撰写实验预习报告。
6.2连接GCMCU通用单片机实验箱
使用8排导线将GC51核心板单片机的P1口的P1.0~P1.7与主板上J4口的LED1~LED8发光二极管相连接。
6.3连接仿真器与PC机的连线, 接通实验箱的电源, 此时为硬件仿真调试准备好了硬件环境。
6.4秒级延时实验
1) 在PC机上, 启动Keil集成开发环境, 建立一个新的工程; 建立保存文件; 添加文件; 设置选项, 在调试页选择此次调试是使用仿真器仿真; 在文件编辑窗口输入、 编辑源程序; 调试运行程序。
2) 按全速运行-F5键, 运行上述程序, 观察8个LED指示灯, 依次由右向左点亮, 无此状态修改程序, 直至正确。
3) 改变总的延时时间, 运行程序。观察LED灯点亮的时间是否与预期的时间相符。
6.5脉冲信号发生器实验
1) 示波器探头接P1.7, 调节示波器, 测量幅值5V, 频率<100Hz的脉冲信号。
2) 输入、 编辑源程序, 编译、 运行、 调试程序。用示波器观察P1.7输
出的脉冲信号频率, 直至运行状态正确为止。
3) 改变信号的占空比, 运行程序。观察P1.7输出的脉冲信号频率是否与预期的频率相符。
6.6利用定时器/计数器控制机器人运动
1) 连接伺服电机到教学底板, 接线时确保教学底板的三位开关拨至”0”位( 关断教学底板的电源) 。将两个伺服电机控制电缆的接线端子分别插入教学底板X5插座中, 注意黑线对着Black, 如图4-6所示。
2) 在PC机上, 启动Keil集成开发环境, 建立一个新的工程; 建立保存文件; 添加文件; 设置选项, 在调试页选择此次调试是使用仿真器仿真; 在文件编辑窗口输入、 编辑源程序; 调试运行程序。
3) 编辑完源程序后, 保存到磁盘的自建目录中。编译所有工程文件命令, 无错误后, 生成可执行的 .Hex文件。
4) 下载可执行文件到单片机
( 1) 连接下载线,
机器人程序经过连接到PC机并口上的ISP下载线来下载到教学板上的单片机内。下载线一端( DB25的插头) 连接到PC机的并行接口上, 另一端( 双列10P插头) 连接到宝贝小车机器人教学板上的程序下载口上(注意连接方向)。
( 2) 电池的安装
图4-7 处于关闭状态的三位开关
宝贝小车机器人使用五号碱性电池给机器人电机和教学板供电, 在继续下面的实验前, 请先检查机器人底部电池盒内是否已经装好电池, 并是否有正常的电压输出。如果没有, 请更换新的电池。更换过程中, 确保每颗电池都按照塑料盒子里面标记的电池极性( ”+”和”-”) 方向装入。
( 3) 教学板通电检查
图4-8 处于1位状态的三位开关
教学底板上有一个三位开关( 见图4-7) , 当开关拨到”0”位断开教学底板电源。
将三位开关由”0”位拨至”1”位, 打开教学板电源, 如图4-8所示。检查教学底板上标有”Pwr”的绿色LED电源指示灯是否变亮。如果没有, 检查电池盒里的电池和电池盒的接头是否已经插到教学板的电源插座上。
开关由”0”位拨至”2”位, 电源同时给教学底板和机器人的伺服电机供电供电。
( 4) 下载可执行文件到单片机
点击桌面上的ISP下载软件图标, 打开ISP下载软件窗口如图4-9所示, 并将通信参数设置成图中所示的参数。
点击”Flash”, 选择要下载的可执行HEX文件——***.Hex, 选择后点击编程开始下载。如果下载成功, 则下面显示”完成次数: x 次”, 否则显示”失败次数: x 次”。
如果芯片是第二次下载程序, 请先选中”擦除”复选框。
5) 运行程序
程序下载后关闭宝贝小车机器人的电源, 拔掉下载线, 再次将开关拨致”1”位, Flash内部的应用程序开始运行。
按下机器人教学板上的”Reset”按钮, 能够使下载到单片机内的程序重新运行一次。
观察、 记录巡航小车的动作。直至程序运行正确。改变小车参数, 重新录入、 编辑、 编译, 下载、 运行, 观察、 记录巡航小车的动作。
6) 修改程序使机器人能够完成前、 后行走, 左、 右转向及变速行走。
图4-9 ISP软件下载窗口
7、 实验报告要求
7.1整理本实验设计的程序, 按汇编语言源程序的格式列出调试后的程序清单。
7.2编写程序说明文件, 绘制程序框图。
7.3描述变换参数后程序运行的现象。
7.4写出思考题的答案。
7.5提出对本实验的改进意见。
8、 思考题
8.1本实验秒级延时的方法可获得最大延时时间为多少?
8.2如果使用外部引脚信号来控制定时器/计数器的启动、 停止应如何设计程序和连接电路。
8.3如何产生多路不同频率的脉冲信号?
8.4如何产生方波信号, 设计相应的程序。
8.5如何用光电传感器控制宝贝机器人循迹行走?
实验五 机电设备控制实验
1、 实验目的
1.1掌握51单片机输入/输出口的应用方式。
1.2熟悉单片机硬件系统调试方法。
1.3掌握利用单片机的I/O口控制蜂鸣器的一般方法。
1.4掌握利用单片机的I/O口发出PWM信号, 控制直流电机的转动速度。
1.5了解步进电机的工作原理, 掌握利用单片机I/O口控制步进电机转动和调速的方法。
2、 实验内容
2.1蜂鸣器实验
利用P1.3控制( 输出3K到4K频率的方波) 实验箱上的蜂鸣器, 使其发出不同频率的声音。设计程序利用定时器T0( 方式1) 控制每个音调的时间, 定时器T1( 方式2) 控制音调的频率。设计双字节表TABLE1顺序存放定时器T0用的每个音调奏响时间的时间常数; 设计单字节表TABLE2顺序存放定时器T1用的每个音调频率的时间常数。
在T0中断服务程序中查TABLE2表改变T1的时间常数, 改变音调。查TABLE1表改变T0的时间常数, 改变音调奏响时间; 在T1中断服务程序中翻转P1.3的状态。
2.2步进电机实验
利用P1口控制实验箱上的四相步进电机转动。单片机发出脉冲信号, 控制步进电机定子的各相绕组以适当的时序通、 断电, 使其作步进式旋转。调节脉冲信号的频率可改变步进电机的转速。四相步进电机各相绕组的通电顺序能够单4拍( A→B→C→D) 、 双4拍( AB→BC→CD→DA) 和单双八拍( A→AB→B→BC→C→CD→D→DA) 的方式进行, 按这种顺序切换, 步进电机转子按顺时针方向旋转。若通电顺序相反, 则电机转子按逆时针方向旋转。
单片机P1口的P1.0、 P1.1、 P1.2、 P1.3分别接步进电机的A、 B、 C、 D四相。P1口输出的脉冲信号序列可按输出节拍设计成表格, 查表控制步进电机的转动方向和转速, 使用定时器T1控制步进电机每拍的输出时间, 可先设计间隔10ms输出一个脉冲序列, 实验中修改时间常数, 改变电机的转速。综合实验仪的步进电机驱动器采用反向输出的达林顿矩阵ULN 。P1口输出高电平使绕组通电。
2.3 直流电机实验
利用51单片机的P1口的P1.0, P1.1控制实验箱上的直流电机转动。直流电机区的J30是直流电机的控制端, 只有MOTO1为高电平时, 电机顺时针转动; MOTO2为高电平时, 电机逆时针转动。其余状态电机不转。
可在单片机P1口的P1.0或P1.1引脚发出PWM信号, 控制直流电机的转速。PWM的周期可定为2ms, PWM的占空比可在2ms的2/10~8/10范围内选择。即高电平脉冲的时间以200us的整数倍计数, 从2~8经过按键设定。定时器工作在方式2下, 每200us产生一次溢出, 在其中断程序内设一软件计数器, 统计中断次数是否等于高电平脉冲的设定数, 如果等于, 将高电平翻转为低电平。如果中断次数等于周期数-10, 软件计数器清零, 重新输出高电平。
P1.5、 P1.6、 P1.7连接三个按键KEY1、 KEY2及KEY3。程序运行中查询三按键的状态, 按下KEY3改变直流电机的转动速度( 高电平脉冲的设定数) 。KEY1与KEY2控制直流电机的转向, KEY1键按下控制直流电机正转, KEY2键按下控制直流电机反转。
3、 实验设备和器材
3.1 GCMCU通用单片机实验箱一台;
3.2 IBM-PC机
展开阅读全文