前言:一款测量仪器做出来容易,想好做好还是需要投入更多的时间和心血。

项目概述:硬件已经定型,在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项目的总结的更多相关文章

  1. Fis3前端工程化之项目实战

    Fis3项目 项目目录结构: E:. │ .gitignore │ fis-conf.js │ index.html │ package.json │ README.md │ ├─material │ ...

  2. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  3. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

  4. Hangfire项目实践分享

    Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...

  5. Travis CI用来持续集成你的项目

    这里持续集成基于GitHub搭建的博客为项目 工具: zqz@ubuntu:~$ node --version v4.2.6 zqz@ubuntu:~$ git --version git versi ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  8. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  9. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

随机推荐

  1. linux应用之apache服务的安装及配置(centos)

    CentOS Apache服务器安装与配置   一.安装Apache程序,一般有三种安装方式:1.直接网络安装:2.下载rpm包,上传至服务器进行安装:3.通过原代码编译安装: yum -y inst ...

  2. 在KitKat(Android 4.4.2) 推送网址给手机

    弱者才会回避问题. 最近想把网址推送给手机实现后台下载,打算故技重施,用短信传送然后中断广播的方法实现隐蔽传送.试了半天发现怎么现在拦不住短信了.查了一下才发现原来Android4.4增加了一个安全机 ...

  3. Oracle中的关键字

    NVL和COALESCE的区别: nvl(COMMISSION_PCT,0)如果第一个参数为null,则返回第二个参数如果第一个参数为非null,则返回第一个参数 COALESCE(EXPR1,EXP ...

  4. 多线程之:正确使用 Volatile 变量

    转载:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile ...

  5. C++之STL迭代器

    迭代器是一种检查容器内元素并遍历元素的数据类型.可以替代下标访问vector对象的元素. 每种容器类型都定义了自己的迭代器类型,如 vector: vector<int>::iterato ...

  6. json数组对象和对象数组 ---OK

    一.Json的简单介绍 从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词. 第 ...

  7. .net网站部署时错误——未能加载文件或程序集(Could not load file or assembly)——的解决

    Could not load file or assembly 'System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKe ...

  8. PHP参数类型

    class User{      public $name;      public $password;      function __construct($name,$password){    ...

  9. JS正则表达式(一)

    正则表达常用符号 /..../  开始结束 ^ 开始 $ 结束 /s 任何非空字符  /S 非空 /d  匹配一个数字=[0-9] /D  匹配一个非数字=[^0-9] /w   匹配一个数字,下划线 ...

  10. ubuntu 安装 lamp 和配置虚拟机

    1:sudo passwd root  #设定root密码 su 切换  exit 退出  ,或者 普通用户下 加sudo  2:sudo apt-get update  #更新软件列表 3:sudo ...