收藏 分享(赏)

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

上传人:dzzj200808 文档编号:2302441 上传时间:2018-09-10 格式:DOC 页数:13 大小:134KB
下载 相关 举报
单片机原理及应用课程设计yang.doc_第1页
第1页 / 共13页
单片机原理及应用课程设计yang.doc_第2页
第2页 / 共13页
单片机原理及应用课程设计yang.doc_第3页
第3页 / 共13页
单片机原理及应用课程设计yang.doc_第4页
第4页 / 共13页
单片机原理及应用课程设计yang.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、单片机课程设计数字音频频率测试仪班级:电气 0705姓名:杨军学号:U200712316日期:2010 年 10月 29日 目录一、课程设计要求1软硬件设计要求1二、设计思路2.1.程序设计基本思路12.2.使用 HIS 输入并测量信号周期12.3.测量结果处理和显示部分1三硬件和软件设计21.硬件部分21.1 硬件部分21.2 程序流程图32.软件部分42.1 程序运行结果92.2 误差分析9四总结与感想10五参考资料11一 课程设计要求题目:数字音频频率测试仪:能测试频率范围 2020000Hz 的信号,误差小于0.1%,实时在 LED 显示测试结果(保留五位有效数据) 。具体设计要求:1

2、完成规定的设计内容,包括相应的硬件电原理图和设计的软件。2四次上机要求完成程序。效果是先在仿真机的 LED 上显示自己学号的后 8 位,然后再输入显示要测量的频率。二 设计思路1. 程序设计基本思路根据设计的要求,首先进行学号后八位的显示,然后进行频率测量。在学号显示程序段中设计读键子程序,判断是否有键按下,一旦扫描出有按键被按下,则程序立即跳转到频率测量程序段。2.使用 HIS 高速输入测量信号周期本设计中的主要是应用高速输入 HIS 进行周期(频率)测量,设置 HIS.1端口每发生一次正跳变触发一个事件,同时 HIS 时间寄存器记下该正跳变事件的触发时间,根据两次触发事件之间的触发时间的差

3、值计算出被测周期信号一个周期内所经历的状态周期个数。再根据单片机的主频(已给定)计算出一个状态周期的时间,进而计算出被测周期信号的周期,进一步转化为频率。3.测量结果处理和显示部分接下来是对所得频率的处理和显示,根据设计要求,无论是高频率段还是低频率段,最终的显示结果均要保持 5 为有效数字。因此对于低频段的测量,便涉及到了小数点后有效数字的计算。那么该如何对小数点后数字进行有效处理呢?我们都知道,整数部分相除,所得余数部分与被除数相除即为整个除法运算的小数部分,由于本设计中并不需要完全地显示测量结果,而是仅需要显示小数点后 1 位到 3 位数字,这样我们便可以采用简单的算法。即让整数部分相除

4、所得余数部分乘以 10 再除以被除数,所得商即为第一位小数;让第二次相除所得余数再乘以 10 再除以被除数,所得商即为第二位小数以此类推便可得到测量结果的小数部分。最后将所得六位数值放到固定的存储单元,在显示部分测量结果的每位数值都作为偏移量叠加到表格首地址上,读取表格相应存储单元,并输出到接口芯片的相应端口进行段选,显示相应位的测量结果,用循环控制数码管的位选,便可显示完整的测量结果。三、硬件和软件设计1、 硬件部分根据软件设计要求,将硬件实现部分分为学号显示、键盘扫描并跳转、HIS 测量、对测量结果进行处理并显示测量结果。1.1 硬件电路设计:硬件电路及连线如下图所示:1.2 程序流程图:

5、学号循环显示及扫描键盘STARTN判断是否有键按下进行频率测量Y频率 f9999Hz频率 999Hzf=9999Hz判断频率范围结果处理 1频率 99Hzf=999Hz结果处理 2结果处理 3 结果处理 4频率 20Hzf=99Hz2、 软件部分;-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 1DHBX EQU 1EHBLEQU 1EHBHEQ

6、U 1FHCXEQU 20HCLEQU 20HCHEQU 21HDX EQU 22HDL EQU 22HDHEQU 23HEXEQU 24HEND循环显示测量结果FXEQU 26HGLEQU 28HEL EQU 30H;-ORG 2080HLD SP,#00C0HLCALL DELAY LDB AL,#82H ;PB 口输入,PA,PC 口输出STB AL,C82550 SH_NO: LDB AL,#00HLDB BL,#0E0HSH1: SCALL DISPSCALL DELAYINCB AL LDB GL,#08H ;键盘扫描第一行STB GL,P8255C0SKIPSKIPLDB EL,

7、P8255B0 ;读键值XORB EL,#0FFHJNE STARTCMPB AL,#08HJNE SH1SCALL DELAYSJMP SH_NODISP: STB BL,P8255C0 ;位选LD CX,#NOEXTB AXADD CX,AXLDB DL,CXSTB DL,P8255A0 ;段选SUBB BL,#20HRET;-NO: DB 3FH,3FH,07H,06H,5BH,4FH,06H,7DH ;学号 00712316;- START:LDB IOC0,#04H ;允许 HSI.1 输入LDB HSI_MODE,#04H ;每次正跳变触发一个事件;-TEST: JBC IOS1,

