A甲0920.docx

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

A甲0920.docx

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

A甲0920.docx

A甲0920

参赛队代码:

A甲0920

 

2008年山东省“ZLG”大学生电子设计竞赛题目A:

 

《多功能电子计价秤制作》

 

参赛学生:

董学峰,刘飞,张冲

指导教师:

刘晓军、郑亚民、周强

学校:

山东大学威海分校

 

摘要

系统以EasyARM2103为控制核心,基于uC/OS-II多任务实时操作系统,辅以多功能外围电路,结合灵活的人机界面,实现了多功能计价秤的设计。

本设计控制模块以LPC2103为核心控制器,同时扩展外部E2PROM以满足数据存储的要求。

数据采集模块由压力传感器产生毫伏级信号,通过前级放大,经高精度16位A/D转换器ADS1110,得到砝码质量的相应数字信号。

采用灵敏的数字温度传感器DS18B20完成了温度测量模块。

操作界面采用PC机键盘通过PS2协议与ARM连接,键盘支持全拼汉字、中英文以及数字输入,并通过128

64点阵式液晶直观显示日期、时间,温度以及商店名称等相关信息,同时打印机可输出显示信息。

本设计基于优越的uC/OS-II操作系统,系统内核提供了任务调度与管理、时间管理、任务间同步与通信、内存管理等多种功能,同时结合功能强大的32位微处理器LPC2103,完成了多功能计价秤的设计,充分体现了EasyARM2103开发系统的优越性与应用价值.

关键词:

微处理器LPC2103uC/OS-II操作系统PS2键盘

 

一、系统方案论证比较

1.核心控制

方案1:

采用传统的8位51系列单片机。

P89C51RD2具有ISP/IAP功能,内置64KFlash程序存储器、1K字节数据存储器、3个16位定时/计数器等资源。

但其运行速度不够,难以满足题目设计需要。

方案2:

采用32位的ARM2103作为控制核心。

ARM2103内置了双串行通信接口和8KB的片内SRAM。

具有多个32位和16位定时器、1个改良的10位ADC以及多达3个边沿或电平触发的外部中断管脚的32条高速GPIO线。

ARM2103强大功能,工作稳定,因此,核心控制模块选择方案2。

2.前级放大

方案1:

利用普通低温漂运算放大器构成差分放大器,对称重传感器的微弱信号进行放大。

普通运算放大器构成差分放大器会引入大量噪声,制作需要极高精度的电阻器,才能得到良好的共模拟制比。

由于A/D转换器需要很高的精度,几毫伏的干扰信号可能会直接影响最后的测量精度。

方案2:

采用专用仪表放大器。

AD620内部采用差动输入,共模抑制比高,差模输入阻抗大,精度高,而且外部电路简单。

基于以上分析,选择方案2。

3.键盘模块

方案1:

采用ZLG7290芯片。

ZLG7290是数码管显示驱动及键盘扫描管理芯片。

采用

总线的形式,节省I/O口资源,但该芯片主要用于LED显示,功耗较大,且键值需要用户编写,本题对键盘要求较高,程序设计相对繁琐。

方案2:

采用PC机键盘。

PC机键盘包含题目要求的所有按键,功能齐全,而且可以方便的通过键盘显示扩展板与ARM连接,实现键码和ASCII码的转换。

读取方便,非常有利于软件设计。

综上所述,PC机盘更能满足题目要求,所以选择方案2。

4.温度测量

方案1:

采用PT100作为温度传感器。

它是利用铂电阻的阻值随温度变化而变化、并呈一定函数关系的特性来进行测温的,PT100虽然具有抗振动、稳定性好、准确度高等优点,但价格比较贵,不太适合普通方式的测温。

方案2:

采用DS18B20作为测温电路的温度传感器。

DS18B20的数字温度输出通过“一线”总线独特的方式。

它在测温精度、转换时间、传输距离、分辨率等方面比其他温度传感器有了很大的进步。

