手写绘图板

2013年全国大学生电子设计竞赛

设计报告

参赛题目:手写绘图板 题目编号: G题

参赛队员:李大猛 闫胜利 袁新超 参赛单位:黄河水利职业技术学院

论文写作:李大猛

G 题 手写绘图板

摘 要

本手写绘图板系统以STC 系列单片机控制为核心,系统由电源模块、电压信 号采样模块、数据采集模块、数据处理模块、精密毫伏电压放大模块、检测电路 模块、液晶显示模块等模块构成。系统基本原理是:覆铜板上变化的电压通过精 密放大器放大后送给A/D转换电路进行数据采集, 根据AD 采集的数据单片机对采 集的数据处理计算出触点的坐标,并在液晶上显示。系统使用通用元器件较好的 实现了题目要求的各项指标。并较好的实现表笔接触点坐标显示,图形显示,轨 迹显示等功能。该系统具有可靠性好,性能稳定,精度较高等优点。

Abstract

The handwriting drawing board system to STC microcontroller as the core, the system is composed of a power supply module, a voltage signal sampling module, data acquisition module, data processing module, precision millivolt voltage amplification module, detection module, LCD display module. The basic principle is: the voltage change on the CCL by precision amplifier for A/D conversion circuit of data acquisition,

according to the AD data processing chip to collect data to calculate the coordinates of the points, and in the liquid crystal display. System uses theuniversalcomponentscanachievetherequirementsofthesubjectindex. Andachievebettercoordinatepencontactpointdisplay,graphicdisplay, trajectory display function. The system has good reliability, stable performance, high precision.

关键词:STC89S52单片机,数据采集,A/D转换,精密毫伏电压放大器,液晶

一、 系统设计

1.1 基本要求:

(1)指示功能:表笔接触铜箔表面时,能给出明确显示。 (2)能正确显示触点位于纵坐标左右位置。 (3)能正确显示触点四象限位置。 (4)能正确显示坐标值。

(5)显示坐标值的分辨率为 10mm, 绝对误差不大于 5mm。

1.2 发挥部分

(1)进一步提高坐标分辨率至 8mm 和 6mm;要求分辨率为 8mm 时,绝对误差 不大于 4mm;分辨率为 6mm 时,绝对误差不大于 3mm。

(2)绘图功能。能跟踪表笔动作,并显示绘图轨迹。在 A 区内画三个直径分别 为 20mm,12mm 和 8mm 不同直径的圆,并显示该圆;20mm 的圆要求能在 10s 内 完成,其它圆不要求完成时间。

(3)低功耗设计。功耗为总电流乘 12V;功耗越低得分越高。要求功耗等于或 小于 1.5W。

(4)其他。如显示文字,提高坐标分辨率等。

二、 总体设计方案

2.1 设计思路

题目要求设计一个利用普通 PCB 覆铜板设计和制作手写绘图输入设备。设计中 利用手写笔在覆铜板上滑动时会有微弱的变化电压信号,采用运算放大器对微弱 信号进行放大使电压相对升高,然后对变化的电压信号采样,采样部分采用运算 放大器和 A/D 转换芯片。然后进行 AD 采集,根据 AD 数据,计算出坐标。显示部分 则用带字库的液晶模块LCD12864,LCD12864 可以直观显示触点位于纵坐标左右 位置,象限位置,触点滑动轨迹。

2.2 方案论证与比较

2.2.1 采样电路的设计方案与选择

方案一:采用并行A/D转换芯片,并行方式一般在转换后可直接接收,转换 时间快但使用芯片的引脚比较多。

方案二:采用串行A/D 转换芯片,串行方式所用芯片引脚少,封装小,在PCB 板上占用的空间也小,但需要软件处理才能得到所需的数据。

综上所述,结合本设计对数据采样的各项要求和单片机引脚的具体情况,采用TI 公司的8 位串行A/D 转换芯片TLC549. 通过单片机AT89S52 产生满足时序要求的 输入/输出时钟,以及对A/D 芯片的片选控制,完成对整个A/D 转换过程的控制。 TLC549具有8位分辨率模数转换,最大转换时间为17us, 每秒访问和转换最多可达

40000次,功耗低,可以满足本设计要求。

2.2.2 显示方式的设计方案论证与选择

方案一:采用LED 数码管显示。如果需要显示的内容较多,过多增加数码管 的个数显然不可行,进行轮流显示则控制复杂,此外,数码管需要较多连线,使 电路复杂,功耗比较大。

方案二:采用带字库的液晶模块LCD12864显示。可以显示字符、图片,利用 单片机直接驱动液晶显示模块,设计简单,且显示界面宽大美观舒适,耗电小。 综上所述,本设计要显示的内容较多,所以选择方案二,采用LCD12864实时显示 波形的型类、频率、占空比和幅度等功能。

2.2.3 稳压电源的设计方案论证于选择

稳压电源电路采用三端固定式稳压器,只要把正输入电压 Ui 加到 3025 (7812,7912)的输入端,3025(7812,7912)的公共端接地,其输出端便能输 出芯片标称正电压 Uo。在电路中,芯片输入端和输出端与地之间除分别接大容 量滤波电容外,另外我们采用 3025 还需在芯片引出脚根部接小容量电容到地, 分别用于抑制芯片的自激振荡和压窄芯片的高频带宽,减小高频噪声。

2.2.4 电源模块的设计方案论证于选择

方案一:采用升压型稳压电路。用两片MC34063芯片分别将3V 的电池电压 进行直流斩波调压,得到+5V的稳压输出。只需使用两节电池,既节省了电

池又减小系统体积重量,但该电路供电电流小,供电时间短,无法保证系统长期 稳定运作。

方案二:采用环形变压器,与普通变压器相比激磁能量和铁心损耗将

减少25%,电效率高达95%以上,漏磁小,电磁辐射小,振动噪声小,无需另加 屏蔽层来屏蔽电磁干扰,适合用在高灵敏度和易受高频影响的电子设备上。加上 三端固定稳压器获得±5V 电源,+5V用LM7805 输出,-5V 用LM7905输出,先在变 压器的输出段用一个用整流二极管组成的整流桥整流,再用电容滤掉高频成 分,这样就可以获得一个纹波系数小、稳定的电压。

综上所述,选择方案二,采用环形变压器三端稳压器电路。

三、系统硬件设计

3.1 系统的总体方案

本系统采用STC 系列单片机为核心的触摸手写绘图板系统。它主要包括以下 几个组成部分:1) 绘图板电压采集;2) 屏体显示;3) 数据处理;4)数据采集 AD 转换。具体来讲给覆铜板两端加载 5 伏电压,另两端接地。手写笔一端通过 放大器连接A/D转换电路,A/D转换电路连接单片机。覆铜板相当于滑动变阻器 两端,手写笔相当于变阻器的滑动端。当手写笔在覆铜板上滑动时,相应的手写 笔上的电压会规律性发生变化。由于覆铜板电阻率较低,相应的手写笔上的电压 变化值0-3毫伏,低电压信号通过多级级联高增益放大器把低电压信号放大后送

给 A/D 转换电路数据采集, 51 单片机对采集的数据处理后计算出坐标,并在液 晶上显示。系统通过高增益放大器放大微弱信号和精确地数据采样,单片机的数 据处理显示。该系统具有可靠性好,精度高等优点。

12V 电源

5V 稳压 9V 稳压 200mA 稳流模块

89C52 单 片 机

A/D 1549

毫伏级放 大 模 块

覆 铜 板

ADS7843

1 2 8 6 4 液 晶 显 示

图3.1系统组成框图

3.2 单元电路(功能模块)的设计

STC89C52单片机最小系统。最小系统包括晶体振荡电路、复位开关和电源部分。

VCC C5

10uF

C6 104

3

J5

VCC P1.0 2

P1.1 4 P1.2 6 P1.3 8 C8

P1.410

10uF P1.512

P1.614 P1.716

P3.0 2 P3.1 4 R19 P3.2 6 10K P3.3 8

P3.410 P3.512 P3.614 P3.716

2 1 4 3 6 5 8 7 10 9 1211 1413 1615 J17

2CON 18 2 4 3 6 5 8 7 10 9 1211 1413 1615

1 3 5 7 9 11 13 15 1 3 5 7 9 11 13 15

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

STC1

CLKOUT2/ADC0/P1.0 VCC ADC1/P1.1 P0.0

P0.1 RXD2/ECI/ADC2/P1.2

TXD2/CPP0/ADC3/P1.3 P0.2 SS/CPP1/ADC4/P1.4 P0.3

P0.4 MOSI/ADC5/P1.5

P0.5 MISO/ADC6/P1.6

SCLK/ADC7/P1.7 P0.6 P4.7/RST P0.7 INT/RXD/P3.0 EX_LVD/P4.6/RST2 TXD/P3.1 ALE/P4.5 INT0/P3.2 NA/P4.4 INT1/P3.3 P2.7/A15 CLKOUT0/INT/T0/P3.4 P2.6/A14 CLKOUT1/INT/T1/P3.5 P2.5/A13 WR/P3.6 P2.4/A12 RD/P3.7 P2.3/A11 XTAL2 P2.2/A10 XTAL1 P2.1/A9 GND P2.0/A8 STC89C52RC/12C5A60S2

2CON8*2

C9 33pF 12M C10 33pF

5

VCC 40 39 38 37 36 35 34 33 32 31

VCC 30 29 28 2 27 4 26 6 25 8 24 10 23 12 22 14 21 16

J6 2

4 6 8 10 12 14 16

J7 2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

1 3 5 7 9 11 13 15

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

1P0.0 3P0.1 5P0.2 7P0.3 9P0.4 1P 10.5 1P 30.6 1P 50.7

CPU 最小系统模块

图3.2 STC89C52单片机最小系统

3.3 电源模块的设计

电源电路是用环形变压器三端固定稳压器获得±5V 电源,+5V用7805输出, -5V 用7905 输出,环形变压器的电压经过三端固定稳压器,再经整流桥整流, 用电容滤掉高频成分。如图3.3.1

图3.3.1 ±5V 稳压电源电路

+15V

U3

IN FB

ON/OFF OUT GND

LM2576HVT-5.0

1 5 3

C1 Cap 100uF

1 U1 IN OUT GND

3

4 2

L? Inductor 10mH D? Diode

Out

+5V

C? Cap 1000uF

LM7815CT

C3 Cap 22uF

1

U4 IN OUT GND

3

+5V

Out

LM7805CT

U2 IN OUT GND

1 3

1

C4 Cap 22uF

U5 IN OUT GND

3

+9V

Out

LM7815CT

LM7809CT

图3.3.2 系统供电模块

3.4 输出微弱信号采样电路模块设计

输出信号采样电路模块设计由一片MAX414 和TLC159 构成,分别与单片机 P3.5、P3.6 和 P3.7 脚连接,如图,其中MAX414 将输出模拟信号放大,模拟输 入信号(ANALOGIN )经过TLC549 内部采样/保持器至8-bit 逐次比较式A/D转换 器。片选控制端(CS_,低有效)和输入/输出时钟端(I/O CLOCK)与独立的内 部系统时钟通过内部逻辑控制电路,实现外部接口与内部的数据传输,通过单片 机从而实现波形幅度的控制。

图3.4.1 输出信号采样电路模块设计

3.5 数据采集模块

数据采集模块数据采集系统如图,采用AD1549 模数转换器及89C52 控制数 据采集。A/D转换器是数字信号处理的基础,是数据采集系统、测量仪器仪表及 工业控制设备等测控装置与测控系统中应用比较广泛的器件。随着大规模集成电 路技术的发展,各种高精度、低功耗、可编程、低成本的A/D转换器不断推出, 使得测控系统的电路更加简洁,可靠性更高。本系统采用芯片TLC1549IP 是美国 TI 公司生产的10位开关电容型逐次逼近A/D转换器,其简单的串行输出接口可方 便地与各类微机进行连接,是10位数据采集系统的理想器件。

TLC1549基本工作原理:TLC1549IP 是带有串行输出接口的10位8引出脚A/D 转换器,主要由采样-保持电路,逐次逼近式A/D变换器,节拍发生器与逻辑控制 器单元,数据寄存器,数据选择器与串行输出电路单元,内部电源等组成。它的 核心是逐次逼近式A/D变换器。在逻辑控制电路与节拍发生器产生的时钟信号的 共同作用下,首先由采样-保持电路对输入的模拟信号进行样本值采集并由保持 电路将采样的电平值保持到下一个采样时刻。接下来由逐级比较式A/D变换器完 成量化编码处理,模拟信号被变换成数字信号并被送入数据寄存器,完成一次模 /数变换。在该次变换完成后,位于串行输出电路之前的数据选择器开始依次从 数据寄存器中读出信息位并按顺序把它们送到串行数据输出端(DATA?OUT )。这 里,选择和形成输出脉冲的频率由外部时钟信号(I/O?CLOCK)决定。。TLC1549IP 的内部结构框图如图3.5.1所示。

图3.5.1 TLC1549功能结构图

VCC

C? Cap 100pF C? Cap 100pF

C? Cap2 100pF

9 31 29 30 10 11 12 13 14 15 16 17

U?

VCC

Y1 12M

19 18

XTAL1 XTAL2

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P1.0/T2 P1.1/T2EX P1.2/ECI P1.3/CEX0 P1.4/CEX1 P1.5/CEX2 P1.6/CEX3 P1.7/CEX4 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15

40 39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28

P2.0 P2.1 P2.2 P2.3

5 6 7 8 *

CS GND DATA REF I/O IN VCC REF TLC1549

4 3 2 1

VCC

C? CapC? 100pF Cap U? 100pF

1 R?A

16 2 1

