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字符编码工具等。
转载于:https://www.cnblogs.com/jieruishu/p/8274513.html
ZSP12项目的总结相关推荐
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库
示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...
- springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...
- IDEA设置单个文件、单个包、单个项目的编码格式
IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- 两步完成项目定时启动,java项目定时启动
两步完成项目定时设置: 在需要定时启动或运行的方法上面加上注解@Scheduled //当天只跑一次 @Scheduled(cron = "0 40 21 * * ?") 在启动类 ...
- Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决
在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决
- Myeclipse中修改项目默认编码还是乱码?一步永久解决!
在myeclipse中修改默认编码后发现项目还是乱码? 点击Windows选择Preferences 如下图
最新文章
- (四十七)Quartz2D引擎初步
- CSS命名方法(笔记)
- 用SVR模型完成对Boston房价的回归预测
- JDK+Tomcat搭建JSP运行环境--JSP基础
- caffe安装常见问题
- tomat(16)关闭钩子
- weblogic jmx_在WebLogic Server上驯服JMX
- 2021社区居家养老现状与未来趋势报告
- Soul网关源码阅读(六)请求类型探索
- React_loadable
- 数理统计-随机变量的数字特征:期望、方差、协方差、矩、协方差矩阵
- filecoin 密封手续费_解密Filecoin测试网:全球排名登顶的秘密
- Relay和Rendezvous
- AD603 级联放大 可变增益放大器 压控增益放大器 VCA模块 原理图PCB
- 航空发动机涂层行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- VScode 直接运行ts文件
- 十年老程序员开始新事业
- 上采样,重采样和下采样,降采样
- html5文字跳动特效,jQuery网页文字跳动动画特效
- 怎样判断两个ip地址是不是在同一个网段中?
热门文章
- C语言教师信息管理系统实验报告书
- FTRL之FM和LR实战(使用稀疏数据进行实战)
- 移动硬盘需要格式化才能打开如何解决?
- Pycocotools 报error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Bui
- 二、python小项目模块(制作.npy形式数据集、图像添加随机噪声、将.npy的数据合成图像、创建文件夹)
- [面试]HR最常用的20个面试问题及答案
- 小提琴1234567位置图解_小提琴1234567位置图解 那就随便拉了啊反正是玩嘛~怎
- Python基础知识从hello world 开始(第一天)
- 2019腾讯广告算法大赛之清洗广告数据集和用户数据集
- win7计算机系统减肥,win7系统精简瘦身的操作方法