同时可以直接输出数字温度值,不需要校正,因此选择方案2。

二、电路整体设计

1.硬件设计

1.1整体设计

该设计以ARM2138实验开发仪为控制核心,通过键盘显示扩展板和PC机键盘相连,获取用户的按键值,再结合外部扩展的各个模块,根据用户输入的不同信息,执行相应的命令:

由UART端口控制液晶显示、打印机输出,以及显示当前温度值等信息,完成与用户的交互功能。

系统框图如图1所示。

图1系统框图

1.2具体实现

1.2.1控制模块

控制模块以LPC2103为控制器,同时扩展外部E2PROM以满足数据存储的要求模块电路如图2所示。

图2控制模块电路

1.2.2电源模块

电源模块分为系统供电电源与0-2V直流电源两部分。

供电电源:

通过变压器将220V的电网电压变压后,经整流滤波,由三端稳压7805、7812、7912分别产生正负12V和5V的电压。

0-2V直流电源:

为了保证输出电压的稳定性,采用TTL431搭建基准电压模块,经由滑动变阻器得到0—2.5V可变电压,通过电压跟随器输出0—2V可调精密直流电源,用于模拟输入信号测量。

原理图如图3所示。

图3直流电源

1.2.3数据采集

砝码通过压力传感器产生毫伏级信号,AD620作为前级放大。

通过调节R4的阻值来改变放大倍数。

原理图如图4所示。

图4前级运放原理图

ADS1110是精密的连续自校准A/D转换器,16位分辨率。

可兼容的

串行接口,片内可编程增益放大器可提供8倍的增益。

电路图如图5所示。

图5A/D转换电路图

1.2.4温度测量

采用DS18B20作为测温电路的温度传感器,采取外部供电方式,单总线2路温度测量方式,测量速度较快。

如图6所示。

图6DS18B20的硬件连接图

1.2.5人机界面

为了使系统拥有一个友好、便捷的用户界面,设计采用PC机键盘和128*64的液晶显示。

PC机键盘输入商品数字编码,液晶屏可以显示相应信息,同时可以打印输出清单,如图7所示。

图7用户界面示意图

PC键盘通过扩展电路将键盘的串行输出数据转化为并行数据,把键盘扫瞄码转换为ASCII码。

该电路以2051小型单片机为核心,通过总线控制PC键盘。

ARM外部中断EINT1用以通知ARM读取键值,从而判断用户输入的按键信息。

原理图如图8所示

图8PS键盘扩展电路图

显示器采用128*64点阵的汉显液晶HZ128—64D20,内带汉字字库,接口简单。

本系统中ARM通过串口UART0控制液晶,实现数字和英文字符的显示。

使用RD—D微型针式打印机,集打印头和控制电路一体。

UART1作为与打印机的串行接口。

1.2.6实时时钟

ARM2103内部包含定时时钟RTC,可使用独立的32768Hz的外部晶振作频率源和独立的电源供电,且功耗电流很小,无需外接实时时钟芯片。

实现了实时时钟的掉电保护。

2.软件设计

2.1软件流程图

该系统软件设计基于uC/OS-II多任务实时操作系统,并对该系统进行剪裁,缩小了内核规模。

键盘检测为系统任务处于运行态,其他任务由切换按键确定是否运行或挂起。

总体软件框图如图9所示。

任务循环

图9总体软件框图

数据存储过程如图10所示:

图10数据存储程序流程图

2.2程序设计

A/D模块、打印机检测、键盘中断部分程序见附录1。

3.系统使用说明

本系统通过键盘输入来实现所需要的功能,因为键盘是PC机键盘,通过键盘扩展板后,数字键和英文键、部分功能键使用同与PC机相连时完全一样。

按键示意图及其功能说明如图11所示。

图11按键示意图

三、理论分析与计算

1.AD精度计算