VCC

Res Pack1 1K

LM336Z5.0

S?

SW-PB

RST EA/VPP PSEN

ALE/PROG P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

R? RPot 1K

R?A

Res Pack2 1K

20

VSS

P89C51RC2BN/01

图3.5.2 TLC1549 A/D串行接口应用原理图

3.6测量毫伏电压放大模块

测量放大器是信息检索与数据采集系统中常用的前置放大器,通常用在自动 控制及精密仪器等电子系统中。同时是一种高增益、直流耦合放大器,它具有差 分输入、单端输出、高输入阻抗和高共模抑制比等特点,能够将微弱的电信号进 行放大。

本系统放大电路用用集成电路OP07搭建,OP07是一种高精度单片运算放大

器,具有很低的输入失调电压和漂移。OP07 的优良特性使它特别适合作前级放 大器,放大微弱信号。

图3.6 OP07放大电路

该电路中用三个 OP07 集成运放,电路设计满足同相并联差值比例输入级和 差分放大输出级,其中U1与U2为两个性能一致(主要指输入阻抗、共模抑制比 和开环增益)的集成运放 OP07,工作于同相放大方式,构成平衡对称的差动放 大输入级,U3采用集成运放OP07,工作于差动放大方式,用来进一步抑制U1、 U2的共模信号,并接成单端输出方式适应接地负载的需要。R10与R8、R9组成 反馈网络,引入了负反馈,直接耦合多级放大电路中,放大级数越多,放大倍数 也越大,该放大电路不但增益稳定,而且噪声、失真、输出阻抗都降低了,输入 阻抗也增大了,满足放大电路的性能指标。电路中通过对电位器的调节,来实现 该测量放大器放大倍数的调节。

器件选择:元器件的选择是高性能放大的保证,电路中运放U1、U2和U3均 选用集成运放OP07。U1和U2的参数必须尽可能相同其输入阻抗、共模抑制比和 开环增益一致,这样,电路中除了具有差模、共模输入电阻大的特点外,两运放 的共模增益、失调及漂移产生的误差也相互抵消。同时,为提高共模抑制比,对 称的电阻必须精密配置,通过调试电路,及在电路中用电位器代替电阻的方式, 满足本毕业设计要求的基本原则下,最终确定RW 的电阻值及R 的电阻值。

集成运放按供电方式可被分为双电源供电和单电源供电,在双电源供电中又 分为单运放、双运放和四运放。按制造工艺可将运放分为双极性、CMOS 型和BiFET 型,双极性运放一般输入偏置电流及器件功耗较大,但由于采用多种改进技术, 所以种类多,功能强;CMOS 型运放输入阻抗高、功耗小,可在低点源电压下工 作,初期产品精度低、增益小、速度慢,但目前已有低失调电压、低噪声、高速

度、强驱动能力的产品;BiFET 型运放采用双极型管和单级型管混合搭配的生产 工艺,以场效应管作输入级,使输入电阻高达 1012Ω 以上,目前有电参数各不 相同的多种产品。

对于本次设计中的前级运放 U1、U2 两个运放,要选择两个参数一样,最好 选择双差分对管,即在一个集成芯片上有两个参数一样的差分放大器。且要求输 入阻抗(Ri )大,至少大于2MΩ,温漂要小,差模放大倍数(AVD )要大,共模 抑制比(KCMR )要大的场效应管,例如OP07。 OP07作为常用运放的功能特点

OP07 芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路[11]。 具有低失调、低漂移、低噪声、偏置电流小等优点。由于 OP07 具有非常低的输 入失调电压(对于OP07A 最大为25μV),所以OP07在很多应用场合不需要额外 的调零措施。OP07同时具有输入偏置电流低(OP07A 为±2nA )和开环增益高(对 于 OP07A 为 300V/mV)的特点,这种低失调、高开环增益的特性使得 OP07 特别 适用于高增益的测量设备和放大传感器的微弱信号等方面。 有如下特点:

(1)低的输入噪声电压幅度-0.35uvp-p (0.1hz-10hz ) (2)极低的输入失调电压-10uv (3)极低的输入失调电压温漂-0.2uf/c (4)具有长期的稳定性-0.2uv/mo (5)低的输入偏置电流+1na~-1na (6)高的共模抑制比-126db

(7)宽的共模输入电压范围+14v~-14v (8)宽的电源电压范围±3v ~±22v (9)可替代725,108A ,741,AD510等电路

3.7 检测电路设计模块

覆铜板,是指纸和玻纤布等基材,浸以树脂,制成粘结片(胶纸和胶布) ,由 数张粘结片组合后,单面或双面配上铜箔,经热压固化,制成的板状产品,图3.7.1 所示。设计手写绘图板时最重要的问题是确定触摸点的坐标位置, 通过单片机控 制A/D准确地采样到被接触点电压的变化的坐标位置, 至于该点响应何种按键只 是交给相应的处理软件进行处理即可。

铜箔

粘结片

图3.7.1 覆铜板构造

测量X 坐标时:

1)在X+,X-两电极加上一个电压Vref ,Y+接一个高阻抗的ADC 。

2)两电极间的电场呈均匀分布,方向为X+到X-。

3)手触摸时,两个导电层在触摸点接触,触摸点X 层的电位被导至 Y层所接的ADC , 得到电压Vx 。

4)通过Lx/L=Vx/Vref,即可得到x 点的坐标。

Y 轴的坐标可同理将Y+,Y-接上电压Vref ,然后X+电极接高阻抗ADC 得到。

X1

Y0 Y1

覆铜板

X0

图3.7.2 覆铜板点触屏坐标

图3.7.3 覆铜板连接电路

普通的覆铜板一般由三部分组成,上下两层的阻性覆铜导体层、两层导体之

间的隔离层。近似等效为电阻触摸屏。

图3.7.4 覆铜板触点屏

电路工作时,覆铜板上下导体层相当于电阻网络,如图2所示。当某一层电

极加上电压时,会在该网络上形成电压梯度。如有外力使得上下两层在某一点接

触,则在电极未加电压的另一层可以测得接触点处的电压,从而知道接触点处的 坐标。比如,在顶层的电极(X+,X-) 上加上电压,则在顶层导体层上形成电压梯 度,当有外力使得上下两层在某一点接触,在底层就可以测得接触点处的电压, 再根据该电压与电极(X+)之间的距离关系,知道该处的X 坐标。然后,将电压切

换到底层电极(Y+,Y-)上,并在顶层测量接触点处的电压,从而知道Y 坐标。

覆铜板和表笔作为一个输入设备,对其控制用专门的芯片,控制覆铜板检测

电路的芯片要完成两件事情:其一,是完成电极电压的切换;其二,是采集接触 点处的电压值(即A/D)。本检测电路系统用ADS7843控制的实现。ADS7843是

一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片。供电电压

2.7~5 V,参考电压VREF 为1 V~+VCC,转换电压的输入范围为~ VREF,最高

转换速率为125 kHz。表1为引脚功能说明,图3.7.5为其典型应用。

图3.7.5 ADS7843典型应用

ADS7843的内部结构及参考电压模式选择如图所示

图3.7.6 ADS7843引脚功能说明

ADS7846是一个典型的逐次逼近型AD 转换器,其结构是基于电荷再分配的比例电容阵

列结构,这种结构本身具有采样保持功能图3.7.7显示了ADS7846的基本工作结构 。

ADS7846工作电压可以从2.7V 到5.25V ,需要外部时钟来提供转换时钟和串口时钟,

同时还包含了一个内部2.5V 的基准电压电路,内部基准可以被外部的,低阻抗电压源驱动, 基准电压范围为1V 到+VCC,基准电压值决定了AD 转换器的输入范围。

覆铜板等效电阻屏

图3.7.7 ADS7846的基本工作结构

ADS7843之所以能实现对触摸屏的控制,是因为其内部结构很容易实现电极

电压的切换,并能进行快速A/D转换。A2~A0和SER/为控制寄存器中的控制位,

用来进行开关切换和参考电压的选择。

STC89C51

P2.0

P2.1

P2.2

P2.3

P2.3

INTO ADS7846 D1 D0 CK CS /PIN 显 示 屏 覆铜板

图3.7.8 ADS7846系统接人如图

ADS7846是四线式触摸屏的控制器:控制器的主要功能是分别向X 、Y 电极对

施加电压.并把测量电极上的电压信号转换为相应触点的X 坐标,通过中断请求 向P89C669表示有触摸发生。89C51通过P1.3、P1.4和P1.2、P1.1的配合来获取

坐标数据。系统接人如图所示。

当液晶屏上显示出需要操作的画面,我们通过表笔进行操作时。用户在覆铜

板屏上的有效区域点击,触摸屏的X 方向输出电阻和Y 方向输出电阻分别随X 和Y 呈线性变化,ADS7846控制器将其分别转换为12位数据,通过中断告知单片机需

要接收数据。单片机接收到数据后进行处理。首先进行触点数据是否有效的判断, 包括:a) 是否是人的误操作,即是否是由于人的抖动而产生的错误数据。

b)ADS7846传过来的数据是否有效.由于刚开始传过来的第一个坐标是用户开始

接触触摸屏时产生的。所以电阻并不准确.从而导致数据也不准确,通常要去掉: 在接收过程中。通常是采用多次平均的方法。假如有一次接收的数据和平均值的 差别很大,则这次测量就作废了.需要重新测量。一旦数据有效。单片机就会继 续解算触点坐标落在液晶屏上的位置.并根据解算的结果来判断执行相应的功能 函数。使触摸屏和液晶屏有机地结合起来.建立一定的逻辑关系.交互地进行信 息存取和输出。

3.8 液晶显示模块

液晶显示模块是128×64 点阵的汉字图形型液晶显示模块,可显示汉字及图

形,内置国标GB2312 码简体中文字库(16X16 点阵)、128 个字符(8X16 点阵) 及64X256点阵显示RAM (GDRAM )。可与CPU 直接接口,提供两种界面来连接微处 理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡 眠模式等

1.显示资料RAM (DDRAM )

显示资料RAM 提供64×2 个位元组的空间,最多可以控制4 行16字(64个字)的

中文字型显示,当写入显示资料RAM 时,可以分别显示CGROM 、HCGROM 与CGRAM 的

字型;ST7920A 可以显示三种字型,分别是半宽的HCGROM 字型、CGRAM 字型及中 文CGROM 字型,三种字型的选择,由在DDRAM 中写入的编码选择,在0000H —0006H 的编码中将自动的组成两个位元组的编码达成中文字型的编码(A140—D75F ), 各种字型详

细编码如下:

1.显示半宽字型:将8 位元资料写入DDRAM 中,范围为02H —7FH 的编码。

2.显示CGRAM 字型:将16位元资料写入DDRAM 中,总共有0000H ,0002H ,0004H , 0006H 四种编码参考信号相位累加器相位加法器波形存储器数 字乘法波器

单片机接受键盘的中断申请,根据不同的按键执行不同的功能,将执行的结果在 LCD 上显示出来.在显示的时候,由于LCD 只接受相应字符的字形码,所以对于 固定不变的提示信息和标题,将字型码存储在单片机ROM 的字库内.对于变化的 数值的字型码,则在显示以前通过查字库,将字库内存储的数字的字型码复制到 自己的存储单元.然后将自己的存储单元的字型码送入LCD 显示缓存中显示。由 单片机P2.0~P2.7 口控制D7~D0S 数据的输入输出,RS 为数据选择信号由P3.0

控制,E 为读写使能端,高电平有效,下降沿锁定数据由P3.2控制,R/W为读写 选择端,高电平:读数据,低电平:写数据,由单片机P3.1口控制。液晶显电路 如图3.8所示。

图3.8 液晶显示电路

四、系统软件设计及分析

4.1 主体程序流程图

开 始

初 始 化

覆 铜 板 电 压 变 化

T L C 1 5 4 9 采 样

A / D 转 换 电 路

单 片 机

晶 显 示

图4.1主体程序流程

五、部分程序

5.1 采样程序

5.1.1 主程序。主程序包含有A/D 采样子程序。在AD 采样读取成功后对数

据进行

分析,并选择合适的基准源。该过程结束后进入低功耗模式,等待下一个采样周 期的到来。

5.2.2 A/D 采样子程序。A/D 使用通道0 进行电流检测。单片机给A/D 发

出通道选择信号,然后等待A/D芯片转换数据,最后读取其数据

图5.1采样程序流程

TLC1549串行A/D转换程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

/*****************************************/

/* 12864引脚定义 */

/*****************************************/

sbit CS_12864=P3^5; //片选信号线

sbit SID_12864=P3^6; //串行数据线

sbit SCLK_12864=P3^4; //串行同步时钟线,上升沿有效

sbit RST_12864=P1^3; //RST复位信号, 接高电平

sbit CH_12864=P3^7; //并行,串行选择信号,高电平并行;低电平串行, 接低电平

/*****************************************/

/* TLC1549引脚定义

/*****************************************/

sbit TLC1549_CS=P1^3; //片选端

sbit TLC1549_DAT=P1^4;//数据端

sbit TLC1549_CLK=P1^5;//时钟端

/*****************************************/

/* 12864显示内容 */

/*****************************************/

uchar code dis1[]={" 电压采集 "};

uchar dis2[]={"电压:0.0000V"};

uchar dis3[]={"采集:0000"};

/*****************************************/

/* 毫秒延时函数 */

/*****************************************/

void delay_ms(uint xms)

