您当前的位置:首页 >  教育教学 >  物理学案 > 内容

单片机原理及应用课程设计

无忧文档网    时间: 2020-12-21 15:40:05     阅读:

单片机课程设计 数字音频频率测试仪 班级:电气 姓名:
学号:
日期:2010年X月X日 目录 一、课程设计要求···········································1 软硬件设计要求············································1 二、设计思路 2.1.程序设计基本思路······································1 2.2.使用HIS输入并测量信号周期·······························1 2.3.测量结果处理和显示部分···································1 三.硬件和软件设计········································2 1.硬件部分························································2 1.1硬件部分·····················································2 1.2程序流程图···················································3 2.软件部分························································4 2.1程序运行结果···············································9 2.2误差分析···················································9 四.总结与感想···········································10 五.参考资料··············································11 一. 课程设计要求 题目:数字音频频率测试仪:能测试频率范围20~20000Hz的信号,误差小于0.1%,实时在LED显示测试结果(保留五位有效数据)。

具体设计要求:
1.完成规定的设计内容,包括相应的硬件电原理图和设计的软件。

2.四次上机要求完成程序。效果是先在仿真机的LED上显示自己学号的后8位,然后再输入显示要测量的频率。

二. 设计思路 1. 程序设计基本思路 根据设计的要求,首先进行学号后八位的显示,然后进行频率测量。在学号显示程序段中设计读键子程序,判断是否有键按下,一旦扫描出有按键被按下,则程序立即跳转到频率测量程序段。

2.使用HIS高速输入测量信号周期 本设计中的主要是应用高速输入HIS进行周期(频率)测量,设置HIS.1端口每发生一次正跳变触发一个事件,同时HIS时间寄存器记下该正跳变事件的触发时间,根据两次触发事件之间的触发时间的差值计算出被测周期信号一个周期内所经历的状态周期个数。再根据单片机的主频(已给定)计算出一个状态周期的时间,进而计算出被测周期信号的周期,进一步转化为频率。

3.测量结果处理和显示部分 接下来是对所得频率的处理和显示,根据设计要求,无论是高频率段还是低频率段,最终的显示结果均要保持5为有效数字。因此对于低频段的测量,便涉及到了小数点后有效数字的计算。那么该如何对小数点后数字进行有效处理呢?我们都知道,整数部分相除,所得余数部分与被除数相除即为整个除法运算的小数部分,由于本设计中并不需要完全地显示测量结果,而是仅需要显示小数点后1位到3位数字,这样我们便可以采用简单的算法。即让整数部分相除所得余数部分乘以10再除以被除数,所得商即为第一位小数;
让第二次相除所得余数再乘以10再除以被除数,所得商即为第二位小数······以此类推便可得到测量结果的小数部分。最后将所得六位数值放到固定的存储单元,在显示部分测量结果的每位数值都作为偏移量叠加到表格首地址上,读取表格相应存储单元,并输出到接口芯片的相应端口进行段选,显示相应位的测量结果,用循环控制数码管的位选,便可显示完整的测量结果。

三、硬件和软件设计 1、 硬件部分 根据软件设计要求,将硬件实现部分分为学号显示、键盘扫描并跳转、HIS测量、对测量结果进行处理并显示测量结果。

