总的单片机实验报告17(全部哟)参考模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

重庆交通大学
学生实验报告
实验课程名称单片机原理与应用
实验名称拆字、拼字实验
实验类型设计性
开课实验室语音楼
学院信息科学与工程学院
学生姓名学号
开课时间2012 至2013 学年第1学期
一、实验目的
掌握汇编语言的设计与调试方法,掌握拆字拼字的程序编写方法;
二、实验内容
把7000H的内容拆开,高位送7001H低位,低位送7002H低位,7001H,7002H高
位清零,把7000H、7001H的低位相拼后,送入7002H
三、实验步骤
(1)打开Keil程序,执行菜单命令“Project –“New Project”创建“拆
字、拼字实验”项目,并选择单片机型号为AT89C51;
(2)执行菜单命令“New”创建文件,输入源程序,保存为“拆字、拼字实
验.A51”。

在Project”栏的File项目管理窗口中右击文件组,选择“Add File
to Group‘Source Grop1’”将源程序“拆字、拼字实验.A51”添加到项目中。

(3)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹
出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

(4)执行菜单命令“Project”->“Build Target”,编译源程序。

如果编译
成功,则在“Output Window”窗口中显示没有错误,并创建了“拆字、拼字
实验.HEX”文件。

(5)执行菜单命令“Debug”->“Start /Stop Debug Seesion”,按F11键,
单步运行程序。

四、实验调试及结果
程序:
MOV DPTR,#7000H
MOV A,#68H
MOVX @DPTR,A
MOVX A,@DPTR
ANL A,#0F0H
SWAP A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#7000H
MOVX A,@DPTR
ANL A,#0FH
MOV DPTR,#7002H
MOVX @DPTR,A
结果:
调试方法:单步运行到BP1,观察7000H单元中的内容和A单元中的内容是否为68,单步运行到BP2,观察7001H单元中的内容是否为6,单步运行到BP3,
观察7002H单元中的内容是否为8,若是,程序对,若不是,反复修改程序直到正
确为止。

五、实验分析
试验程序框图如下:
六、 实验思考与总结
在这次试验中,我是第一次接触Keil C51软件,其安装步骤很简单,但对其运行环境和基本操作都很陌生,打开软件,不知从何下手。

通过询问同学和在老师的指点下,经过一段时间的熟悉,开始能够自己动手操作了,于是次开始进入到实验中。

本实验比较简单,参照实验指导书上的代码,通过keil 软件输入,按照其步骤一步一步进行,最终得出结果,经分析,所得结果与该实验的理论结果一样,所以该实验能够完成其功能,该实验成功。

通过本次实验,我学会了Keil C51的使用方法,掌握了汇编语言的基本编程法,好掌握了调试程序的一些方法,对一些不是很复杂的程序能够自己去调试了。

重庆交通大学
学生实验报告
实验课程名称单片机原理与应用
实验名称数据排序实验
实验类型设计性
开课实验室语音楼
学院信息科学与工程学院
学生姓名学号
开课时间2012 至2013 学年第 1 学期
一、实验目的
熟悉8051指令系统,掌握程序设计方法、仿真软件的使用方法。

二、实验内容
编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中n个单字节无符号
二进制整数从小到大的次序排列的数据存放在原来的单元。

三、实验步骤
(1)打开Keil程序,执行菜单命令“Project –“New Project”创建“数据排
序”项目,并选择单片机型号为AT89C51;
(2)执行菜单命令“New”创建文件,输入源程序,保存为“拆字、拼字实验.A51”。

在Project”栏的File项目管理窗口中右击文件组,选择“Add File to Group
‘Source Grop1’”将源程序“数据排序.A51”添加到项目中。

(3)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹出的
对话框中选择“Output”选项卡,选中“Greate HEX File”。

(4)执行菜单命令“Project”->“Build Target”,编译源程序。

如果编译成功,
则在“Output Window”窗口中显示没有错误,并创建了“数据排序.HEX”文件。

(5)执行菜单命令“Debug”->“Start /Stop Debug Seesion”,按F11键,单
步运行程序。

在“Mermory”窗口的“Address”栏中键入“D:30H”,可看出50H-59H
单元的内容由小到大的按顺序排序。