根据题目发挥功能要求,扩展高精度A/D转换器,提高电子计价秤测量精度,测量误差不大于±0.01%,20kg为满量程,则精度为20*0.01%=2g

12位A/D精度:

20Kg/4096=4.88g

14位A/D精度:

20Kg/16384=1.22g

16位A/D精度:

20Kg/65536=0.3g

考虑到其他部分所带来的干扰,选择16位的ADS1110,完全可以达到题目要求。

2.提高DS18B20的分辨率

在DS18B20中,温度是以1/2LSB(最低有效位)的形式表示时,产生以下9种格式:

读取温度值,并从得到的值中截去0.5位(TEMP_READ),再读计数器里面的值COUNT_REMAIN,COUNTER_PER_C为该温度处每个摄氏度的计数个数,根据下式计算温度值

表1温度数据对应表

四、测试结果及误差分析

1.重量测试

1.1测试仪器

表2测试仪器

序号

仪器名称

参数

1

砝码

总重20KG

2

标准电子秤

GDM-8135

1.2测试数据

表3重量测试表

砝码重量(g)

测试1(g)

测试2(g)

测试3(g)

测试均值

0

0

0

0

0

500

498

499

500

499

1000

1000

998

999

999

1500

1501

1500

1500

1500.3.

2000

2000

1998

1999

1999

4000

3998

3998

3999

3998.33

6000

5999

6002

6000

6000.33

8000

8001

8000

8001

8000.47

10000

9999

9998

9998

9998.33

15000

15001

15001

15002

15001.33

20000

20002

20002

20001

20001.67

误差分析:

由于传感器和其他器件本身并非理想线性,程序中对实测数据进行了线性补偿。

2.温度测试

在进行温度测试的时候,超过设定温度就应报警,测试结果如下,全额完成试题要求,温度测量误差不大于1℃

表4温度测试表

测试次数

设定温度

实际温度

测量温度

报警

1

25

19.5

19.5

不动作

2

30

25

24.9

不动作

3

45

60

60.1

动作

3.操作界面测试

液晶屏显示日期、时间,温度以及商店名称等信息,如图12所示。

打印机可以打印购货日期、商品名称等详细信息,在基础上添加了实收金额与找零,如图13所示。

图12开机显示屏图13打印清单

五、结论

本系统实现功能表示如下

项目

实现情况

 

基本要求

1、能用键盘设置单价,称重后能同时显示重量、单价和总额,最大称重为15.000公斤,重量误差不大于±0.1%;

完成

2、具有数码显示,显示重量、单价、总额等信息

a.重量显示为5位数码,单位为公斤,最大重量显示值为99.999公斤;

b.单价金额显示为5位数码,单位为元,最大单价金额显示值值为999.99元;

c.总价金额显示为6位数码,单位为元,最大总价金额显示值值为9999.99元;总价金额误差不大于0.01元

完成

3、具有去皮功能和总额累加计算功能

完成

4、能预存10种商品的单价,可以随意调出使用

完成

5、测量并显示环境温度,温度测量误差不大于1℃

完成

6、自制可以连续可调高稳定度0-2V直流电源,用于模拟称重传感器输出的称重信号源。

采用0-2V模拟0-20kg称重

完成

7、制作工艺

良好

 

扩展要求

1、具有实时时钟显示并具有掉电保护,可显示日历时钟

完成

2、扩展高精度A/D转换器,提高电子计价秤测量精度,测量误差不大于±0.01%FS

完成

3、采用称重传感器及相应信号处理电路与自制电子计价秤实测物品(1kg,5kg,10kg),重量测量误差小;称重数据稳定,数据稳定时间不小于2秒;

完成

4、能预存10种商品的名称(或代号)和商品的单价;能存储100组购物清单并显示,数据具有掉电保护,清单内容包括:

购货日期、收银员编号、商品名称、数量、单价、金额、本次购物总金额。

购物清单可以打印输出

完成

5、商品名称可以中文输入和显示;

完成

6、其它特色发挥功能。