{

uint i,j;

for(i=0;i

for(j=0;j

}

/*****************************************/

/* 微妙延时函数 */

/*****************************************/

void delay_us(uint i)

{

while(i--); //延时时间为(i*2+5)微秒,除0外

}

/*****************************************/

/* TLC1549初始化 */

*/

/*****************************************/

void init_TLC1549()

{

uchar i;

TLC1549_CS=0;

TLC1549_CLK=0;

TLC1549_DAT=1;

for(i=10;i>0;i--)

{

TLC1549_CLK=1;

delay_us(2);

TLC1549_CLK=0;

delay_us(2);

}

TLC1549_CS=1;

delay_us(20);

}

/*****************************************/

/* 获取TLC1549转换结果 */

/*****************************************/

uint get_TLC1549()

{

uint tmp=0;

uchar a;

float temp;

TLC1549_CS=1;

delay_us(53);//

TLC1549_CS=0;

delay_us(1);

for(a=10;a>0;a--) //读取AD 转换后的十位数据

{

tmp

if(TLC1549_DAT)

tmp|=1; //如果数据输出是1,或上tmp, 再赋给tmp ,这样就读的数

据口数据

TLC1549_CLK=1;

delay_us(2);

TLC1549_CLK=0;

}

TLC1549_CS=1;

delay_us(20);

/*if(tmp>1004)

temp=tmp+;

else if(tmp>983)

temp=tmp+;

else if(tmp>962)

temp=tmp+;

else if(tmp>941)

temp=tmp;

else if(tmp>920)

temp=tmp;

else if(tmp>900)

temp=tmp*1.02225+0.5;

else if(tmp>879)

temp=tmp*1.0223+0.5;

else if(tmp>858)

temp=tmp*1.02235+0.5;

else if(tmp>837)

temp=tmp*1.0224+0.5;

else if(tmp>550)

temp=tmp*1.02155+0.5;

else if(tmp>500)

temp=tmp*1.0216+0.5;

else if(tmp>450)

temp=tmp*1.02315+0.5;

else if(tmp>400)

temp=tmp*1.0232+0.5;

else if(tmp>350)

temp=tmp*1.02465+0.5;

else if(tmp>300)

temp=tmp*1.0247+0.5;

else if(tmp>250)

temp=tmp*1.0275+0.5;

else if(tmp>200)

temp=tmp*1.028+0.5;

else if(tmp>150)

temp=tmp*1.0355+0.5;

else if(tmp>100)

temp=tmp*1.0366+0.5;

else if(tmp>80)

temp=tmp*1.052+0.5;

else if(tmp>60)

temp=tmp*1.1+0.5;

else if(tmp>40)

temp=tmp*1.18+0.5;

else if(tmp>20)

temp=tmp*1.38+0.5;

else if(tmp>10)

temp=tmp*1.5+0.5;

else if(tmp>5)

temp=tmp*1.7+0.5;

else

temp=5;

tmp=(uint)temp;

if(tmp>1023)

tmp=1023; */

return tmp;

}

/*写指令到LCD12864,输入有*/

void write_cmd_12864(uchar command_data)

{

uchar i;

uchar i_data;

i_data=0xf8;

CS_12864=1;

SCLK_12864=0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data&=0xf0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

CS_12864=0;

delay_ms(10);

}

/*写显示数据到LCD, 输入有*/

void write_data_12864(uchar command_data)

{

uchar i;

uchar i_data;

i_data=0xfa;

CS_12864=1; SCLK_12864=0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data&=0xf0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

CS_12864=0;

delay_ms(10);

}

/*设定显示位置输入有:X 和 Y,X表示每行的首地址,Y 表示从第几个字开始*/

void lcd12864_pos(uchar X,uchar Y)

{

uchar pos;

if(X==0)

X=0x80;

else

if(X==1)

X=0x90;

else

if(X==2)

X=0x88;

else

if(X==3)

X=0x98;

pos=X+Y;

write_cmd_12864(pos); //显示地址

}

/*lcd 12864初始化*/

void lcd12864_init()

{

delay_ms(10);

write_cmd_12864(0x30);//基本指令操作

delay_ms(5);

write_cmd_12864(0x0c);//显示开,光标关

delay_ms(5);

write_cmd_12864(0x01);//清除led 显示内容

}

/*****************************************/

/* 12864显示函数 */

/*****************************************/

void display()

{

uchar i;

lcd12864_pos(0,0); //设置显示位置为第一行的第一个字符

i=0;

while(dis1[i]!='\0')

{

write_data_12864(dis1[i]);

i++;

}

lcd12864_pos(1,0); //设置显示位置为第二行的第一个字符

i=0;

while(dis2[i]!='\0')

{

write_data_12864(dis2[i]); //显示字符

i++;

}

lcd12864_pos(2,0); //设置显示位置为第二行的第一个字符

i=0;

/*while(dis3[i]!='\0')

{

write_data_12864(dis3[i]); //显示字符

i++;

}*/

}

/*****************************************/

/* 对采集后数据处理,转换实际电压值 */

/*****************************************/

void deal_TLC1549(uint dianya)

{

//uint dianya;

//dianya=get_TLC1549();

//dianya=(dianya*(500/255))*100;//

float dianya1;

dianya1=dianya;

dis3[5]=(dianya/500+0x30);

dis3[6]=(dianya/50%5 +0x30);

dis3[7]=(dianya/5%5+0x30);

dis3[8]=(dianya%5+0x30);

dianya1=dianya1*25000/1023;//注意:dianya=(dianya*(50000/1023))与

dianya=(dianya*(5/1023))*10000的结果是不一样的

dianya=(uint)dianya1;

dis2[5]=(dianya/5000+0x30);

dis2[7]=(dianya/500%5+0x30);

dis2[8]=(dianya/50%5+0x30);

dis2[9]=(dianya/5%5+0x30);

dis2[10]=(dianya%5+0x30);

//dianya=dianya*50000/1023;//

//dis2[5]=(dianya/10000+0x30);

//dis2[7]=(dianya/1000%10+0x30);

//dis2[8]=(dianya/100%10+0x30);

//dis2[9]=(dianya/10%10+0x30);

//dis2[10]=(dianya%10+0x30);

}

void main()

{ CH_12864=0;

delay_ms(10); //延时

lcd12864_init(); //初始化lcd

init_TLC1549();

while(1)

{

deal_TLC1549(get_TLC1549());

display();

}

}

5.3 检测电路AD7846控制覆铜板触点位置程序

图5.3 检测电路AD7846控制覆铜板触点位置程序

ADS7843驱动程序

ADS7843是一个内置 12位模数转换、低导通电阻模拟开关的串行接口芯片。供

电电压 2.7~5 V,参考电压 VREF 为 1 V~+VCC,转换电压的输入范围为 0~ VREF, 最高转换速率为 125 kHz。

// ADS7843 驱动程序(串行)

//硬件连接: DCLK ——P0^0;

// CS ——P0^1;

// DIN ——P0^2;

// BUSY ——P0^3

// DOUT ——P0^4

// PENIRQ ——P3^2;

// VDD--逻辑电源(+5V)

VSS--GND(0V) //

//ADS7843.c

#include

#include //STC单片机头文件

#define uint unsigned int

#define uchar unsigned char

sbit DCLK = P0^0;

sbit CS = P0^1;

= P0^2; sbit DIN

sbit BUSY = P0^3;

sbit DOUT = P0^4;

sbit PENIRQ = P3^2;

void Tranfer(char Data);

uint average(uint a[8]);

//============================================================ ========================

//函数名称:void delay(uint us)

//函数功能:延时子函数

//入口参数:us 延时时间

//出口参数:无

//============================================================ ========================

void delay(uint us)

{

while(us--);

}

//============================================================ ========================

//函数名称:void ADS7843_start(void)

//函数功能:ADS7843启动

//入口参数:无

//出口参数:无

//============================================================ ========================

void ADS7843_start(void)

{

DCLK=0;

CS=1;

DIN=1;

DCLK=1;

CS=0;

} //时钟信号,下降沿有效 //片选信号,低电平有效 //串行数据输入 //忙信号 //串行数据输出 //键盘中断请求信号,低电平(负边沿)有效

//============================================================ ========================

//函数名称:void ADS7843_wr(uchar dat)

//函数功能:写 ADS7843

//入口参数:dat 写入的数据

//出口参数:无

//============================================================ ========================

void ADS7843_wr(uchar dat)

{

uchar count;

DCLK=0;

for(count=0;count

{

dat

DIN=CY;

DCLK=0;

_nop_();

_nop_();

_nop_();

DCLK=1;

_nop_();

_nop_();

_nop_();

}

}

//============================================================ ========================

//函数名称:uint ADS7843_rd(void)

//函数功能:读 ADS7843

//入口参数:无

//出口参数:读回的坐标值

//============================================================ ========================

uint ADS7843_rd(void)

{

uchar count=0;

uint dat=0;

for(count=0;count

{

dat

DCLK=1; _nop_();_nop_();_nop_(); //下降沿有效

DCLK=0; _nop_();_nop_();_nop_();

if(DOUT)

dat++;

}

return(dat);

}

//============================================================ ========================

//函数名称:void intr0_int()

//函数功能:外中断 0中断服务函数

//入口参数:无

//出口参数:无

//============================================================ ========================

void intr0_int() interrupt 0 using 2

{

uint X=0,Y=0,a[4],i, avex,avey,x[8],y[8];

IE=0; //关中断

delay(100); //中断后延时以消除抖动,使得采样数据更准确

if(!PENIRQ)

{

for(i=0;i

{

ADS7843_start();

delay(2);

ADS7843_wr(0x90);//送控制字 10010000 即用差分方式读 X 坐标

delay(2);

DCLK=1;

_nop_();

_nop_();

_nop_();

_nop_();

DCLK=0;

_nop_();

_nop_();

_nop_();

_nop_();

X=ADS7843_rd(); //读 X 轴坐标

x[i]=X;

ADS7843_wr(0xD0); //送控制字 11010000 即用差分方式读 Y 坐标

DCLK=1;

_nop_();

_nop_();

_nop_();

_nop_(); DCLK=0; _nop_(); _nop_(); _nop_(); _nop_();

Y=ADS7843_rd(); //读 Y 轴坐标 y[i]=Y; CS=1; }

avex=average(x); //X坐标数据处理 a[0]=avex/1000; //发上位机观察结果 a[1]=(avex-a[0]*1000)/100;

a[2]=(avex-a[0]*1000-a[1]*100)/10; a[3]=avex%10; Tranfer(a[0]+48); Tranfer(a[1]+48); Tranfer(a[2]+48); Tranfer(a[3]+48);

avey=average(y); //Y坐标数据处理

a[0]=avey/1000; //发上位机观察结果 a[1]=(avey-a[0]*1000)/100;

a[2]=(avey-a[0]*1000-a[1]*100)/10; a[3]=avey%10; Tranfer(a[0]+48); Tranfer(a[1]+48); Tranfer(a[2]+48); Tranfer(a[3]+48);

for(i=0;i

IE=0x81; }

//开中断

//============================================================ ======================== //函数名称:void init_serial() //函数功能:初始化串口 //入口参数:无 //出口参数:无

//============================================================ ======================== void init_serial() {

TMOD=0x22; //定时器 T1使用工作方式 2 TH1=250; //设置初值 TL1=250; TR1=1; //开始计时 PCON=0x80; //SMOD=1; SCON=0x50; //工作方式 1,波特率 9600bit/s,允许接收 TI=1; }

//============================================================ ======================== //函数名称:void Tranfer(char Data) //函数功能:发送数据程序

//入口参数:Data 要发送的数据 //出口参数:无

//============================================================ ======================== void Tranfer(char Data) {

while(TI==0); SBUF=Data; TI=0; }

//============================================================ ======================== //函数名称:int main() //函数功能:主函数 //入口参数:无 //出口参数:无

//============================================================ ======================== int main() {

// uint b[4];

TCON=0x01; //设置外部中断 0下降沿触发

EX0=1; //开外中断 0 EA=1; //开总中断 init_serial(); while(1); }

//============================================================ ========================

//函数名称:uint average(uint a[8])

//函数功能:数据处理程序,采集 8次的数据,去掉最大值,去掉最小值,然后求 平均

//入口参数:数组首地址 //出口参数:平均值

//============================================================ ======================== uint average(uint a[8]) {

uint max,min,i,ave=0,sum=0;

max=a[0]; min=a[0];

for(i=0;i

if(maxif(min>a[i])min=a[i]; sum+=a[i]; }

ave=(sum-min-max)/6; return ave; }

六、系统测试分析

6.1 测试仪器与设备

基本仪器清单如表1所示。

仪器名称

表1 基本仪器清单 型号 指标

20Hz 60MHZ

100KHz~100KHz

± 3% 10Hz~800kHz

± 10% +5V,+12V, -5V,-12V

50Hz

1 5 位 2

生产厂家 日本岩崎

岩崎台式模拟示波 SS-7802A

双通道数字示波器 TDS1002 双通道双指针毫伏 DF2170B 表(低频毫伏表)

数 量 1

Tektronix 公司 1 宁波中策电子有限 1

公司

稳压电源 WD-5

启东市斯迈计算机 1 厂

宁波中策电子有限 1

公司 台湾富贵仪器 1 ESCORT

直流稳压源 台式万用表

DF17305B 3A EDM-3155

A

数万用表 Vc9806+

1 4 位 2

深圳市胜高电子科 1

技公司

6.2 电路的调试

整个系统硬件的调试有以下:

(1)电源电路采用环形变压器,减少电磁干扰,减少纹波系数获得较纯净和稳 定的电源。

(2)显示电路中,为了获得较好的亮度,加上了一个10K 的精密可调电阻,这样 可以调节液晶模块的亮度。

(3)D/A 转换电路中,为了保证D/A 转换器总线在空余方式为高电平,两个DA 转换器都要的数据线和时钟线都接上拉电阻与电源相连,并加一个去耦电容。 (4) 在信号采样电路的的运算放大器的1 脚和2 脚并接一个330P 的钽电 容C80,这样,在高频的时候消除自激现象,电压信号得到明显改善

(5)表笔滑动时覆铜板上的电压很小,AD 采集不到,经过多级精密放大后信号 变大。

系统测试方案与测试结果

将表笔在覆铜板上随意画时,液晶显示屏上能显示接触点的所在象限位置及坐标 但有一定的误差。测试结果如下: 表笔接触次数 第1次 第2次 第3次 第4次 测量点坐标 (1.5、1.2) (2.3、2) (-3.5、3) -4、-4.5 实际点坐标 (1、1) (2、2) (-3、3) (-4、-4)

七、 总结

系统采用STC 系列单片机为核心的触摸手写绘图板系统。它主要包括以下几 个组成部分:1) 绘图板电压采集;2) 屏体显示;3) 数据处理;4)数据采集AD 转换。具体来讲给覆铜板两端加载5伏电压,另两端接地。手写笔一端通过放大 器连接A/D转换电路,A/D转换电路连接单片机。覆铜板相当于滑动变阻器两端, 手写笔相当于变阻器的滑动端。当手写笔在覆铜板上滑动时,相应的手写笔上的 电压会规律性发生变化。由于覆铜板电阻率较低,相应的手写笔上的电压变化值 0-3 毫伏,低电压信号通过多级级联高增益放大器把低电压信号放大后送给 A/D 转换电路数据采集, 51 单片机对采集的数据处理,并在液晶上显示。系统通过 高增益放大器放大微弱信号和精确地数据采样,单片机的数据处理显示。该系统 具有可靠性好,精度高等优点。

结束语:

本次大赛的题目充分体现了当今时代对数字化的高要求,同时要求利用成熟 的技术与新技术结合,充分发挥各自的功能,甚至提高到更高的性能,本着这个 原则,我们充分利用的现有的条件,基本上完成了题目的要求,希望本次大赛能 够圆满成功!

参考文献:

[1] 全国大学生电子设计设计竞赛组委员会. 全国大学生电子设计竞赛训练教

程[M].北京电子工业出版社,2005年 [2] 全国大学生电子设计设计竞赛组委员会. 全国大学生电子设计竞赛获奖作

品汇编(第一届~第五届)[M].北京理工大学出版社,2004年 [3] 李银祥. 数控电流源[R].武汉:武汉理工大学测试中心,2001年 [4] 秦迎春. 利用 AD7542 实现程控电流源[J].国外电子元器件,2003,6:32~ 33

[5] 张智杰.AD574在数据采集中的应用[J].国外电子元器件,2003,6:55~56 [6] 房小翠. 单片机实用系统设计技术[M].北京:国防工业出版社,1999年 [7] 周庆. 高稳定电流比较环节引入的纹波分析[J].云南大学学报,1992, 21:79~81

[8] 刘公志. 新型数字直流电源设计[J].杭州电子工业学院学报,2004, 3(24):19~22

[9] 赵建玉. 智能电流源设计[J].山东建材学院学报,1993,3(13):29~31

[10] 俞俊民. 自制恒流源[J].沈阳电力高等专科学校学报,1997,2(6):13~ 15

[11] 朱传奇. 简易使用的直流电流源[J].山东电力技术,1999,1:75~76

[12] 马云峰. 单片机控制的直流电流源设计[J].潍坊高等专科学校学报,1999, 3:60~61

附录

附录1:电路原理图

VCC

C? Cap 100pF C? Cap 100pF

C? Cap2 100pF

S?

SW-PB

9 31 29 30 10 11 12 13 14 15 16 17

U?

VCC

Y1 12M

19 18

XTAL1 XTAL2

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P1.0/T2 P1.1/T2EX P1.2/ECI P1.3/CEX0 P1.4/CEX1 P1.5/CEX2 P1.6/CEX3 P1.7/CEX4 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15

40 39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8

*

21 22 23 24 25 26 27 28

P2.0 P2.1 P2.2 P2.3

5 6 7 8

CS GND DATA REF I/O IN VCC REF TLC1549

4 3 2 1

VCC

C? CapC? 100pF Cap U? 100pF

16

2

1

1 R?A

VCC

Res Pack1 1K

LM336Z5.0

RST EA/VPP PSEN

ALE/PROG P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

R? RPot 1K

R?A

Res Pack2 1K

20

VSS

P89C51RC2BN/01

图1 单片机于TLC1549连接

+15V

U3

IN FB ON/OFF OUT GND

LM2576HVT-5.0

1 5 3

C1 Cap 100uF

1 U1 IN OUT GND

3

4 2

L? Inductor 10mH D? Diode

Out

+5V

C? Cap 1000uF

LM7815CT

C3 Cap 22uF

1

U4 IN OUT GND

3

+5V

Out

LM7805CT

U2 IN OUT GND

1 3

1

C4 Cap 22uF

U5 IN OUT GND

3

+9V

Out

LM7815CT

LM7809CT

图2 系统供电模块

图3 放大器仿真电路

图4 稳压电路

1

SMG1 1 SMG2 2 SMG3 3 SMG4 4 SMG5 5 SMG6 6 SMG7 7 SMG8 8

D

a b a a a a

J1 c

CON3 d f g b f g b f g b f g b

SMG1 e

e c e c e c e c f d d d d g dp dp dp dp dp SMG

VCC

2 3

VCC

4 5 6

Q5

P0.0 1

LED

P0.1 R5 P0.2

R6

P0.3

SMG4 SMG5 SMG6

P0.5 R9

SMG7

P0.6 R12

P0.7 R13

SMG8

LED7 LED8

LED

R7

P0.4 R8

SMG2 SMG3 SMG1

LED1 LED2

SP1

LED3 LED4

1 2

PNP 1 2

SIP1

J2

R10 10K

GND

VCC VCC

LCD 1602

YJ1 20PIN

D

VCC

GND

Q1 Q2 Q3 Q4 B

R3

1K 9012

1 R4 1K

LED5 LED6

蜂鸣器模块

2 VCC 103

GND

R11 10K

9012

R1 1K

9012

R2 1K

9012

VCC

液晶显示模块

C

J3

1 6 2 7 3 8 4 9 5

DB9

T2 OUT 7

14 R2IN 8

13 15 C1 1046

2 16 C2 104 C7 104

3.3V

J8 1 2 CON2

GND

VCC

3

C20 104

J10 1 2 CON2 U10

AMS 1117 3.3

J15 1838

1838-OUT 1 1 2 GND 2

3

CON2

VCC J12 3.3V 2

U1

T2 OUT T2 IN T1OUT T1 IN R2 IN R2 OUT R1 IN R1 OUT GND C2- V- V+ VCC RS232 VCC

C2+ C1- C1+

10 P1.3 11 P3.1 9 P1.2 12 P3.0 5 4C3 104 3 1

C4 104

SMG

数码管、LED 显示模块

1 6 2 7 3 8 4 9 5

C

J4

VCC

R2 IN T2 OUT

10uF

C5

C6 104

VCC

VCC

3

S1 SW-PB

J6 2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

1 3 5 7 9 11 13 15

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

P2.4

1P0.0 3P0.1 5P0.2 7P0.3 9P0.4 11P0.5 13P0.6 15P0.7

J18 2 1 CON2 3.3V

104 C11

GND

W

J19 S2 SW-PB S3 SW-PB S4 SW-PB S5 SW-PB

P2.5 P2.6 P2.7 P3.2

B

R14 10K R15 10K R16 10K R17 10K R18 10K

串口模块

4

J16 CON3

1838-OUT

1 P3.3

2 2401-MISO 3

DB9

VCC P1.0 2

P1.1 4 P1.2 6

C8 P1.3 8

P1.410

10uF P1.512

P1.614 P1.716

B

1838红外与24L01切换

C21 104

IN OUT

10UFC18

1 2 3 4 5 6 7 8 9

P3.0 2 1 10

11 P3.1 4 3 4 3 12 6 5 R19 P3.2 6 5 8 7 13

10K P3.3 8 7 P3.410 9 14

10 9 P3.512 11 15 1211

P3.614 13 16

1413

P3.716 15 17

1615

18

2CON8*2 19

C9 33pF 20

2 1

4 3 6 5 8 7 10 9 1211 1413 1615 J17

2C 2ON 18 12M C10 33pF

5

J5

1 3 5 7 9 11 13 15

STC1

CLKOUT2/ADC0/P1.0 VCC ADC1/P1.1 P0.0 RXD2/ECI/ADC2/P1.2 P0.1 TXD2/CPP0/ADC3/P1.3 P0.2 SS/CPP1/ADC4/P1.4 P0.3 MOSI/ADC5/P1.5 P0.4 MISO/ADC6/P1.6 P0.5 SCLK/ADC7/P1.7 P0.6 P4.7/RST P0.7 INT/RXD/P3.0 EX_LVD/P4.6/RST2 TXD/P3.1 ALE/P4.5 INT0/P3.2 NA/P4.4 INT1/P3.3 P2.7/A15 CLKOUT0/INT/T0/P3.P2.6/A14 4 P2.5/A13

P2.4/A12 CLKOUT1/INT/T1/P3.

5 RD/P3.7 P2.3/A11 WR/P3.6 XTAL2 P2.2/A10 XTAL1 P2.1/A9

P2.0/A8 GND

STC89C52RC/12C5A60S2

VCC

40 39 38 37 36 35 34 33 32 31

30 VCC 29 28 2 27 4 26 6 25 8 24 10 23 12 22 14 21 16

2

4 6 8 10 12 14 16

J7 2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

键盘模块

VCC R20 3

J20 4 3 2 1 CON4

GND V CC P1.3 R21 330

J21 3 2 1 CON3

GND P1.4VCC

3.3V 电源模块

VCC

J22 1 2 3 4 USB-B

R22 1k

104 J27 CON2

D1

C12

VCC J25

2 1 CON2

VCC J26

2 1 CON2

C13

LED

VCC

GND

GND

VCC

R23 1K

VCC

D2 LED 3.3V 1Kx 6

R24R25R26 RERS2ES2

8 6 4 2

CPU 最小系统模块

J29

VCC R30

10K CON3 VCC R31

10K

P2.4

3 2 1 J30 3 2 1

103 R33 1K

P1.1

J24 2 1 CON2

R27R28R29 RESR2ERS2ES2

U2

IRQ MISO MOSI SCK CSN CE VCC GND NRF24N01

C14

104

7 5 3 1

VCC C15P1.5 P1.6 104

U3 1 2 3 4 5 HC-SR04

四键无线模块接口

2272J28

A

1

VCC 2

P3.0 3 P3.1 4 C16 5 104 6

7

APC220

U4 SET AUX TXD RXD EN VCC GND

J14

3.3V

1 2 CON2

C17 104 D4 LED

5V

P2.5

VCC

7361角度传感器接口

标题 尺寸 B 日期: 文件: 5

图号

ADC 接口 60S2单片机PWM 输出口

A

J23 2 1 CON2

USB 5V 取电模块

1

2

24L01无线模块接口

HC-SR04/US-100 超声波接口

3

APC220 接口模块

4

CJ31ON3VCC R32 5V

P2.6 10K 3

2 1 CON3

5V

修订

9-Aug-2012 第张 共张

C:\Documents and Settings\Administrator\桌面制\STC12C5A60S2--1.ddb图人:

6

图5 自制的单片机开发板

附录2:作品实物图

图一 显示坐标

图二 精度调试

图三 低功耗设计

2013年全国大学生电子设计竞赛

设计报告

参赛题目:手写绘图板 题目编号: G题

参赛队员:李大猛 闫胜利 袁新超 参赛单位:黄河水利职业技术学院

论文写作:李大猛

G 题 手写绘图板

摘 要

本手写绘图板系统以STC 系列单片机控制为核心,系统由电源模块、电压信 号采样模块、数据采集模块、数据处理模块、精密毫伏电压放大模块、检测电路 模块、液晶显示模块等模块构成。系统基本原理是:覆铜板上变化的电压通过精 密放大器放大后送给A/D转换电路进行数据采集, 根据AD 采集的数据单片机对采 集的数据处理计算出触点的坐标,并在液晶上显示。系统使用通用元器件较好的 实现了题目要求的各项指标。并较好的实现表笔接触点坐标显示,图形显示,轨 迹显示等功能。该系统具有可靠性好,性能稳定,精度较高等优点。

Abstract

The handwriting drawing board system to STC microcontroller as the core, the system is composed of a power supply module, a voltage signal sampling module, data acquisition module, data processing module, precision millivolt voltage amplification module, detection module, LCD display module. The basic principle is: the voltage change on the CCL by precision amplifier for A/D conversion circuit of data acquisition,

according to the AD data processing chip to collect data to calculate the coordinates of the points, and in the liquid crystal display. System uses theuniversalcomponentscanachievetherequirementsofthesubjectindex. Andachievebettercoordinatepencontactpointdisplay,graphicdisplay, trajectory display function. The system has good reliability, stable performance, high precision.

关键词:STC89S52单片机,数据采集,A/D转换,精密毫伏电压放大器,液晶

一、 系统设计

1.1 基本要求:

(1)指示功能:表笔接触铜箔表面时,能给出明确显示。 (2)能正确显示触点位于纵坐标左右位置。 (3)能正确显示触点四象限位置。 (4)能正确显示坐标值。

(5)显示坐标值的分辨率为 10mm, 绝对误差不大于 5mm。

1.2 发挥部分

(1)进一步提高坐标分辨率至 8mm 和 6mm;要求分辨率为 8mm 时,绝对误差 不大于 4mm;分辨率为 6mm 时,绝对误差不大于 3mm。

(2)绘图功能。能跟踪表笔动作,并显示绘图轨迹。在 A 区内画三个直径分别 为 20mm,12mm 和 8mm 不同直径的圆,并显示该圆;20mm 的圆要求能在 10s 内 完成,其它圆不要求完成时间。

(3)低功耗设计。功耗为总电流乘 12V;功耗越低得分越高。要求功耗等于或 小于 1.5W。

(4)其他。如显示文字,提高坐标分辨率等。

二、 总体设计方案

2.1 设计思路

题目要求设计一个利用普通 PCB 覆铜板设计和制作手写绘图输入设备。设计中 利用手写笔在覆铜板上滑动时会有微弱的变化电压信号,采用运算放大器对微弱 信号进行放大使电压相对升高,然后对变化的电压信号采样,采样部分采用运算 放大器和 A/D 转换芯片。然后进行 AD 采集,根据 AD 数据,计算出坐标。显示部分 则用带字库的液晶模块LCD12864,LCD12864 可以直观显示触点位于纵坐标左右 位置,象限位置,触点滑动轨迹。

2.2 方案论证与比较

2.2.1 采样电路的设计方案与选择

方案一:采用并行A/D转换芯片,并行方式一般在转换后可直接接收,转换 时间快但使用芯片的引脚比较多。

方案二:采用串行A/D 转换芯片,串行方式所用芯片引脚少,封装小,在PCB 板上占用的空间也小,但需要软件处理才能得到所需的数据。

综上所述,结合本设计对数据采样的各项要求和单片机引脚的具体情况,采用TI 公司的8 位串行A/D 转换芯片TLC549. 通过单片机AT89S52 产生满足时序要求的 输入/输出时钟,以及对A/D 芯片的片选控制,完成对整个A/D 转换过程的控制。 TLC549具有8位分辨率模数转换,最大转换时间为17us, 每秒访问和转换最多可达

40000次,功耗低,可以满足本设计要求。

2.2.2 显示方式的设计方案论证与选择

方案一:采用LED 数码管显示。如果需要显示的内容较多,过多增加数码管 的个数显然不可行,进行轮流显示则控制复杂,此外,数码管需要较多连线,使 电路复杂,功耗比较大。

方案二:采用带字库的液晶模块LCD12864显示。可以显示字符、图片,利用 单片机直接驱动液晶显示模块,设计简单,且显示界面宽大美观舒适,耗电小。 综上所述,本设计要显示的内容较多,所以选择方案二,采用LCD12864实时显示 波形的型类、频率、占空比和幅度等功能。

2.2.3 稳压电源的设计方案论证于选择

稳压电源电路采用三端固定式稳压器,只要把正输入电压 Ui 加到 3025 (7812,7912)的输入端,3025(7812,7912)的公共端接地,其输出端便能输 出芯片标称正电压 Uo。在电路中,芯片输入端和输出端与地之间除分别接大容 量滤波电容外,另外我们采用 3025 还需在芯片引出脚根部接小容量电容到地, 分别用于抑制芯片的自激振荡和压窄芯片的高频带宽,减小高频噪声。

2.2.4 电源模块的设计方案论证于选择

方案一:采用升压型稳压电路。用两片MC34063芯片分别将3V 的电池电压 进行直流斩波调压,得到+5V的稳压输出。只需使用两节电池,既节省了电

池又减小系统体积重量,但该电路供电电流小,供电时间短,无法保证系统长期 稳定运作。

方案二:采用环形变压器,与普通变压器相比激磁能量和铁心损耗将

减少25%,电效率高达95%以上,漏磁小,电磁辐射小,振动噪声小,无需另加 屏蔽层来屏蔽电磁干扰,适合用在高灵敏度和易受高频影响的电子设备上。加上 三端固定稳压器获得±5V 电源,+5V用LM7805 输出,-5V 用LM7905输出,先在变 压器的输出段用一个用整流二极管组成的整流桥整流,再用电容滤掉高频成 分,这样就可以获得一个纹波系数小、稳定的电压。

综上所述,选择方案二,采用环形变压器三端稳压器电路。

三、系统硬件设计

3.1 系统的总体方案

本系统采用STC 系列单片机为核心的触摸手写绘图板系统。它主要包括以下 几个组成部分:1) 绘图板电压采集;2) 屏体显示;3) 数据处理;4)数据采集 AD 转换。具体来讲给覆铜板两端加载 5 伏电压,另两端接地。手写笔一端通过 放大器连接A/D转换电路,A/D转换电路连接单片机。覆铜板相当于滑动变阻器 两端,手写笔相当于变阻器的滑动端。当手写笔在覆铜板上滑动时,相应的手写 笔上的电压会规律性发生变化。由于覆铜板电阻率较低,相应的手写笔上的电压 变化值0-3毫伏,低电压信号通过多级级联高增益放大器把低电压信号放大后送