四、实验调试及结果
数据排序程序:
LJMP MAIN
MAIN: MOV 50H,#20H
MOV 51H,#16H
MOV 52H,#10H
MOV 53H,#2AH
MOV 54H,#29H
MOV 55H,#06H
MOV 56H,#1AH
MOV 57H,#0EH
MOV 58H,#0ACH
MOV 59H,#03H
MOV 60H,#01H
MOV R0,#50H
MOV R3,#9H
LP0: CLR 7FH
MOV A,R3
MOV R2,A
MOV R0,#50H
LP1:MOV 20H,@R0
MOV A,@R0
INC R0
MOV 21H,@R0
CLR C
SUBB A,21H
JC LP2
MOV @R0,20H
DEC R0
MOV @R0,21H
INC R0
SETB 7FH
LP2:DJNZ R2,LP1
JNB 7FH,LP3
DJNZ R3,LP0
LP3:SJMP $
END
实验结果:
实验调试方法:(1)打开仿真软件中的内部RAM 窗口,在50H-59H 单元中输入10
个任意排列原始数据。

(2)单步运行程序,两数比较后第一个大于第二个数则所在RAM 位置交换,否则不变。

(3)单步运行程序,检查50-59H 内容是否已经按从小到大次序排列。

(4)连续运行,再打开仿真软件中的RAM 存储窗口,查看50H 内容是否由10个数据按从小到大次序排列。

(5)程序运行结果如果不正确,则应分段检查程序,用单步方式调试程序,修改软件初始值,让排序数据变大,并用程序存储器数据序列测试程序的正确性。

五、 实验分析 实验框图如下图:
N N
Y
开 始
数据块首地址送R0
I(n)与i(n-1)位子交换
设置数据长度R3中
交换标志位清零外循环次数作
为本次循环次数 I(n)送20H ,i(n-1)送21H
交换标志位置1
I(n)>=i(n-1)?
实验结果分析:经分析,所得结果与该实验的理论结果一样,所以该实验能够完成其功能,该实验成功。

六、实验思考与总结
有了第一次试验的熟悉过程,在做该实验时比较顺利,参照实验指导书上的代码,通过keil 软件输入,按照其步骤一步一步进行,最终得出结果,经分析,所得结果与该实验的理论结果一样,所以该实验能够完成其功能,该实验成功。

通过本次实验,我学会了Keil C51的使用方法,进一步掌握了汇编语言的基本编程法,能自己设计程序对数据进行排序,掌握了调试程序的一些方法,对一些不是很复杂的程序能够自己去调试了。

重庆交通大学
学生实验报告
实验课程名称单片机原理与应用
实验名称P口彩灯控制实验
实验类型设计性
开课实验室语音楼
学院信息科学与工程学院
学生姓名学号
开课时间2012 至2013 学年第 1 学期
七、实验目的
通过实验了解单片机最小系统;掌握P0口作为输入输出方式使用时,CPU对P0口的操作方法。

八、实验内容
控制要求为:(1)正常情况下,8个发光二极管顺序点亮;
(2)按下K1时,第1个和第8个发光二极管闪烁,闪烁间隔为1s;
(3)按下K2时,8个发光二级管闪烁,闪烁间隔为0.5s。

(4)发光二极管由单片机P0口控制。

参照参考程序结构,但必须添加修改程序的内容,并调试、正确运行。

九、实验步骤
(1)用Protuse按单片机最小系统设计流水灯程序电路图;
(2)打开Keil程序,执行菜单命令“Project –“New Project”创建“P
口彩灯”项目,并选择单片机型号为AT89C51;
(3)执行菜单命令“New”创建文件,输入源程序,保存为“P口彩灯.A51”。

在Project”栏的File项目管理窗口中右击文件组,选择“Add File to Group
‘Source Grop1’”将源程序“p口彩灯.A51”添加到项目中。

(4)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹
出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

(5)执行菜单命令“Project”->“Build Target”,编译源程序。

如果编译
成功,则在“Output Window”窗口中显示没有错误,并创建了“P口彩灯.HEX”
文件。

(6)将“P口彩灯.HEX”文件下载到Protues软件平台中的虚拟芯片上运行。

