单片机课程设计报告简易数字电压表.docx

上传人:b****6 文档编号:6558651 上传时间:2023-01-07 格式:DOCX 页数:13 大小:177.69KB
下载 相关 举报
单片机课程设计报告简易数字电压表.docx_第1页
第1页 / 共13页
单片机课程设计报告简易数字电压表.docx_第2页
第2页 / 共13页
单片机课程设计报告简易数字电压表.docx_第3页
第3页 / 共13页
单片机课程设计报告简易数字电压表.docx_第4页
第4页 / 共13页
单片机课程设计报告简易数字电压表.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告简易数字电压表.docx

《单片机课程设计报告简易数字电压表.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告简易数字电压表.docx(13页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告简易数字电压表.docx

单片机课程设计报告简易数字电压表

单片机课程设计报告

简易数字电压表

 

(一)实验目的

1.了解A/D芯片TLC0834转换性能及编程方法。

2.掌握A/D转换器与单片机的接口方法

3.学会使用A/D转换器进行电压信号采集。

(二)设计任务及要求

利用实验平台上的串行模/数转换芯片TLC0834及4位数码管,设计完成一个数字电压表。

要求:

数字电压表可测量0~5V输入电压,电压值通过数码管显示。

(三)工作原理及设计思路

简易数字电压表的设计由A/D转换、数据处理及显示控制等组成。

A/D转换由集成电路TLC0834完成,利用TLC0834将模拟电压转换为数字量,经单片机将数字量转换成对应的电压值,并通过数码管输出。

TLC0834是8位串行A/D转换器,它有4个可多路选择的输入通道。

其多路器可用软件配置为单端输入或差分输入。

多路器地址通过DI端移入转换器。

TLC0834与单片机的接口参考电路如图1所示,

图1

1)A/D转换部分

1.1TLC0834AD转换器

TLC0834的启动和转换可以由软件自由控制。

根据TLC0834的工作时序图,

图2控制逻辑表

图3时序图

其转换过程是:

片选置CS为低(保证CS有一个从高到低的跳变),该电平能使所有的逻辑功能有效,CS引脚在整个转换过程中应保持低电平。

此时DO端为高阻,DI端等待指令

起始向DI端输出第一个逻辑高,表示起始位。

由于DI端的数据移入多路器地址移位寄存器是在每个时钟的上升跳变时发生的,因此每次向DI端置入一位数据时,应在CLK端输出一个从0到1的跳变。

配置接下来的3位是配置位,用以选择输入通道及输入方式。

连续3个时钟的上升沿将3位配置位移入移位寄存器。

转换当启始位、3位配置位移入移位寄存器后,转换便开始,即在第4个时钟的下降沿转换开始。

同时DI端转为高阻状态,DO端脱离高阻状态,为输出数据做准备。

读取在第5个脉冲的下降沿单片机即可读取DO端的数据,第5至第12个脉冲,共读取8位数据,读取的顺序是从高到低(D7D6D5D4D3D2D1D0)。

TLC0834在输出以最高位(MSB)开头的数据流后,又以最低位(LSB)开头重输出一遍数据流,最低位共用。

如果你需要,可以接着向CLK端输出第12至19个脉冲,以读取7位数据(D1D2D3D4D5D6D7),如果不需要,可以省去第13至第20个脉冲,直接结束这一次转换周期,即置CS高电平

1.2硬件电路设计

图4硬件电路图

其中P1.7口接TLC0834的片选端,P1.6用于产生A/D转换的时钟,P1.5和P1.4分别接芯片的DO和DI端,用于对TLC0834进行初始化和接收转换得到的数据。

这里参考电压是5V,即A/D转换器的输入电压范围为0-5V。

1.3TLC0834初始化程序

CLRP1.6;清时钟

CLRP1.5

SETBP1.7;CS=1

CLRP1.7;CS=0

SETBP1.5;置1启动位

SETBP1.6

CLRP1.6

SETBP1.5;1写SGL

SETBP1.6;时钟0-1跳变

CLRP1.6

CLRP1.5;0写ODD

SETBP1.6

CLRP1.6

CLRP1.5;0写SELECTBIT1

SETBP1.6

CLRP1.6;通道0,单端输入

SETBP1.6

CLRP1.6

LCALLADCONV

ADCONV:

MOVR0,#08H

ADLOP0:

SETBP1.4;置1使P1.4为输入

MOVC,P1.4

RLCA;a左移并将c补到最低位

SETBP1.6

CLRP1.6

DJNZR0,ADLOP0

MOV70H,A

MOVR0,#07H

ADLOP1:

SETBP1.6

CLRP1.6

DJNZR0,ADLOP1

SETBP1.6

CLRP1.6

SETBP1.6

CLRP1.6

SETBP1.7;结束一次转换

RET

 

2)数据处理