给 A/D 转换电路数据采集, 51 单片机对采集的数据处理后计算出坐标,并在液 晶上显示。系统通过高增益放大器放大微弱信号和精确地数据采样,单片机的数 据处理显示。该系统具有可靠性好,精度高等优点。

12V 电源

5V 稳压 9V 稳压 200mA 稳流模块

89C52 单 片 机

A/D 1549

毫伏级放 大 模 块

覆 铜 板

ADS7843

1 2 8 6 4 液 晶 显 示

图3.1系统组成框图

3.2 单元电路(功能模块)的设计

STC89C52单片机最小系统。最小系统包括晶体振荡电路、复位开关和电源部分。

VCC C5

10uF

C6 104

3

J5

VCC P1.0 2

P1.1 4 P1.2 6 P1.3 8 C8

P1.410

10uF P1.512

P1.614 P1.716

P3.0 2 P3.1 4 R19 P3.2 6 10K P3.3 8

P3.410 P3.512 P3.614 P3.716

2 1 4 3 6 5 8 7 10 9 1211 1413 1615 J17

2CON 18 2 4 3 6 5 8 7 10 9 1211 1413 1615

1 3 5 7 9 11 13 15 1 3 5 7 9 11 13 15

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

STC1

CLKOUT2/ADC0/P1.0 VCC ADC1/P1.1 P0.0