十、实验调试及结果
(1)实验电路图:
(2)实验程序:
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit DIPswitch1=P1^0;
sbit DIPswitch2=P1^1;
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;
void delay(void)
{
uint i;
for(i=0;i<35530;i++);
}
void main(void)
{
P0=0XFF;
P1=0XFF;
while(1)
{
if(DIPswitch1==0)
{
LED1=~LED1;
LED8=~LED8;
delay();
}
else if(DIPswitch2==0)
{
P0=~P0;
}
else
{
P0=0X00;
}
}
十一、}实验分析
正常情况下:
按下K1时的结果:
按下K2时的结果:
结果分析:有实验结果可知,在正常情况下8个LED灯顺序点亮,当按下K1时,第一个和第八个LED灯闪烁,其余灯一直亮着没有闪烁。

当按下K2时,8个灯全部闪烁。

实验结果表明该程序能够实现本实验的功能。

十二、实验思考与总结
本次实验主要用查询方式检查按键有没有按下去、用单片机的P0口对二极管的输出控制,在这次试验中,我是第一次把Keil C51软件和protues软件相结合,
把keil中的程序通过protues平台下载到其虚拟芯片上进行仿真,从而得出其理想
化结果。

Protues软件在以往的实验中已经用到过,所以本实验完成得还算顺利,除了在把keil中的软件下载到protues中时遇到点问题外,其他的都是参照实验指导书上的代码,通过keil 软件输入,按照其步骤一步一步进行,最终在同学和老师的帮助下得到结果,经分析,所得结果与该实验的理论结果一样,所以该实验能够完成其功能,该实验成功。

通过本次实验,我学会了Keil C51的使用方法,掌握了c语言的基本编程法,自己能够把所编写的程序代码下载到电路图中的芯片中进行模拟仿真。

重庆交通大学
学生实验报告
实验课程名称单片机原理与应用
实验名称数码管显示实验
实验类型设计性
开课实验室语音楼
学院信息科学与工程学院
学生姓名学号
开课时间2012 至2013 学年第 1 学期
一、实验目的
通过实验掌握数码管显示数据的方法,熟悉有关元器件的使用方法。

二、实验内容
(1)开机上电后,左右循环显示‘1’‘2’‘3’‘4’;
(2)按K1键,右循环显示‘1’‘2’‘3’‘4’;
(3)按K2键,无闪烁显示,先四个显示块显示1,2,3,4,1s后四个显示块显示5,6,7,8。

三、实验步骤
(1)用Protuse按单片机最小系统设计流水灯程序电路图;
(2)打开Keil程序,执行菜单命令“Project –“New Project”创建“数
码管显示”项目,并选择单片机型号为AT89C51;
(3)执行菜单命令“New”创建文件,输入源程序,保存为“数码管显示.A51”。

在Project”栏的File项目管理窗口中右击文件组,选择“Add File to Group
‘Source Grop1’”将源程序“数码管显示.A51”添加到项目中。

(4)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹
出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

(5)执行菜单命令“Project”->“Build Target”,编译源程序。

如果编译
成功,则在“Output Window”窗口中显示没有错误,并创建了“数码管显示.HEX”
文件。

(6)将“数码管显示.HEX”文件下载到Protues软件平台中的虚拟芯片上运行。

四、实验调试及结果
十三、电路图:
(2)实验程序:
#include<reg52.h>
#define uchar unsigned char//宏定义
#define uint unsigned int
sbit K1=P3^2;
sbit K2=P3^3;
void delay(uint z)//延时约1ms
{
uint m,n;
for(m=110;m>0;m--)
for(n=z;n>0;n--);
}
uchar table[]={0x01,0x02,0x03,0x04};
uchar table1[]={0x05,0x06,0x07,0x08};
uchar table2[]={0x01,0x02,0x04,0x08};
uchar table3[]={0x08,0x04,0x02,0x01};
void main()
{
uchar i;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EA=1;
while(1)
{
for(i=0;i<4;i++)
{
P0=table[i];
P2=table2[i];
delay(500);
}
}
}
void int0() interrupt 0
{
uchar j;
for(j=0;j<4;j++)
{
P0=table[j];
P2=table3[j];
delay(500);
}
}
void int1() interrupt 2
{
uchar k;
for(k=0;k<4;k++)
{
P0=table[k];
P2=table2[k];
delay(50);
}
delay(1000);
for(k=0;k<4;k++)
{
P0=table1[k];
P2=table2[k];
delay(50);
}
}
五、实验分析
开机上电时实验结果:
按下K1键时的实验结果:
结果分析:有实验结果可知,当上电时,LED灯上显示的“1”、“2”、“3”、“4”
按顺序依次向左循环显示;当按下K1键时,循环方向立马由左变向右循环显示。