数据处理部分主要是将ADC转换得到的数据进行处理,转换成相应的电压值,因为TLC0834是8位AD模数转化器而且参考电压为5V,所以就是把0~255十进制数转换成0.00V~5.00V。

可根据下面的公式转换:

为十进制数)

程序的流图如图所示:

图5

数据处理的程序如下:

TURN_SUB:

MOVA,70H

MOVB,#51

DIVAB;除与51,余数放在B

MOV78H,A;存个位数

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP1

ADDA,#5

LOOP1:

MOV79H,A

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP2

ADDA,#5

LOOP2:

MOV7AH,A

RET

3)显示功能

显示子程序采用动态扫描法实现三位数码管的数值显示。

测量所得的A/D转换数据放在70H内存中,转换成十进制BCD码放在78H~7AH单元中,寄存器R1用作数据地址指针。

程序流图如下:

图6

4)源程序代码

org0000h

jmpMAIN

;startoftheprogram

org0100h

;初始化tlc0834

MAIN:

CLRP1.6;清时钟

CLRP1.5

SETBP1.7;CS=1

CLRP1.7;CS=0

SETBP1.5;置1启动位

SETBP1.6

CLRP1.6

SETBP1.5;1写SGL

SETBP1.6;时钟0-1跳变

CLRP1.6

CLRP1.5;0写ODD

SETBP1.6

CLRP1.6

CLRP1.5;0写SELECTBIT1

SETBP1.6

CLRP1.6;通道0,单端输入

SETBP1.6

CLRP1.6

SETBP1.4;P1.4输入

LCALLADCONV;

;调用数据转换子程序

LCALLTURN_SUB

;调用显示子程序

LCALLDISP_SUB

;转换成通道1

CH1:

CLRP1.6;清时钟

CLRP1.5

SETBP1.7;CS=1

CLRP1.7;CS=0

SETBP1.5;置1启动位

SETBP1.6

CLRP1.6

SETBP1.5;1写SGL

SETBP1.6;时钟0-1跳变

CLRP1.6

SETBP1.5;1写ODD

SETBP1.6

CLRP1.6

CLRP1.5;0写SELECTBIT1

SETBP1.6

CLRP1.6;通道0,单端输入

SETBP1.6

CLRP1.6

SETBP1.4;P1.4输入

LCALLADCONV

LCALLTURN_SUB

LCALLDISP_SUB

LJMPMAIN

;----------------------------------------------

ADCONV:

MOVR0,#08H

ADLOP0:

MOVC,P1.4

RLCA;a左移并将c补到最低位

SETBP1.6

CLRP1.6

DJNZR0,ADLOP0

MOV70H,A

MOVR0,#07H

ADLOP1:

SETBP1.6

CLRP1.6

DJNZR0,ADLOP1

SETBP1.6

CLRP1.6

SETBP1.6

CLRP1.6

SETBP1.7;置CS为高,停止转换

RET

TURN_SUB:

MOVA,70H

MOVB,#51

DIVAB

MOV78H,A

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP1

ADDA,#5

LOOP1:

MOV79H,A

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP2

ADDA,#5

LOOP2:

MOV7AH,A

RET

;---------------------------------------

DISP_SUB:

MOVR1,#78H

CLRA

LCALLPLAY

CLRP3.7

SETBP2.0

LCALLDELAY

CLRP2.0

INCR1

LCALLPLAY

SETBP2.1

LCALLDELAY

CLRP2.1

INCR1

LCALLPLAY

SETBP2.2

LCALLDELAY

CLRP2.2

RET

PLAY:

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR;查表

MOVP3,A

RET

DELAY:

MOVR6,#10H

D1:

MOVR7,#10H

D2:

DJNZR7,D2

DJNZR6,D1

RET

;共阳极数码管的段码

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

5)整体硬件电路

图7

6)设计心得

在这次设计中,收获真的挺大的,首先在硬件的设计上就是就收获很多,首先,我们需要设计硬件电路,在设计中我们要考虑各个I/O口的驱动能力,当使用P0口驱动外接电路时,需要接上拉电阻。

I/O口在作为输入应先对I/O口的寄存器先写1。

硬件电路设计完成后就要根据硬件电路开始编写程序了,在对TLC0834芯片的编程过程中,首先需要知道该芯片的时序图,即我们要根据时序图编写程序从而去控制该芯片正常的工作。

这次我设计的是一个简易的电压表,一开始,我先利用了protues软件进行电路的连接与仿真,设计了51的最小系统,包括了复位电路,晶振电路。

而后设计了ADC与51的接口电路,用P1.7的高低电平来产生ADC的时钟信号。

数码管用的三显示共阳的,使用动态扫描法来驱动数码管。

这个过程不仅让我温习了单片机的知识,也让我对单片机有了更深的了解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1