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,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
随机推荐
- Redis使用经验之谈
应用场景 保存用户喜欢的商品信息. 类型: Hash, key: usr:${type_id}:${version_id}:${user_id}:${warehouse_id}, field: ${s ...
- 《UML和模式应用》读书笔记(一)
一.绪论 1. 面向对象分析和设计 1.1 什么是分析和设计 分析(analysis)强调的是对问题和需求的调查研究,而不是解决方案. 设计(design)强调的是满足需求的概念上的解决方案,而不是其 ...
- 使用WebBrowser自动登录阿里妈妈网站
窗体上放一个WebBrowser,其Url属性设置为http://www.alimama.com/membersvc/member/login.htm,其他属性为默认 再放一个Button,默认 Bu ...
- 洛谷 P4660 & bzoj 1168 [ Baltic OI 2008 ] 手套 —— 分析+单调栈
题目:https://www.luogu.org/record/show?rid=12702916 https://www.lydsy.com/JudgeOnline/problem.php?id=1 ...
- pytest用例setup和teardown
函数式以下两种: setup_function/teardown_function 每个用例开始和结束调用一次 setup_module/teardown_module setup_modu ...
- 修改Linux内核参数提高Nginx服务器在高的时候的性能
并发 Linux下高并发的Nginx服务器,当TCP TIME_WAIT套接字数量经常达到两.三万,服务器很容易被拖死.通过修改Linux内核参数,可以减少Nginx服务器的TIME_WAIT套接字数 ...
- 自适应文案提示框、无数据图片加载<IOS小组件>
非常感谢,帮助我的朋友们,谢谢你们. 该组件的编写仅仅用来不到4个小时,包括测试与修改bug.为他起名为AdaptivePromptDialogBox(就是自适应文案提示框): 呆毛地址:链接 < ...
- Java中next() 与 nextLine() 区别
next(): 1.一定要读取到有效字符后才可以结束输入. 2.对输入有效字符之前遇到的空白,next() 方法会自动将其去掉. 3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符. 4. ...
- Flutter实战视频-移动电商-64.会员中心_顶部头像UI布局
64.会员中心_顶部头像UI布局 会员中心的样式 member.dart 清除原来的代码生成一个基本的结构 默认返回一个scaffold脚手架工具,body里面布局使用ListView,这样不会出现纵 ...
- 11.ClientCredential模式总结
11.ClientCredential模式总结 服务端定义的Resource叫做api Resource API默认是被保护的 第三方的客户端先去请求 Server拿到access token.带着t ...