当按下K2时,开始时同时显示1234,一会就变成同时显示出5678.则实验实现了其功能,该试验成功。

六、实验思考与总结
本次实验主要是通过单片机对数码管的控制,开机上电后数码管左循环显示,按下一个按键右循环显示,按下另一个按键同时显示,但在做此次实验出现了一些问题,数码管就是不能同时显示数字,最后通过问老师才明白。

通过本次实验,我知道了数码管的工作原理,进一步熟悉和掌握了Keil 与protues 的使用。

重庆交通大学
学生实验报告
实验课程名称单片机原理与应用
实验名称键盘、数码管显示综合实验
实验类型设计性
开课实验室语音楼
学院信息科学与工程学院
学生姓名学号
开课时间2012 至2013 学年第 1
学期
一、实验目的
通过实验掌握在单片机输入输出口线不够用时,怎样扩展接口的方法来支持8位LED显示和16键盘集成实现。

熟悉8155、8279等芯片性能;掌握其编程方法。

掌握键盘子程序调试方法,掌握按一个键并将键值显示出来的编程方法,这是诊断硬件、测试硬件、产品开发、软件编程必须掌握的方法。

二、实验内容
(1)编写并调试出一个键盘实验子程序
(2)用子程序调用方法,分别调用键盘子程序和显示子程序,将按一个键的键值,在数码管上显示出来
(3)用C51必须重新编写上述内容的程序系统
三、实验步骤
(1)用Protuse按单片机最小系统设计流水灯程序电路图;
(2)打开Keil程序,执行菜单命令“Project –“New Project”创建“键
盘、数码管显示综合实验”项目,并选择单片机型号为AT89C51;
(3)执行菜单命令“New”创建文件,输入源程序,保存为键盘、数码管显
示综合实验.A51”。

在Project”栏的File项目管理窗口中右击文件组,选择
“Add File to Group‘Source Grop1’”将源程序“键盘、数码管显示综合
实验.A51”添加到项目中。

(4)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹
出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

(5)执行菜单命令“Project”->“Build Target”,编译源程序。

如果编译
成功,则在“Output Window”窗口中显示没有错误,并创建了“键盘、数码
管显示综合实验.HEX”文件。

(6)将“键盘、数码管显示综合实验.HEX”文件下载到Protues软件平台中
的虚拟芯片上运行。

四、实验调试及结果
程序:
ORG 0000H
START: LJMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
MOV 7AH,#00
MOV 7BH,#01
MOV 7CH,#02
MOV 7DH,#03
MOV 7EH,#04
MOV 7FH,#05
MOV DPTR,#7F00H
MOV A,#03H
MOVX @DPTR,A
LOOP: LCALL DISP
LCALL KEY
MOV A,R4
CJNE A,#88H,DSP
SJMP LOOP
DSP: MOV 7AH,A
MOV 7BH,#010H
MOV 7CH,#010H
MOV 7DH,#010H
MOV 7EH,#010H
MOV 7FH,#010H
SJMP LOOP
;按键子程序
KEY: MOV R4,#00H
MOV R2,#01H
KEY1: MOV DPTR,#7F02H
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
JB ACC.0,KEY2
MOV A,#00H
AJMP KEY5
KEY2: JB ACC.1,KEY3
MOV A,#01H
AJMP KEY5
KEY3: JB ACC.2,KEY4
MOV A,#02H
AJMP KEY5
KEY4: JB ACC.3,NEXT
MOV A,#03H
KEY5: ADD A,R4
MOV R4,A
RET
NEXT: MOV A,R4
ADD A,#04
MOV R4,A
MOV A,R2
JB ACC.3,NEXT1
RL A
MOV R2,A
AJMP KEY1
NEXT1: MOV R4,#88H
RET
;数码管显示程序
DISP: MOV R0,#7AH
MOV R3,#01H
DISPB1: MOV DPTR,#7F02H
MOV A,#0H
MOVX @DPTR,A
MOV DPTR,#7F01H
MOV A,@R0
ADD A,#014H
MOVC A,@A+PC
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#7F02H
MOVX @DPTR,A
ACALL DELAY
INC R0
MOV A,R3
JB ACC.6,DISPB2
RL A
MOV R3,A
AJMP DISPB1
DISPB2: MOV R3,#01H
RET
SEGPT2: Db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H db 7FH,6FH,77H,7CH,39H,5EH,79H,71H db 00H,02H,08H,00H,59H,0FH,76H
;延时子程序
DELAY: MOV R4,#0FFH
DELAY1: DJNZ R4,DELAY1
RET
END
实验结果:
Y
实验分析:由实验结果可知,当按键按下0-9中对应数字的按键时,在8位LED显示管上就会显示出相应的数字。

