搜索
您的当前位置:首页正文

计算机控制技术实验指导书10秋Third

来源:筏尚旅游网


《计算机控制技术》

实验指导书

电气工程与信息工程学院

专业实验室

2010.9

目 录

前 言....................................................................................................................................... 1 实验一 开发环境的基本练习 ......................................................................................................... 3 实验二 定时与外部中断控制实验 ................................................................................................. 5 实验三 单片机程序烧写 ................................................................................................................. 7 实验四 A/D转换 ........................................................................................................................... 10 实验五 D/A转换 ........................................................................................................................... 14 实验六 冷加工自动线中单台钻孔动力头的控制 ....................................................................... 17 实验七 综合性实验——十字路口交通灯的通行指示控制 ....................................................... 18 实验八 综合性实验——生产线货物自动计数设备 ................................................................... 18 实验九 综合性实验——全自动洗衣机控制器 ........................................................................... 19 实验十 综合性实验——彩灯的循环闪烁控制 ........................................................................... 19 附录1:51Tracer仿真器的使用及Keil uVision2快速入门 .................................................... 21 附录2:Keil uVision2仿真调试高级技巧 .................................................................................. 26

前 言

1、《计算机控制技术》课程实验的任务

通过本课程的实验环节,学生应进一步巩固和加深对计算机控制技术这门课程基本知识的理解,提高综合运用所学知识,独立编程和设计电路的能力,为今后设计各类微机控制系统打下基础。

实验要求学生在了解微机控制系统的结构、组成以及具有数据采集系统,顺序控制系统,数字控制系统的相关理论知识后,通过在实验室中经历由Wave软件环境练习,简单程序编写、软件仿真及调试,到将软硬件仿真相结合进一步掌握单片机接口及相关输入输出通道、顺序控制等概念,最后完成一个小型控制器的设计过程,学生应具备一定的将理论与实践相结合,应用所学知识解决实际问题的能力。

2、实验设备

安装有中文版Keil uVision2的计算机、学林51TRACER仿真器以及配合相关实验的实验板、实验工具,其中实验板配有按键、二极管、数码管显示电路、AD和DA模块等。

KEIL uVISION2由美国Keil Software公司出品,是众多单片机应用开发软件中的优秀软件之一。提供丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率较高,多数语句生成的汇编代码较紧凑,容易理解。软件仿真方面也具有较强的功能,其兼容51系列单片机C语言软件开发系统,使用接近于传统C语言的语法来开发。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用, 而且可以提高了工作效率和项目开发周期。KEIL uVISION2支持汇编语言,并且支持在C语言中嵌入汇编,使程序达到接近于汇编的工作效率。

51tracer(追踪者)独立仿真器兼容KEILC51 UV2 调试环境,支持单步、断点调试,随时可查看寄存器、变量、IO、内存内容。可仿真各种51指令兼容单片机,包括ATMEL、WINBOND、INTEL、SST、ST等等。51tracer下载仿真通讯速度为115200BPS,是目前KEIL支持的最高速度。

3、对参加实验学生的要求

(1) 实验时应有严谨的实验态度和良好的爱护实验仪器的习惯

(2) 仔细阅读实验指导书,复习与实验有关的理论知识,明确每次实验的目

的,了解实验内容和方法,认真写好预习报告方可进入实验室参与实验。 (3) 了解和掌握单片机开发系统的使用方法

(4) 按实验指导书要求进行接线和操作,经检查和指导同意后方能通电,实

验中禁止热插拔

(5) 在实验中注意观察,记录有关中间过程和结果 (6) 要培养按图接线,查线,排除故障的能力

1

4、实验安排 序号 1 实验项目名称 学时数 4 实验类别 验证 必做 选做 √ 实 验 内 容 简 述 在Keil环境下简单程序的编写与软硬件仿真调试的方法 编写单片机按键控制闪灯点亮的程序,要求调用中断功能及定时器的功能(需要经历软硬件仿真) 掌握利用单片机程序烧写器进行程序烧写 掌握单片机与ADC0809的工作关系 掌握单片机与DAC0832的工作关系 了解和掌握顺序控制的相关概念 根据控制要求,完成实验电路设计、软件控制流程图的设计,进而完成程序的编写及软件仿真调试、连接实验电路、硬件仿真,直至芯片烧制,单片机系统投入运行的全过程。必须设计时间显示电路(学生也可以根据实验设备的具体情况,自己查找切合实验要求的题目) 开发环境的基本练习 2 定时与外部中断控制实验 3 单片机程序烧写 4 5 6 0.6 验证 √ 0.4 验证 √ A/D转换 D/A转换 冷加工自动线中单台钻孔动力头的控制 1 1 1 验证 验证 验证 √ √ √ 7 综合性试验(四选一)(1)十字路口交通灯的通行指示控制设计(2)生产线货物自动计数设备的设计(3)全自动洗衣机控制器的设计(4)彩灯的循环闪烁控制 2 综合 √

5、实验报告的要求

