#definestart1
#defineoc2
intb=1;
inti;
voidInit_INT0()
{
P0=255;
EA=1;//首先开启总中断
EX0=1;//开启外部中断0
IT0=0;//设置成低电平触发,1为下降沿触发
}
voidmain(void)
{
Init_INT0();
clear_bit(P2,oc);
set_bit(P2,start);
for(i=0;i<100;i++);
clear_bit(P2,start);
while
(1)
{
set_bit(P2,0);
while(b--);
b=50;
clear_bit(P2,0);
while(b--);
b=50;
}
}
voidint_ex0(void)interrupt0using1
{
set_bit(P2,oc);
clear_bit(P2,start);
P1=P0;
set_bit(P2,start);
for(i=0;i<100;i++);
clear_bit(P2,start);
clear_bit(P2,oc);
}
当模拟输入端的输入电压为两伏特是显示灯的明亮如上图所示。
实验仪器
PC机、Proteus软件、KeilμVision2软件
实验步骤
1.按照实验原理及接线图在Proteus中画出仿真电路图,接好AT89C51、ADC0809和电位器:
电位器的两端分别接到+5V和地,电位器的输出端连到ADC0809的INT0。
2.编写中断方式工作的程序,输入程序。
进行仿真。
3.旋转电位器,测取不同的模拟电压输入时,读取发光二极管显示的转换结果是否符合5V/256=Vin/D的规律,并记录。
画出模拟电压和数字量关系图,看两者是否成线性关系。
实验内容
A/D转换接线图
实验数据
LED
输入电压
D8
D7
D6
D5
D4
D3
D2
D1
1V
灭
灭
亮
亮
灭
灭
亮
亮
2V
灭
亮
亮
灭
灭
亮
亮
灭
3V
亮
灭
灭
亮
亮
灭
灭
亮
4V
亮
亮
灭
灭
亮
亮
灭
灭
5V
亮
亮
亮
亮
亮
亮
亮
亮
实验总结
1.通过本本实验更进一步了解了查询方式和用查询EOC状态的方式判断转换是否结束,更进一步掌握了编程的原理和应用。
2.通过本实验采用软件延时的办法等待转换结束,更进一步了解了用实验法测定ADC0809的最短转换时间。
指导教师意见
签名:
年月日
实验报告二
学院:
电气工程学院专业:
测控技术与仪器班级:
测仪101
姓名
学号
实验组
实验时间
指导教师
成绩
实验项目名称
DAC0832与MCS-51单片机接口实验
实验目的
通过本实验的学习,使学生掌握D/A转换的工作原理,掌握芯片DAC0832与单片机接口电路的设计方法,掌握芯片DAC0832的程序设计方法,为后续“测控系统原理课程设计”的学习奠定基础。
实验要求
1.编写程序:
送数据00~0FF到DAC0832,用万用表测量数模转换的输出端T-DAOUT,观察输出电压的变化。
2.试编写程序:
使DAC0832输出三角波,并用示波器观察。
实验原理
DAC0832芯片是8位的D/A转换集成芯片,有数据锁存器,选片、读、写控制信号线,故可以和单片机直接接口。
由于DAC0832芯片为电流输出方式,但在实际应用中,往往需要电压输出方式,所以在线路设计上接入一片运算放大器来实现电流转换为电压。
当数字量输入在00H~FFH范围时,电压的输出量有两种形式:
一种是单极性输出,电压的输出量为0~+XV或0~-XV,另一种是双极性输出,电压的输出量为±XV。
在本实验中采用单缓冲器、单极性输出方式,数字量在00~FFH变化时,输出模拟量在0~2.5V之间变化。
该电路包括一片DAC0832和一个运算放大器OP07。
实验原理及接线图电路如图10所示,DAC0832片选信号
为低电平有效,直接接P2.6,即P2.6为低时选中DAC0832,据P2.6=0可算得DAC0832选片地址。
(
、
同时与DGND连接,
与8031的
连接,这样8位DAC寄存器始终处于导通状态,因此,当数据从数据线上输入寄存器时,便直接进入8位DAC寄存器,并且由8位D/A转换器,进行D/A转换,因此,此电路为异步输出结构方式。
)DAC0832内部没有参考电压,8脚接负的参考电压,输出为正电压,8脚接正的参考电压,输出为负电压。
由于DAC0832是有数字量的输入锁存功能,故数字量可以直接从P0口送入,执行下面几个指令就能完成一次D/A转换。
MOVDPTR,#ADDR_DAC
MOVA,#DATA
MOVX@DPTR,A
实验仪器
PC机、KeilμVision2软件,COS5041CH示波器,万用表,TOP2003编程器,自制实验板。
实验步骤
1.按照实验原理及接线图在实验板上连接好AT89C51、DAC0832和电位器。
2.编写两个程序:
程序1将数据00~0FF送到DAC0832,程序2使DAC0832输出三角波。
输入程序,编译并烧写到AT89C51中,并将芯片插入实验板插座上。
3.检查连线无误后接通电源。
4.对DAC0832进行校对:
调零:
送数据00给0832,用万用表测试T—DAOUT端,若不为零,则调整VR1。
调满度:
送数据给0832,测试T—DAOUT端电压,若不等于2.5V,则调整VR2。
5.在数据00~FFH之间选若干点(直接在程序中进行修改),送DAC0832进行转换,测试T—DAOUT端电压,运行程序1,并记录。
6.运行程序2,用示波器测试T—DAOUT端,观察输出波形。
实验内容
程序:
#include
#include
#definewriteP3&0XFE
#definecsP3&0XFD
#defineunwriteP3|1
#defineuncsP3|2
unsignedcharcunter=2000;
unsignedchartrans_data=0;
unsignedchartime_interval=2;
bitflag=1;
voiddelay_ms(unsignedinta)
{
while(a--)
while(cunter--);
cunter=5;
}
voidtrangle_data_display(void)
{
while
(1)
{
//P3=unwrite;
P0=trans_data;
P3=0;
delay_ms(time_interval);
P3=1;
delay_ms(time_interval);
if((trans_data<=250)&&flag)
{
trans_data++;
if(trans_data==250)
flag=0;
}
elseif(flag==0)
{
trans_data--;
if(trans_data==0)
flag=1;
}
}
}
voidport_initial(void)
{
P0=0;
P3=255;
}
voidmain(void)
{
port_initial();
trangle_data_display();
}
实验数据
实验总结
通过本实验的学习,我更进一步掌握D/A转换的工作原理,掌握芯片DAC0832与单片机接口电路的设计方法,掌握芯片DAC0832的程序设计方法,掌握了怎么编写程序才能使输出端输出方波或锯齿波。
指导教师意见
签名:
年月日
实验报告三
学院:
电气工程学院专业:
测控技术与仪器班级:
测仪101
姓名
学号
实验组
实验时间
指导教师
成绩
实验项目名称
键盘、LED显示综合实验
实验目的
通过实验掌握键盘、显示器的接口方法;掌握键盘子程序调试方法,掌握按一个键并将其键值显示出来的方法,训练最简单的人机接口的软件和硬件设计技能,为后续“测控系统原理课程设计”的学习奠定基础。
实验要求
1.编写8279初始化程序(程序1),并向8279缓冲区写入显示字符,采用8位LED右端送入方式显示,程序控制字符“8”由右至左循环显示。
2.编写由左至右循环显示字符“F”的程序(程序2)。
3.编写每按下一个按键,将其键值显示在LED上的程序(程序3)。
实验原理
8279芯片是一种通用的可编程键盘、显示接口器件,能完成对64位按键和16位
LED显示器的管理。
8279有多种功能和多种工作模式,其功能和模式靠设定命令字
来确定。
8279引脚功能图,如图11所示。
与CPU的接口线共15个引脚:
D0~D7
双向三态数据总线、RESET复位输入端;
片选输入端;CLK时钟输入端;A0数据
选择输入端;读操作输入端;
写操作输入端;IRQ中断请求输入端。
8279包括键盘与显示两部分。
键盘部分可以为64个按键的阵列提供扫描;能够自动消除键抖动影响;具有对按键同时按下的保护;能把键信息存入8字符先进先出栈;可向CPU发中断请求,得到相应后,使CPU获取按键信息;也可以接受CPU对键信息的查询。
显示部分有16字节显示RAM,可用于刷新显示;显示RAM可由CPU直接读/写;8279对显示RAM能够以地址自动增1方式进行读/写;显示方式具有从显示器左端或右端送入两种。
与键盘的接口线共14个引脚。
SL0~SL3扫描输出端,用于扫描键盘和显示器,可以编程设定为编码或译码输出。
RL0~RL7返回输入端,可通过键盘矩阵与扫描线相连,内部电路使其保持高电平,直至有键闭合使相应线拉向低电平。
在选通方式下,用作8位输入。
SHIFT移位输入端,在键盘扫描方式下,它与键代码一起被存储,常用来扩充上下挡功能键。
在传感器方式和选通方式下,SHIFT无效。
CNTL/STB控制/选通输入端。
在键盘工作方式下,用作输入存储键信息;在选通方式下,用作选通数据存入FIFORAM;在传感器方式下无效。
OUTA0~OUTA3A组显示输出端。
输出显示数据,多位数字显示时应与扫描线SL0~SL3同步。
8279的命令字近10种,所以使用8279之前,应详细阅读其器件手册。
实验仪器
PC机、KeilμVision2软件,TOP2003编程器,自制实验板。
实验步骤
1.运行程序1,观察显示是否正确。
2.运行程序2,观察显示是否正确。
3.运行程序3,观察按键按下后LED上显示的键值是否正确。
实验内容
1.编写8279初始化程序(程序1),并向8279缓冲区写入显示字符,采用8位LED右端送入方式显示,程序控制字符“8”由右至左循环显示。
2.编写由左至右循环显示字符“F”的程序(程序2)。
3.编写每按下一个按键,将其键值显示在LED上的程序(程序3)。
实验数据
实验程序:
INIT:
MOVDPTR,#7FFFH
MOVA,#0D1H
MOVX@DPTR,A
MOVA,#010H
MOVX@DPTR,A
MOVA,#28H
MOVX@DPTR,A;设置扫描频率
SETBEA
SETBEX1
KINT:
PUSHPSW
PUSHDPH
PUSHDPL
PUSHACC
MOVDPTR,#7FFFH
MOVA,#40H
MOVX@DPTR,A
MOVDPTR,#7FFFH
MOVXA,@DPTR
MOVB,A
POPACC
POPDPL
POPDPH
POPPSW
RETI
DISPL:
MOVDPTR,#7FFFH
MOVA,#90H
MOVX@DPTR,A
MOVR0,#78H
MOVR7,#08H
MOVDPTR,#7FFEH
DISPL1:
MOVA,@R0
ADDA,#05H
MOVCA,@A+PC
MOVX@DPTR,A
INCR0
DJNZR7,DISPL1
RET
SEGPT:
DB08H,08H,08H,08H,08H,08H,08H,08H
END
实验总结
首先,通过本实验初步掌握了键盘、显示器的接口方法;掌握了键盘子程序调试方法;掌握了按一个键并将其键值显示出来的方法。
其次,通过本实验使我初步掌握了简单人机接口的软件和硬件的设计技能,为后续“测控系统原理课程设计”的学习奠定了基础、确定了学习方向。
再次,在本实验做过后,使我对KeilμVision2软件的开发和设计环境方面又得到了进一步的提升。
最后,在实验过程中我又对以前的学过的单片机、数字电路等方面的知识进行很大程度上巩固,使我牢牢地掌握了理论知识和实验设计方法和分析方法。
指导教师意见
签名:
年月日
实验报告四
学院:
电气工程学院专业:
测控技术与仪器班级:
测仪101
姓名
学号
实验组
实验时间
指导教师
成绩
实验项目名称
PLD实现三人表决器
实验目的
1.通过本次实验,引导学生以计算机辅助设计的手段来设计数字逻辑电路;
2.掌握QuartusII集成开发环境软件原理图输入的设计流程;
3.掌握简单流水灯的工作原理,学会通过QuartusII建立原理图设计小型数字电路;
4.掌握可编程逻辑器件(PLD)的开发步骤;
5.掌握对设计进行编译、仿真的方法。
实验要求
1 创建Vote工程
2 建立原理图文件
3 管脚分配和编译
4 编辑输入波形和进行仿真
实验原理
1 创建Vote工程
2 建立原理图文件
3 管脚分配和编译
4 编辑输入波形和进行仿真
实验仪器
PCQuartusII
实验步骤
1.1 双击桌面上QuartusII5.0的图标,启动QuartusII5.0软件。
1.2 通过File=>NewProjectWizard…菜单命令启动新项目向导。
1.3 在随后弹出的对话框上点击Next按钮,继续。
1.4 在Whatistheworkingdirectoryforthisproject栏目中设定新项目所
使用的路径;在Whatisthenameofthisproject栏目中输入新项目的名字:
vote,点击Next按钮。
1.5 在这一步,向导要求向新项目中加入已存在的设计文件。
因为我们的设
计文件还没有建立,所以点击Next按钮,跳过这一步。
1.6 在这一步选择器件的型号。
Family栏目设置为Cyclone,选中
Specificdeviceselectedin‘Availabledevices’list选项,在Availabledevice
窗口中选中所使用的器件的具体型号,这里以EP1C6Q240C8为例。
点击
Next按钮,继续。
1.7 在这一步,可以为新项目指定综合工具、仿真工具、时间分析工具。
在
这个实验中,我使用QuartusII5.0的默认设置,直接点击Next按钮,继续。
1.8 确认相关设置,点击Finish按钮,完成新项目创建
2.1 在File菜单下,点击New命令。
在随后弹出的对话框中选择Block
Diagram/SchematicFile选项,点击OK按钮。
在File菜单下选择SaveAs
命令,将其保存,并加入到项目中。
2.2 根据上面的真值表,做卡诺图简化,可以得出:
F=S1S2+S1S3+S2S3。
双击原理图的任一空白的处,会弹出一个元件对话框。
在Name栏目中输入
and2,我们就得到一个2输入的与门。
2.3 点击OK按钮,将其放到原理图的适当位置。
重复操作,放入另外两个
2输入与门。
也可以通过右键菜单的Copy命令复制得到。
2.4 双击原理图的空白处,打开元件对话框。
在Name栏目中输入or3,
我们将得到一个3输入的或门。
点击OK按钮,将其放入原理图。
2.5 双击原理图的空白处,打开元件对话框。
在Name栏目中输入not,我
们会得到一个非门。
点击OK按钮,将其放入原理图。
2.6 将鼠标入到元件的引脚上,鼠标会变成“十”字形状。
按下左键,拖动鼠标,
就会有导线引出。
根据我们要实现的逻辑,连好各元件的引脚。
2.7 双击原理图的空白处,打开元件对话框。
在Name栏目中输入Input,我们
便得到一个输入引脚。
点击OK按钮,放入原理图。
重复操作,给我们的电路
加上3个输入引脚。
2.8 双击输入引脚,会弹出一个属性对话框。
在这一对话框上,我们可更改引
脚的名字。
我们分别给3个输入引脚取名in1、in2、in3。
2.9 双击原理图的空白处,打开元件对话框。
在Name栏目中输入output,我
们会得到一个输出引脚。
点击OK按钮,放入原理图。
重复操作,给我们的电
路加上两个输出引脚。
给两个输出引脚分别命名为led1、led2。
3.1在Assignments菜单下,点击Pins命令,启动PinPlanner工具。
在这个工
具中,我们可以为我们的电路的端子分配器件的引脚。
在AllPins表格中,双
击NodeName列的newnode单元,输入端子的名字。
在同一行的Location列,
选择要分配的位置。
重复操作,为每个端子都分配适当的脚位。
3.2在Assignments菜单下,点击Device…命令。
在随后弹出的对话框中点击
Device&PinOptions…按钮,进入Device&PinOptions对话框。
切换到
configuration页,在ConfigurationDevice栏目中,选中useconfiguration
device选项,配置器件型号选择EPCS1,同时,选中Generatecompressed
bitstreams选项。
3.3切换到UnusedPins页,在Reservedallunusedpins栏目中,选择Asinput
tri-stated。
因为我们的设要在开发板上演示,所以把没有用到的管脚设为输入,
以避免与开发板上其它电路发生冲突。
点击确定按钮,确认设置。
回到Seting
对话框,点击OK按钮。
3.4在Processing菜单下,点击StartCompilation命令,开始编译我们的项目。
编译结束后,点击确定按钮。
4.1在把我们的设计下载到开发板上验证之前,我们可以先做一下仿真。
首先,
我们要建立一个输入波形文件。
仿真工具会用到该文件,以确定每个输入引脚
的激励信号。
在File菜单下,点击New命令。
在随后弹出的对话框中,切换到
OtherFiles页。
选中VectorWaveformFile选项,点击OK按钮。
4.2现在,我们已经进入到波形编辑界面。
在Edit菜单下,点击InsertNodeor
Bus…命令。
4.3点击NodeFinder…按钮,打开NodeFinder对话框。
点击List按钮,列出
电路所有的端子。
点击>>按钮,全部加入。
点击OK按钮,确认。
4.4回到InsertNodeorBus对话框,点击OK按钮,确认。
4.5选中in1信号,在Edit菜单下,选择Value=>Clock…命令。
在随后弹出的
对话框的Period栏目中设定参数为50ns,点击OK按钮。
4.6In2、in3也用同样的方法进行设置,Period参数分别为100ns和200ns。
4.7保存文件,在Processing菜单下,选择StartSimulation启动仿真工具。
仿
真结束后,点击确认按钮。
观察仿真结果,对比输入与输出之间的逻辑关系否
符合真值表。
实验内容
实验数据
实验总结
1.通过本次实验,进一步了解了以计算机辅助设计的手段来设计数字逻辑电路;
2.掌握QuartusII集成开发环境软件原理图输入的设计流程;
3.掌握简单流水灯的工作原理,学会通过QuartusII建立原理图设计小型数字电路;
4.掌握可编程逻辑器件(PLD)的开发步骤;
5.掌握对设计进行编译、仿真的方法。