如图示结果第一张图片。

当按下A-F字
母对应的按键时,8位LED显示管上同样会显示出相应的字母,如图实验结果第
二张图片所示。

则程序可实现其功能。

该实验成功。

六、实验思考与总结
此次实验相对于前几个实验电路图比较复杂,在连接电路图时用上了总线的连接。

由于该实验的程序是用汇编语言编写的,其程序代码比较多,结构比较复
杂,对于其理解上存在一些问题。

但是通过本次试验,我还是有所收获。

本次试
验让我掌握了运用8155芯片进行端口扩展的使用方法,提高了编程的意识,在编
程的技术上还存在很多不足之处,在以后的学习中还需要更进一步的学习和练习。

重庆交通大学
学生实验报告
实验课程名称单片机原理与应用
实验名称A/D转换实验
实验类型设计性
开课实验室语音楼
学院信息科学与工程学院
学生姓名学号
开课时间2012 至2013 学年第 1
学期
一、实验目的
了解ADC0809/ADC0808的工作原理,掌握其接口原理,熟悉CPU中断方式和查询方式读取A/D转换结果的方法。

二、实验内容
(1)用中断方式编写并调试出一个程序
(2)用查询方式编写并调试出一个程序
(3)用调用显示子程序方法,将转换结果在显示块上显示出来
(4)将采样结果以8位LED显示进行编码,以得到将0-5V区间分为256级显示效果
(5)用C51重新编写程序实现上述要求C程序
三、实验步骤
(1)用Protuse按单片机最小系统设计流水灯程序电路图;
(2)打开Keil程序,执行菜单命令“Project –“New Project”创建“A/D
转换实验”项目,并选择单片机型号为AT89C51;
(3)执行菜单命令“New”创建文件,输入源程序,保存为“A/D转换实验.A51”。

在Project”栏的File项目管理窗口中右击文件组,选择“Add File to Group
‘Source Grop1’”将源程序“A/D转换实验.A51”添加到项目中。

(4)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹
出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

(5)执行菜单命令“Project”->“Build Target”,编译源程序。

如果编译
成功,则在“Output Window”窗口中显示没有错误,并创建了“A/D转换实
验.HEX”文件。

(6)将“A/D转换实验.HEX”文件下载到Protues软件平台中的虚拟芯片上运行。

四、实验调试及结果
电路图:
C语言程序:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//ADC0809引脚定义
sbit OE=P3^0;
sbit EOC=P3^3;
sbit ST=P3^1;
sbit CLK=P3^2;
//延时
void Delayms(uint ms)
{
uchar i;
while(ms--)for(i=0;i<120;i++);
}
//显示转换结果
// 主程序
void main()
{
uint temp;
TMOD=0x02;
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
while(1)
{
ST=0;ST=1;ST=0;//启动转换
while(EOC==0); //等待转换结果
OE=1; //允许输出
temp=P2; //显示A/D转换结果
P1=temp;
Delayms(5);
OE=0; //关闭输出
}
}
//T0定时器中断给ADC0809提供时钟信号
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0809时钟信号
}
五、实验分析
实验结果:
实验结果分析:有实验结果可知,随着滑动变阻器中箭头的位置的变化,8个LED灯的亮暗也会随之变化。

且经多次改变其滑片的位置不难发现,用8个LED灯从上到下的亮暗分别代表第1位到第8位的高低电平(即亮为1,暗为0),把所得的八位二进制数转换成10进制数即可得出其源码。

有实验结果实现了这一功能。

