微机原理与接口技术实验指导书大纲.docx
- 文档编号:11533357
- 上传时间:2023-03-18
- 格式:DOCX
- 页数:16
- 大小:232.14KB
微机原理与接口技术实验指导书大纲.docx
《微机原理与接口技术实验指导书大纲.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验指导书大纲.docx(16页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术实验指导书大纲
《微机原理与接口技术》
实验指导书
电气与自动化工程学院
常熟理工学院
二零一四年二月
实验一、AD转换实验
一、实验目的
1.了解ADC0809的AD转换原理;
2.了解ADC0809的硬件设计原理图;
3.自主设计ADC0809的AD转换程序以及显示程序。
二、实验设备
单片机实验箱一台;PC机一台;USB下载线一根;ADC0809模块;LCD12864液晶模块。
三、实验内容
通过ADC0809的IN0端口采集模拟量信号,然后进行AD转换,转换完成后的数字量在LCD12864液晶屏上显示出来。
模拟信号由0~5V的可调电位器提供,ADC0809的时钟频率由单片机定时器0提供。
四、实验原理
ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。
转换时间约100μs,含锁存控制的8路多路开关,输出有三态缓冲器控制,单电源5V供电。
主要时序信号如图2所示:
START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号的锁存信号。
当模拟量送至某一输入端(如IN1或IN2等),由3位地址信号选择,而地址信号由ALE锁存;EOC是转换情况状态信号,当启动转换约100μs后,EOC产生一个负脉冲,以示转换结束;在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线,至此ADC0809的一次转换结束。
ADC0809通道的选择与工作时序图,如图1,2所示
图1:
ADC0809通道的选择
图2:
ADC0809工作时序图
五、实验步骤
1、连接硬件接线:
将ADC0809模块和LCD12864模块分别通过牛角插头连接至单片机对应接口,连接单片机电源。
2、ADC0809模块实验板说明:
该模块板自带电压表,显示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文件
**@note:
LCD12864_ADC0832.h文件声明LCD12864_ADC0832.c函数与变量
**@note:
以下为LCD12864_ADC0832.h文件程序
*/
/************************************************/
#ifndef_LCD12864_ADC0832_h_
#define_LCD12864_ADC0832_h_
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
externvoidsys_init(void);//系统初始化
externvoiddisplay_ad(void);//显示AD转换结果
#endif
/************************************************/
/**
**@note:
需要建立LCD12864_ADC0832.h文件和LCD12864_ADC0832.c文件
**@note:
以下为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 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)&0xf0;//取低四位 sendbyte(start_data);//发送起始信号 delaynms(5);//延时是必须的 sendbyte(Hdata);//发送高四位 delaynms (1);//延时是必须的 sendbyte(Ldata);//发送低四位 delaynms (1);//延时是必须的 } voidsendbyte(unsignedcharbbyte)//发送一个字节 { unsignedchari; for(i=0;i<8;i++) { SID=bbyte&0x80;//取出最高位 SCLK=1; SCLK=0; bbyte<<=1;//左移 } } voiddelaynms(unsignedintdi)//延时 { unsignedintda,db; for(da=0;da for(db=0;db<10;db++); } voidlcdtest(void)//图形方式下屏幕全黑 { unsignedchari,j; for(i=0;i<32;i++) { write(0,0x80+i);write(0,0x80); for(j=0;j<16;j++)write(1,0xff); } for(i=0;i<32;i++) { write(0,0x80+i);write(0,0x88); for(j=0;j<16;j++)write(1,0xff); } } voidlcdcls(void)//图形方式下清屏 { unsignedchari,j; for(i=0;i<32;i++) { write(0,0x80+i);write(0,0x80); for(j=0;j<16;j++)write(1,0x00); } for(i=0;i<32;i++) { write(0,0x80+i);write(0,0x88); for(j=0;j<16;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_();//延时等待转换稳定 ALE=0; ST=0; 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);for(i=0;i<16;i++)write(1,ma2[i]); write(0,0x90);for(i=0;i<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; temp[2]=(unsignedchar)ad%10; } voidmain(void) { sys_init();//系统初始化 while (1) { display_ad();//显示AD转换值 } } /********************************************************* *定时器0函数 *********************************************************/ voidtimer0()interrupt1 { TH0=(65536-1)/256; TL0=(65536-1)%256; CLK=~CLK; } /*********************************************************/ 六、思考题: 1)如何改用IN2为输入端口? 请修改程序并观察实验现象。 2)实验中出现哪些问题,如何解决的? 实验二、DAC0832转换实验 一、实验目的 1.了解DAC0832的DA转换原理; 2.了解DAC0832的硬件设计原理图; 3.自主设计DAC0832的DA转换程序。 二、实验设备 单片机实验箱一台;PC机一台;USB下载线一根;DAC0832模块;9V电源适配器一个。 三、实验内容 通过DAC0832的DI0-DI7输入端输入数字信号,经DA转换后将模拟电压显示到电压表上。 四、实验原理 DAC0832是具有两个输入数据寄存器的8位DAC,能直接与51单片机相连。 主要特性如下: 分辨率为8位;电流输出,稳定时间为1s;可双缓冲输入、单缓冲输入或直接数字输入;单一电源供电(+5~+15V)。 DAC0832的逻辑结构如图所示: 图1: DAC0832的逻辑结构图 其引脚分布如图2所示: 图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转换;单缓冲方式一次选通;双缓冲方式二次选通。 控制时序图: 图3: DAC0832控制时序图 五、实验步骤 1、连接硬件接线: 将DAC0832模块通过牛角插头连接至单片机对应接口,连接单片机电源。 2、理解硬件原理图: DAC0832的硬件原理图,根据硬件原理图设计软件流程图。 硬件电路图如图所示: 其中引脚分配为: RW=P2^7;//输入端选通信号。 CS=P2^6;//片选信号输入端。 P1;//为数字信号输入口 图4: DAC0832电路原理图 3、画出程序流程图: 根据程序流程图,编写并调试软件程序。 图5: 软件流程图 DA转换程序实例: /********************************** 平台: 51最小系统板 单片机: STC89C52RC 晶振: 12MHz **********************************/ #include #include #defineucharunsignedchar #defineuintunsignedint sbitRW=P2^7;//输入端口选通信号 sbitCS=P2^6;//输入信号锁存信号 //功能: 延时1毫秒 voidDelay_xms(uintx) { uinti,j; for(i=0;i for(j=0;j<112;j++); } //功能: 12us延时 voidDelay_xus(uintt) { for(;t>0;t--) { _nop_(); } } voidDAC_init(void)//DA初始化 { CS=0;//输入信号锁存信号 RW=0;//输入端口选通信号 } voidDAC_start(void) { P1=0x80;//输入数字信号 } voidmain(void) { DAC_init(); while (1) { DAC_start(); } } 观察实验结果。 六、思考题: 1、本硬件电路为单缓冲工作方式,运放采用的是单电源供电设计,如果运放采用双电源供电,单缓冲工作方式电路该怎样设计? 2、实验中遇到哪些问题? 是如何解决的?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 实验 指导书 大纲