实验一 扩展A/D转换器实验
一、 实验目的
1. 掌握8051单片机扩展A/D转换器的方法;
二、 实验内容
实验设备上有一片A/D转换芯片ADC0809。ADC0809与51单片机的接口电路如下图所示。实验内容为通过调节实验设备上的电位器RW,输出0~5V直流电压,送入ADC0809通道0(IN0),将模拟电压转换成二进制数字送P1口,通过LED显示转换结果,利用万用表测试输入电压,并和转换后数字值进行对照,计算转换误差。A/D转换程序可以从延时、查询、中断三种方法中任选一种。实验电路中CS/0809与地址译码器Y3相连,IN0直流信号区的“0~5V”。
为了方便计算,AD0809参考电压为可调电位器调节,其电压为5.12V。
三、 接线方案
接线:CS/0809 接 Y3/IO地址
IN0/0809 接 0~5V/直流信号 P10~P17/C51 单片机 接 L0~L7/LED显示 P3.3/C51单片机 接 EOC/0809
1
图1-1实验线路
四、 参考程序流程图
五、 实验步骤
1、 连接串行通信电缆和电源线; 2、 根据图1-1及接线方案进行电路连接;
2
3、 将C51单片机核心板上的三个开关分别拨到“总线”、“运行”
“单片机”;
4、 打开实验箱上的电源开关。
5、 利用Keil C51创建实验程序,并进行编译生成后缀为.HEX的
文件;
6、 利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM
中(下载最高波特率4800);
7、 观察实验现象,并记录。若实验现象有误请重复第5、6步。
六、 参考程序
ADCADR EQU 0298H ORG 0000H LJMP MAIN ORG 0100H MAIN:
;ADC0809通道0 A/D子程序 ;使用DPTR、
;A/D转换的结果用P1口输出显示
ADC: MOV DPTR,#0298H ;ADCADR ;取0809通道IN0的地址
MOVX @DPTR,A SETB P3.3
;写入任意一个数,启动A/D转换 ;0809A/D读写地址,选择IN0通道
LOOP1:JB P3.3,LOOP1 ;查询EOC管脚,是否变低
LOOP2:JNB P3.3,LOOP2
3
;查询EOC管脚,是否变高
;EOC管脚又变高表示A/D转换完成,可以读数据了 MOVX A,@DPTR MOV P1,A LJMP ADC END ;程序体结束
;从0809中读出A/D之后的数据
七、 思考题
1、 测试记录8~10组输入电压和转换数值,并绘制转换曲线图。 2、 利用延时法设计A/D转换程序实现A/D转换功能; 1、
电压 Led L0 0 1 1 1 0 0 1 1 0 L1 0 1 0 1 1 0 1 0 0 L2 0 1 1 1 0 1 1 1 1 L3 0 1 1 1 1 1 0 0 1 L4 0 1 1 1 1 1 1 1 1 L5 0 0 1 0 1 0 1 0 1 L6 0 0 0 1 1 0 0 1 1 L7 0 0 0 0 0 1 1 1 1 0 0.6 1.2 1.8 2.4 3.0 3.6 4.2 4.9 4
实验二 扩展D/A转换器实验
一、 实验目的
1. 掌握8051单片机扩展D/A转换器的方法;
二、 实验内容
实验设备上有一片D/A转换芯片DAC0832。DAC0832与8051单片机的接口电路如图所示,采用单缓冲方式,具有单双极性输出端(图中的Ua、Ub)。实验电路中CS未与地址译码器连接,实验时CS/DA0832与地址译码器Y2相连,D/A转换输入数据N与输出电压的关系为:Ua=5/256×N(V);Ub=2×5/256×N-5(V)。实验内容为:编写程序产生(1)锯齿波;(2)正弦波。利用示波器观察波形。
三、 接线方案
图2-1 实验线路
5
接线:CS/0832 接 Y2/IO地址
Ua或Ub/0832 接 示波器
四、 参考程序流程图
1、锯齿波
2、正弦波
6
五、 实验步骤
1、 连接串行通信电缆和电源线; 2、 根据图1-1及接线方案进行电路连接;
3、 将C51单片机核心板上的三个开关分别拨到“总线”、“运行”
“单片机”;
4、 打开实验箱上的电源开关。
5、 利用Keil C51创建实验程序,并进行编译生成后缀为.HEX的
文件;
6、 利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM
中(下载最高波特率4800);
7、 观察实验现象,并记录。若实验现象有误请重复第5、6步。
六、 参考程序
1、锯齿波程序 ORG 00H
MOV DPTR, #0290H ;D/A转换器的地址 MOV A, #0 ;设置初值
START: MOVX @DPTR, A ;送出数据,进行转换 INC A ;数据加1 SJMP START END ;程序体结束 2、正弦波程序 ORG 00H
7
START: MOV R4, #0H ;R4为计数器 DA_S: MOV DPTR, #TABLE ;DPTR指向正弦波数据表
MOV A, R4 ;送正弦波数据表偏移量 MOVC A, @A+DPTR ;从数据表中取一个数据 MOV DPTR, #0290H ;DPTR指向D/A转换器的地址
MOVX @DPTR, A ;送出转换数据并启动DA转换 INC R4 ;计数器加1
CJNE R4, #32, DA_S ;判断32个数据是否送完 SJMP START
TABLE: db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh ;正弦波数据表 db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h END
七、 思考题
1、 设计实验程序实现三角波的波形输出。
8
实验三 直流电机PWM调速实验
一、 实验目的
1. 掌握8051单片机控制直流电机的基本原理;
二、 实验原理
直流电机的转动方向是由加在电机上的电压正负极性决定的,电压为正,则顺时针方向转,电压为负,则逆时针方向转,转速的改变是通过改变所加脉冲的占空比,占空比越大,转速越快。占空比示意图如下:
本实验所用的直流电机只能单方向转动,占空比改变电机的转速。
三、 实验内容
实验电路如下图所示,ULN2003A作为电机的驱动芯片。单片机P1.4口输出PWM波控制电机的转速,并利用两个按键来控制电机的转速(按键1为加速;按键2为减速) 接线:
P1.4/C51 单片机 接 直流电机 P1.1/C51单片机 接 按键1
9
P1.2/C51单片机 接 按键2
图3-1实验线路
四、 实验步骤
1、 连接串行通信电缆和电源线; 2、 根据图1-1及接线方案进行电路连接;
3、 将C51单片机核心板上的三个开关分别拨到“”、“运行”
“单片机”;
4、 打开实验箱上的电源开关。
5、 利用Keil C51创建实验程序,并进行编译生成后缀为.HEX的
文件;
6、 利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM
中(下载最高波特率4800);
7、 观察实验现象,并记录。若实验现象有误请重复第5、6步。
10
五、 参考程序(直流电机PWM调速.C) 六、 思考题
1、 利用示波器读取电机的转速(旋转一周产生6个计数脉冲); 2、 设定电机转速的阀值,若超速提供报警信号。
11
实验四 步进电机控制实验
一、 实验目的
1. 掌握8051单片机控制步进电机的基本原理;
二、 实验原理
步进电机驱动是通过对每相线圈中的加电顺序切换来电机作步进式旋转,规律地调节每相线圈上的电信号来改变步进电机的转速和方向。本实验步进电机为20BY-0(四相四拍)永磁步进电机,驱动方式为二相激励方式,每加电一次,转动角度为18o,各线圈通电顺序与步进方向的关系如下表:
三、 实验内容
实验电路如下图所示,电路中ULN2003A为电机驱动芯片。单片机的P1.0~P1.3分别连接到步进电机的四相,通过P1口输出的控制信号来控制步进电机,并利用P2.0来控制电机的正、反转。接线方案如下:
P1.0~P1.3/单片机 接 BA~BD/步进电机 P2.0/单片机 接 K7/电平开关
12
图4-1 实验线路
四、 实验步骤
1、 连接串行通信电缆和电源线; 2、 根据图1-1及接线方案进行电路连接;
3、 将C51单片机核心板上的三个开关分别拨到“”、“运行”
“单片机”;
4、 打开实验箱上的电源开关。
5、 利用Keil C51创建实验程序,并进行编译生成后缀为.HEX的
文件;
6、 利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM
中(下载最高波特率4800);
7、 观察实验现象,并记录。若实验现象有误请重复第5、6步。
五、 参考程序
13
#include unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转 unsigned char code B_Rotation[4]={0x09,0x0c,0x06,0x03};//反转 sbit KEY=P2^0;
void Delay(unsigned int i)//延时 { while(--i);} void F_R() {
unsigned char i;
for(i=0;i<4;i++) //4相
{ P1=F_Rotation[i]; // 正转查表
Delay(1000); // 改变这个参数可以调整电机转 } } void R_R() {
unsigned char i;
for(i=0;i<4;i++) //4相
{ P1=B_Rotation[i]; // 反转查表
Delay(1000); // 改变这个参数可以调整电机转 } } main() { while(1) { if(KEY==0) F_R(); }
else
R_R();
}
六、 思考题
1、 利用示波器读取电机的转速(旋转一周产生6个计数脉冲);
14
2、 修改程序改变电机转速,并读取转速值。
15
附录:
一、 Keil C51编程软件使用说明
Keil C51编程软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、C51语言,界面友好,易学易用。
1、启动Keil C51编程软件,出现编辑界面;
2、建立一个新工程,单击Project菜单,在弹出的下拉菜单中选中New uVision Project选项。
3、然后选择保存路径,输入工程文件名,点击“保存”;
16
4、弹出单片机选择框,选择对应的单片机型号,并点“OK”;
5、完成后,屏幕出现编辑环境;
17
6、点击“File”菜单,在下拉菜单中点击“New”选项;
7、在“Text1”中编写实验程序,完成后保存文件,要保存在所建的工程文件夹中。在“文件名”栏中输入欲使用的文件名,同时必须输入正确的扩展名。注意:如果使用C语言编写程序,则扩展名为.C;如果用汇编语言编写程序,则扩展名为.ASM;
18
8、回到编辑界面,单击“Target 1”前面“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单;
9、单击“Add File to Froup ‘Source Group 1”选择实验程序“SY1.ASM”,
19
然后单击“Add”,则项目中多出SY1.ASM子项;
10、单击“Project”菜单,在下拉菜单中单击“Options for Target ‘Target 1’”;
11、在“Options for Target ‘Target 1’”的选项中选择“Output”选项,并在“Create HEX File”选项前打上“√”,然后点击“OK”;
20
12、单击“Project”菜单,在下拉菜单中单击“Build target”选项,若程序无误,编程成功后,则生成后缀为.HEX的文件,该文件是单片机下载文件。
二、STC-ISP下载软件的使用说明
1、打开“STC-ISP”下载软件,界面如下;
21
2、选择单片机型号,在单片机型号的下拉按钮上单击,选择一致的单片机型号,如:STCC52RC;
3、选择串口,在串口选择时,根据设备所接的串口号进行选择,如:COM1、COM2、USB Serial Port(COM3);
22
4、单击“打开程序文件”,找到所见项目文件夹,选中后缀为.HEX的文件,并单击打开;
5、单击“下载/编程”按钮,将.HEX文件下载到单片机的ROM中,注意,在单击“下载/编程”按钮后,需要将单片机进行一次冷启动(即:将实验箱电源关掉,稍等片刻再打开),程序才能下载成功;
23
6、下载成功后,程序则在单片机内运行,观察实验箱上的实验结果。
24