六、实验思考与总结
本次实验是一个关于A/D转换的实验,通过对8个LED灯的亮暗的变化得出了A/D转换过程中的编码知识,电路图有点复杂,在连接的时候要注意各节点间
的对应关系。

对于其代码部分掌握的不是很好,有一些语句不知道是什么意思,
通过请教老师和询问同学,对程序也懂了个大概,但还需自己花功夫去仔细体会
其中的含义。

重庆交通大学
学生实验报告
实验课程名称单片机原理与应用
实验名称D/A转换实验
实验类型设计性
开课实验室语音楼
学院信息科学与工程学院
学生姓名学号
开课时间2012 至2013 学年第 1 学期
七、实验目的
了解DAC832的工作原理,掌握其与单片机接口设计方法
二、实验内容
(1)编写并调试出一个输出方波的程序
(2)编写并调试出一个输出阶波的程序
(3)编写并调试出一个输出三角波的程序
(4)编写并调试出一个输出锯齿波的程序
(5)编写一个驱动直流电机的程序
(6)用C51修改参考程序
三、实验步骤
(1)用Protuse按单片机最小系统设计流水灯程序电路图;
(2)打开Keil程序,执行菜单命令“Project –“New Project”创建“D/A
转换实验”项目,并选择单片机型号为AT89C51;
(3)执行菜单命令“New”创建文件,输入源程序,保存为“D/A转换实验.A51”。

在Project”栏的File项目管理窗口中右击文件组,选择“Add File to Group
‘Source Grop1’”将源程序“D/A转换实验.A51”添加到项目中。

(4)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹
出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

(5)执行菜单命令“Project”->“Build Target”,编译源程序。

如果编译
成功,则在“Output Window”窗口中显示没有错误,并创建了“D/A转换实
验.HEX”文件。

(6)将“D/A转换实验.HEX”文件下载到Protues软件平台中的虚拟芯片上运行。

四、实验调试及结果
程序:
(1)波形发生器:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define DAdata P1 //DA数据端口
sbit cs=P3^7;
sbit wr=P3^6;
void delay(uint xms)
{
uint x,y;
for(x=110;x--;x>0)
for(y=xms;y--;y>0);
}
void square() //方波
{
DAdata=0xff;
delay(1);
DAdata=0x00;
delay(1);
}
void jieti(void)//阶梯波
{
DAdata=0x00;
delay(1);
DAdata=0x3f;
delay(1);
DAdata=0x7f;
delay(1);
DAdata=0xaf;
delay(1);
DAdata=0xff;
delay(1);
}
void saw(void)// 锯齿波
{
int i;
for(i=0;i<255;i++)
DAdata=i;
}
void sanjiao()
{
int i;
for(i=0;i<255;i++)
DAdata=i;
for(i=255;i>0;i--)
DAdata=i;
}
void main()
{
cs=0;
wr=0;
while(1)
{
square();
//jieti();
//saw();
//sanjiao();
}
}
(2)电机驱动程序:
ORG 0000H
START: LJMP MAIN
ORG 0030H
MAIN: MOV DPTR,#7FFFH
MOV A,#3FH
LOOP: MOVX @DPTR,A
JNB P1.0,INCD
JNB P1.2,DECD
LJMP LOOP
INCD: ADD A,#20H
CJNE A,#0E0H,LOOP
MOV A,#20H
LJMP LOOP
DECD: CLR C
SUBB A,#20H
CJNE A,#00H,LOOP
MOV A,#20H
SJMP LOOP
END
五、实验分析
实验结果:
实验分析:该实验通过示波器输出可见其实现了对方波、锯齿波、三角波的输出。

把示波器换成电动机,在运行程序可以观测到电动机转动起来了,当按下加速键时,观测
到电动机转速越来越快,当按下减速键后,观测到电动机转速渐渐慢下来了。

六、实验思考与总结
本次实验的内容为D/A转换实验,通过此次本次实验,让我对D/A的转换过程有了一个框架,对其细节部分还需花功夫去慢慢体会。

通过编程实现各种波形
的输出,我学会了对各种波形的编程方法。

更加熟练的掌握keil与protues软件
的使用,在实验中暴露了许多问题,在解决问题的过程中收获很大,仍需进一步
的学习和不断练习。

友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。

相关文档
最新文档