单片机与嵌入式

单片机与嵌入式

ID:37524915

大小:3.27 MB

页数:11页

时间:2019-05-24

单片机与嵌入式_第1页
单片机与嵌入式_第2页
单片机与嵌入式_第3页
单片机与嵌入式_第4页
单片机与嵌入式_第5页
资源描述:

《单片机与嵌入式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第一部分实验内容:1.把AD转换所得的8位二进制数0到255,转换为0.0到5.0的十进制数。已知AD转换的基准电压为5.0V。若用LED显示,小数点后取几位比较合适?对10位的AD转换又该如何考虑。输入字节可放R0L中;转换结果保存在变量result中;2.课外作业:已知一个偶对称函数的取样数列(8位256点),求其频谱(16位256点)。算法自选。算法描述:方案一:待转换数(0-255)记为x,x/51就可以得到转换后的整数部分,在把余数部分R1*10/51,可以得到第一位小数,以此类推,在把余数部分Rn*10/51,可以得到第n位小数。方

2、案二:先把输入的数据乘以500(说明一下,整个实验中的后两位为小数,第三位为整数位),然后除以256(实际上应除以255,但是除以256相当于把16进制的数右移2位,处理起来很方便)。这样得到的数再转化为10进制的数就是最后的结果了。方案三:采用查表法,在内存中建立好一个255—5.0的映射结果,到时候查表输出结果,优点是速度快,但是所用的存储单元多,而且表格的建立也需要一定机械的工作。设计思路:我采取的实验方法是:计算量化间隔为5/256=0.01953125,取量化间隔为1953,程序中r2为输入数据,所得结果以压缩BCD码的形式存放入R0

3、中保留到小数点后三位。流程图:R2=0R2!=0N初始化r0,r1,r2判断r2是否为0R0=r0+1953H(bcd加法)如果有进位r1=r1+1R2=r2-1R0=r0+50H如果有进位r1=r1+1R1,r0组成的32位BCD码右移8位wait程序清单:见ad5程序说明:其中r2中为输入的0—255之间的数值,结果保存在result+1,result中,以非压缩BCD的格式保存。实验结果:255被转化为4.931,可见这种方法有一定的误差,这种误差是累计增加的。127被转化为2.480,准确的数值应该是2.5,但是误差可以认为在可以接受的

4、范围以内。最大误差为(5.0-4.931)/5.0=1.38%思考题:如果是十位AD量化间隔为5/1024=0.0048828125.程序中量化间隔为4883。流程图和上面的基本相同。源程序:见ad10实验结果:1023被转化为4.9953,因为是利用了上一题的程序,所以除了小数增加了一位,别的没有什么变化,但是小数的后面两位已经没有什么意义了,所以可以只看402和401单元里的BCD码就可以了。511被转化为2.49此时,转化的最大误差为0.5%课外作业:(1)算法描述这道题目我们根据上个学期的数字信号处理的知识可以知道有两种方法可以实现。第

5、一种是按照离散傅里叶变换的方法,挨个对各个数进行乘加运算,然后得出答案。这种方法虽然麻烦但是程序简单。第二种是进行FFT算法,这种方法速度快,但是程序稍微麻烦一点。具体方法是将x(n)按n为奇偶分解成两个子序列:其N点DFT可以写成E(k)和F(k)都是N/2点DFT结果,由DFT性质可以知道:所以:依此类推,可化为求N/4,N/8……点的DFT,这样可以大大减少计算次数。当然基的计算对于单片机还是很复杂的,我们可以通过matlab先计算出计算中所学要的SIN,COS值,然后做成表格放入单片机程序,计算过程中通过查表的方法得到所需要的三角函数值

6、。(2)编程思想所以此题的关键是求出的表达式,利用迭代法做Z变换,整理得x(0)=1,,n>1时令k=1即可得到的表达式,的周期性所以只要求出即可。下图是用matlab,利用迭代法计算的。本程序实现起来有很大的困难,因为用定点数迭代精度不高,但是又不会采用浮点数,所以只能用matlab生成.asm文件,文件里面有cos函数的查找表。然后设置一个计数变量,本程序中用的是r2。循环一次r2+1,根据r2的值计算dft并输出(3)matlab生成查找表N=256;t=0:255;B=cos(2*pi*t/256);fid_1=fopen('cos.a

7、sm','w+');fork=1:Nfprintf(fid_1,'cosk%d:.word%dr',k,floor(B(k)*32768));endfclose(fid_1);注意由于1时用32768表示,但是单片机是补码运算32768表示-1所以1用32767表示手动将32768改为32767,然后将文件内容复制到主程序内。(4)程序源代码见fft(5)实验结果(只给出了部分结果)(6)实验总结:体会了查表法和迭代法的差别,迭代法存储器利用效率高,但是精度不高,所以适合短的dft,和存储器比较紧张的情况,查表法速度快,精度高,如果有条件

8、尽量使用查表法方法二:用快速算法(1)用matlab产生sin,cos函数的源程序n=256;k=0:255;t=-2*pi*k/n;c=cos(t)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。