实验三 串行A/D转换实验
一、实验目的
1. 掌握单片机I/O的编程方法 2. 掌握TLC549芯片使用方法
二、实验说明
1. 输入给定程序,配置选项,调试并运行程序,观察程序控制下仿真器输
出的变化。
2.
选中此项keil为硬件仿真
3. 设置Port 串口:一般为COM3,Baudrate 波特率为最大值:115200bit/s, 最后确认 4. TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通
用微处理器、控制器通过CLK、CS、DATA OUT三条口线进行串行接口。具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs, TLC549为40 000次/s。总失调误差最大为±0.5LSB,典型功耗值为6mW。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。
5. 用C51进行程序设计,选择汇编或者C语言编程均可,要求程序结构清
晰,模块化结构,反复调用部分做成子模块,有必要的注释。编写程序上机调试通过,实验报告要求提交程序流程图及源程序。
三、实验内容及步骤(完成分值:100分/单个程序)
本实验需要用到本实验用到单片机最小系统(F1区)、串行静态数码显示(I3区)、电位器(A2区)和串行A/D转换(H6区)。
1. 串行静态数码显示的DIN、CLK分别接单片机最小系统的P1.0、P1.1口;
单片机最小系统的P2.1、P2.0分别接串行A/D转换的DATA、CLK, 串行A/D转换的CS-549接P2.2,AIN接电位器(A2区)0~5V可调输出端。打开单片机最小系统的电源开关,串行A/D转换的JT1H电源短路帽打在VCC处。
2. 用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机锁
紧插座中,请注意仿真器的方向:缺口朝上。请指导老师检查接线后再打开模块电源。打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。全速运行程序。 3. 数码管显示电压转化的数字量,调节模拟信号输入端的电位器旋钮。观
察数码管数字随着旋钮旋转而线性变化。
注意:电位器旋钮容易被拧坏,不要过分旋转旋钮。 四、电路原理图
实验程序
#include
#define uint unsigned int #define uchar unsigned char //sbit clock=P2^0; //sbit dout=P2^1; //sbit cs=P2^2;
sbit TLC549_CLK=P2^0; sbit TLC549_DOUT=P2^1; sbit TLC549_CS=P2^2; sbit Din=P1^0; sbit Clk=P1^1; unsigned char code Tab[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0x00};//0-F
void delay(int count) {
unsigned int i;
for(i=0;i //显示函数 void display(uchar data x) { uchar i,j,chr,sel; uchar xs[8]={16,16,16,16,16,16,16,16};//针对实验中8个串口LED静态显示器 xs[7]=x&0x0f; xs[6]=x&0xf0; xs[6]=x>>4; for(i=0;i<8;i++) { chr=Tab[xs[i]]; // sel=0x80; for(j=0;j<8;j++) { Clk=0;//P1.1发出同步信号 Din=chr&sel; Clk=1; sel=sel>>1; } } } unsigned char TLC549_ReadByte(void) { unsigned char value=0,i=0; TLC549_DOUT=1; for(i=0;i<8;i++) { if(TLC549_DOUT==1) value|=(0x80>>i); TLC549_CLK=1; TLC549_CLK=0; delay(50); } return value; } unsigned char TLC549_GetValue(void) { unsigned char ConvertValue; TLC549_CS=0; ConvertValue=TLC549_ReadByte(); TLC549_CS=1; delay(150); return ConvertValue; } void main() { uchar i,data ad; while(1) { ad=TLC549_GetValue(); display(ad); for(i=0;i<255;i++) delay(100); } } 五实验心得与体会 通过实验,认识掌握TLC549芯片使用方法,并且运用实验程序做出了正确的结果。同时,对于单片机的i/o编程有了认识,掌握单片机I/O的编程方法。 实验四 DS18B20温度传感器实验 一、实验目的 1. 了解温度传感器电路的工作原理 2. 了解温度控制的基本原理 3. 掌握一线总线接口的使用 二、实验说明 1. 输入给定程序,配置选项,调试并运行程序,观察程序控制下仿真器输 出的变化。 2. 选中此项keil为硬件仿真 3. 设置Port 串口:一般为COM3,Baudrate 波特率为最大值:115200bit/s, 最后确认 4. Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。 5. 本实验在读取温度的基础上,完成类似空调恒温控制的实验。用加热电 阻代替加热电机。温度值通过LED静态显示电路以十进制形式显示出来,制冷采用自然冷却。 6. 用C51进行程序设计,选择汇编或者C语言编程均可,要求程序结构清 晰,模块化结构,反复调用部分做成子模块,有必要的注释。编写程序上机调试通过,实验报告要求提交程序流程图及源程序。 三、实验内容及步骤(完成分值:100分/单个程序) 本实验需要用到本实验需要用到单片机最小应用系统(F1区)、串行静态显示(I3区)和温度传感器模块(C3区)。 1. DS18B20的CONTROL接最小应用系统P1.4,OUT接最小应用系统P2.0。