8、7,TEST LDBX,HSI_TIMETEST1: JBC IOS1,7,TEST1LD CX,HSI_TIMESUB EX,CX,BXJNC TEST ;定时器有溢出LD 30H,EX ;8T=1.44678us,f=11.059MHZEXT 30HMULU 30H,#0FFFFH ; 65535/45297(原始 0FFFF/BOF1)DIVU 30H,#0B0E2HLD EX,30HLD 30H,#4240H ;1000 000=0F4240HLD 32H,#000FHDIVU 30H,EX ;除法运算后,字 30H 中存储频率值整数部分,保留 5 位有效数字CMP 30H,#270F

9、H JNC LOOP1 DIVUB 30H,#64H ;分别得到万千百位,和十个位LDBZE 36H,30HDIVUB 36H,#0AH LDB 42H,37H ;百位 42HLDBZE 38H,36H DIVUB 38H,#0AH LD 40H,38H ;万位 40H ,千位 41HLDBZE 36H,31H DIVUB 36H,#0AH LDB 43H,36HLDB 44H,37H ;十位和个位值分别存 43H 和 44HLDB 45H,#10H ;显示小数点,存于 45HSJMP SH_FREQLOOP1: CMP 30H,#03E7H JNC LOOP2DIVUB 30H,#64H ;

10、分别得到千百位,和十个位LDBZE 36H,30HDIVUB 36H,#0AH LD40H,36H ;千位 40H,百位 41H LDBZE 36H,31H DIVUB 36H,#0AH LD 42H,36H ;十位和个位值分别存 42H 和 43HLDB 44H,#10H ;显示小数点,存于 44HMULUB 32H,#0AH ;乘以 10,除以除数,得到第一位小数LD 34H,32HEXT 34HDIVU 34H,EXLDB 45H,34H ;小数点后第一位存于 45H , 小数点后需一位SJMP SH_FREQLOOP2: CMP 30H,#63H JNC LOOP3DIVUB 30H,

11、#64H ;分别得到百位,和十个位LDBZE 36H,30HDIVUB 36H,#0AH LDB 40H,37H ;百位 40HLDBZE 36H,31H DIVUB 36H,#0AHLDB 41H,36H LDB 42H,37H ;十位和个位值分别存 41H 和 42HLDB 43H,#10H ;显示小数点,存于 43HMULUB 32H,#0AH ;乘以 10,除以除数,得到第一位小数LD 34H,32HEXT 34HDIVU 34H,EXLDB 44H,34H ;小数点后第一位存于 44HMULUB 36H,#0AH ;乘以 10,除以除数,得到第二位小数LD 38H,36HEXT 38

12、HDIVU 38H,EXLDB 45H,38H ;小数点后第二位存于 45H , 小数点后需二位SJMP SH_FREQLOOP3:DIVUB 30H,#64H ;分别十个位LDBZE 36H,31H DIVUB 36H,#0AH LD40H,36H ;十位和个位值分别存 40H 和 41HLDB 42H,#10H ;显示小数点,存于 42HMULUB 32H,#0AH ;乘以 10,除以除数,得到第一位小数LD 34H,32HEXT 34HDIVU 34H,EXLDB 43H,34H ;小数点后第一位存于 43HMULUB 36H,#0AH ;乘以 10,除以除数,得到第二位小数LD 48H

13、,36HEXT 48HDIVU 48H,EXLDB 44H,48H ;小数点后第二位存于 44HMULUB 4AH,#0AH ;乘以 10,除以除数,得到第三位小数LD 4CH,4AHEXT 4CHDIVU 4CH,EXLDB 45H,4CH ;小数点后第三位存于 45H , 小数点后需三位 ;-SH_FREQ:LDB AL,#00HLDB BL,#0A0HLD 50H,#40HSH2: SCALL DISP1 ;可以增加延时LCALL DELAY INCB ALCMPBAL,#06HJNE SH2LJMPSH_FREQDISP1: STB BL,P8255C0 ;位选LD CX,#DATAO

14、CLRB 1BHLDB 1AH,50HADD CX,1AHLDB DL,CX ;段选STB DL,P8255A0INCB 50HSUBB BL,#20HRET;- DELAY: LD DX,#00FFH ;延时子程序DELAY1: DEC DXJNE DELAY1RET ;- DATAO: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,80H ;8,9,A,B,C,D,E,F,.;- END1. 程序运行结果:测量结果显示,该软件设计能够有效的对低频信号进行测量,且测量

15、误差较小,满足设计要求(即误差小于 0.1%);而在进行大频率测量时,存在着较为明显测量误差,误差范围在 1%左右,结果不十分理想。2. 误差分析:1.算法的问题。由于编写程序的时候在低的频率时对于小数位的处理没有做的很好,故导致在测量低频时误差会较大,而高频时不会出现这样的情况。2.单片机的主频误差。由于主程序的编写,特别是频率处理部分的运算的准确度和主频的精确度紧密相关。若单片机实际主频率与给定频率存在较大的实际偏差,就会给运算部分带来较为严重的误差,最终的显示结果误差便不可消除。3.信号发生器本身显示频率的准确度。信号发生器本身的输出频率与显示频率之间存在误差,导致两次测量的误差累计,很容易造成误差变大。四、总结与感想单片机的课程设计一直是难点,虽然给了 10 个题目,但是每个题目都会有其对应的难点,我选得是个自己觉得比较简单的题目,不过自己在处理低频时没有很好的处理好,这导致了低频是误差比较大,另外一个不足就是不能连续测量频率,虽然本人努力的想加上那个延时刷新的程序,不过最后还是没能成功,这算是一个遗憾。五、参考资料(1)MCS-96 系列单片机原理及应用技术 汪建 华中科技大学出版社 2004(2)MCS-96 系列单片机实验指导书(3)单片机原理及应用教程(刘瑞新等主编)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报