1、嵌入uC/OS-II多任务实时操作系统2、操作界面PC机键盘3、超重\温度报警(当被测物品最大称重超过15.000公斤时或者温度超过50摄氏度时会自动报警)并显示相应信息.4、实现销售记录的打印,打印可现实收金额与找零。

完成

参考文献

[1]杨恒,ARM嵌入式系统设计及实践,西安电子科技大学,2005

[2]周立功等,ARM与嵌入式系统实验教程,北京航天航空大学出版社,2004

[3]王田苗,嵌入式系统设计与实例开发——基于ARM微处理器与uC/OS-II实时操作系统,清华大学出版社,2003

附录1

A/D程序片段:

#include"config.h"

#defineADS1100ADDR0x94

//配置ADS1110

uint8ADS1110Config(uint8conf)

{

uint8buf=conf;

returnI2cWrite(ADS1100ADDR,&buf,1);

}

uint16ADS1110Rcv(void)

uint8temp[3];

temp[0]=0;

temp[1]=0;

temp[2]=0;

I2cRead(ADS1100ADDR,temp,NULL,0,3);

return(temp[1]+(temp[0]<<8));

}

uint8ADS1110ReadConfig(void)

{

uint8temp[3];

temp[0]=0;

temp[1]=0;

temp[2]=0;

I2cRead(ADS1100ADDR,temp,temp+1,2,3);

return(temp[2]);

}

打印机测试程序:

#include"config.h"

#ifndefPRINTERBUSY

#definePRINTERBUSY1<<6//P0.6

#endif

voidPrinterInit(void)

{

PINSEL0=PINSEL0&0xFFFFCFFF;

IO0DIR&=~PRINTERBUSY;

UART1Init(9600);//初始串口

UART1SendByte(0x1B);

UART1SendByte(0x40);//初始化打印机

}

voidPrinterEn(charen)

{

UART1SendByte(0x1b);//选择字符集1

UART1SendByte(0x36);

UART1SendByte(0x1b);//放大2倍

UART1SendByte(0x57);

UART1SendByte(0x02);

UART1SendByte(en);//输出字符

}

键盘中断简化程序片段

#include"config.h"

#defineKEYDATA0x00FF0000

#defineKEYINT1<<14

OS_EVENT*SemKey;

//Eint1IRQ_HandlerHANDLEREint1IRQ

voidEint1IRQ(void)

{

OS_ENTER_CRITICAL();

OSSemPost(SemKey);

EXTINT=0x02;

VICVectAddr=0x00;

OS_EXIT_CRITICAL();

}

externvoidEint1IRQ_Handler(void);

voidKeyInit(void)

{

SemKey=OSSemCreate

(1);

PINSEL0=(PINSEL0&0xCFFFFFFF)|0x10000000;

PINSEL1=(PINSEL1)&0xFFFF0000;//八位数据链接到GPIO

IODIR&=~KEYDATA;//输入

EXTMODE|=0x02;/*设置外部中断为低电平触发*/

EXTPOLAR&=0x00;

/ICIntSelect&=~(1<<15);

VICVectCntl4=0x20|15;

VICVectAddr4=(uint32)Eint1IRQ_Handler;

VICIntEnable=1<<15;

EXTINT=0x02;

}

uint8GetKey(void)

{

uint32t;

uint8Val;

t=IOPIN;

t&=KEYDATA;

t>>=16;

Val=(uint8)t;

returnVal;

}

温度测量值读取

uint16read_temp(void){

wordresult;

if(temp_init())

{return0xffffffff;

}

Write_Data(0xcc);

Write_Data(0x44);

if(temp_init())

{return0xffffffff;

}

Write_Data(0xcc);

Write_Data(0xbe);

result=Read_Data();

if(result&0xf000)

{result=~result;

result>>=4;

result|=0x80000000;

}

else

result>>=4;

returnresult;

}

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

当前位置:首页 > 人文社科 > 法律资料

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

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