P0.1 RXD2/ECI/ADC2/P1.2

TXD2/CPP0/ADC3/P1.3 P0.2 SS/CPP1/ADC4/P1.4 P0.3

P0.4 MOSI/ADC5/P1.5

P0.5 MISO/ADC6/P1.6

SCLK/ADC7/P1.7 P0.6 P4.7/RST P0.7 INT/RXD/P3.0 EX_LVD/P4.6/RST2 TXD/P3.1 ALE/P4.5 INT0/P3.2 NA/P4.4 INT1/P3.3 P2.7/A15 CLKOUT0/INT/T0/P3.4 P2.6/A14 CLKOUT1/INT/T1/P3.5 P2.5/A13 WR/P3.6 P2.4/A12 RD/P3.7 P2.3/A11 XTAL2 P2.2/A10 XTAL1 P2.1/A9 GND P2.0/A8 STC89C52RC/12C5A60S2

2CON8*2

C9 33pF 12M C10 33pF

5

VCC 40 39 38 37 36 35 34 33 32 31

VCC 30 29 28 2 27 4 26 6 25 8 24 10 23 12 22 14 21 16

J6 2

4 6 8 10 12 14 16

J7 2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

1 3 5 7 9 11 13 15

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

1P0.0 3P0.1 5P0.2 7P0.3 9P0.4 1P 10.5 1P 30.6 1P 50.7

CPU 最小系统模块

图3.2 STC89C52单片机最小系统

3.3 电源模块的设计

电源电路是用环形变压器三端固定稳压器获得±5V 电源,+5V用7805输出, -5V 用7905 输出,环形变压器的电压经过三端固定稳压器,再经整流桥整流, 用电容滤掉高频成分。如图3.3.1

图3.3.1 ±5V 稳压电源电路

+15V

U3

IN FB

ON/OFF OUT GND

LM2576HVT-5.0

1 5 3

C1 Cap 100uF

1 U1 IN OUT GND

3

4 2

L? Inductor 10mH D? Diode

Out

+5V

C? Cap 1000uF

LM7815CT

C3 Cap 22uF

1

U4 IN OUT GND

3

+5V

Out

LM7805CT

U2 IN OUT GND

1 3

1

C4 Cap 22uF

U5 IN OUT GND

3

+9V

Out

LM7815CT

LM7809CT

图3.3.2 系统供电模块

3.4 输出微弱信号采样电路模块设计

输出信号采样电路模块设计由一片MAX414 和TLC159 构成,分别与单片机 P3.5、P3.6 和 P3.7 脚连接,如图,其中MAX414 将输出模拟信号放大,模拟输 入信号(ANALOGIN )经过TLC549 内部采样/保持器至8-bit 逐次比较式A/D转换 器。片选控制端(CS_,低有效)和输入/输出时钟端(I/O CLOCK)与独立的内 部系统时钟通过内部逻辑控制电路,实现外部接口与内部的数据传输,通过单片 机从而实现波形幅度的控制。

图3.4.1 输出信号采样电路模块设计

3.5 数据采集模块

数据采集模块数据采集系统如图,采用AD1549 模数转换器及89C52 控制数 据采集。A/D转换器是数字信号处理的基础,是数据采集系统、测量仪器仪表及 工业控制设备等测控装置与测控系统中应用比较广泛的器件。随着大规模集成电 路技术的发展,各种高精度、低功耗、可编程、低成本的A/D转换器不断推出, 使得测控系统的电路更加简洁,可靠性更高。本系统采用芯片TLC1549IP 是美国 TI 公司生产的10位开关电容型逐次逼近A/D转换器,其简单的串行输出接口可方 便地与各类微机进行连接,是10位数据采集系统的理想器件。

TLC1549基本工作原理:TLC1549IP 是带有串行输出接口的10位8引出脚A/D 转换器,主要由采样-保持电路,逐次逼近式A/D变换器,节拍发生器与逻辑控制 器单元,数据寄存器,数据选择器与串行输出电路单元,内部电源等组成。它的 核心是逐次逼近式A/D变换器。在逻辑控制电路与节拍发生器产生的时钟信号的 共同作用下,首先由采样-保持电路对输入的模拟信号进行样本值采集并由保持 电路将采样的电平值保持到下一个采样时刻。接下来由逐级比较式A/D变换器完 成量化编码处理,模拟信号被变换成数字信号并被送入数据寄存器,完成一次模 /数变换。在该次变换完成后,位于串行输出电路之前的数据选择器开始依次从 数据寄存器中读出信息位并按顺序把它们送到串行数据输出端(DATA?OUT )。这 里,选择和形成输出脉冲的频率由外部时钟信号(I/O?CLOCK)决定。。TLC1549IP 的内部结构框图如图3.5.1所示。

图3.5.1 TLC1549功能结构图

VCC

C? Cap 100pF C? Cap 100pF

C? Cap2 100pF

9 31 29 30 10 11 12 13 14 15 16 17

U?

VCC

Y1 12M

19 18

XTAL1 XTAL2

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P1.0/T2 P1.1/T2EX P1.2/ECI P1.3/CEX0 P1.4/CEX1 P1.5/CEX2 P1.6/CEX3 P1.7/CEX4 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15

40 39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28

P2.0 P2.1 P2.2 P2.3

5 6 7 8 *

CS GND DATA REF I/O IN VCC REF TLC1549

4 3 2 1

VCC

C? CapC? 100pF Cap U? 100pF

1 R?A

16 2 1

VCC

Res Pack1 1K

LM336Z5.0

S?

SW-PB

RST EA/VPP PSEN

ALE/PROG P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

R? RPot 1K

R?A

Res Pack2 1K

20

VSS

P89C51RC2BN/01

图3.5.2 TLC1549 A/D串行接口应用原理图

3.6测量毫伏电压放大模块

测量放大器是信息检索与数据采集系统中常用的前置放大器,通常用在自动 控制及精密仪器等电子系统中。同时是一种高增益、直流耦合放大器,它具有差 分输入、单端输出、高输入阻抗和高共模抑制比等特点,能够将微弱的电信号进 行放大。

本系统放大电路用用集成电路OP07搭建,OP07是一种高精度单片运算放大

器,具有很低的输入失调电压和漂移。OP07 的优良特性使它特别适合作前级放 大器,放大微弱信号。

图3.6 OP07放大电路

该电路中用三个 OP07 集成运放,电路设计满足同相并联差值比例输入级和 差分放大输出级,其中U1与U2为两个性能一致(主要指输入阻抗、共模抑制比 和开环增益)的集成运放 OP07,工作于同相放大方式,构成平衡对称的差动放 大输入级,U3采用集成运放OP07,工作于差动放大方式,用来进一步抑制U1、 U2的共模信号,并接成单端输出方式适应接地负载的需要。R10与R8、R9组成 反馈网络,引入了负反馈,直接耦合多级放大电路中,放大级数越多,放大倍数 也越大,该放大电路不但增益稳定,而且噪声、失真、输出阻抗都降低了,输入 阻抗也增大了,满足放大电路的性能指标。电路中通过对电位器的调节,来实现 该测量放大器放大倍数的调节。

器件选择:元器件的选择是高性能放大的保证,电路中运放U1、U2和U3均 选用集成运放OP07。U1和U2的参数必须尽可能相同其输入阻抗、共模抑制比和 开环增益一致,这样,电路中除了具有差模、共模输入电阻大的特点外,两运放 的共模增益、失调及漂移产生的误差也相互抵消。同时,为提高共模抑制比,对 称的电阻必须精密配置,通过调试电路,及在电路中用电位器代替电阻的方式, 满足本毕业设计要求的基本原则下,最终确定RW 的电阻值及R 的电阻值。

