单片机实习报告

 

电气信息工程学院

单片机实习报告

课题名称:数字电压表 专业:

姓名:

班级学号:

指导教师: 刘海波 成绩:

二○一一年七月一日

目录

一、题目及设计要求 ............................... - 3 -

二、实验内容 ........................................... - 3 -

三、实验原理 ........................................... - 3 -

1、用电位计提供模拟电压 .................. - 3 -

2、用串行A/D TLC2543采集电压 .... - 4 -

3、串行显示595完成LED显示 ........ - 6 -

四、设计程序: ....................................... - 9 -

1、汇编语言:...................................... - 9 -

2、C语言: ........................................ - 12 -

五、调试过程及测试结果 ..................... - 15 -

六、实习心得 ......................................... - 16 -

七、参考文献 ......................................... - 17 -

一、题目及设计要求

1、

2、掌握单片机设计原理,SPI总线原理,利用A/D转换器设计一数字电压表,量程为0— +5.0000,通过五位数码管显示。

二、实验内容

1、用电位计提供模拟电压

2、用串行A/D TLC2543采集电压

3、利用串行显示595完成LED显示当前电压值

三、实验原理

1、用电位计提供模拟电压

原理:电位计或称电压计,也称为可变电阻器,通常被制造成不管使用多久均能维持原有的特性,若当位置传感器使用,电位计可以是直线或旋转式位置传感器。电位计输出一个电压值,其正比于沿着可变电阻器之滑动器的位置。因为温度变化、磨耗及滑动器与可变电阻器之间的污垢均会造成电阻变化,影响电位计的精度,因此,电位计有太低的准确度。由于材料的发展,特别是在导电性塑料, - 3 -

使得电位计在使用很长时间后仍可以维持原有特性,同时也改进它们的性能。

2、用串行A/D TLC2543采集电压

原理:

引脚图:

控制字格式的设置:控制字为从DATAINPUT端串行输入的8位数据,它规定了TLC2543要转换的模拟量通道、转换后的输出数据长度、输出数据的格式。其中高4位(D7~D4)决定通道号,对于0通道至10通道,该4位分别为0000~1010H,当为1011~1101时,用于 - 4 -

对TLC2543的自检,分别测试(VREF++VREF-)/2、VREF-、VREF+的值,当为1110时,TLC2543进入休眠状态。低4位决定输出数据长度及格式,其中D3、D2决定输出数据长度,01表示输出数据长度为8位,11表示输出数据长度为16位,其他为12位。D1决定输出数据是高位先送出,还是低位先送出,为0表示高位先送出。D0决定输出数据是单极性(二进制)还是双极性(2的补码),若为单极性,该位为0,反之为1。

转换过程:上电后,片选CS必须从高到低,才能开始一次工作周期,此时EOC为高,输入数据寄存器被置为0,输出数据寄存器的内容是随机的。开始时,CS片选为高,I/O CLOCK、DATA INPUT被禁止,DATA OUT 呈高阻状,EOC为高。使CS变低,I/OCLOCK、DATAINPUT使能,DATAOUT脱离高阻状态。12个时钟信号从I/OCLOCK端依次加入,随着时钟信号的加入,控制字从DATAINPUT一位一位地在时钟信号的上升沿时被送入TLC2543(高位先送入),同时上一周期转换的A/D数据,即输出数据寄存器中的数据从DATAOUT一位一位地移出。TLC2543收到第4个时钟信号后,通道号也已收到,此时TLC2543开始对选定通道的模拟量进行采样,并保持到第12个时钟的下降沿。在第12个时钟下降沿,EOC变低,开始对本次采样的模拟量进行A/D转换,转换时间约需10μs,转换完成后EOC变高,转换的数据在输出数据寄存器中,待下一个工作周期输出。此后,可以进行新的工作周期。

TLC2543与89C52单片机接口原理图:

3、串行显示595完成LED显示

原理:每位LED显示器段选线和74HC595的并行输出端相连,每一位可以独立显示在多位LED显示时,为了简化电路,降低成本,节省系统资源,将所有的N位段选码并联在一起,由一片74HC595控制。由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬间,N位LED会显示相同的字符。想要每位显示不同的字符,就必须采用扫描的方法,即在每一瞬间只使用一位显示字符。在此瞬间,74HC595并行输出口输出相应字符段选码,而位选则控制I/O口在该显示位送入选通电平,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC595具有锁

存功能,而且串行输入段选码需要一定时间,因此,不需要延时,即可形成视觉暂留效果。

段选码由五片74HC595控制,段选数据由74HC595的SER引脚串行输入,由于输出使能时钟RCLK并接在一起,因此,五片74HC595并行输出端同时输出。而五个LED位选信号也并接在一起,因此,一次可以同时点亮五位LED。此过程类似于静态显示。每片74HC595并行输出端并接8位LED,用于扫描输出,此过程类似于动态扫描过程。此方法运用5片74HC595,n条位选信号,即可实现3n位LED显示。此种方法实现多位LED显示程序框图为图4所示,MCU为89S52。

设计中采用的是

5段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点,它由5个发光二极管组成,其中4个按‘8’字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。把5个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,我们采用共阴极接法。当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。其8段分别命名为dp g f e d c b a。例如,要显示“0”,则dp g f e d c b a分别为:00111111B;若要显示多个数字,只要让若干个数码管的位码循环为高电平就可以了。下图是数码管的结构图

四、设计程序:

1、汇编语言:

ORG 0000H

LJMP START

ORG 0030H

ENA EQU P1.0 ;设置引脚

ENB EQU P1.1

ENC EQU P1.2

CLK EQU P2.3

IN EQU P2.4

