AD实验报告.docx

上传人:b****7 文档编号:16236669 上传时间:2023-07-12 格式:DOCX 页数:15 大小:157.92KB
下载 相关 举报
AD实验报告.docx_第1页
第1页 / 共15页
AD实验报告.docx_第2页
第2页 / 共15页
AD实验报告.docx_第3页
第3页 / 共15页
AD实验报告.docx_第4页
第4页 / 共15页
AD实验报告.docx_第5页
第5页 / 共15页
AD实验报告.docx_第6页
第6页 / 共15页
AD实验报告.docx_第7页
第7页 / 共15页
AD实验报告.docx_第8页
第8页 / 共15页
AD实验报告.docx_第9页
第9页 / 共15页
AD实验报告.docx_第10页
第10页 / 共15页
AD实验报告.docx_第11页
第11页 / 共15页
AD实验报告.docx_第12页
第12页 / 共15页
AD实验报告.docx_第13页
第13页 / 共15页
AD实验报告.docx_第14页
第14页 / 共15页
AD实验报告.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

AD实验报告.docx

《AD实验报告.docx》由会员分享,可在线阅读,更多相关《AD实验报告.docx(15页珍藏版)》请在冰点文库上搜索。

AD实验报告.docx

AD实验报告

西南科技大学

学生实验报告

 

实验课程名称计算机工业控制

开课实验室东6D214

学院专业班级

学生姓名学号

开课时间2014至2015学年第1学期

 

总成绩

教师签名

 

制造科学与工程学院制

《AD和DA接口技术》实验报告

开课实验室:

东6D2142014年10月14日

学院

制造学院

年级、专业、班

姓名

成绩

课程

名称

计算机工业控制

实验项目

名称

AD和DA接口技术

指导教师

李鹏

一、实验目的

1.了解模/数转换基本原理,掌握ADC0804的使用方法。

2.了解D/A转换的基本原理。

3.了解D/A转换芯片DAC0832的性能及编程方法。

4.了解单片机系统中扩展D/A转换的基本方法。

二、实验内容

(1)A/D实验:

利用实验板上的ADC0804做A/D转换器,利用实验板上的电位器W3提供模拟量输入。

编制程序,将模拟量转换成数字量,用发光二极管显示。

(2)D/A实验:

利用DAC0832控制LED灯的亮度。

三、实验仪器设备

1.单片机实验板一台

2.计算机一台

四、实验步骤

1.打开Keil软件,新建一个工程

2.新建一个文件,在新建文件夹中新建工程

3.选择Atmel中的AT98C51

 

 

4.新建一个text文件并保存为C语言格式

5.调整

6.添加刚建好的文本文件

7.输入程序并进行检测是否有错误或警告,直到无错误无警告为止。

8.打开驱动下载程序

9.观察结果,若结果不对,修改程序,再进行第8步,在观察结果。

五、实验程序流程图

六、实验程序(源程序)

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitadrd=P3^7;

sbitadwr=P3^6;

sbitdiola=P2^5;

sbitdula=P2^6;

sbitwela=P2^7;

sbitp0_7=P0^7;

unsignedcharj,k,adval;

voiddelay(unsignedchari)

{for(j=i;j>0;j--)

for(k=125;k>0;k--);}

voidmain()

{while

(1)

{//wela=1;

p0_7=0;//选通ADCS

adwr=0;//AD写入

_nop_();

adwr=1;

P0=0xff;//关闭ADCS

delay(10);

//wela=0;//关闭有AD片选信号锁存器的锁存端以防止在操作数码管时使AD的片选发生变化

delay(500);//需要注意的是ADC0804在写和读之间的时间间隔要足够长否则无法读出数据

//wela=1;//重新打开有AD片选信号锁存器的锁存端

//P1=0xff;//读取P1口之前先给其写全1

P0=0;//选通ADCS

adrd=0;//AD读使能

adval=P1;//AD数据读取赋给P1口

//adrd=1;

//P0=0xff;//关闭ADCS

//adwr=0;

P1=adval;//同时把AD的值送八个发光二极显示

}

}

七、实验结果记录及分析

八、心得体会

《人机交互接口实验》实验报告

开课实验室:

东6D2142014年10月27日

学院

制造学院

年级、专业、班

姓名

成绩

课程

名称

计算机工业控制

实验项目

名称

人机交互接口实验

指导教师

李鹏

一、实验目的

1.熟悉单片机与键盘、数码管的接口技术

2.了解单片机人机交互接口技术及其编程方法

二、实验内容

分析单片机与键盘、数码管接口的硬件原理图,掌握其工作原理;

编写程序,实现4x4键盘按键的检测、解码(0~F)并驱动6个数码管显示相应的按键代码(0~F)

三、实验仪器设备

1.单片机实验板一块

2.计算机一台

四、实验步骤

1.检查实验板连线是否正确

2.用USB线连接单片机实验板和PC,利用USB接口对实验板供电

3.用keil软件调试程序,在程序无误的时候编译成hex文件,使用串口线与电脑的串口相连,运行串口下载工具STC-ISP,下载程序到单片机中

4.逐一按下键盘的按键,观察数码管数字显示是否与所按键的键值匹配

具体操作:

1.打开Keil软件,关掉之前的工程,新建一个工程project

2.选择Atmel中的AT89C51

3.新建一个Text文本,并保存为“.c”格式

4.编写程序

5.下载

五、实验程序流程图

 

六、实验程序(源程序)

#include

#defineuintunsignedint//宏定义

#defineucharunsignedchar

sbitduan=P2^6;//定义段选

sbitwei=P2^7;//定义位选

ucharcodetable[]={//0--F显示代码

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0};

ucharnum,temp,num1;

voiddelay(uintz)//延时函数

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

ucharkeyscan();//声明

voiddisplay(ucharaa);

voidmain()

{

num=17;

duan=1;//开段选

P0=0;//一开始不按键不显示

duan=0;

wei=1;//开位选

P0=0xc0;//打开6个数码管

wei=0;

while

(1)

{

display(keyscan());

}

}

voiddisplay(ucharaa)

{

duan=1;

P0=table[aa-1];

duan=0;

}

ucharkeyscan()//扫描按键

{

P3=0xfe;//扫描第一行是否有键按下

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);//延时去抖动

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xee:

num=1;

break;

case0xde:

num=2;

break;

case0xbe:

num=3;

break;

case0x7e:

num=4;

break;

}

while(temp!

=0xf0)//松手检测

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfd;//扫描第二行是否有键按下

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xed:

num=5;

break;

case0xdd:

num=6;

break;

case0xbd:

num=7;

break;

case0x7d:

num=8;

break;

}

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfb;//扫描第三行是否有键按下

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xeb:

num=9;

break;

case0xdb:

num=10;

break;

case0xbb:

num=11;

break;

case0x7b:

num=12;

break;

}

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xf7;//扫描第四行是否有键按下

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xe7:

num=13;

break;

case0xd7:

num=14;

break;

case0xb7:

num=15;

break;

case0x77:

num=16;

break;

}

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

returnnum;/*返回num用数组代码显示出来*/

}

七、实验结果记录及分析

答:

实验程序传入芯片后,按芯片上的不同键,会显示不同的数。

这是因为程序中有扫描程序,扫描各行是否有键按下,若是有键按下,按下的是哪个键,对应着程序中编入了不同的数字结果。

当某个键被按下,那么检测(扫描)就不进行,而是等这个按下的键松开后,继续扫描有哪行的那个键被按下,这样来实现不同的显示结果。

同时程序中还可以编写屏幕显示几个数据,通过给P0赋予不同的值,来控制打开数码管的个数,如P0=0xc0,二进制代码为00001100,即打开6个数码管,P0=0xd0,二进制代码为00001101,打开5个数码管,因为低电平控制数码管开,高电平数码管则不显示。

数码管每一段显示与否都是同样通过编写的程序控制的。

如有图,如果要显示1,应该是f、e亮,即00000110

八、心得体会

答:

在这次实验中,主要遇到的问题还是程序的读写,因为确实没有什么程度功底,所以还是比较困难的一件事情,但是我们多去看,结合课本上学到的相关知识,多去联系和理解,这样就会的到不少这方面的收获。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2