集成运放按供电方式可被分为双电源供电和单电源供电,在双电源供电中又 分为单运放、双运放和四运放。按制造工艺可将运放分为双极性、CMOS 型和BiFET 型,双极性运放一般输入偏置电流及器件功耗较大,但由于采用多种改进技术, 所以种类多,功能强;CMOS 型运放输入阻抗高、功耗小,可在低点源电压下工 作,初期产品精度低、增益小、速度慢,但目前已有低失调电压、低噪声、高速

度、强驱动能力的产品;BiFET 型运放采用双极型管和单级型管混合搭配的生产 工艺,以场效应管作输入级,使输入电阻高达 1012Ω 以上,目前有电参数各不 相同的多种产品。

对于本次设计中的前级运放 U1、U2 两个运放,要选择两个参数一样,最好 选择双差分对管,即在一个集成芯片上有两个参数一样的差分放大器。且要求输 入阻抗(Ri )大,至少大于2MΩ,温漂要小,差模放大倍数(AVD )要大,共模 抑制比(KCMR )要大的场效应管,例如OP07。 OP07作为常用运放的功能特点

OP07 芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路[11]。 具有低失调、低漂移、低噪声、偏置电流小等优点。由于 OP07 具有非常低的输 入失调电压(对于OP07A 最大为25μV),所以OP07在很多应用场合不需要额外 的调零措施。OP07同时具有输入偏置电流低(OP07A 为±2nA )和开环增益高(对 于 OP07A 为 300V/mV)的特点,这种低失调、高开环增益的特性使得 OP07 特别 适用于高增益的测量设备和放大传感器的微弱信号等方面。 有如下特点:

(1)低的输入噪声电压幅度-0.35uvp-p (0.1hz-10hz ) (2)极低的输入失调电压-10uv (3)极低的输入失调电压温漂-0.2uf/c (4)具有长期的稳定性-0.2uv/mo (5)低的输入偏置电流+1na~-1na (6)高的共模抑制比-126db

(7)宽的共模输入电压范围+14v~-14v (8)宽的电源电压范围±3v ~±22v (9)可替代725,108A ,741,AD510等电路

3.7 检测电路设计模块

覆铜板,是指纸和玻纤布等基材,浸以树脂,制成粘结片(胶纸和胶布) ,由 数张粘结片组合后,单面或双面配上铜箔,经热压固化,制成的板状产品,图3.7.1 所示。设计手写绘图板时最重要的问题是确定触摸点的坐标位置, 通过单片机控 制A/D准确地采样到被接触点电压的变化的坐标位置, 至于该点响应何种按键只 是交给相应的处理软件进行处理即可。

铜箔

粘结片

图3.7.1 覆铜板构造

测量X 坐标时:

1)在X+,X-两电极加上一个电压Vref ,Y+接一个高阻抗的ADC 。

2)两电极间的电场呈均匀分布,方向为X+到X-。

3)手触摸时,两个导电层在触摸点接触,触摸点X 层的电位被导至 Y层所接的ADC , 得到电压Vx 。

4)通过Lx/L=Vx/Vref,即可得到x 点的坐标。

Y 轴的坐标可同理将Y+,Y-接上电压Vref ,然后X+电极接高阻抗ADC 得到。

X1

Y0 Y1

覆铜板

X0

图3.7.2 覆铜板点触屏坐标

图3.7.3 覆铜板连接电路

普通的覆铜板一般由三部分组成,上下两层的阻性覆铜导体层、两层导体之

间的隔离层。近似等效为电阻触摸屏。

图3.7.4 覆铜板触点屏

电路工作时,覆铜板上下导体层相当于电阻网络,如图2所示。当某一层电

极加上电压时,会在该网络上形成电压梯度。如有外力使得上下两层在某一点接

触,则在电极未加电压的另一层可以测得接触点处的电压,从而知道接触点处的 坐标。比如,在顶层的电极(X+,X-) 上加上电压,则在顶层导体层上形成电压梯 度,当有外力使得上下两层在某一点接触,在底层就可以测得接触点处的电压, 再根据该电压与电极(X+)之间的距离关系,知道该处的X 坐标。然后,将电压切

换到底层电极(Y+,Y-)上,并在顶层测量接触点处的电压,从而知道Y 坐标。

覆铜板和表笔作为一个输入设备,对其控制用专门的芯片,控制覆铜板检测

电路的芯片要完成两件事情:其一,是完成电极电压的切换;其二,是采集接触 点处的电压值(即A/D)。本检测电路系统用ADS7843控制的实现。ADS7843是

一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片。供电电压

2.7~5 V,参考电压VREF 为1 V~+VCC,转换电压的输入范围为~ VREF,最高

转换速率为125 kHz。表1为引脚功能说明,图3.7.5为其典型应用。

图3.7.5 ADS7843典型应用

ADS7843的内部结构及参考电压模式选择如图所示

图3.7.6 ADS7843引脚功能说明

ADS7846是一个典型的逐次逼近型AD 转换器,其结构是基于电荷再分配的比例电容阵

列结构,这种结构本身具有采样保持功能图3.7.7显示了ADS7846的基本工作结构 。

ADS7846工作电压可以从2.7V 到5.25V ,需要外部时钟来提供转换时钟和串口时钟,

同时还包含了一个内部2.5V 的基准电压电路,内部基准可以被外部的,低阻抗电压源驱动, 基准电压范围为1V 到+VCC,基准电压值决定了AD 转换器的输入范围。

覆铜板等效电阻屏

图3.7.7 ADS7846的基本工作结构

ADS7843之所以能实现对触摸屏的控制,是因为其内部结构很容易实现电极

电压的切换,并能进行快速A/D转换。A2~A0和SER/为控制寄存器中的控制位,

用来进行开关切换和参考电压的选择。

STC89C51

P2.0

P2.1

P2.2

P2.3

P2.3

INTO ADS7846 D1 D0 CK CS /PIN 显 示 屏 覆铜板

图3.7.8 ADS7846系统接人如图

ADS7846是四线式触摸屏的控制器:控制器的主要功能是分别向X 、Y 电极对

施加电压.并把测量电极上的电压信号转换为相应触点的X 坐标,通过中断请求 向P89C669表示有触摸发生。89C51通过P1.3、P1.4和P1.2、P1.1的配合来获取

坐标数据。系统接人如图所示。

当液晶屏上显示出需要操作的画面,我们通过表笔进行操作时。用户在覆铜

板屏上的有效区域点击,触摸屏的X 方向输出电阻和Y 方向输出电阻分别随X 和Y 呈线性变化,ADS7846控制器将其分别转换为12位数据,通过中断告知单片机需

要接收数据。单片机接收到数据后进行处理。首先进行触点数据是否有效的判断, 包括:a) 是否是人的误操作,即是否是由于人的抖动而产生的错误数据。

b)ADS7846传过来的数据是否有效.由于刚开始传过来的第一个坐标是用户开始

接触触摸屏时产生的。所以电阻并不准确.从而导致数据也不准确,通常要去掉: 在接收过程中。通常是采用多次平均的方法。假如有一次接收的数据和平均值的 差别很大,则这次测量就作废了.需要重新测量。一旦数据有效。单片机就会继 续解算触点坐标落在液晶屏上的位置.并根据解算的结果来判断执行相应的功能 函数。使触摸屏和液晶屏有机地结合起来.建立一定的逻辑关系.交互地进行信 息存取和输出。

3.8 液晶显示模块

液晶显示模块是128×64 点阵的汉字图形型液晶显示模块,可显示汉字及图

形,内置国标GB2312 码简体中文字库(16X16 点阵)、128 个字符(8X16 点阵) 及64X256点阵显示RAM (GDRAM )。可与CPU 直接接口,提供两种界面来连接微处 理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡 眠模式等

1.显示资料RAM (DDRAM )

显示资料RAM 提供64×2 个位元组的空间,最多可以控制4 行16字(64个字)的

中文字型显示,当写入显示资料RAM 时,可以分别显示CGROM 、HCGROM 与CGRAM 的

字型;ST7920A 可以显示三种字型,分别是半宽的HCGROM 字型、CGRAM 字型及中 文CGROM 字型,三种字型的选择,由在DDRAM 中写入的编码选择,在0000H —0006H 的编码中将自动的组成两个位元组的编码达成中文字型的编码(A140—D75F ), 各种字型详

细编码如下:

1.显示半宽字型:将8 位元资料写入DDRAM 中,范围为02H —7FH 的编码。

2.显示CGRAM 字型:将16位元资料写入DDRAM 中,总共有0000H ,0002H ,0004H , 0006H 四种编码参考信号相位累加器相位加法器波形存储器数 字乘法波器

单片机接受键盘的中断申请,根据不同的按键执行不同的功能,将执行的结果在 LCD 上显示出来.在显示的时候,由于LCD 只接受相应字符的字形码,所以对于 固定不变的提示信息和标题,将字型码存储在单片机ROM 的字库内.对于变化的 数值的字型码,则在显示以前通过查字库,将字库内存储的数字的字型码复制到 自己的存储单元.然后将自己的存储单元的字型码送入LCD 显示缓存中显示。由 单片机P2.0~P2.7 口控制D7~D0S 数据的输入输出,RS 为数据选择信号由P3.0

控制,E 为读写使能端,高电平有效,下降沿锁定数据由P3.2控制,R/W为读写 选择端,高电平:读数据,低电平:写数据,由单片机P3.1口控制。液晶显电路 如图3.8所示。

图3.8 液晶显示电路

四、系统软件设计及分析

4.1 主体程序流程图

开 始

初 始 化

覆 铜 板 电 压 变 化

T L C 1 5 4 9 采 样

A / D 转 换 电 路

单 片 机

晶 显 示

图4.1主体程序流程

五、部分程序

5.1 采样程序

5.1.1 主程序。主程序包含有A/D 采样子程序。在AD 采样读取成功后对数

据进行

分析,并选择合适的基准源。该过程结束后进入低功耗模式,等待下一个采样周 期的到来。

5.2.2 A/D 采样子程序。A/D 使用通道0 进行电流检测。单片机给A/D 发

出通道选择信号,然后等待A/D芯片转换数据,最后读取其数据

图5.1采样程序流程

TLC1549串行A/D转换程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

/*****************************************/

/* 12864引脚定义 */

/*****************************************/

sbit CS_12864=P3^5; //片选信号线

sbit SID_12864=P3^6; //串行数据线

sbit SCLK_12864=P3^4; //串行同步时钟线,上升沿有效

sbit RST_12864=P1^3; //RST复位信号, 接高电平

sbit CH_12864=P3^7; //并行,串行选择信号,高电平并行;低电平串行, 接低电平

/*****************************************/

/* TLC1549引脚定义

/*****************************************/

sbit TLC1549_CS=P1^3; //片选端

sbit TLC1549_DAT=P1^4;//数据端

sbit TLC1549_CLK=P1^5;//时钟端

/*****************************************/

/* 12864显示内容 */

/*****************************************/

uchar code dis1[]={" 电压采集 "};

uchar dis2[]={"电压:0.0000V"};

uchar dis3[]={"采集:0000"};

/*****************************************/

/* 毫秒延时函数 */

/*****************************************/

void delay_ms(uint xms)

