当前位置: 首页 > news >正文

基于VC++和AT89C52单片机的数字存储示波器设计

目录
摘 要 I
Abstract II
1.绪论 1
1.1课题研究的目的、意义: 1
1.2现状分析 1
2.课题研究的主要内容及实施方案 2
2.1课题研究的主要内容: 2
2.2实施方案: 2
2.3工作条件: 2
3.问题的分析与几种主要实施方案的讨论 3
3.1问题的分析 3
3.2几种方案的讨论 3
4.本数字存储示波器系统概述 7
5.硬件系统 8
6.软件简介 10
6.1串行数据接收 10
6.2数字滤波: 10
6.3图像处理 10
6.4软件界面效果如下 11
7. 测试结果 14
7.1存储输入方式 14
7.2实时采集方式 16
7.3关于测试结果的讨论 20
8. 总结 21
参考文献 22
2.课题研究的主要内容及实施方案
2.1课题研究的主要内容:
本课题研究的主要内容是如何建立一套可存储虚拟示波器系统,其具体组成为:
① 硬件系统:
硬件系统由计算机硬件系统和外部硬件系统组成。这里主要研究外部硬件系统,其主要目标是实现数据采集、AD转换、数据缓冲及压缩、数据存储、向计算机系统传输。
② 软件系统:
软件系统的主要任务是通过计算机硬件系统读取由外部硬件设备传输来的数据,进行解压、变换、排除干扰信号、将波形显示在显示器上,并进行波形的存储、打印与分析。
在实现以上基本功能的前提下,还可以进行进一步的扩展国,如硬件系统性能的担高、成本的降低、体积重量的减小、接口的扩展;软件系统功能的完善、用户界面的改进、数据的格式化、网络化,最终目标是产业化。
6.软件简介
本软件主要完成数字示波器的数据后期处理工作;
  开发环境:Visual C++ 6.0
适用平台:Windows 10
可执行文件大小:2.26MB
附加文件:mfc42.dll, MSCOMM32.OCX, msvcrt.dll
  主要功能如下:
6.1串行数据接收
采用VC附带ActiveX控件Microsoft Communications Control, version 6.0实现串口数据的接收;
如果内存允许,采集点数不限;因此,本软件也满足过程控制中大容量数据采集及图形处理的需要;    
6.2数字滤波:
采用多项式光滑不等距插值,本方法是制定n个不等距节点xi(i=0,1,-------,n-1)上的函数值yi=f(xi)及精度要求,利用阿克玛(Akima)方法,计算指定子区间上的三次插值多项式与指定插值点上的函数值;
函数的调用格式为:
GetValueAkima(int n, double x[], double y[], double t, double s[], int k /= -1/)
6.3图像处理
(1)波形图:
完成采集波形的绘制,支持各种动态操作,包括:图像的整体放大,整体缩小,还原初始最佳大小,移动,X向放大、缩小,Y向放大、缩小;
支持各种编辑操作,包括:图像数据的存储(存储成 .sun文件 ),波形图、频谱图的打印,波形图、频谱图的拷贝(可在Word等编辑软件中粘贴);
支持波形图相及示波屏幕的视觉效果调整,包括:波形图、频谱图曲线颜色的任意调整条,线条宽度的调整,本文转载自http://www.biyezuopin.vip/onews.asp?id=14755示波屏幕全屏化,背景模式的调整;
支持波形图处理数据量的动态调整:以克服图像失真,及图形处理速度慢等。