OUT EQU P2^5

START:CLR ENA ;选通TCL2543

CLR ENB

CLR ENC

CLR CLK

NOP

NOP

MOV A,#34H ;设置方式控制字CLR C

MOV R0,#8

LOOP:RLC A ;左大环移,按位输入控制字MOV IN,C

SETB CLK

NOP

NOP

CLR CLK

NOP

NOP

DJNZ R0,LOOP

MOV R0,#8

MOV A,#0

CLR C

LOOP1:MOV C,OUT ;按位输出转换后的数字量 SETB CLK

NOP

NOP

CLR CLK

NOP

NOP

RRC A

DJNZ R0,LOOP1

MOV B,#33H /*转换为标准数字电压值*/DIV AB

DA A

MOV R0,A

MOV A,B

MOV B,#5

DIV AB

DA A

MOV R1,A

MOV A,#10

MUL AB

MOV B,#5

DIV AB

DA A

MOV R2,A

MOV A,#10

MUL AB

MOV B,#5

DIV AB

DA A

MOV R3,A

MOV A,#10

MUL AB

MOV B,#5

DIV AB

DA A

MOV R4,A

CLR ENA

SETB ENB

SETB ENC

MOV DPTR,#TABLE

MOV A,#0

XS: MOV A,R4;查表,转换为数码管显示数据 MOVC A,@A+DPTR

ACALL WR_595 ;调用595显示程序,显示数码 MOV A,R3

MOVC A,@A+DPTR

ACALL WR_595

MOV A,R2

MOVC A,@A+DPTR

ACALL WR_595

MOV A,R1

MOVC A,@A+DPTR

ACALL WR_595

MOV A,#0x7F

ACALL WR_595

MOV A,R0

MOVC A,@A+DPTR

ACALL WR_595

MOV A,#0xFF

ACALL WR_595

MOV A,#0xFF

ACALL WR_595

MOV A,#0xFF

ACALL WR_595

MOV A,#0xFF

ACALL WR_595

SETB P1.0

SETB P1.1

SETB P1.2

LJMP START

WR_595: ;595数码显示子程序 MOV R7,#8

CLR C

CLR CLK

NOP

NOP

WW: RLC A

MOV IN,C

SETB CLK

NOP

NOP

CLR CLK

NOP

NOP

DJNZ R7,WW

RET

TABLE:DB

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,82H,0C6H,0A1H,84H,8EH

SJMP $

END

2、C语言:

#include<reg51.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

sbit CLK=P2^3;/*设置引脚*/

sbit IN=P2^4;

sbit OUT=P2^5;

sbit ENA=P1^0;

sbit ENB=P1^1;

sbit ENC=P1^2;

uchar f[5];

void AD()/*AD转换部分*/

{uchar a[8]={0,0,1,1,0,1,0,0},b[8];

uint d=0,c=1,j=10000;

uchar e=0,g,i;

ENA=0;/*选通TCL2543*/

ENB=0;

ENC=0;

CLK=0;

_nop_();

_nop_();

_nop_();

for(i=0;i<8;i++)/*输入方式控制字*/

{IN=a[i];

CLK=1;

_nop_();/*延时*/

_nop_();

_nop_();

CLK=0;

_nop_();

_nop_();

_nop_();

}

CLK=0;

_nop_();

_nop_();

_nop_();

for(i=0;i<8;i++)/*将转换的8位数字量按位输出*/

{b[i]=OUT;

CLK=1;

_nop_();

_nop_();

_nop_();

CLK=0;

_nop_();

_nop_();

_nop_();

}

for(i=8;i>0;i--)/*数字量换算成十进制数*/

{e=b[i-1];

d=c*e+d;

c=2*c;

}

d=d*143.5294117;

for(i=0;i<5;i++)/*把十进制数字量按位分离存入数组*/

{f[i]=d/j;

g=f[i];

d=d-j*g;

j=j/10;

}

}

void XS()/*显示转换电压数据*/ {int m[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x20,0x78,0x00,0x10}; int n[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uchar a,i,j,num;

ENA=0;/*选通74LS595*/

ENB=1;

ENC=1;

for(i=4;i>0;i--)/*显示小数部分*/

{a=f[i];/*取出数字量的第i位*/

num=n[a];/*查表转换成对应的LED字型显示代码*/

CLK=0;

_nop_();

_nop_();

_nop_();

for(j=0;j<8;j++)/*按位输入代码*/

{

if((num&0x80)==0x00)/*判断首位是否为1*/

IN=0;

if((num&0x80)==0x80)

IN=1;

CLK=1;

_nop_();

_nop_();

_nop_();

CLK=0;

_nop_();

_nop_();

_nop_();

num=num<<1;

}

}

a=f[0];/*显示整数部分*/

num=m[a];/*查表转换成整数部分代码*/ CLK=0;

_nop_();

_nop_();

_nop_();

for(j=0;j<8;j++)/*按位输入代码*/ {

if((num&0x80)==0x00) IN=0;

if((num&0x80)==0x80) IN=1;

CLK=1;

_nop_();

_nop_();

_nop_();

CLK=0;

_nop_();

_nop_();

_nop_();

num=num<<1;

}

CLK=0; /*显示空位*/

_nop_();

_nop_();

_nop_();

for(i=0;i<3;i++)

www.99jianzhu.com/包含内容:建筑图纸、PDF/word/ppt 流程,表格,案例,最新,免费下载,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。


TOP最近更新内容

    长城小学关爱留守儿童工作制度
    园林史名词解释
  • 上一篇:论中小企业融资难的问题及对策分析
  • 下一篇:中国计量学院 安全工程专业 论文《价值工程与标准化》