ZSP12项目的总结
前言:一款测量仪器做出来容易,想好做好还是需要投入更多的时间和心血。
项目概述:硬件已经定型,在C8051F020基础上的软件开发。
一 关于C8051F单片机:虽然自己整过8051单片机,但那已经是6~7年前的事情了,这款单片机听说说但一直没有用过,不知道这款增强型CIP51核有啥优点。通过添加插件可以在KEILC51中进行开发,仿真器用的U-EC6,便宜但也容易坏,下载用的是KEIL或者flash programming utility,用的是JTAG口进行调试。因为51单片机的特点,keil中配置要注意,大部分的变量要加xdata修饰。
二配置工具:用的是configration wizard2可以自动化配置相应的外设并自动生成C/ASM代码,这个还是比较给力的。但这个优先权交叉开关还是要好好研究下才能正确使用。IO/串口/定时器/DAC/ADC(都是12位)这些模块没有什么特别的。

三项目模块:240128A液晶(多级菜单,2种(11类)测试项,一个通讯设置项(上传数据)时间修改、定时、出厂设置等)
3.1:240128A驱动:这个利用了长沙太阳人公司的驱动文件,但是它是8*8,或者16*16字体的没有12*6/12字体的。所以在此基础上更改了字体,增添了区域填充。区域清除。定点字符串输出、数据有效位显示等函数。缺点是将测量处理函数和这个文件放在了一起,独立性模块化的不够。
太阳人在液晶驱动方面做了许多有益的工作:通过自动化工具”Sunman字符图形点阵代码生成器“自动生成相应的点阵字模数据。增添显示内容很是方便。
3.2菜单结构设计:开机界面,启动自检界面、主界面、各测试项界面和通讯设置界面的3级菜单结构。各个固定显示界面要定义相应的显示结构体。可以利用排版工具大概定义好界面格式设计。

3.3同PC的USB通讯(CP2102芯片TTL转USB):构建握手协议,结合串口进行大数据量的数据上传(从存储芯片中读出来然后按内容传递)
3.3ADC和DAC:都是利用CD4051电子开关切换进行2个单片机通道的AD采集(其中一个专用于电池电量检测),CD4051电子切换开关很方便但要结合DAC、ADC做好采集却不是那么容易:当通过DAC控制光源开闭,定时器中实现高低电平频率。做起来很是费劲,ADC尝试了各种办法,最后采用滚动滤波算法,在高电平期间一直滚动获得ADC数值,在低电平时开始计算(去掉最大最小平均和累加和平均结合),计算好后进行相应通道编码提示。
3.4关于AD采集通道的校正和误差:由于器件和电路的硬件差异,各通道存在误差,如果保证各通道对相同物质采集的一致性是个困难的问题。我的思路是:上电后采用上下界二分法快速找到各通道满量程ADC和0ADC值得DAC范围(12位DAC/ADC,在0xfff~max~min~0的两边区间,ADC得到的都是0xfff和0),然后以0.9max给DAC作为采集信息的源(不要饱和)。低电平时DAC给0(小于MIN就行)、每种颜色的光源(波长相同)的这个满偏和0偏应该差异不大,当以MAX测各通道ADC若值小于一定值,我们可以判定通道是否完好。
即便是这样,我们还是需要做一遍在满偏和0偏时的ADC值存下来作为基础参数。这也是ADC的实际值得范围(包含了各种误差信息)。
备注:如果可以通道能做成并行的能单独控制光的开闭,这样更能保证采集的稳定。
3.5按键:仪器的11个按键配合多级菜单结果完成所有的功能也需要精心思考才能完成菜单逻辑。
3.6微型打印机:sprint和炜煌的微型打印机是第一次接触,挺好用的,串行形式(TTL/232/USB),可设置打印方向字体大小、行间距等。在开发初期可以用上位机和printf完成打印格式设计。
4用到的小工具:CheckTool.exe校验工具、LoveString.exe字符编码工具等。

ZSP12项目的总结的更多相关文章
- Fis3前端工程化之项目实战
Fis3项目 项目目录结构: E:. │ .gitignore │ fis-conf.js │ index.html │ package.json │ README.md │ ├─material │ ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
- Hangfire项目实践分享
Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...
- Travis CI用来持续集成你的项目
这里持续集成基于GitHub搭建的博客为项目 工具: zqz@ubuntu:~$ node --version v4.2.6 zqz@ubuntu:~$ git --version git versi ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
随机推荐
- hadoop集群部署后,遇到的问题记录
1. 部署完,启动集群后,mapred-site.xml文件中配置没有生效 <property> <name>mapred.job.tracker</name> ...
- the art of seo(chapter three)
SEO Planning: Customizing Your Strategy ***Developing an SEO Plan Prior to Site Development***Determ ...
- collectd+logstash+influxdb+grafana构建windows服务器应用监控系统
一.背景介绍 本监控方案支持对Windows Server服务器集群的全面监控,方案提供丰富的图表展示, 以及对异常问题进行邮件的实时报警. 本系统由Collectd(操作系统数据搜集).logsta ...
- codevs 2456栅栏
传送门 2456 栅栏 2006年省队选拔赛四川 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Maste 题目描述 Description 农夫约翰打算建立一个栅 ...
- python装饰器执行顺序
. python 装饰器 1) 2层装饰器 def decorator(func): # TODO def wrapper(*args, **kwargs): # TODO func(*args, * ...
- 12306.cn网站自动登录器源代码
去年过年放假的时候写了一个12306.cn网站的自动登录器,刚好那时候放假了,所以没把源代码放出来,现在将代码发出来,由于编写得比较仓促(从放假的下午19:00左右到晚上到00:00左右),很多细节问 ...
- 数论 N是完全平方数 充分必要条件 N有奇数个约数
N是完全平方数 <----> N有奇数个约数 设:N = n*n 充分性: 1.N=1时,N的约数为1,为奇数 2.N>1时,1.....n......N,其中 1, n, N为N的 ...
- JavaScript实现Select选择本周、上周、本季、上季、本年的时间选取
//转自http://blog.csdn.net/xc_young/article/details/16878849,其上季度有错误,已修改 var MrYangUtil = function () ...
- Android开发--数据存储之File文件存储
转载来自:http://blog.csdn.net/ahuier/article/details/10364757,并进行扩充 引言:Android开发中的数据存储方式 Android提供了5种方式存 ...
- vscode实现列编辑
ctrl + shift + 左键选择要编辑的列 好用,再也不用使用\n替换了