1.1硬件电路设计:硬件电路及连线如下图所示:
1.2程序流程图:
START 学号循环显示及扫描键盘 N 判断是否有键按下 Y 进行频率测量 频率99Hz<f<=999Hz 判断频率范围 频率999Hz<f<=9999Hz 频率20Hz<f<=99Hz 频率f>9999Hz 结果处理4 结果处理1 结果处理2 结果处理3 循环显示测量结果 END 2、 软件部分 ;-------------------------------------------------------------- C8255 EQU 0C006H ;8255命令口地址 P8255A EQU 0C000H ;8255 PA口地址 P8255B EQU 0C002H ;8255 PB口地址 P8255C EQU 0C004H ;8255 PC口地址 ;--------------------------------------------------------------- AX EQU 1CH AL EQU 1CH AH EQU 1DH BX EQU 1EH BL EQU 1EH BH EQU 1FH CX EQU 20H CL EQU 20H CH EQU 21H DX EQU 22H DL EQU 22H DH EQU 23H EX EQU 24H FX EQU 26H GL EQU 28H EL EQU 30H ;--------------------------------------------------------------- ORG 2080H LD SP,#00C0H LCALL DELAY LDB AL,#82H ;PB口输入,PA,PC口输出 STB AL,C8255[0] SH_NO: LDB AL,#00H LDB BL,#0E0H SH1: SCALL DISP SCALL DELAY INCB AL LDB GL,#08H ;键盘扫描第一行 STB GL,P8255C[0] SKIP SKIP LDB EL,P8255B[0] ;读键值 XORB EL,#0FFH JNE START CMPB AL,#08H JNE SH1 SCALL DELAY SJMP SH_NO DISP: STB BL,P8255C[0] ;位选 LD CX,#NO EXTB AX ADD CX,AX LDB DL,[CX] STB DL,P8255A[0] ;段选 SUBB BL,#20H RET ;--------------------------------------------------------------- NO: DB 3FH,3FH,07H,06H,5BH,4FH,06H,7DH ;学号00712316 ;-------------------------------------------------------------- START: LDB IOC0,#04H ;允许HSI.1输入 LDB HSI_MODE,#04H ;每次正跳变触发一个事件 ;-------------------------------------------------------------- TEST: JBC IOS1,7,TEST LD BX,HSI_TIME TEST1: JBC IOS1,7,TEST1 LD CX,HSI_TIME SUB EX,CX,BX JNC TEST ;定时器有溢出 LD 30H,EX ;8T=1.44678us,f=11.059MHZ EXT 30H MULU 30H,#0FFFFH ; 65535/45297(原始0FFFF/BOF1) DIVU 30H,#0B0E2H LD EX,30H LD 30H,#4240H ;1000 000=0F4240H LD 32H,#000FH DIVU 30H,EX ;除法运算后,字30H中存储频率值整数部分,保留5位有效数字 CMP 30H,#270FH JNC LOOP1 DIVUB 30H,#64H ;分别得到万千百位,和十个位 LDBZE 36H,30H DIVUB 36H,#0AH LDB 42H,37H ;百位42H LDBZE 38H,36H DIVUB 38H,#0AH LD 40H,38H ;万位40H ,千位41H LDBZE 36H,31H DIVUB 36H,#0AH LDB 43H,36H LDB 44H,37H ;十位和个位值分别存43H和44H LDB 45H,#10H ;显示小数点,存于45H SJMP SH_FREQ LOOP1: CMP 30H,#03E7H JNC LOOP2 DIVUB 30H,#64H ;分别得到千百位,和十个位 LDBZE 36H,30H DIVUB 36H,#0AH LD 40H,36H ;千位40H,百位41H LDBZE 36H,31H DIVUB 36H,#0AH LD 42H,36H ;十位和个位值分别存42H和43H LDB 44H,#10H ;显示小数点,存于44H MULUB 32H,#0AH ;乘以10,除以除数,得到第一位小数 LD 34H,32H EXT 34H DIVU 34H,EX LDB 45H,34H ;小数点后第一位存于45H , 小数点后需一位 SJMP SH_FREQ LOOP2: CMP 30H,#63H JNC LOOP3 DIVUB 30H,#64H ;分别得到百位,和十个位 LDBZE 36H,30H DIVUB 36H,#0AH LDB 40H,37H ;百位40H LDBZE 36H,31H DIVUB 36H,#0AH LDB 41H,36H LDB 42H,37H ;十位和个位值分别存41H和42H LDB 43H,#10H ;显示小数点,存于43H MULUB 32H,#0AH ;乘以10,除以除数,得到第一位小数 LD 34H,32H EXT 34H DIVU 34H,EX LDB 44H,34H ;小数点后第一位存于44H MULUB 36H,#0AH ;乘以10,除以除数,得到第二位小数 LD 38H,36H EXT 38H DIVU 38H,EX LDB 45H,38H ;小数点后第二位存于45H , 小数点后需二位 SJMP SH_FREQ LOOP3: DIVUB 30H,#64H ;分别十个位 LDBZE 36H,31H DIVUB 36H,#0AH LD 40H,36H ;十位和个位值分别存40H和41H LDB 42H,#10H ;显示小数点,存于42H MULUB 32H,#0AH ;乘以10,除以除数,得到第一位小数 LD 34H,32H EXT 34H DIVU 34H,EX LDB 43H,34H ;小数点后第一位存于43H MULUB 36H,#0AH ;乘以10,除以除数,得到第二位小数 LD 48H,36H EXT 48H DIVU 48H,EX LDB 44H,48H ;小数点后第二位存于44H MULUB 4AH,#0AH ;乘以10,除以除数,得到第三位小数 LD 4CH,4AH EXT 4CH DIVU 4CH,EX LDB 45H,4CH ;小数点后第三位存于45H , 小数点后需三位 ;-------------------------------------------------------------- SH_FREQ: LDB AL,#00H LDB BL,#0A0H LD 50H,#40H SH2: SCALL DISP1 ;可以增加延时 LCALL DELAY INCB AL CMPB AL,#06H JNE SH2 LJMP SH_FREQ DISP1: STB BL,P8255C[0] ;位选 LD CX,#DATAO CLRB 1BH LDB 1AH,[50H] ADD CX,1AH LDB DL,[CX] ;段选 STB DL,P8255A[0] INCB 50H SUBB BL,#20H RET ;--------------------------------------------------------------- DELAY: LD DX,#00FFH ;延时子程序 DELAY1: DEC DX JNE DELAY1 RET ;--------------------------------------------------------------- DATAO: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,80H ;8,9,A,B,C,D,E,F,. ;--------------------------------------------------------------- END 1. 程序运行结果:
测量结果显示,该软件设计能够有效的对低频信号进行测量,且测量误差较小,满足设计要求(即误差小于0.1%);
而在进行大频率测量时,存在着较为明显测量误差,误差范围在1%左右,结果不十分理想。