按照实验室资料入库的标准化要求,认真完成6个实验报告(实验2和3写一个实验报告),每个同学的报告按照实验顺序排列,最后在左侧钉上钉书针,作为一份完整的实验报告上交。实验报告中实验名应当与实验项目名称一致,实验分析必须填写,综合性实验要有流程图和程序清单及详细注释。

2

实验一 开发环境的基本练习

1. 实验目的:

(1)了解Keil uVision2环境的基本使用方法

(2)了解实验板的资源分布及各个资源之间的工作关系 (3)了解51TRACER仿真器的基本原理及使用方法

(4)练习基本的单片机指令,掌握简单程序的软件仿真方法 (5)掌握在Keil uVision2环境下实现实验板上流水灯的控制

2. 实验器材:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、实验板、杜邦插线若干

注意:51TRACER仿真器通过USB给实验板供电,实验板不需要单独通过变压器供电(除了DA实验)

3. 实验内容:

(1)双击桌面上的Uv2.exe快捷图标

,打开KEIL uVISION2开发环境。点击

桌面上的“实验一软件环境的基本练习.exe”,与视频教程同步学习KEIL uVISION2开发环境的基本使用方法。学会使用播放程序控制面板上的暂停功能,学会使用“alt+tab”组合键实现视频教程和KEIL uVISION2开发环境之间的切换。(视频教程中提到的单片机选型ATMEL89S51可以用ATMEL89C51代替;视频教程里提到的项目在我们的软件里是指“工程”)除了视频教程,也可以参考阅读附录1中的“51Tracer仿真器的使用及Keil uVision2快速入门”中的“Keil快速入门”一节)

视频中使用的参考程序:

ORG 0000H ACALL DEL LJMP MAIN AJMP MAIN ORG 080H ORG 0200H MAIN: MOV P0,#00H DEL: MOV R5,#04H MOV P1 ,#00H F3: MOV R6,#0FFH MOV P2 ,#00H F2: MOV R7,#0FFH MOV P3 ,#00H F1: DJNZ R7,F1 ACALL DEL DJNZ R6,F2 MOV P0 ,#0FFH DJNZ R5,F3 MOV P1 ,#0FFH RET MOV P2 ,#0FFH END MOV P3 ,#0FFH

注意:尝试使用KEIL uVISION2菜单栏外围设备中的软仿真工具“51实验仿制板”及“键盘LED”仿制板

(2)阅读附录1中的“51Tracer仿真器的使用及Keil uVision2快速入门”,之后自己分别设计流水灯的汇编和C控制程序,正确连接51Tracer仿真器及实验板,观察实验结果。

汇编流水灯参考程序:

ORG 0000H DL0: NOP MOV P1,#0FFH MOV R1,#0FFH MOV A,#0FEH DL1: NOP

LOOP: MOV P1,A DJNZ R1,DL1 ACALL DELAY DJNZ R0,DL0 RL A RET SJMP LOOP END DELAY: MOV R0,#0FFH

C51流水灯参考程序:

#include unsigned char LED; #include LED = 0xfe; void delayms(unsigned char ms) P1 = LED; // 延时子程序 { while(1) unsigned char i; { while(ms--) delayms(800); { LED = _crol_(LED,1); for(i = 0; i < 120; i++); //循环左移1位,点亮下一个 } LED;_cror_为循环右移1位 } P1 = LED; main() } { }

(3)在教材中选择一到两个长度适中,具有代表性的程序进行调试。进一步熟悉51单片机的汇编及C语言的编写方法,进一步熟悉软硬件开发环境

4

实验二 定时与外部中断控制实验

1. 实验目的:

(1)建立数字量输入输出控制的基本概念 (2)应用单片机的中断功能编写简单的程序 (3)掌握定时中断与外部中断的概念

2. 实验器材:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、实验板、杜邦插线若干

3. 实验内容:

(1)定时中断:使用定时中断功能,使单片机总可以实现P1.0~P1.3的按键在被按下后,相应的P4.0~P1.7的灯会由亮变灭

汇编参考程序:

ORG 0000H SJMP MAIN ORG 000BH SJMP ITOP MAIN: MOV SP,#40H MOV TMOD,#01H MOV TH0,#0FH MOV TL0,#0FFH

SETB ET0 SETB EA SETB TR0 ITOP: MOV C,P1.0 CPL C MOV P1.4,C

C51参考程序:

5

MOV C,P1.1

CPL C MOV P1.5,C MOV C,P1.2 CPL C MOV P1.6,C MOV C,P1.3 CPL C MOV P1.7,C MOV TH0,#0FH MOV TL0,#0FFH

RETI END

#include TL0=0X00; #include EA=1; char code a[3] _at_ 0X003b; ET0=1; sbit p10= P1^0; TR0=1; sbit p11= P1^1; while(1) ; sbit p12= P1^2; } sbit p13= P1^3; void Time1(void) interrupt 1 sbit p14= P1^4; { sbit p15= P1^5; TH0=0X4C; sbit p16= P1^6; TL0=0X00; sbit p17= P1^7; p14=~p10; main() p15=~p11; { p16=~p12; TMOD=0x01 ; p17=~p13; TH0=0X4C; }

