滤波器多次滤波求平均值

上传人:ji****72 文档编号:35847845 上传时间:2018-03-21 格式:DOC 页数:8 大小:45KB
返回 下载 相关 举报
滤波器多次滤波求平均值_第1页
第1页 / 共8页
滤波器多次滤波求平均值_第2页
第2页 / 共8页
滤波器多次滤波求平均值_第3页
第3页 / 共8页
滤波器多次滤波求平均值_第4页
第4页 / 共8页
滤波器多次滤波求平均值_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《滤波器多次滤波求平均值》由会员分享,可在线阅读,更多相关《滤波器多次滤波求平均值(8页珍藏版)》请在金锄头文库上搜索。

1、实验一实验一 滤波器多次滤波求平均值滤波器多次滤波求平均值实验目的实验目的1、学习和掌握 A/D 转换的几种方法2、学会运用数字滤波和设计滤波器实验步骤实验步骤1、通过调节电路电阻等效进行温度输入2、利用 A/D 转换将模拟量转化为数字量、通过 0809 芯片显示3、在基于 A/D 转换的基础上,实现滤波器多次采样后求取平均值实验原理实验原理A/D 转换器 它是用来通过一定的电路将模拟量转变为数字量。 模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电 信号。但在 A/D 转换前,输入到 A/D 转换器的输入信号必须经各种传感器把各种物 理量转换成电压信号。 A/D 转

2、换后,输出的数字信号可以有 8 位、10 位、12 位和 16 位等。 A/D 转换器的工作原理 主要介绍以下三种方法:逐次逼近法 双积分法 电压频率转 换法A/D 转换四步骤:采样、保持、量化、编码。数字滤波器 与模拟滤波器相对应,在离散系统中广泛应用数字滤波器。它的作用是利用离散时间 系统的特性对输入信号波形或频率进行加工处理。或者说,把输入信号变成一定的输 出信号,从而达到改变信号频谱的目的。数字滤波器一般可以用两种方法来实现:一 种方法是用数字硬件装配成一台专门的设备,这种设备称为数字信号处理机;另一种 方法就是直接利用通用计算机,将所需要的运算编成程序让通用计算机来完成,即利 用计算

3、机软件来实现。 本实验采用算术平均值滤波。 方法: 连续取 N 个采样值进行算术平均运算 N 值较大时:信号平滑度较高,但灵敏度较低 N 值较小时:信号平滑度较低,但灵敏度较高 N 值的选取:一般流量,N=12;压力:N=4 优点: 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费 RAM 实验源程序/* “验证式”温度测量与数字滤波*/ #include #define LEDLen 6 #define MODE 0x03 #define N 12 ;取十二次求得平均值

4、 #define CS0809 XBYTE0xa000 #define CAddr XBYTE0xe100 /* 命令控制口 */ #define OUTBIT XBYTE0xe101 /* 位控制口 */ #define CLK164 XBYTE0xe102 /* 段控制口(接 164 时钟位) */ #define DAT164 XBYTE0xe102 /* 段控制口(接 164 数据位) */ #define IN XBYTE0xe103 /* 键盘读入口 */unsigned char LEDBufLEDLen; /* 显示缓冲 */ code unsigned char LEDMAP

5、 = /* 八段管显示码 */0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 ;void Delay(unsigned char CNT) unsigned char i;while (CNT- !=0)for (i=100; i !=0; i-); void DisplayLED() unsigned char i, j;unsigned char Pos;unsigned char LED;Pos = 0x20; /* 从左边开始显示 */for (i

6、 = 0; i = 1; /* 显示下一位 */OUTBIT = 0; /* 关所有八段管 */ unsigned char Read0809() unsigned char i;CS0809 = 0; /* 起动 A/D */for (i=0; i 100us */return(CS0809); /* 读入结果 */ void main() unsigned char j;unsigned char b;CAddr= MODE;while(1) LEDBuf0 = 0Xb8;LEDBuf1 = 0X40;LEDBuf2 = 0X40;LEDBuf3 = 0X40;LEDBuf4 = 0X00

7、;LEDBuf5 = 0X00;/b = Read0809(); char filter() ;平均值滤波程序 unsigned int sum = 0;unsigned char i;for (i=0;i4 for(j=0; j#define LEDLen 6 #define mode 0x03; #define CAddr XBYTE0xe100/* 控制字地址 */ #define OUTBIT XBYTE0xe101/* 位控制口 */ #define CLK164 XBYTE0xe102/* 段控制口(接 164 时钟位) */ #define DAT164 XBYTE0xe102

8、/* 段控制口(接 164 数据位) */ #define IN XBYTE0xe103 /* 键盘读入口 */unsigned char LEDBufLEDLen; /* 显示缓冲 */ code unsigned char LEDMAP = /* 八段管显示码 */0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 ; /* A/D 转换 */unsigned char Read0809() unsigned char i;CS0809 = 0; /* 起

9、动 A/D */for (i=0; i 100us */return(CS0809); /* 读入结果 */void Delay(unsigned char CNT) unsigned char i;while (CNT- !=0)for (i=100; i !=0; i-); void DisplayLED() unsigned char i, j;unsigned char Pos;unsigned char LED;Pos = 0x20; /* 从左边开始显示 */for (i = 0; i = 1; /* 显示下一位 */ code unsigned char KeyTable = /

10、* 键码定义 */0x00, 0x01, 0x04, 0x07 ,0x0f, 0x02, 0x05, 0x08,0x0e, 0x03, 0x06, 0x09 ,0x0d, 0x0c, 0x0b, 0x0a ,0x10,0x11,0x12,0x13,0x14,0x15,0x16, ;unsigned char TestKey() OUTBIT = 0; /* 输出线置为 0 */return (IN /* 读入键状态 (高四位不用) */unsigned char GetKey() unsigned char Pos;unsigned char i;unsigned char k;i = 6;P

11、os = 0x20; /* 找出键所在列 */do OUTBIT = Pos;Pos = 1;k = IN while (-i != 0) /* 键值 = 列 X 4 + 行 */if (k != 0) i *= 4;if (k else if (k else if (k OUTBIT = 0;do Delay(10); while (TestKey(); /* 等键释放 */return(KeyTablei); /* 取出键码 */ else return(0xff); void main() CAddr = mode;LEDBuf0 = 0xff;LEDBuf1 = 0xff;LEDBuf

12、2 = 0xff;LEDBuf3 = 0xff;LEDBuf4 = 0x00;LEDBuf5 = 0x00;while (1) LEDBuf5 = LEDMAPRead0809() LEDBuf4 = LEDMAPRead0809()4 DisplayLED(); if(Read0809()wendu)kongzhideng=0; /*控制灯明灭*/else kongzhideng=1; 实验总结:实验总结:此次实验做得不是很成功,最开始的时候忘记了怎么建工程,怎么载入程序,而且所编的程序和出来的现象不一致,但是还是学得到了不少知识,至少很清晰的了解到了矩阵键盘的工作原理和编程思路,也复习了一遍 keil usion 软件的操作。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号