{

uint i,j;

for(i=0;i

for(j=0;j

}

/*****************************************/

/* 微妙延时函数 */

/*****************************************/

void delay_us(uint i)

{

while(i--); //延时时间为(i*2+5)微秒,除0外

}

/*****************************************/

/* TLC1549初始化 */

*/

/*****************************************/

void init_TLC1549()

{

uchar i;

TLC1549_CS=0;

TLC1549_CLK=0;

TLC1549_DAT=1;

for(i=10;i>0;i--)

{

TLC1549_CLK=1;

delay_us(2);

TLC1549_CLK=0;

delay_us(2);

}

TLC1549_CS=1;

delay_us(20);

}

/*****************************************/

/* 获取TLC1549转换结果 */

/*****************************************/

uint get_TLC1549()

{

uint tmp=0;

uchar a;

float temp;

TLC1549_CS=1;

delay_us(53);//

TLC1549_CS=0;

delay_us(1);

for(a=10;a>0;a--) //读取AD 转换后的十位数据

{

tmp

if(TLC1549_DAT)

tmp|=1; //如果数据输出是1,或上tmp, 再赋给tmp ,这样就读的数

据口数据

TLC1549_CLK=1;

delay_us(2);

TLC1549_CLK=0;

}

TLC1549_CS=1;

delay_us(20);

/*if(tmp>1004)

temp=tmp+;

else if(tmp>983)

temp=tmp+;

else if(tmp>962)

temp=tmp+;

else if(tmp>941)

temp=tmp;

else if(tmp>920)

temp=tmp;

else if(tmp>900)

temp=tmp*1.02225+0.5;

else if(tmp>879)

temp=tmp*1.0223+0.5;

else if(tmp>858)

temp=tmp*1.02235+0.5;

else if(tmp>837)

temp=tmp*1.0224+0.5;

else if(tmp>550)

temp=tmp*1.02155+0.5;

else if(tmp>500)

temp=tmp*1.0216+0.5;

else if(tmp>450)

temp=tmp*1.02315+0.5;

else if(tmp>400)

temp=tmp*1.0232+0.5;

else if(tmp>350)

temp=tmp*1.02465+0.5;

else if(tmp>300)

temp=tmp*1.0247+0.5;

else if(tmp>250)

temp=tmp*1.0275+0.5;

else if(tmp>200)

temp=tmp*1.028+0.5;

else if(tmp>150)

temp=tmp*1.0355+0.5;

else if(tmp>100)

temp=tmp*1.0366+0.5;

else if(tmp>80)

temp=tmp*1.052+0.5;

else if(tmp>60)

temp=tmp*1.1+0.5;

else if(tmp>40)

temp=tmp*1.18+0.5;

else if(tmp>20)

temp=tmp*1.38+0.5;

else if(tmp>10)

temp=tmp*1.5+0.5;

else if(tmp>5)

temp=tmp*1.7+0.5;

else

temp=5;

tmp=(uint)temp;

if(tmp>1023)

tmp=1023; */

return tmp;

}

/*写指令到LCD12864,输入有*/

void write_cmd_12864(uchar command_data)

{

uchar i;

uchar i_data;

i_data=0xf8;

CS_12864=1;

SCLK_12864=0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data&=0xf0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

CS_12864=0;

delay_ms(10);

}

/*写显示数据到LCD, 输入有*/

void write_data_12864(uchar command_data)

{

uchar i;

uchar i_data;

i_data=0xfa;

CS_12864=1; SCLK_12864=0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data&=0xf0;

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

i_data=command_data;

i_data

for(i=0;i

{

SID_12864=(bit)(i_data&0x80);

SCLK_12864=0;

SCLK_12864=1;

i_data=i_data

delay_ms(1);

}

CS_12864=0;

delay_ms(10);

}

/*设定显示位置输入有:X 和 Y,X表示每行的首地址,Y 表示从第几个字开始*/

void lcd12864_pos(uchar X,uchar Y)

{

uchar pos;

if(X==0)

X=0x80;

else

if(X==1)

X=0x90;

else

if(X==2)

X=0x88;

else

if(X==3)

X=0x98;

pos=X+Y;

write_cmd_12864(pos); //显示地址

}

/*lcd 12864初始化*/

void lcd12864_init()

{

delay_ms(10);

write_cmd_12864(0x30);//基本指令操作

delay_ms(5);

write_cmd_12864(0x0c);//显示开,光标关

delay_ms(5);

write_cmd_12864(0x01);//清除led 显示内容

}

/*****************************************/

/* 12864显示函数 */

/*****************************************/

void display()

{

uchar i;

lcd12864_pos(0,0); //设置显示位置为第一行的第一个字符

i=0;

while(dis1[i]!='\0')

{

write_data_12864(dis1[i]);

i++;

}

lcd12864_pos(1,0); //设置显示位置为第二行的第一个字符

i=0;

while(dis2[i]!='\0')

{

write_data_12864(dis2[i]); //显示字符

i++;

}

lcd12864_pos(2,0); //设置显示位置为第二行的第一个字符

i=0;

/*while(dis3[i]!='\0')

{

write_data_12864(dis3[i]); //显示字符

i++;

}*/

}

/*****************************************/

/* 对采集后数据处理,转换实际电压值 */

/*****************************************/

void deal_TLC1549(uint dianya)

{

//uint dianya;

//dianya=get_TLC1549();

//dianya=(dianya*(500/255))*100;//

float dianya1;

dianya1=dianya;

dis3[5]=(dianya/500+0x30);

dis3[6]=(dianya/50%5 +0x30);

dis3[7]=(dianya/5%5+0x30);

dis3[8]=(dianya%5+0x30);

dianya1=dianya1*25000/1023;//注意:dianya=(dianya*(50000/1023))与

dianya=(dianya*(5/1023))*10000的结果是不一样的

dianya=(uint)dianya1;

dis2[5]=(dianya/5000+0x30);

dis2[7]=(dianya/500%5+0x30);

dis2[8]=(dianya/50%5+0x30);

dis2[9]=(dianya/5%5+0x30);

dis2[10]=(dianya%5+0x30);

//dianya=dianya*50000/1023;//

//dis2[5]=(dianya/10000+0x30);

//dis2[7]=(dianya/1000%10+0x30);

//dis2[8]=(dianya/100%10+0x30);

//dis2[9]=(dianya/10%10+0x30);

//dis2[10]=(dianya%10+0x30);

}

void main()

{ CH_12864=0;

delay_ms(10); //延时

lcd12864_init(); //初始化lcd

init_TLC1549();

while(1)

{

deal_TLC1549(get_TLC1549());

display();

}

}

5.3 检测电路AD7846控制覆铜板触点位置程序

图5.3 检测电路AD7846控制覆铜板触点位置程序

ADS7843驱动程序

ADS7843是一个内置 12位模数转换、低导通电阻模拟开关的串行接口芯片。供

电电压 2.7~5 V,参考电压 VREF 为 1 V~+VCC,转换电压的输入范围为 0~ VREF, 最高转换速率为 125 kHz。

// ADS7843 驱动程序(串行)

//硬件连接: DCLK ——P0^0;

// CS ——P0^1;

// DIN ——P0^2;

// BUSY ——P0^3

// DOUT ——P0^4

// PENIRQ ——P3^2;

// VDD--逻辑电源(+5V)

VSS--GND(0V) //

//ADS7843.c

#include

#include //STC单片机头文件

#define uint unsigned int

#define uchar unsigned char

sbit DCLK = P0^0;

sbit CS = P0^1;

= P0^2; sbit DIN

sbit BUSY = P0^3;

sbit DOUT = P0^4;

sbit PENIRQ = P3^2;

void Tranfer(char Data);

uint average(uint a[8]);

//============================================================ ========================

//函数名称:void delay(uint us)

//函数功能:延时子函数

//入口参数:us 延时时间

//出口参数:无

//============================================================ ========================

void delay(uint us)

{

while(us--);

}

//============================================================ ========================

//函数名称:void ADS7843_start(void)

//函数功能:ADS7843启动

//入口参数:无

//出口参数:无

//============================================================ ========================

void ADS7843_start(void)

{

DCLK=0;

CS=1;

DIN=1;

DCLK=1;

CS=0;

} //时钟信号,下降沿有效 //片选信号,低电平有效 //串行数据输入 //忙信号 //串行数据输出 //键盘中断请求信号,低电平(负边沿)有效

//============================================================ ========================

//函数名称:void ADS7843_wr(uchar dat)

//函数功能:写 ADS7843

//入口参数:dat 写入的数据

//出口参数:无

//============================================================ ========================

void ADS7843_wr(uchar dat)

{

uchar count;

DCLK=0;

for(count=0;count

{

dat

DIN=CY;

DCLK=0;

_nop_();

_nop_();

_nop_();

DCLK=1;

_nop_();

_nop_();

_nop_();

}

}

//============================================================ ========================

//函数名称:uint ADS7843_rd(void)

//函数功能:读 ADS7843

//入口参数:无

//出口参数:读回的坐标值

//============================================================ ========================

uint ADS7843_rd(void)

{

uchar count=0;

uint dat=0;

for(count=0;count

{

dat

DCLK=1; _nop_();_nop_();_nop_(); //下降沿有效

DCLK=0; _nop_();_nop_();_nop_();

if(DOUT)

dat++;

}

return(dat);

}

//============================================================ ========================

//函数名称:void intr0_int()

//函数功能:外中断 0中断服务函数

//入口参数:无

//出口参数:无

//============================================================ ========================

void intr0_int() interrupt 0 using 2

{

uint X=0,Y=0,a[4],i, avex,avey,x[8],y[8];

IE=0; //关中断

delay(100); //中断后延时以消除抖动,使得采样数据更准确

if(!PENIRQ)

{

for(i=0;i

{

ADS7843_start();

delay(2);

ADS7843_wr(0x90);//送控制字 10010000 即用差分方式读 X 坐标

delay(2);

DCLK=1;

_nop_();

_nop_();

_nop_();

_nop_();

DCLK=0;

_nop_();

_nop_();

_nop_();

_nop_();

X=ADS7843_rd(); //读 X 轴坐标

x[i]=X;

ADS7843_wr(0xD0); //送控制字 11010000 即用差分方式读 Y 坐标

DCLK=1;

_nop_();

_nop_();

_nop_();

_nop_(); DCLK=0; _nop_(); _nop_(); _nop_(); _nop_();

Y=ADS7843_rd(); //读 Y 轴坐标 y[i]=Y; CS=1; }

avex=average(x); //X坐标数据处理 a[0]=avex/1000; //发上位机观察结果 a[1]=(avex-a[0]*1000)/100;

a[2]=(avex-a[0]*1000-a[1]*100)/10; a[3]=avex%10; Tranfer(a[0]+48); Tranfer(a[1]+48); Tranfer(a[2]+48); Tranfer(a[3]+48);

avey=average(y); //Y坐标数据处理

a[0]=avey/1000; //发上位机观察结果 a[1]=(avey-a[0]*1000)/100;

a[2]=(avey-a[0]*1000-a[1]*100)/10; a[3]=avey%10; Tranfer(a[0]+48); Tranfer(a[1]+48); Tranfer(a[2]+48); Tranfer(a[3]+48);

for(i=0;i

IE=0x81; }

//开中断

//============================================================ ======================== //函数名称:void init_serial() //函数功能:初始化串口 //入口参数:无 //出口参数:无

//============================================================ ======================== void init_serial() {

TMOD=0x22; //定时器 T1使用工作方式 2 TH1=250; //设置初值 TL1=250; TR1=1; //开始计时 PCON=0x80; //SMOD=1; SCON=0x50; //工作方式 1,波特率 9600bit/s,允许接收 TI=1; }

//============================================================ ======================== //函数名称:void Tranfer(char Data) //函数功能:发送数据程序

//入口参数:Data 要发送的数据 //出口参数:无

//============================================================ ======================== void Tranfer(char Data) {

while(TI==0); SBUF=Data; TI=0; }

//============================================================ ======================== //函数名称:int main() //函数功能:主函数 //入口参数:无 //出口参数:无

//============================================================ ======================== int main() {

// uint b[4];

TCON=0x01; //设置外部中断 0下降沿触发

EX0=1; //开外中断 0 EA=1; //开总中断 init_serial(); while(1); }

//============================================================ ========================

//函数名称:uint average(uint a[8])

//函数功能:数据处理程序,采集 8次的数据,去掉最大值,去掉最小值,然后求 平均

//入口参数:数组首地址 //出口参数:平均值

//============================================================ ======================== uint average(uint a[8]) {

uint max,min,i,ave=0,sum=0;

max=a[0]; min=a[0];

for(i=0;i

if(maxif(min>a[i])min=a[i]; sum+=a[i]; }

ave=(sum-min-max)/6; return ave; }

六、系统测试分析

6.1 测试仪器与设备

基本仪器清单如表1所示。

仪器名称

表1 基本仪器清单 型号 指标

20Hz 60MHZ

100KHz~100KHz

± 3% 10Hz~800kHz

± 10% +5V,+12V, -5V,-12V

50Hz

1 5 位 2

生产厂家 日本岩崎

岩崎台式模拟示波 SS-7802A

双通道数字示波器 TDS1002 双通道双指针毫伏 DF2170B 表(低频毫伏表)

数 量 1

Tektronix 公司 1 宁波中策电子有限 1

公司

稳压电源 WD-5

启东市斯迈计算机 1 厂

宁波中策电子有限 1

公司 台湾富贵仪器 1 ESCORT

直流稳压源 台式万用表

DF17305B 3A EDM-3155

A

数万用表 Vc9806+

1 4 位 2

深圳市胜高电子科 1

技公司

6.2 电路的调试

整个系统硬件的调试有以下:

(1)电源电路采用环形变压器,减少电磁干扰,减少纹波系数获得较纯净和稳 定的电源。

(2)显示电路中,为了获得较好的亮度,加上了一个10K 的精密可调电阻,这样 可以调节液晶模块的亮度。

(3)D/A 转换电路中,为了保证D/A 转换器总线在空余方式为高电平,两个DA 转换器都要的数据线和时钟线都接上拉电阻与电源相连,并加一个去耦电容。 (4) 在信号采样电路的的运算放大器的1 脚和2 脚并接一个330P 的钽电 容C80,这样,在高频的时候消除自激现象,电压信号得到明显改善

(5)表笔滑动时覆铜板上的电压很小,AD 采集不到,经过多级精密放大后信号 变大。

系统测试方案与测试结果

将表笔在覆铜板上随意画时,液晶显示屏上能显示接触点的所在象限位置及坐标 但有一定的误差。测试结果如下: 表笔接触次数 第1次 第2次 第3次 第4次 测量点坐标 (1.5、1.2) (2.3、2) (-3.5、3) -4、-4.5 实际点坐标 (1、1) (2、2) (-3、3) (-4、-4)

七、 总结

系统采用STC 系列单片机为核心的触摸手写绘图板系统。它主要包括以下几 个组成部分:1) 绘图板电压采集;2) 屏体显示;3) 数据处理;4)数据采集AD 转换。具体来讲给覆铜板两端加载5伏电压,另两端接地。手写笔一端通过放大 器连接A/D转换电路,A/D转换电路连接单片机。覆铜板相当于滑动变阻器两端, 手写笔相当于变阻器的滑动端。当手写笔在覆铜板上滑动时,相应的手写笔上的 电压会规律性发生变化。由于覆铜板电阻率较低,相应的手写笔上的电压变化值 0-3 毫伏,低电压信号通过多级级联高增益放大器把低电压信号放大后送给 A/D 转换电路数据采集, 51 单片机对采集的数据处理,并在液晶上显示。系统通过 高增益放大器放大微弱信号和精确地数据采样,单片机的数据处理显示。该系统 具有可靠性好,精度高等优点。

结束语:

本次大赛的题目充分体现了当今时代对数字化的高要求,同时要求利用成熟 的技术与新技术结合,充分发挥各自的功能,甚至提高到更高的性能,本着这个 原则,我们充分利用的现有的条件,基本上完成了题目的要求,希望本次大赛能 够圆满成功!

参考文献:

[1] 全国大学生电子设计设计竞赛组委员会. 全国大学生电子设计竞赛训练教

程[M].北京电子工业出版社,2005年 [2] 全国大学生电子设计设计竞赛组委员会. 全国大学生电子设计竞赛获奖作

品汇编(第一届~第五届)[M].北京理工大学出版社,2004年 [3] 李银祥. 数控电流源[R].武汉:武汉理工大学测试中心,2001年 [4] 秦迎春. 利用 AD7542 实现程控电流源[J].国外电子元器件,2003,6:32~ 33

[5] 张智杰.AD574在数据采集中的应用[J].国外电子元器件,2003,6:55~56 [6] 房小翠. 单片机实用系统设计技术[M].北京:国防工业出版社,1999年 [7] 周庆. 高稳定电流比较环节引入的纹波分析[J].云南大学学报,1992, 21:79~81

[8] 刘公志. 新型数字直流电源设计[J].杭州电子工业学院学报,2004, 3(24):19~22

[9] 赵建玉. 智能电流源设计[J].山东建材学院学报,1993,3(13):29~31

[10] 俞俊民. 自制恒流源[J].沈阳电力高等专科学校学报,1997,2(6):13~ 15

[11] 朱传奇. 简易使用的直流电流源[J].山东电力技术,1999,1:75~76

[12] 马云峰. 单片机控制的直流电流源设计[J].潍坊高等专科学校学报,1999, 3:60~61

附录

附录1:电路原理图

VCC

C? Cap 100pF C? Cap 100pF

C? Cap2 100pF

S?

SW-PB

9 31 29 30 10 11 12 13 14 15 16 17

U?

VCC

Y1 12M

19 18

XTAL1 XTAL2

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P1.0/T2 P1.1/T2EX P1.2/ECI P1.3/CEX0 P1.4/CEX1 P1.5/CEX2 P1.6/CEX3 P1.7/CEX4 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15

40 39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8

*

21 22 23 24 25 26 27 28

P2.0 P2.1 P2.2 P2.3

5 6 7 8

CS GND DATA REF I/O IN VCC REF TLC1549

4 3 2 1

VCC

C? CapC? 100pF Cap U? 100pF

16

2

1

1 R?A

VCC

Res Pack1 1K

LM336Z5.0

RST EA/VPP PSEN

ALE/PROG P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

R? RPot 1K

R?A

Res Pack2 1K

20

VSS

P89C51RC2BN/01

图1 单片机于TLC1549连接

+15V

U3

IN FB ON/OFF OUT GND

LM2576HVT-5.0

1 5 3

C1 Cap 100uF

1 U1 IN OUT GND

3

4 2

L? Inductor 10mH D? Diode

Out

+5V

C? Cap 1000uF

LM7815CT

C3 Cap 22uF

1

U4 IN OUT GND

3

+5V

Out

LM7805CT

U2 IN OUT GND

1 3

1

C4 Cap 22uF

U5 IN OUT GND

3

+9V

Out

LM7815CT

LM7809CT

图2 系统供电模块

图3 放大器仿真电路

图4 稳压电路

1

SMG1 1 SMG2 2 SMG3 3 SMG4 4 SMG5 5 SMG6 6 SMG7 7 SMG8 8

D

a b a a a a

J1 c

CON3 d f g b f g b f g b f g b

SMG1 e

e c e c e c e c f d d d d g dp dp dp dp dp SMG

VCC

2 3

VCC

4 5 6

Q5

P0.0 1

LED

P0.1 R5 P0.2

R6

P0.3

SMG4 SMG5 SMG6

P0.5 R9

SMG7

P0.6 R12

P0.7 R13

SMG8

LED7 LED8

LED

R7

P0.4 R8

SMG2 SMG3 SMG1

LED1 LED2

SP1

LED3 LED4

1 2

PNP 1 2

SIP1

J2

R10 10K

GND

VCC VCC

LCD 1602

YJ1 20PIN

D

VCC

GND

Q1 Q2 Q3 Q4 B

R3

1K 9012

1 R4 1K

LED5 LED6

蜂鸣器模块

2 VCC 103

GND

R11 10K

9012

R1 1K

9012

R2 1K

9012

VCC

液晶显示模块

C

J3

1 6 2 7 3 8 4 9 5

DB9

T2 OUT 7

14 R2IN 8

13 15 C1 1046

2 16 C2 104 C7 104

3.3V

J8 1 2 CON2

GND

VCC

3

C20 104

J10 1 2 CON2 U10

AMS 1117 3.3

J15 1838

1838-OUT 1 1 2 GND 2

3

CON2

VCC J12 3.3V 2

U1

T2 OUT T2 IN T1OUT T1 IN R2 IN R2 OUT R1 IN R1 OUT GND C2- V- V+ VCC RS232 VCC

C2+ C1- C1+

10 P1.3 11 P3.1 9 P1.2 12 P3.0 5 4C3 104 3 1

C4 104

SMG

数码管、LED 显示模块

1 6 2 7 3 8 4 9 5

C

J4

VCC

R2 IN T2 OUT

10uF

C5

C6 104

VCC

VCC

3

S1 SW-PB

J6 2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

1 3 5 7 9 11 13 15

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

P2.4

1P0.0 3P0.1 5P0.2 7P0.3 9P0.4 11P0.5 13P0.6 15P0.7

J18 2 1 CON2 3.3V

104 C11

GND

W

J19 S2 SW-PB S3 SW-PB S4 SW-PB S5 SW-PB

P2.5 P2.6 P2.7 P3.2

B

R14 10K R15 10K R16 10K R17 10K R18 10K

串口模块

4

J16 CON3

1838-OUT

1 P3.3

2 2401-MISO 3

DB9

VCC P1.0 2

P1.1 4 P1.2 6

C8 P1.3 8

P1.410

10uF P1.512

P1.614 P1.716

B

1838红外与24L01切换

C21 104

IN OUT

10UFC18

1 2 3 4 5 6 7 8 9

P3.0 2 1 10

11 P3.1 4 3 4 3 12 6 5 R19 P3.2 6 5 8 7 13

10K P3.3 8 7 P3.410 9 14

10 9 P3.512 11 15 1211

P3.614 13 16

1413

P3.716 15 17

1615

18

2CON8*2 19

C9 33pF 20

2 1

4 3 6 5 8 7 10 9 1211 1413 1615 J17

2C 2ON 18 12M C10 33pF

5

J5

1 3 5 7 9 11 13 15

STC1

CLKOUT2/ADC0/P1.0 VCC ADC1/P1.1 P0.0 RXD2/ECI/ADC2/P1.2 P0.1 TXD2/CPP0/ADC3/P1.3 P0.2 SS/CPP1/ADC4/P1.4 P0.3 MOSI/ADC5/P1.5 P0.4 MISO/ADC6/P1.6 P0.5 SCLK/ADC7/P1.7 P0.6 P4.7/RST P0.7 INT/RXD/P3.0 EX_LVD/P4.6/RST2 TXD/P3.1 ALE/P4.5 INT0/P3.2 NA/P4.4 INT1/P3.3 P2.7/A15 CLKOUT0/INT/T0/P3.P2.6/A14 4 P2.5/A13

P2.4/A12 CLKOUT1/INT/T1/P3.

5 RD/P3.7 P2.3/A11 WR/P3.6 XTAL2 P2.2/A10 XTAL1 P2.1/A9

P2.0/A8 GND

STC89C52RC/12C5A60S2

VCC

40 39 38 37 36 35 34 33 32 31

30 VCC 29 28 2 27 4 26 6 25 8 24 10 23 12 22 14 21 16

2

4 6 8 10 12 14 16

J7 2 1 4 3 6 5 8 7 10 9 1211 1413 1615 2CON8

键盘模块

VCC R20 3

J20 4 3 2 1 CON4

GND V CC P1.3 R21 330

J21 3 2 1 CON3

GND P1.4VCC

3.3V 电源模块

VCC

J22 1 2 3 4 USB-B

R22 1k

104 J27 CON2

D1

C12

VCC J25

2 1 CON2

VCC J26

2 1 CON2

C13

LED

VCC

GND

GND

VCC

R23 1K

VCC

D2 LED 3.3V 1Kx 6

R24R25R26 RERS2ES2

8 6 4 2

CPU 最小系统模块

J29

VCC R30

10K CON3 VCC R31

10K

P2.4

3 2 1 J30 3 2 1

103 R33 1K

P1.1

J24 2 1 CON2

R27R28R29 RESR2ERS2ES2

U2

IRQ MISO MOSI SCK CSN CE VCC GND NRF24N01

C14

104

7 5 3 1

VCC C15P1.5 P1.6 104

U3 1 2 3 4 5 HC-SR04

四键无线模块接口

2272J28

A

1

VCC 2

P3.0 3 P3.1 4 C16 5 104 6

7

APC220

U4 SET AUX TXD RXD EN VCC GND

J14

3.3V

1 2 CON2

C17 104 D4 LED

5V

P2.5

VCC

7361角度传感器接口

标题 尺寸 B 日期: 文件: 5

图号

ADC 接口 60S2单片机PWM 输出口

A

J23 2 1 CON2

USB 5V 取电模块

1

2

24L01无线模块接口

HC-SR04/US-100 超声波接口

3

APC220 接口模块

4

CJ31ON3VCC R32 5V

P2.6 10K 3

2 1 CON3

5V

修订

9-Aug-2012 第张 共张

C:\Documents and Settings\Administrator\桌面制\STC12C5A60S2--1.ddb图人:

6

图5 自制的单片机开发板

附录2:作品实物图

图一 显示坐标

图二 精度调试

图三 低功耗设计


相关内容

  • 2013年全国电子设计大赛G题优秀论文
  • 摘 要 在当今的现代化社会,科技发展迅速.尤其是单片机技术的开发应用发展,基于单片机 技术而研发的产品,为我们的生活提供了极大的方便与实用. 本作品基32位ARM控制器LM3S3748设计一个手写绘图输入设备,设计选用Luminary 微处理器LM3S3748为主控芯片,由信号输入.信号采样.算法处 ...

  • 微课的制作与工具
  • 微课的制作与制作工具 一.了解微课的制作方式 微课程的制作一般有两种方式:原创开发制作和加工改造制作.加工改造 制作是将已有的优秀教学课例(录像课例),经过加工编辑(如视屏的转录.切片. 合成.字幕处理等)并提供相应的辅助教学资源(如教案.课件.反思.习题等), 进行"微课"化处 ...

  • 矿井文明生产安全质量标准化培训
  • 矿井文明生产质量标准化培训 授课人:李付海 时 间:2016年6月20日 地 点:教育科 参加人:采一队.采二队.采三队.煤一队.煤二队.煤三队.巷修队技术员 掘进工作面支护及文明生产质量标准化 一.掘进工作面支护管理规定 1.架棚巷道开口必须采用双暗抬棚支护,抬棚梁长度要比基本棚至少长200㎜,架 ...

  • 鸿合交互式电子白板(HV-I785)
  • 鸿合交互式电子白板 HV-I785 介绍 产品技术 鸿合交互式I系列电子白板采用业内领先的i-AIST交互式先进红外线扫描技术,通过与投影机.计算机的配合使用,交互式电子白板可以成为大型的书写屏,对投射到白板上的任何画面,可用笔或手指在电子白板上书写,比以前的系统功能更先进.演示效果更出色. 多媒体 ...

  • 手写板简介.分类.使用.保养.选购.排行
  • 手写板简介: 手写板简介: 手写绘图输入设备对计算机来说是一种输入设备,最常见的是手写板(也叫手写仪) ,其作 用和键盘类似.当然,基本上只局限于输入文字或者绘画,也带有一些鼠标的功能. 手写板的分类: 手写板的分类: 手写板主要分为三类: 电阻式压力板, 电磁式感应板和近期发展的电容式触控板. 目 ...

  • 电脑技能大赛活动方案
  • 关于举行"XX 集团电脑技能大赛"的通知 集团公司各部门.各分公司: 为了促进员工学习电脑知识,提高电脑技能,更好地利用电脑这一工具为工作服务,集团公司工会将举办"XX 集团电脑技能大赛",望各部门.分公司积极配合,大力宣传,认真准备. 一.组织机构与工作人员 ...

  • 实验报告模板(手写版)
  • 本 科 实 验 报 告 (手写) 实验名称: 学 员: 号: 培养类型:年 级: 专 业: 指导教员: 称: 实 验 室: 国防科学技术大学训练部制 实验X XXXXXXXX 实验报告 (居中,实验报告内容以课件为准,可参考教材) 一. 实验目的 1.--------. 2.-------- 3.- ...

  • 办公文具的种类
  • 分类一 第一大类:办公用品 1办公用纸: 复印纸 彩色复印纸 电脑打印纸 传真纸 收银纸 喷墨打印纸 相片打印纸 工程绘图纸 天然描图纸 白板纸 2办公本册 电话本 软抄本 线圈本 拍纸本 活页本 软皮笔记本 会议笔记本 硬抄笔记本 便笺纸 告示贴 不干胶标签 牛皮纸袋/盒 信纸 信封 证书 题名录 ...

  • 江南大学:论文撰写规范
  • 江南大学 本科毕业设计(论文) 撰写规范 (2008年10月修订) 毕业设计(论文)是学生毕业前最后一个重要学习环节,是知识深化与技能培养的重要过程.它既是学生学习.研究与实践的全面总结,又是对学生素质与能力的全面检验,而且还是学生的毕业资格及学位资格认证的重要依据.为了保证我校本科生毕业设计(论文 ...