微机原理与接口技术实验指导书大纲Word下载.docx
- 文档编号:8144611
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:16
- 大小:232.14KB
微机原理与接口技术实验指导书大纲Word下载.docx
《微机原理与接口技术实验指导书大纲Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验指导书大纲Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
该模块板自带电压表,显示IN0,IN1输入端电压,显示可以通过S1与S2波动开关选择,一次只能允许有一个开关拨到ON位置,严禁两个开关同时为ON。
模块实验板预留出IN2~IN7输入端口,可供扩展AD实验口使用。
3、理解硬件原理图:
理解ADC0809的硬件原理图,根据硬件原理图设计软件流程图。
ADC0809的硬件电路图如图3所示。
其中引脚分配为:
ADA=P1^0;
//地址选择位
ADB=P1^1;
ADC=P1^2;
ST=P1^3;
//转换启动信号
EOC=P1^4;
//转换情况状态信号
CLK=P1^6;
//转换时钟信号
EN=P1^5;
//转换使能控制
ALE=P1^7;
//转换地址锁存控制
图3:
ADC0809硬件电路图
4、画出程序流程图:
根据程序流程图,编写并调试软件程序。
图4:
软件流程图
实验程序如下:
/**
**@note:
需要建立LCD12864_ADC0832.h文件和LCD12864_ADC0832.c文件
LCD12864_ADC0832.h文件声明LCD12864_ADC0832.c函数与变量
**@note:
以下为LCD12864_ADC0832.h文件程序
*/
/************************************************/
#ifndef_LCD12864_ADC0832_h_
#define_LCD12864_ADC0832_h_
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
externvoidsys_init(void);
//系统初始化
externvoiddisplay_ad(void);
//显示AD转换结果
#endif
以下为LCD12864_ADC0832.c函数与变量
/***************************************************/
#include"
LCD12864_ADC0832.h"
sbitADA=P1^0;
//地址选择位
sbitADB=P1^1;
sbitADC=P1^2;
sbitST=P1^3;
//转换启动信号
sbitEOC=P1^4;
//转换情况状态信号
sbitCLK=P1^6;
//转换时钟信号
sbitEN=P1^5;
//转换使能控制
sbitALE=P1^7;
//转换地址锁存控制
//引脚定义
sbitCS=P0^0;
//片选高电平有效单片LCD使用时可固定高电平
sbitPSB=P0^1;
//低电平时表示用串口驱动,可固定低电平
sbitSCLK=P0^2;
//时钟
sbitSID=P0^3;
//数据
voidwrite(bitstart,unsignedcharddata);
voidsendbyte(unsignedcharbbyte);
voiddelaynms(unsignedintdi);
voidlcdinit(void);
voidlcdtest(void);
voidlcdcls(void);
unsignedcharcodema[]={"
汉字显示LCD"
};
unsignedcharcodema2[]={"
AD转换的结果:
"
unsignedcharcodema3[]={"
控制IC:
ST7920"
unsignedcharcodema4[]={"
常熟理工学院"
unsignedcharcodeDIS4[]={"
0123456789"
unsignedchartemp[3]=
{
0,0,0
unsignedcharad=0;
//ms延时函数
voidDelay_xms(uintx)
uinti,j;
for(i=0;
i<
x;
i++)
for(j=0;
j<
112;
j++);
}
voidlcdinit(void)//初始化LCD
delaynms(10);
//启动等待,等LCM讲入工作状态
PSB=0;
//串口驱动模式
//RESET=0;
delaynms
(1);
//RESET=1;
//复位LCD
CS=1;
write(0,0x30);
//8位介面,基本指令集
write(0,0x0c);
//显示打开,光标关,反白关
write(0,0x01);
//清屏,将DDRAM的地址计数器归零
voidwrite(bitstart,unsignedcharddata)//写指令或数据
unsignedcharstart_data,Hdata,Ldata;
if(start==0)start_data=0xf8;
//写指令
elsestart_data=0xfa;
//写数据
Hdata=ddata&
0xf0;
//取高四位
Ldata=(ddata<
<
4)&
//取低四位
sendbyte(start_data);
//发送起始信号
delaynms(5);
//延时是必须的
sendbyte(Hdata);
//发送高四位
sendbyte(Ldata);
//发送低四位
voidsendbyte(unsignedcharbbyte)//发送一个字节
unsignedchari;
for(i=0;
8;
{
SID=bbyte&
0x80;
//取出最高位
SCLK=1;
SCLK=0;
bbyte<
=1;
//左移
}
voiddelaynms(unsignedintdi)//延时
unsignedintda,db;
for(da=0;
da<
di;
da++)
for(db=0;
db<
10;
db++);
voidlcdtest(void)//图形方式下屏幕全黑
{
unsignedchari,j;
32;
{
write(0,0x80+i);
write(0,0x80);
16;
j++)write(1,0xff);
}
write(0,0x88);
voidlcdcls(void)//图形方式下清屏
{
j++)write(1,0x00);
}
voiddisplay_ad(void)
unsignedchari;
ADA=0;
ADB=0;
ADC=0;
//选定IN0输入端口
ST=0;
ALE=0;
_nop_();
ALE=1;
ST=1;
//根据时序图进行AD转换的初始化
_nop_();
_nop_();
//延时等待转换稳定
while(!
EOC);
//等待转换完成
EN=1;
ad=P2;
//将转换结果赋值给变量用于显示
EN=0;
temp[0]=(unsignedchar)ad/100;
//将变量数值拆分成单个数字用于显示
temp[1]=(unsignedchar)ad%100/10;
temp[2]=(unsignedchar)ad%10;
write(0,0x80);
i++)write(1,ma2[i]);
write(0,0x90);
3;
i++)write(1,DIS4[temp[i]]);
voidsys_init(void)
Delay_xms(100);
//上电,等待稳定
lcdinit();
//初始化LCD
TMOD=0x01;
TH0=(65536-1)/256;
TL0=(65536-1)%256;
//取余
EA=1;
TR0=1;
ET0=1;
ad=0x80;
temp[0]=(unsignedchar)ad/100%10;
temp[1]=(unsignedchar)ad/10%10;
voidmain(void)
sys_init();
//系统初始化
while
(1)
{
display_ad();
//显示AD转换值
/*********************************************************
*定时器0函数
*********************************************************/
voidtimer0()interrupt1
CLK=~CLK;
/*********************************************************/
六、思考题:
1)如何改用IN2为输入端口?
请修改程序并观察实验现象。
2)实验中出现哪些问题,如何解决的?
实验二、DAC0832转换实验
1.了解DAC0832的DA转换原理;
2.了解DAC0832的硬件设计原理图;
3.自主设计DAC0832的DA转换程序。
DAC0832模块;
9V电源适配器一个。
通过DAC0832的DI0-DI7输入端输入数字信号,经DA转换后将模拟电压显示到电压表上。
DAC0832是具有两个输入数据寄存器的8位DAC,能直接与51单片机相连。
主要特性如下:
分辨率为8位;
电流输出,稳定时间为1s;
可双缓冲输入、单缓冲输入或直接数字输入;
单一电源供电(+5~+15V)。
DAC0832的逻辑结构如图所示:
DAC0832的逻辑结构图
其引脚分布如图2所示:
DAC0832的引脚分布图
DAC0832各引脚说明:
DI0-DI7:
转换数据输入端;
CS:
片选信号输入端。
ILE:
数据锁存允许信号输入端,高电平有效。
WR1:
输入寄存器写选通控制端。
当CS=0、ILE=1、WR1=0时,数据信号被锁存在输入寄存器中。
Xfer:
数据传送控制信号输入端,低电平有效。
WR2:
DAC寄存器写选通控制端。
当XFER=0,WR2=0时,输入寄存器状态传入DAC寄存器中。
Iout1:
电流输出1端,当数据全为1时,电流输出最大;
当数据全为0时,输出电流最小。
Iout2:
电流输出2端。
DAC0802具有Iout1+Iout2=常数的特性。
Rfb:
反馈电阻端。
Vref:
基准电压输入端,是外加的高精度电压源,它与芯片内的电阻网络相连接,该电压范围为-10V~10V;
VCC和GND:
芯片的电源和接地端。
DAC内部有两个寄存器,而这两个寄存器的控制信号有五个,输入寄存器有LIE、CS、WR1控制,DAC寄存器由WR2、Xref控制,用软件指令控制这五个控制端可以实现三种工作方式:
直通方式,单缓冲方式,双缓冲方式。
直通方式是将两个寄存器的五个控制端预先置为有效信号,两个寄存器都开通,只要有数字信号输入就立即进入DA转换。
单缓冲方式是使DAC0832的两个输入寄存器中有一个处于直通方式,另一个处于受控方式,可以将WR2和Xref相连接到地上,并把WR1接到80C51的WR上,LIE接高电平,CS接高位地址或地址译码的输出端上。
双缓冲方式把DAC0832的输入寄存器和DAC寄存器都接成受控方式,这种方式可以用于多路模拟量要求同时输出的情况下。
三种工作方式的区别是:
直通方式不需要选通,直接进行DA转换;
单缓冲方式一次选通;
双缓冲方式二次选通。
控制时序图:
DAC0832控制时序图
将DAC0832模块通过牛角插头连接至单片机对应接口,连接单片机电源。
2、理解硬件原理图:
DAC0832的硬件原理图,根据硬件原理图设计软件流程图。
硬件电路图如图所示:
RW=P2^7;
//输入端选通信号。
CS=P2^6;
//片选信号输入端。
P1;
//为数字信号输入口
DAC0832电路原理图
3、画出程序流程图:
图5:
DA转换程序实例:
/**********************************
平台:
51最小系统板
单片机:
STC89C52RC
晶振:
12MHz
**********************************/
#defineuintunsignedint
sbitRW=P2^7;
//输入端口选通信号
sbitCS=P2^6;
//输入信号锁存信号
//功能:
延时1毫秒
for(j=0;
//功能:
12us延时
voidDelay_xus(uintt)
{
for(;
t>
0;
t--)
{
voidDAC_init(void)//DA初始化
CS=0;
RW=0;
//输入端口选通信号
voidDAC_start(void)
P1=0x80;
//输入数字信号
DAC_init();
DAC_start();
观察实验结果。
1、本硬件电路为单缓冲工作方式,运放采用的是单电源供电设计,如果运放采用双电源供电,单缓冲工作方式电路该怎样设计?
2、实验中遇到哪些问题?
是如何解决的?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 实验 指导书 大纲