//
//
// 	Filename:	113-06203-001.c
//	Version:		0.01
//	Data:		2008.08.31
//
//	Author:		Liu, Zemin
//	Company:	zmLAB
//
//-----------------------------------------------------------------------------
//
// 	Target: 		ATmega64
// 	Tool chain: 	WinAvr (GCC-AVR)
//
//	Function Descriptions: Project template based on 06200-00A PCB
//-----------------------------------------------------------------------------
//	Required files:
//
//-----------------------------------------------------------------------------
//
//	Notes:
//		1. Fuse programming configuration: 
//			Extended Byte: 	0b------11 (Non mega603/103 compatible mode)
//					Bit 1		- 1 = M64 mode, 0 = M103 mode
//					Bit 0		- 1 = WDT normal, 0 = WDT always ON
//			High Byte: 	0b11-00001 (CLKOP = 0 for crystal, EEPROM perserved)
//					Bit 7		- 1 = OCD disabled
//					Bit 6		- 1 = JTAG disabled
//					Bit 5		- 1 = SPI program disabled
//					bit 4		- Clock options. See datasheet
//					bit 3		- 1 = EEPROM not preserved, 0 = EEPROM preserved
//					bit [2:1]	- Boot size configration
//								Size				Boot loader Start (word address)
//							11 = 512 words		0x7E00
//							10 = 1024 words		0x7C00
//							01 = 2048 words		0x7800
//							00 = 4096 words		0x7000
//					bit 0		- 1 = Application Reset, 0 = Boot Loader Reset
//			Low Byte:	0b10101110 (Use external crystal osc [20MHz])
//					Bit 7		- BODLEVEL, 1 = 2.7V, 0 = 4.0V
//					Bit 6		- 1 = BOD disabled, 0 = BOD enabled
//					Bit [5:4]	- Start-up Time (see datasheet)
//					bit [3:0]	- Select clock source (See datasheet)
//
//
//-----------------------------------------------------------------------------
//	Revision History:
//		V0.01		2008.08.31
//		1.	First creadted based on 113-06201-040
//
///

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>

#include "Common.h"
#include "Board.h"
#include "Screen.h"

int	main (void)
{
 // -- Initialize ports
 Port_Init();

 // -- Initialize misc registers
 Misc_Init();

// Timer_Init();
// Comp_Init();
// ADC_Init();
 
 // -- Initialize Uart 0
 Uart0_Init();
// u0putc('0');
 
 // -- Initialize Uart 1
// Uart1_Init();
// u1putc('1');

 uputs((U8 *)"COM0 OK", Uart0);

// sei();

 // Initialize LCD
 LCD_Init();

 // Clear display buffer
 ClearBuf();

// PutChar5x7(10, 10, 0x41);

 // Write a string to display buffer
 LcdPuts(10, 10, "Hello, world!");

 LcdPuts(10, 45, "WWW.JYETECH.COM");

 // Output display buffer to LCD
 Display();


 // Halt
 while(1) {
		}

 return (0);

}


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • labview与stm32通信
  • OpenHarmony适配移植:X86、ARM、RISC-V、MIPS、LoongArch芯片架构简析
  • DBeaver manual
  • 图解redis(三)——功能篇
  • 数据库的约束和设计
  • Lesson 1 A private conversation
  • 第一季:9SpringMVC中如何解决POST请求中文乱码问题,GET的又如何处理呢【Java面试题】
  • 看了羊了个羊的源码后我发现这个游戏花了最少钱,赚了最多的钱
  • 『 云原生·分布式』分布式基础——Docker容器详解与Docker的安装(Linux与Windows)
  • Web会话跟踪:Cookie与Session
  • 【大数据】Hadoop在呼唤Hive(附一键部署Hive脚本)
  • 8. SQL中Order by和Group by子句的使用简介
  • 27. 生成CSV文件
  • 【初学者入门C语言】之二维数组(七)
  • 深度学习 Day 14——利用卷神经网络实现运动鞋品牌识别
  • 分享的文章《人生如棋》
  • 2017年终总结、随想
  • 30秒的PHP代码片段(1)数组 - Array
  • ECMAScript入门(七)--Module语法
  • Flannel解读
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Java深入 - 深入理解Java集合
  • JS 面试题总结
  • Koa2 之文件上传下载
  • Python语法速览与机器学习开发环境搭建
  • Quartz初级教程
  • SAP云平台里Global Account和Sub Account的关系
  • 搭建gitbook 和 访问权限认证
  • 回顾2016
  • 理解在java “”i=i++;”所发生的事情
  • 微信开源mars源码分析1—上层samples分析
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 在weex里面使用chart图表
  • Python 之网络式编程
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #162 (Div. 2)
  • #控制台大学课堂点名问题_课堂随机点名
  • (14)Hive调优——合并小文件
  • (二)斐波那契Fabonacci函数
  • (二)学习JVM —— 垃圾回收机制
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十八)SpringBoot之发送QQ邮件
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .Net程序帮助文档制作
  • .net开发时的诡异问题,button的onclick事件无效
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc