封面.docx

上传人:b****4 文档编号:5345471 上传时间:2023-05-08 格式:DOCX 页数:14 大小:226.64KB
下载 相关 举报
封面.docx_第1页
第1页 / 共14页
封面.docx_第2页
第2页 / 共14页
封面.docx_第3页
第3页 / 共14页
封面.docx_第4页
第4页 / 共14页
封面.docx_第5页
第5页 / 共14页
封面.docx_第6页
第6页 / 共14页
封面.docx_第7页
第7页 / 共14页
封面.docx_第8页
第8页 / 共14页
封面.docx_第9页
第9页 / 共14页
封面.docx_第10页
第10页 / 共14页
封面.docx_第11页
第11页 / 共14页
封面.docx_第12页
第12页 / 共14页
封面.docx_第13页
第13页 / 共14页
封面.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

封面.docx

《封面.docx》由会员分享,可在线阅读,更多相关《封面.docx(14页珍藏版)》请在冰点文库上搜索。

封面.docx

封面

基于LCD1602和ADC0832设计的两路电压表

 

姓名:

徐天驰

学号:

080307224

院系:

机电院

指导老师:

程玉柱

专业:

测控技术与仪器

起止日期:

2011.12.19~12.31

地点:

7A6237A625

 

1、DS1302的引脚及其功能,以及DS1302与单片机的硬件连接?

2、如何编写基于1602LCD的显示驱动程序?

1基于LCD1602和ADC0832设计的两路电压表

1ADC0832芯片

 ADC0832具有以下特点:

(1)8位分辨率;

(2)双通道A/D转换;(3)输入输出电平与TTL/CMOS相兼容;(4)5V电源供电时输入电压在0~5V之间;(5)工作频率为250KHZ,转换时间为32μS;(6)一般功耗仅为15mW;(7)8P、14P—DIP(双列直插)、PICC多种封装;(8)商用级芯片温宽为0°Cto+70°C?

,工业级芯片温宽为40℃-+85℃

引脚及功能:

图1

CS:

片选使能,低电平有效

CH0:

模拟输入通道0,或作为IN+/-使用

CH1:

模拟输入通道1,或作为IN+/-使用

GND:

芯片参考0电位(地)

DI:

数据信号输入,选择通道控制

DO:

数据信号输出,转换数据输出

CLK:

芯片时钟输入

VCC:

电源输入

ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。

芯片转换时间仅为32μS,具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。

独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。

通过DI数据输入端,可以轻易的实现通道功能的选择。

正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。

但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。

\

时序图:

图2

CS作为选通信号,在时序图中可以看到,从CS置为低电平开始,一直到置为高电平结束。

CLK提供时钟信号。

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。

当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第2、3个脉冲下沉之前DI端应输入2位数据(SGL、Odd)用于选择通道功能,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。

当2位数据为“1”、“1”时,只对CH1进行单通道转换。

当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。

当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。

在完成输入启动位、通道选择之后,到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。

从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。

直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。

也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。

随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。

最后将CS置高电平禁用芯片,此时就可以开始读出数据,转换得到的数据会被送出二次,一次高位在前传送,一次低位在前传送,连续送出。

在程序读取二个数据后,我们可以加上检验来看看数据是否被正确读取。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。

如果作为由IN+与IN-输入的输入时,可将电压值设定在某一个较大范围之内,从而提高转换的宽度。

但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压,则转换后的数据结果始终为00H。

2系统硬件设计

硬件系统主要有单片机最小系统电路,LCD1602液晶显示电路,ADC0832模数转换电路3个电路模块。

为了便于仿真观测,在ADC0832模数转换电路的两个模拟信号输入端并接了两个虚拟电压表,液晶显示器显示的电压值应当和虚拟电压表测得的电压一致。

还应当注意一点的是,液晶显示电路的RS和RW两个引脚通过74LS373与单片机连接,说明了P0口在此既是数据线又是地址线。

74LS373为地址锁存器,这种方法的连接意味着CPU控制LCD时使用了接口扩展方法。

LCD的寄存器是单片机存储器的一部分,所以也有其地址,根据连线可以知道地址有:

0x0000,0x0001,0x0002,0x0003.在根据LCD的液晶控制命令可以知道,这四个地址的具体功能分别为:

写指令,写LCD的状态,写入数据,读取数据。

具体硬件连线图如下图6-1-3所示:

图3

6.1.3软件系统设计

程序:

AD_CSBITP3.5;使能接口

AD_CLKBITP3.4;时钟接口

AD_DATBITP3.3;数据输入,输出接口

RSBITP2.0;RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器

WRBITP2.1;WR为读写信号线,高电平时进行读操作,低电平时进行写操作

EBITP2.2;E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令

BJGWEQU5AH

ORG00H

AJMPMIAN1

ORG03H

AJMPSETDY

ORG30H

MIAN1:

MOVB,#00H

MOVSP,#26H

SETBEA

SETBEX0

MOV65H,#16

LCALLLCD

MOVP0,#80H

LCALLZLSR

LCALLDELAY

MOVR1,#0

MOVR2,#16

MOV58H,#05H

MOV47H,#0C1H

MOVBJGW,#20H

KK:

MOVA,R1

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVP0,A

LCALLSJSR

LCALLDELAY

INCR1

DJNZR2,KK

MOVR1,#0

MOVR2,#16

MOVP0,#0C1H

LCALLZLSR

LCALLDELAY

MOVDPTR,#TAB2

KK1:

MOVA,R1

MOVCA,@A+DPTR

MOVP0,A

LCALLSJSR

LCALLDELAY

INCR1

DJNZR2,KK1

MIAN:

LCALLADCONV

LCALLAD_CHULI

LCALLLCDDISP

JMPMIAN

LCD:

MOVP0,#01H

LCALLZLSR

LCALLDELAY

MOVP0,#06H

LCALLZLSR

LCALLDELAY

MOVP0,#0CH

LCALLZLSR

LCALLDELAY

MOVP0,#3CH

LCALLZLSR

LCALLDELAY

MOVP0,#0CH

LCALLZLSR

LCALLDELAY

RET

ZLSR:

CLRRS

CLRWR

CLRE

NOP

NOP

SETBE

RET

SJSR:

SETBRS

CLRWR

CLRE

NOP

NOP

SETBE

RET

BJ:

MOVA,4AH

NOP

NOP

NOP

CJNEA,#00111110B,BJTC

CLRP3.7

SETBP3.7

BJTC:

RET

;中断响应

SETDY:

PUSHACC

PUSHPSW

LCALLLCDTZ

LCALLLCD2

MOVA,#00111110B

LCALLAD_CHULI

LCALLLCDDISP

GB:

LCALLDEL

INCBJGW

LCALLAD_CHULI

LCALLLCDDISP

JMPGB

MOVBJGW,A

LCALLLCD

LCALLLCDTZ

POPPSW

POPACC

RETI

LCD2:

MOVA,47H

MOVP0,A

LCALLZLSR

LCALLDELAY

RET

LCDTZ:

MOVP0,#80H

LCALLZLSR

LCALLDELAY

MOVR1,#0

MOVR2,#16

KT:

MOVA,R1

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVP0,A

LCALLSJSR

LCALLDELAY

INCR1

DJNZR2,KT

MOVR1,#0

MOVR2,#16

MOVP0,#0C1H

LCALLZLSR

LCALLDELAY

MOVDPTR,#TAB3

KT1:

MOVA,R1

MOVCA,@A+DPTR

MOVP0,A

LCALLSJSR

LCALLDELAY

INCR1

DJNZR2,KT1

RET

ADCONV:

SETBAD_CS;一个转换周期开始

CLRAD_CLK

CLRAD_CS;CS置0,片选有效

SETBAD_DAT;DI置1,起始位

NOP

SETBAD_CLK;第一个脉冲

CLRAD_DAT;在负跳变之前加一个DI反转操作

CLRAD_CLK

SETBAD_DAT;DI置1,设为单通道

NOP

SETBAD_CLK;第二个脉冲

CLRAD_DAT

CLRAD_CLK

CLRAD_DAT;DI置0,选择通道0

NOP

SETBAD_CLK;第三个脉冲

SETBAD_DAT

CLRAD_CLK

NOP

SETBAD_CLK;第四个脉冲

MOVR1,#08H;计数器初值,读取8位数据,

AD_READ:

CLRAD_CLK;下降沿

MOVC,AD_DAT;读取DO端数据

RLCA;C移入A,高位在前

SETBAD_CLK;下一个脉冲

DJNZR1,AD_READ;没读完继续

SETBAD_CS

MOVP1,A

MOV4AH,A

RET

AD_CHULI:

CLRC

MOVR5,#00H;十进制转换的低位寄存器

MOVR4,#00H;十进制转换的高位寄存器

MOVR3,#08H

MOVB,#2

MULAB;十进制调整的次数

AD_CHULI1:

RLCA

MOVR2,A;送R2保存

MOVA,R5;(R5)乘2加C

ADDCA,R5

DAA;做十进制调整

MOVR5,A;结果存回R5

MOVA,R4;(R4)乘2加C

ADDCA,R4

MOVR4,A;结果存回R4

MOVA,R2

DJNZR3,AD_CHULI1;是否转换完?

MOVA,R5;(R5)乘2

ADDCA,R5

DAA

MOVR5,A;结果存回R5

MOVA,R4

ADDCA,R4;(R4)乘2加C

DAA

MOVR4,A;结果存回R4

RET

LCDDISP:

MOVA,R4

ADDA,#30H

MOVP0,#0CAH

LCALLZLSR

LCALLDELAY

MOVP0,A

LCALLSJSR

LCALLDELAY

MOVP0,#0CCH

LCALLZLSR

LCALLDELAY

MOVA,R5

MOVB,#16

DIVAB

MOV40H,A

ADDA,#30H

MOVP0,A

LCALLSJSR

LCALLDELAY

MOV41H,B

MOVA,41H

ADDA,#30H

MOVP0,A

LCALLSJSR

LCALLDELAY

RET

DEL:

MOV20H,#255

D1:

MOV21H,#10

DJNZ21H,$

DJNZ20H,D1

RET

DELAY:

MOV50H,#10

D2:

MOV51H,#50

DJNZ51H,$

DJNZ50H,D2

RET

TAB1:

DB"XG10501Jinke";

TAB2:

DB"Voltage:

.V";

TAB3:

DB"VOLTAGE:

.V"

END

 

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2