微型计算机控制技术实验报告
1.2信号的采样与保持
实验目的
1.熟悉信号的采样和保持过程
2.学习和掌握香农 (采样) 定理
3.学习用直线插值法和二次曲线插值法还原信号
实验设备
PC 机一台,TD-ACC+实验系统一套,SST51 系统板一块
实验内容
1.编写程序,实现信号通过 A/D 转换器转换成数字量送到控制计算机,计算机再把数字量送到 D/A 转换器输出。
2.编写程序,分别用直线插值法和二次曲线插值法还原信号。
实验原理
1.采样与保持
(1)香农 (采样) 定理:若对于一个具有有限频谱 (|W|
(2)实验线路图:本实验中,我们将具体来验证香农定理。可设计如下的实验线路图,图中 画“o”的线需用户在实验中自行接好,其它线系统已连好。图1.2-1中,用 P1.7 来模拟 1#定时器的输出,通过“OUT1”排针引出,方波周期=定时
器时常×2,“IRQ7”表示 51 的外部中断 1,用作采样中断。 这里,正弦波单元的“OUT”端输出周期性的正弦波信号,通过模数转换单元的“IN7”
端输入,系统用定时器作为基准时钟 (初始化为 10ms),定时采集“IN7”端的信号,转换结束 产生采样中断,在中断服务程序中读入转换完的数字量,送到数模转换单元,在“OUT1” 端输出相应的模拟信号。由于数模转换器有输出锁存能力,所以它具有零阶保持器的作用。
采样周期 T= TK × 10ms,TK 的范围为 01~ FFH,通过修改 TK 就可以灵活地改变采样周期,后 面实验的采样周期设置也是如此。
(3)参考程序流程:基于上面的实验线路,可以设计如下的参考程序流程。
(4)直线插值法参考程序:
/*****************************************
文件名:ACC1-2-2.C
功能描述:定时100ms采样,利用当前的采样值和上次的采样值进行直线差值,并送D/A输出
*****************************************/#include
#include
/*****************************************
宏定义
*****************************************/
#define uchar unsigned char
#define uint unsigned int
#define ADC_7 XBYTE[0x0600]//定义模数转换IO地址
#define DAC_1 XBYTE[0x0640]//定义D/A第一路的IO地
/*****************************************
全局变量定义
*****************************************/
sbit str = P1^7;
uchar data ad[10];//声明变量,用于存储转换结果
uint data time;//声明变量,用于定时
uchar data t0_h,t0_l;//用于存储定时器0的初值
uchar TK;//声明采样周期变量
uchar TC;//TK的变量
uchar KK;//斜率变量
char UK;//当前的D/A输出值
char UK_1;//上一次的输出值
/*****************************************
主函数
*****************************************/
void main(void)
{
TMOD = 0x01;
time = 10;//定时1ms
t0_h = (65536-500*time)/256;//计算定时器0初值
t0_l = (65536-500*time)%256;
t0_l = t0_l+20;//修正因初值重装而引起的定时误差
TH0 = t0_h;
TL0 = t0_l;
IT1 = 1;//边沿触发中断
EX1 = 1;//开外部中断1
ET0 = 1;//开定时中断0
TR0 = 1;//启动定时器
TK = 100;//采样周期=