(2)外部中断在INT0接一按钮开关,编写程序使每按一下按钮就触发一次中断,中断功能使:依次点亮八个发光二极管(即每执行一次中断使点亮下一个发光二极管)。

汇编参考程序: ORG 0

LJMP MAIN ORG 0003H

SJMP MYINT0 MAIN:SETB EA SETB EX0 SETB IT0

MOV A,#0FEH L1: SJMP L1

MYINT0:

CLR EX0 call delay call delay

JNB P3.2 ,MYINT0 RR A MOV P1,A SETB EX0 RETI

DELAY: MOV R2,#5H D2: DJNZ R0,D0 D3:MOV R0,#0 DJNZ R2,D3 D0: MOV R1,#0 RET D1: DJNZ R1,D1 END

C51参考程序: #include { #include EA=1; #define uint unsigned int EX0=1; #define uchar unsigned char //如 IT0=1; 果定义的该类变量不多,可以在下句 LED=0xfe; 直接用“unsigned char LED” P1=LED; uchar LED; while(1) ; char code a[3] _at_ 0x003b; } void delay(uint ms) void counter(void) interrupt 0 { { uchar k; EX0=0; while(ms--) delay(1000); { LED=_crol_(LED,1) ; for(k = 0; k < 120; k++); P1=LED; } EX0=1; } } main()

(3)程序由学生自己在预习报告中编好,在实验室进一步调试。 4.实验步骤:

(1)输入程序,进行编译,调试,完成软件仿真环节。

(2)在未通电情况下,按照实验线路连线,连好后经指导老师检查后方可接入硬件仿真器。

(3)执行程序,连续点压开关,观察发光二极管的变化情况是否为实验要求的正确表达。

注意:请勿带电插拔仿真器。

实验三 单片机程序烧写

1. 实验目的:

熟练掌握单片机程序烧写及相关外围电路的连接

2. 实验器材:

计算机、RF-810编程器、ATMEL89c51单片机、实验板供电变压器

3. 实验内容:

(1)单片机程序烧写

7

a.将单片机正确插入编程器的插槽后,将编程器上电,接着在装有RF-810的PC机中运行该编程环境,如下图:

b. 首先点击[器件选择],在[类型选择]中选择MPU/MCU,[厂家选择]则选择ATMEL,如果是擦单片机的程序,则选择AT89C51;之后点击[确定退出]。

c. 如果是擦程序(如果单片机在着之前被写过程序,首先执行一遍该过程),则点击[擦除]按钮就可以完成单片机内部程序的擦除功能,擦完后点击[显示]可以看到单片机内容的ROM全部为FFH。

d. 如果是写程序,则继续点击[文件],按照图示在计算机中选择二进制或十六进制的要烧写的文件,之后选择RF-810环境下的[编程]按钮就可以完成单片机的程序烧写过程。

8

(2)关于单片机外围电路的知识点

a.由于仿真器自身带有复位电路及振荡电路,所以即使实验板上没有这两个电路,照样可以正常工作;但是当将烧写好程序的单片机连入控制电路中时,单片机外围必须要有复位电路及振荡电路的支持才可以工作(前提是必须给单片机正常供电),下面分别是上电复位电路及振荡电路的连接电路图(实验板上已经有这两个电路了,同学们自己找找)

b. 将单片机的31引角接高电平(这样ATMEL单片机在上电后才会从内部

的ROM区去找自己应该执行的第一条指令;实验板上已经有这两个电路了,同学们自己找找)

注意:请勿带电将单片机插入或者拨出已上电编程器的插槽。

9

实验四 A/D转换

1. 实验目的:

掌握AD转换器与单片机的接口及编程方法

2. 实验器材:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、万用表、实验板、杜邦插线若干

3. 实验内容:

将0-5V模拟信号经A/D转换器转换成数字量。模拟量从ADC0809的IN0输入,转换结果存入片内RAM的指定单元,之后也可以将该值显示在P1口上

4. 实验线路:

74LS74 2 6 D1 Q1 +5V Q1 30 3 CLK1 5 10 CLK ALE PR 11 CLR1 VCC 11 REF(+) 1 4 +5V 12 LE 39 3 D0 Q0 2 25 A P0.0 38 4 D1 Q1 5 24 B P0.1 37 7 D2 Q2 6 23 C P0.2 36 8 D3 74LS IN2 22K P0.3 35 3 D4 373 10K P0.4 ADC0809 34 4 D5 P0.5 33 7 D6 P0.6 32 8 D7 GND 13 P0.7 OE 1 REF(-) 16 89S51 17 D0 14 D1 15 D2 8 D3 18 D4 19 D5 20 D6 21 D7 WR 16 2 1 6 START 24 3 74LS02 22 ALE P2.3 RD 17 5 4 9 OE 1 6 7 EOC P1.0

10

注:由于ADC0809自身的锁存功能,同学们可以考虑在接线时不使用74LS373,直接将A、B、C(实验板上对应的是ADDA、ADDB、ADDC)与P0.0、P0.1和P0.2相连,但是在程序中要注意A寄存器的赋值(参考程序注释)

5. AD0809引脚图:

ADC0809属于逐次逼近式A/D转换器,可以和单片机直接连接。其带有8位A/D转换器、允许8路模拟量分时输入,共用一个A/D转换器进行转换,是一种经济的多路数据采集方法。地址锁存与译码电路完成对 A、B、C 这3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出(根据后面的1路模拟量循环采集参考程序,同学们思考如何编写8路模拟量循环采集的程序)

6. ADC0809的内部逻辑结构图:

11

7. 参考程序 汇编:

ORG 0000H MOVX A,@DPTR SJMP MAIN MOV @R1,A ORG 0080H MOV P1,A MAIN: MOV R1,#16H MOV A,#0 //如果不使用 MOV DPTR,#0F7F0H 74LS373,此时A的值必须是所需转换L4: MOVX @DPTR,A 通道的值;同学们尝试去掉这个语句,MOV R2,#20H 看看结果对不对 DLY: DJNZ R2,DLY SJMP MAIN HE: JNB P3.0,HE END C51:

#include //LED=*ADindex; 也可以直接这 #include 样赋值 #include } #define ADaddr XBYTE[0x7ff0] void DELAY(uchar x) #define LED P1 { sbit AD_Over=P3^1; uchar i; typedef unsigned char uchar; for(i=0;i8. 实验步骤:

(1)输入程序,进行编译,调试,完成软件仿真环节。

(2)在未通电情况下,按照实验线路连线,连好后经指导老师检查后方可接入硬件仿真器。

(3)通过调整电位器,改变输入ADC0809通道的电压,连续执行程序,观察寄存器单元的内容,并填写下表。

12

模拟量(V) 0V 0.5V 1.0V 1.5V 2.0V 2.5V 3.0V 3.5V 4.0V 4.5V 5.0V 数字量 注意:请勿带电插拔仿真器。

13

实验五 D/A转换

1. 实验目的:

掌握DA转换器与单片机的接口及编程方法

2. 实验器材:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、示波器、实验板、杜邦插线若干、实验板供电变压器

3. 实验内容:

编写通过D/A转换,在示波器上显示锯齿波、三角波、梯形波的程序,并进行实验。

4. 实验线路:

+5V 8 19 20 VREF Vcc ILE P0.0 39 7 DI0 9 Rfb P0.1 38 6 DI1 +12V P0.2 37 5 DI2 P0.3 36 4 DI3 Iout1 11 2 7 P0.4 35 16 DI4 HA17741 6 示波器 P0.5 34 15 DI5 Iout2 12 3 4 P0.6 33 14 DI6 AGND 3 1 5 P0.7 32 13 DI7 89S51 0832 10K P2.7 28 1 CS 17 XFER -12V WR 16 2 WR1 18 WR2 DGND 10

5. DAC0832引脚图:

14

DI0~DI7:数字信号输入端。

ILE:输入寄存器允许,高电平有效。

CS:片选信号,低电平有效。 WR1:写信号1,低电平有效。

XFER:传送控制信号,低电平有效。

WR2:写信号2,低电平有效。

IOUT1、IOUT2:DAC电流输出端。 AGND(引脚3):模拟地 DNGND(引脚10):数字地,可与AGND接在一起使用。

DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。

6. 内部逻辑结构图:

Rfb:是集成在片内的外接运放的反馈电阻 Vref:基准电压(-10~10V) Vcc:是源电压(+5~+15V)

7. 参考程序

(1) 锯齿波汇编程序:

ORG 0000H MOV DPTR,#7FFFH CLR A

LOOP: MOVX @DPTR,A INC A AJMP LOOP END

(2) 三角波汇编程序:

ORG 0000H

15

MOV

DPTR,#7FFFH CLR A

LOP0: MOVX @DPTR,A INC A CJNE A,#0FFH,LOP0 LOP1: MOVX @DPTR,A DEC A CJNE A,#00H,LOP1

AJMP LOP0 END

(3) 梯形波汇编程序:

ORG 0000H MOV

DPTR,#7FFFH MOV A,#05H

LL0: MOVX @DPTR,A INC A CJNE A,#0FAH,LL0 ACALL DELY

LL1: MOVX DEC CJNE ACALL AJMP DELY: MOV DL0: MOV DL1: DJNZ DJNZ RET END

@DPTR,A

A

A,#05H,LL1 DELY LL0 R0,#05H R1,#7FH R1,DL1 R0,DL0

(4) 锯齿波C51程序:

#include } #include #include void main() #define DAaddr XBYTE[0x7ff0] { typedef unsigned char uchar; DA_value=0; uchar xdata *DAindex; DAindex=&DAaddr; uchar DA_value; while(1) void DAout() { { DAout(); DA_value=DA_value+1; } *DAindex=DA_value; } P1=DA_value;

8. 实验步骤:

(1)输入程序,进行编译,调试,完成软件仿真环节。

(2)在未通电情况下,按照实验线路连线,连好后经指导老师检查后方可接入硬件仿真器。

(3)连续执行程序,通过示波器观察输出端的波形。

注意:请勿带电插拔仿真器。

16

实验六 冷加工自动线中单台钻孔动力头的控制

1. 实验目的:

(1)了解顺序控制系统的特点

(2)掌握单台钻孔动力头控制程序的编写

2. 实验器材:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、实验板、杜邦插线若干

3.实验内容:

冷加工自动线中单台钻孔动力头加工钻孔的过程分为以下几步: (1) 动力头在起始位置(行程开关X0受压),按启动开关按钮A后,电磁阀DT1通 电,动力头快进;

(2) 碰上行程开关X1,使电磁阀DT2通电(DT1保持通电),动力头由快进转工进; (3) 碰上形成开关X2,开始定时延时,动力头继续工进;

(4) 延迟时间到,使DT1、DT2断电,DT3通电,动力头快退;

(5) 动力头退回到原位,行程开关X0又受压,DT3断电,动力头停止。

完成以上一个周期的动作之后,返回第一步,开始下一个循环的动作。实验时可以用实验箱上的按钮表达启动开关按钮A、行程开关X0~X2的状态,分别输入51单片机的P1.0~P1.3,而P1.4~P1.6作为输出线驱动发光二极管代表DT1~ DT3的吸和状态。

4.程序由学生自己在预习报告中编好,在实验室进一步调试。

5. 实验步骤:

(1)输入程序,进行编译,调试,完成软件仿真环节。 (2)在未通电情况下,按照实验线路连线,连好后经指导老师检查后方可接入硬件仿真器。

(3)执行程序,通过按钮合理强制输入状态,观察发光二极管是否可以正确表达钻孔动力头的动作过程。

注意:请勿带电插拔仿真器。

17

综合性实验(四选一)

《计算机控制技术》综合性实验,应当是学生在具有单片机基础实验能力的水平之后,需要进一步经历的学习过程,目的是使学生巩固加强对《计算机控制技术》的相关理论及实践知识的学习。

学生可以从综合性实验中任意选择一个实验作为学习的对象。在做综合性实验的过程中,有以下几点需要同学们注意:

(1)学生可以在实验室已有设备的基础上,通过其他途径获取综合性的题目,如果需要额外的设备或器件,需要事先与实验室的负责老师取得联系,确定实验的可行性。 (2)指导书中提出的综合性实验可以由学生在合理的范围内自由发挥

实验七 综合性实验——十字路口交通灯的通行指示控制

1.实验条件:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、实验板、杜邦插线若干

2.实验目的:

通过对十字路口交通灯在闪烁时以正确时序控制的要求,正确处理和分析信号,根据单片机的特点,合理分配资源,正确运用中断、延时的知识,锻炼编写较长较复杂程序的能力,通过软硬件仿真到最终控制器的模拟运行,努力提高动手能力,鼓励将书本知识与实践相结合,提高学习的兴趣。 3.实验内容:

(1)控制要求:

十字路口中A道,B道各有两组红黄绿三种灯。A道绿灯亮若干秒,切换为黄灯闪烁若干秒,然后切换为红灯亮若干秒,继而A道由红灯切换为绿灯,但之间不需要黄灯过渡;B道的控制顺序与A道相同,但A道与B道的亮灯需要在颜色上符合实际中互锁的要求。红黄绿灯亮的时间可以显示(选作)。A道,B道中一道有车而另一道无车时,交通灯控制系统应能立即让有车道放行。

(2)实验要求:

根据控制要求,首先完成软件控制流程图的设计,进而完成程序的编写及软件仿真调试、连接实验电路、硬件仿真,直至芯片烧制,单片机投入运行的全过程。

实验八 综合性实验——生产线货物自动计数设备

1.实验条件:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、实验板、杜邦插线若干

2.实验目的:

根据生产线货物自动计数设备的运行特征,正确处理和分析信号,合理分配单片机资源,综合运用中断和接口芯片的知识,编写程序时有序组织输入输出信号,提高应用单片机知识的水平。 3.实验内容:

18

(1)控制要求:

生产线上货物自动计数器具有实时显示货物计数值的功能,货物的计数可以由实验箱中的脉冲发生电路模拟。

(2)实验要求:

根据控制要求,首先完成软件控制流程图的设计,进而完成程序的编写及软件仿真调试、连接实验电路、硬件仿真,直至芯片烧制,单片机投入运行的全过程。

实验九 综合性实验——全自动洗衣机控制器

1.实验条件:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、实验板、杜邦插线若干

2.实验目的:

正确分析全自动洗衣机顺序控制的特点,根据控制要求,合理组织外围电路,编程时合理应用延时,努力提高编写较复杂程序的能力,通过该综合实验的全过程,巩固所学理论知识,拓展实践应用的能力,为以后设计该类系统打下基础。 3.实验内容:

(1)控制要求:

设计一个全自动洗衣机控制器,该控制器有以下功能: a. 按下启动键后开始运行洗衣程序。 b. 先进水,在水位到时停止进水。

c. 洗衣时,正转10秒,停5秒,反转10秒,停5秒,循环时间10分钟。 d. 放水至水放完。 e. 甩干转一分钟。

f. 清洗(i)进水至水位到。(ii)清洗三分钟,正转10秒,停5秒,反转10秒,停5秒。(iii)放水至水放完。(iv)甩干3分钟。