2. 误差分析:
1.算法的问题。由于编写程序的时候在低的频率时对于小数位的处理没有做的很好,故导致在测量低频时误差会较大,而高频时不会出现这样的情况。

2.单片机的主频误差。由于主程序的编写,特别是频率处理部分的运算的准确度和主频的精确度紧密相关。若单片机实际主频率与给定频率存在较大的实际偏差,就会给运算部分带来较为严重的误差,最终的显示结果误差便不可消除。

3.信号发生器本身显示频率的准确度。信号发生器本身的输出频率与显示频率之间存在误差,导致两次测量的误差累计,很容易造成误差变大。

四、总结与感想 单片机的课程设计一直是难点,虽然给了10个题目,但是每个题目都会有其对应的难点,我选得是个自己觉得比较简单的题目,不过自己在处理低频时没有很好的处理好,这导致了低频是误差比较大,另外一个不足就是不能连续测量频率,虽然本人努力的想加上那个延时刷新的程序,不过最后还是没能成功,这算是一个遗憾。

五、参考资料 (1)MCS-96系列单片机原理及应用技术 汪建 华中科技大学出版社 2004 (2)MCS-96系列单片机实验指导书 (3)单片机原理及应用教程(刘瑞新等主编)

《单片机原理及应用课程设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式

相关热搜

《单片机原理及应用课程设计.doc》

VIP请直接点击按钮下载本文的Word文档下载到电脑,请使用最新版的WORD和WPS软件打开,如发现文档不全可以联系客服申请处理。

文档下载
VIP免费下载文档

浏览记录