g. 洗同f,甩干5分钟后蜂鸣器报警结束。 h. 实时显示剩余时间。

(2)实验要求:

根据控制要求,首先完成软件控制流程图的设计,进而完成程序的编写及软件仿真调试、连接实验电路、硬件仿真,直至芯片烧制,单片机投入运行的全过程。

实验十 综合性实验——彩灯的循环闪烁控制

1.实验条件:

安装有中文版Keil uVision2的计算机、51TRACER仿真器、实验板、杜邦插线若干

2.实验目的:

该题目实现的方式较多,同学们可以综合运用课程中所学知识,合理设计硬件接口电路,合理组织逻辑控制,解决本实验要求解决的问题,最终巩固和拓展所学知识,提高理论联系实践的能力,在亲身参与实验的过程中提高对学习的兴趣。 3.实验内容:

19

(1)控制要求:

设计出常用的几种彩灯的闪烁方式,如轮流点亮、逐个点亮、间隔点亮、全灭全亮等,其中每种控制方式可以由操作人员任意选择。

(2)实验要求:

根据控制要求,首先完成软件控制流程图的设计,进而完成程序的编写及软件仿真调试、连接实验电路、硬件仿真,直至芯片烧制,单片机投入运行的全过程。

20

附录1:51Tracer仿真器的使用及Keil uVision2快速入门 1.51Tracer仿真器的使用

硬件说明:

USB 接口:连接USB线到电脑,同时起到通信和供电的功能。

晶体选择:从左到右分别是 4,11.0592,12,24MHZ,用户可以根据需要选择其一, 注意只能也必须选择其一(把对应的开关拨向ON的位置),否则可能 工作不正常。

状态指示:此灯为双色 LED,绿色闪一下表示系统复位,绿色连续闪烁表示系 统运行。红色是特别设置的自检灯。亮表示P1.0 端口为低电平,用 户可以写CLR P1.0, 如果亮则系统正常。如果程序中有P1.0的操作 也会亮红色。

复位键:设计了两个键,他们功能一样的都是复位键(另一个备用);短按一下, 绿灯闪一下,喇叭响一下,则系统复位。长按3秒,绿灯不停闪烁,喇 叭响两下,则系统脱机运行。喇叭响三下 “嘀嘀嘀”,则表示被仿真程 序的00H-0040H被用户占用(在下面的Keil uVision2快速入门里也 会提到)。

关于仿真器占用一小部分ROM区的问题:如果程序为C程序,请在代码的main() 函数前面,加上一句:char code dx516[3] _at_ 0x003b;如果程序为汇编 程序,请将你的主程序跳过中断区直到0050H以后,如: ORG 0000H

JMP MAIN ;主程序开始 ORG 000BH

JMP TIMER_INT ;定时器T0中断服务程序可以按照规 定的安排到固定的位置 ORG 0050H

MAIN: ;主程序开始

如果以上设置没有做,在后面Keil uVision2装载程序到51Tracer的过程 中,仿真器会发出“嘀嘀嘀” 的三声短声报警(有些情况不加以上的代 码,仿真器如果不报警,程序也可以正常执行)。 与实验板的连接方法:

21

2.Keil uVision2快速入门:

(1)点击 Project(工程)菜单,选择 New Project(新工程) ,在文件名中输入第一个程序项目名称,假定我们用“test“。“保存”后的文件扩展名为 uv2 这是 KEIL uVision2 项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。注意输入的时候不要输入文件的后缀名, 默认即可。为了查找方便, 假定我们保存在c盘的根目录。这时会弹出让你选择单片机型号的对话框,我们选择ATMEL---AT89C52。

(2)汇编源文件的建立:点击 FILE(文件)菜单中的 NEW...(新文件)命令新建一个文本编辑窗口。在里面输入一个程序范例如流水灯程序,然后点击FILE(文件)菜单中的SAVE(保存)命令保存文件,注意必须给要保存文件除了自己定义的文件名,还要手动加上汇编程序的后缀名“.asm”或C语言的后缀名“.c”,例如保存为 C:/prog/001.asm或者C:/prog/001.c(注意不要有中文目录,文件名不超过8个字符,否则可能后面编译不通过)。

(3) 点击Target 1 (目标1) 前面的“+”, 出现Source Group 1, (源程序组1) 选中右键点选”Add files Group Source Group 1” (增加文件到源程序组 1)这时选择文件类型为 Asm,再选中 001.asm 文件,再按Add添加,在随后的提示框中按“确定”。

22

(4) 仿真部份采用Mon51协议,在使用之前应必须对软件项目进行如下设置: 单击\"Project\"(工程)菜单,再在下拉菜单中单击\"options for target target 1\"(目标1属性) 在下图中选择 output(输出)”Create HEX file”(产生 hex 文件)的选项,以便汇编后生成 HEX 代码,供编程器向单片机烧写程序时使用。

(5) 在\"Debug\"(调试)中点选\"KeilMonitor-51 Driver\",同时选中加载代码到仿真器,运行到main0,在“恢复调试设置”中“断点”“工具栏” “浏览点” “储存器显示”也全部钩选上。然后点击“设置” 。

23

(6)击\"Settings\"(设置)选择要使用串口必须和实际相符合,你的计算机可能

是COM2或者其他, 对此不能确定可以通过察看控制面板\\硬件\\端口\\通讯端口来解决:

同时注意电脑上不能够同时运行其他可能占用串口资源的软件例如串口调

试软件等也必须退出,否则将引起冲突(通讯速率必须被设成115200)。

(7) 按以下两个向下小箭头的图标进行编译,(或者按 F7 快捷)编译成功后如会出现下图红箭头所指的文字正在汇编„0(错误),0(警告)这里的意思是没有错误,没有警告。表示编译成功。

现在尝试故意将第 3 行的 ORG 0080H 改为 RRG 0080H,我们再次进行编译和链接编译/链接,因源程序中有语法错误,在信息输出窗口中有错误报告出现 :“001.ASM(3):错误A9:SYNTAX ERROR”(第3行语法错误) ,双击该行,

24

定位到出错的位置,将错误改正后,再进行编译,程序编译和链接能顺利完成。

此时在 C 盘的根目录就生成了 test.hex 文件,有了这个 hex 文件, 我们也可用 ISP 方式烧写到单片机实验)然后可以进行硬件仿真了,将仿真头插入目标板的40pin 卡座,开始仿真退出仿真时最好按一下51TRACER仿真器上的复位按键,小喇叭发出“滴”一声响。(一般不需要这样做,除非系统没有复位)

(8)在按图第三个红色的(debug)或按Ctrl+F5快捷键可以进入仿真

此时界面将出现连接成功的提示!(Connected to monitor-51 v9.1),其中9.1是仿真器的版本号(否则设置有误请仔细检查)

25

附录2:Keil uVision2仿真调试高级技巧

进入调试状态后,Debug 菜单项中的命令可以使用了,有关编译的工具栏按钮消失了,出现了一个用于运行和调试的工具栏,Debug 菜单上的大部份命令都有相应的快捷按钮。

从左到右依次是复位、运行、暂停、单步跟踪、单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮命令; 做好相应的设置后,连接上相关的实验资源,然后按一下图示第二个“运行”按钮。流水灯实验用一条8PIN的数据排线把实验板的CPU部份的P1口连接到八路指示灯部份。这时你会看到实验仪的八个红色LED轮流点亮,表示运行成功,同学们也可以查看相关的变量和参数,非常方便。 (1)单步跟踪运行

使用菜单 Debug->Step 或上图第四个单步运行按钮或使用快捷键 F11 可以单步跟踪执行程序,在这里我们按下 F11 键,即可执行该箭头所指程序行,每按一次 F11,可以看到源程序窗口的左边黄色调试箭头指向下一行,如果程序中有Delay延时子程序, 则会进入延时程序中运行。

(2)单步运行

如果 Delay 程序有错误,可以通过单步跟踪执行来查找错误,但是如果 Delay 程序已正确,每次进行程序调试都要反复执行这些程序行,会使得调试效率很低, 为此, 可以在调试时使用 F10 来替代 F11 (也可使用菜单 Step Over 或相应的命令按钮 ),在 main 函数中执行到 Delay时将该行作为一条语句快 速执行完毕。为了更好的进行对比,我们重新进入仿真环境,将反汇编窗口关闭,不断按 F10 键,可以看到在源程序窗口中的左边黄色调试箭头 不会进入到延时子程序。

(3)全速运行

点击工具栏上的“运行”按钮或按 F5 键启动全速运行,全速执行程序,此时用户板上的 P1 口所接 LED 以流水灯状态显示。

(4)暂停

点击工具栏上的按钮,此时用户板上的 P1 口所接 LED 停止以流水灯状态显示,只有一个 LED 灯点亮(取决于暂停前的 P1 的值)。

(5)观察/修改寄存器的值

Project 窗口在进入调试状态后显示 Regs 页的内容,包括工作寄存器 R0~R7 的内容和累加器 A、寄存器 B、堆栈指针 SP 的内容。

26

用户除了可以观察以外还可自行修改,例如将寄存器 a 的值 0x62 改为 0x85。 方法一:用鼠标点击选中单元 a, 然后再单击其数值位置,出现文字框后输入 0x85 按回车键即可;

方法二:在命令行窗口,输入 A=0x85,按回车键将把 A 的数值设置为 0x85。

(6)观察/修改存储器的数据

点击菜单“视图 View->储存器窗口Memory Windows” ,便会打开 储存器Memory 窗口(如窗口已打开,则会关闭), Memory 窗口可以同时显示 4 个不同的存储器区域,点击窗口下部分的编号可以相互切换显示。在 储存器1(Memory#1) 的地址输入栏内输入“D:0e0h” ,按回车键后,可以从内部可直接寻址 RAM 的e0H 地址处开始显示, e0H 地址的值就是寄存器 a 的值,应与主寄存器窗口下的值相同。

点击窗口下部分的储存器2(Memory#2) ,在 Address 输入栏内输入“D:0e0h” ,按回车键后,可以从内部可间接寻址 RAM 的 e0H 地址处开始显示。

点击窗口下部分的 Memory#3,在 Address 输入栏内输入“C:0x0021” ,按回车键后,可以从代码区域 0000H 地址处开始显示,这时各地址值应与在反汇编窗口中的值相同。

点击窗口下部分的 Memory#4,在 Address 输入栏内输入“X:00h” ,按回车键后,可以从xdata RAM 区域 0000H 地址处开始显示。

27

通过 Memory 窗口修改数据:在 Memory 窗口中显示的数据可以修改。例如,要改动 data 区域 OXE0 地址的数据内容:把鼠标移动到该数据的显示位置,按动鼠标右键在弹出的菜单中选中:更新储存器“Modify Memory at D:0xE0” ,在弹出对话框的文本输入栏内输入相应数值,按回车键或点击 OK,修改完成。

通过命令行查看数据:例如,我们想查看 data 空间从 0x01 到 0x03 地址的内容,可在命令输入窗口输入“d d:0x01,03H” ,回车即可完成,d 表示 data 空间,0x01 表示起始地址,03H 表示结束地址(注意两种 16 进制的表示 方法在这里都可以接受),输出结果在信息输出窗口中显示出来。

通过命令行修改数据:例如,我们想把 p1口的值从0x02数据修改成 0x05 ,可在命令输入窗口输入p1=0x04”,回车即可完成,此时如果p1口接有led,将立即看到led状态改变。通过 Memory 窗口可以看到修改后的数据:在地址栏输入 d:00H然后回车。储存器1 的d:0x90后的第一个数据就变成了04 ,这正是我们刚才修改的结果。

28

(7)观察/修改变量的值

在暂停程序运行时,可以观察到有关的变量值。在监视/调用堆栈(Watch)窗口“局部”页自动显示当前正在使用的局部变量,不需要用户自己添加。监视(Watch)页显示用户指定的程序变量。(先按F2键,然后输入变量的名称例如“delay”然后回车)

移动鼠标光标到要观察的变量“delay”上停留大约一秒钟,就弹出一个“变量提示”块出来。

29

将鼠标移动到一个变量名“D1”的上面,点击鼠标右键,出现快捷菜单,选中:“增加D1到观察窗口” (Add “D1” to Watch Windows„) 选项,子菜单中会出现#1 和#2 的选项,点击后该变量就会加入对应的监视/调用堆栈(Watch) 窗口。

增加D1到观察窗口” (Add “d1” to Watch Windows„) 选项后 对应的监视窗口显示了D1 的值。

修改变量的数值方法:用鼠标左键点击该行的变量数据栏,然后按 F2 键出现文本输入栏后,输入修改的数据,确认正确后按回车键。

(8)复位

如果用户想重新开始运行用户程序,可以点击工具栏上的复位按钮,对仿真器的用户程序进行复位。仿真器复位后,程序计数器 PC 指针将复位成 0000H, 另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如 A 将变为 00H, DPTR 变为 0000H, SP 变为 07H, I/O 口变为 0FFH,此时用户板上的P1 口所接 LED 指示灯会全部熄灭。

9.设置断点

将光标移至待设置断点的源程序行,如 “D0: MOV R1,#83H”行。点击工具栏上的“断点”图标,可以看到源程序窗口中该行的左边出现了一个红色的断点标记 。(如果再点一下这个图标则清除这个断点)同样的方法, 您可以设置多个断点。

30

(10)带断点的全速运行

按动 F5 启动全速运行,全速执行程序,当程序执行到第一个断点时,会暂停下来,这时你可以观察程序中各变量的值及各端口的状态。此时用户目标板上会显示当前断点的状态,继续按动 F5 启动全速运行,程序执行到第二个断点时(如果总共设置了两个断点),会暂停下来;继续按动 F5 启动全速运行,程序又会执行到第一个断点处暂停,此时用户目标板上的灯又显示相应的状态。断点是仿真器调试的重要手段,请您仔细反复的练习直到熟练。 (11)清除程序中所有断点

如果想取消全部的断点全速运行时,要是逐个取消将是很烦琐的事,我们只要点击工具栏相应的图标,就可清除程序中所有断点。 (12)执行到光标处

在体验“执行到光标处”之前,我们先点击工具栏上复位的图标,对仿真器的用户程序进行复位, 把鼠标放在想要停止的行点一下,再按“执行到光标处”程序全速执行到光标所在行,这与我们在前面看到的带断点的全速运行相类似。 (13)退出仿真

先按暂停按钮,再按复位,再按开启/关闭调试模式按钮,则退出仿真状态,就又重新回到编辑模式。(如果不能正确退出,请按一下仿真器上的复位按钮) 此时可以对程序修改, 然后重新编译,再按开启/关闭调试模式按钮,就又进入仿真模式了。

请注意!由于KEIL软件在仿真状态时和仿真器始终保持通信联系,为此退出仿真的时候最好按照以上顺序退出,不要强行退出,否则容易造成电脑死机。

到这里也就完成了keil软件的标准操作过程,由于KEIL操作过程较复杂,请同学们自行练习直到熟练!

31

因篇幅问题不能全部显示,请点此查看更多更全内容

Top