0045 8李高翔微机课设 1.docx
《0045 8李高翔微机课设 1.docx》由会员分享,可在线阅读,更多相关《0045 8李高翔微机课设 1.docx(17页珍藏版)》请在冰豆网上搜索。
![0045 8李高翔微机课设 1.docx](https://file1.bdocx.com/fileroot1/2023-4/18/d53cb797-a92f-4f9b-92fd-9217e3d4e574/d53cb797-a92f-4f9b-92fd-9217e3d4e5741.gif)
00458李高翔微机课设1
课程设计说明书
课程设计名称:
汇编语言、微机原理与接口技术
课程设计题目:
简易波形发生器
学院名称:
信息项目学院
专业:
计算机科学与技术班级:
100451
学号:
10045118姓名:
李高翔
评分:
教师:
周卫民、叶水生
2013年7月2日
第1章概述
1.1课题的设计要求
本课题通过ASI总线设计发生器,实现能输出正弦波、三角波和方波信号三种波形,要求有以下功能:
1、系统在初始时轮流输出五种波形,并轮流显示。
2、频率最高可达10KHZ,峰-峰值10V。
1.2课题的设计目的和意义
本课程设计在“微机原理与接口技术”课程教学结束后进行,课内32学时。
该课程设计的目的是:
通过一个微机系统的总线扩展接口的设计,是学生在“微机原理与接口技术”课程中所学知识和所掌握的的技能获得一次综合性的训练,进一步熟悉微机系统结构及其接口电路的设计技术,熟悉硬件电路设计的完整过程,培养学生的硬件接口的设计和开发能力,为后续综合设计实践环节的学习打下坚实的基础。
在课程设计中,要求学生通过自学和实践,熟练掌握protel等设计工具的使用,通过查阅相关文献资料,分析,综合运用所学知识,完成一个实际的、具有一定使用价值的微机接口电路的设计。
第2章单片机的实验简易波形发生器的设计可以给我们的生活带来乐趣,可以放松我们的心情,可以让我们得到释怀。
而且通过这次设计我们可以学到关于单片机在实际生活中的设计应用,同时也使我们加深了对单片机的认识,提高了我们的编程能力,为我们能够更好的学习单片机有很大的帮助。
第3章系统总体设计方案
2.1设计说明
利用微机实验平台编程实现一个波形发生器,可以产生正弦波、方波、三角波等各种波形基本要求:
(1)具有产生正弦波、方波、三角波三种周期性波形的功能。
(2)输出波形的频率范围为100Hz~10kHz,步进为100Hz。
(3)输出波形幅度范围1~10V(峰-峰值),可按步进1V(峰-峰值)调整。
(4)通过ADC0809采样DAC0832的输出,在屏幕上画出图形。
示波器查看波形发生器的输出和屏幕上的图形比较。
2.2总体设计思路
本次设计结合D/A和A/D转换,用键盘输入来选择DAC0832的输出波形,再通过ADC0809采集后在PC机上以图形方式显示。
实验主要利用实验箱上的DAC0832、ADC0809和8255等硬件电路和PC机资源。
设计要求该波形发生器能产生正弦波、方波、三角波等形状的波形,频率和幅度可调。
不同的波形主要是由输入DAC0832的不同规律的数据,所以在软件设计是主要是构造各种波形的数据表格。
方波只需要控制输出高低电平的时间,三角波的表格可以由数字量的增减来控制,产生正弦波关于构造一个正弦函数数值表,通过查该函数表来实现波形的输出。
波形的频率控制是通过对输出数据的时间间隔控制。
幅度是通过改变输出数据的大小来控制的。
为了程序实现方便,可以把每种波形的数据表构造好,再统一查表来实现。
第3章系统结构图及工作原理
3.1系统结构框图
3.2工作原理
在双极性电压波形发生器中,DAC0832转换器输入数据采用单缓冲方式,与89C51接口电路。
DAC0832转换器输出部分接口电路,因为考虑到软件产生电压波形有正负极性输出,因此这部分设计成双极性电压输出,其方法是单极性输出运算放大器后面加一级运算放大器,形成比例求和电路,通过电平移动,使单极性输出变为双极性输出。
第4章各单元硬件设计及计算方法
4.1硬件设计
硬件因为采用了PC机的资源和微机实验平台,不用外加其他的电路,比较简单。
将微机系统里面的中断、8255、DAC0832以及ADC0832的电路弄清楚,通过相应的跳线就可以完成电路的设计。
本次设计中,通过PC机键盘选择波形,启动DAC0832工作,在其输出端口VOUT1将会产生0~5V的直流电压,再由ADC0809的IN0端口进行采样,显示到屏幕上。
DAC0832所对应的片选为CS4,ADC0809所对应的片选为CS0。
DAC0832和ADC0809硬件连接图如图1所示。
在ADC0809芯片连接中,CLOCK用来接收外部时钟信号,在本实验中接收Q3端产生的时钟信号。
ADD_A,ADD_B和ADD_C这三个端口为三位地址线,用来选通8路模拟量输入中的一路。
在本实验中,只使用ADC0809中的IN0端口,当ADD_A,ADD_B和ADD_C端口都为低电平时,才能选中IN0端口。
在本PC实验箱中ADC0809IN0端口地址为280H,其地址总线中的A0,A1,A2均为低电平。
故将ADD_A,ADD_B和ADD_C与A0,A1,A2如图所示连接。
REF(+)接正参考电压(+5V),REF(-)接负参考电压(接地)。
图1设计硬件连接图
第5章软件设计与说明
5.1软件设计
本设计的主要是掌握各种典型波形的产生方法,例如三角波、方波和正弦波。
构造各种波形的数据表和对ADC0832的编程输出。
1.波形数据表的构造
每个周期的数据表由64个数据组成,不同的幅度对应的数据不一样,可以根据倍数关系求出。
但是为了简化计算,将每个幅值的数据表列出。
这边我们只讨论幅值为5V时的数据表,其他的数据表可以根据倍数关系求得。
1)方波数据表的构造
只要输出高电平和低电平就可以了,所以输入到ADC0832的数据由32个00H和32个FFH组成。
2)三角波数据表的构造
三角波是由数据量的增减来控制的。
在前半个周期数据由00H增加到FFH,在后半个周期数据由FFH减少到00H,每次变化为08H。
所以三角波的数据表为:
BUF
DB00H,08H,10H,18H,20H,28H,30H,38H,40H,48H,50H,58H,60H,68H,70H,78H
DB80H,88H,90H,98H,0A0H,0A8H,0B0H,0B8H
DB0C0H,0C8H,0D0H,0D8H,0E0H,0E8H,0F0H,0F8H
DB0FFH,0F8H,0F0H,0E8H,0E0H,0D8H,0D0H,0C8H
DB0C0H,0B8H,0B0H,0A8H,0A0H,98H,90H,88H
DB80H,78H,70H,68H,60H,58H,50H,48H,40H,38H,30H,28H,20H,18H,10H,08H
3)正弦波数据表的构造
DAC0832的输入数据与输出电压的关系为:
Ua=(UREF)/256*N,其中UREF表示参考电压(+5V),N表示数据。
因为8位D/A转换器DAC0832的数据N的范围为:
00H—FFH,故Ua的范围为:
0V—4.98V。
则产生的正弦波的幅度也为0V—4.98V。
我们以正弦函数的0--
/2为例,0度时我们设定其对应的N为:
80H,
/2时必然对应的N为:
FFH,在0--
/2的范围内有16个点,故间隔为6度。
综上所诉正弦波函数为:
Ua=2.48*sin6x+2.5(x=0,1,……15)。
联合上述两式,就可得出0--
/2范围内的16个N值。
构造出正弦波数据表如下:
SINBUF:
DB080H,08CH,098H,0A5H,0B0H,0BCH,0C7H,0D1H
DB0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH
DB0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH
DB0D1H,0C7H,0BCH,0B0H,0A5H,098H,08CH,080H
DB7FH,73H,67H,5AH,4FH,43H,38H,2EH
DB25H,1DH,15H,0FH,09H,05H,02H,00H
DB00H,02H,05H,09H,0FH,15H,1DH,25H
2.DB2EH,38H,43H,4FH,5AH,67H,73H,7FH
3.程序的主要模块
程序主要由主程序和中断服务程序构成。
主要由菜单显示、键盘读取、DA输出、AD采样、屏幕画图等模块组成。
菜单显示包含有3个菜单:
主菜单和2个子菜单。
主菜单有选择波形和退出选项,子菜单有选择频率菜单和选择幅度菜单。
键盘读取是配合菜单显示的条件下,接收键盘的输入,得到相应的数据来处理,决定输出波形的信息。
DA输出是将数据输出到ADC0832转换为模拟量输出。
ADC0809的转换控制如下:
选择通道并启动转换→延时等待→读取转换结果。
第6章调试结果与调试说明
6.1调试步骤
1.输入源程序
输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。
2.对源程序进行汇编和纠错
根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示无误。
3.确定调试方案
在调试程序前认真分析源程序,确定各功能程序运行的预期结果。
然后结合源程序应达到的结果,通过某些关键参数和实验现象检验程序运行结果正确与否。
并针对具体的分析和观察对象选择较合适的调试方法。
如单步运行、跟踪运行、连续运行、快速运行至光标处、设置断点等调试方法。
4.调试程序
1)调试子程序。
因为程序比较多,整体调试不容易发现和改正错误,故采取子程序调试的方法,但要明确子程序的具体功能。
例如:
调试显示子程序时,只将显示子程序进行汇编,确认无误后单步执行,观察CPU窗口和DATA窗口以及CODE窗口相应单元的变化是否跟预期的一样。
如果有问题找出问题所在。
采取各个击破的方法调试好各个子程序。
2)确定各子程序无误后,再调试完整的程序,要注意各子程序之间的衔接以及和主程序之间的调用和返回。
运行后,观察有无显示,显示的变化过程是否正确。
若运行结果不正确,首先应根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。
通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。
第7章总结
在这两周的实习中,我再次的巩固了微机课中所学的知识,了解了各种芯片的的用法,各个接口的名称,作用。
明白了微机系统在生产生活中最基本的用处.
在两周的实习中,我也感到所学的知识不是很深,动手的能力不是很强,面对问题解决问题的能力还有待加强。
总的来说,《微型计算机原理与接口技术》对于我以后学习,工作的影响是很大的。
通过本次微机课程设计过程,我不仅发现设计的波形发生器有所欠缺,同时也感到了自身的不足。
首先,本次设计的程序实现较为简单,没有涉及到到中断、串行口和定时/计数等功能,仅仅只是编写了几段基本波形发生代码,在主程序里调用。
因为真正意义上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些问题和一些难点。
比如:
在程序设计中如何实现程序结构的最优化,以达到较高的质量。
这是以后设计中要注意的问题。
但也多到了很学实践知识。
。
其次,这次设计的波形发生器缺少一个控制波形频率的,我感到十分遗憾,如果到大四做毕业设计的时候,我想我会将其改进并完善的。
最后,因为自身能力有限,无法对这次设计进行更深层次的拓展,我将在以后的学习过程中不断的完善自己。
课程设计是我们理论联系实际的最好的途径之一,让我们有机会把课本上学到的知识运用到实际生活中。
目前微机设计在工业检测领域中得到了广泛的应用,在我们平常的生活中也是随处可见,包括我们日常生活中随处可见的交通灯、闹钟等都含有微机芯片作为一个主要的部件,懂得并熟悉掌握微机芯片的运用技术是非常有用的。
通过这次课程设计使对汇编语言的理解和掌握上有了很大的进步,以前所了解的汇编语言仅限于一些片面的知识,通过这次编程,将这些零零碎碎的知识汇集起来,编写出了一个完整的系统,并且对汇编语言的应用能力有了极大的提高。
在这次课程设计的过程中,我深深体会到的虚心求教精神是极其重要的。
因为自己所不擅长的知识或许正是别人擅长的,通过向别人学习不仅弥补自身遗漏的知识,而且交流了互相的想法。
经过此次课程设计,我经历了喜,怒,哀,乐。
同时我也对明年的毕业设计有了一定的想法和实现自己想法的决心。
在设计过程中,首先要熟悉系统的工艺,进行对象的分析,按照要求确定方案。
然后要进行硬件和软件的设计,调试。
因为使用的是实验箱,出来的波形与理想波形存在一定的差距。
只能在理论上对系统的结果进行预测分析。
通过设计实验,使我掌握了微型机控制系统I/O接口的扩展方法,模拟量输入/输出通道的设计,常用控制程序的设计方法,数据处理及非线性补偿技术,以及数字控制器的设计方法。
本设计从几个基础的部分着手总结综合运用各种资料最后完成一个数字信号发生器系统。
通过这次课程设计使我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。
而且在做课程设计的过程中,不仅是考验自己所学的《微机原理与接口技术》知识,更是要锻炼自己的分析问题的能力和解决实际问题的能力,而在在此次课程设计过程中得到了充分的体现。
最后感谢老师的辅导以及同学的帮助,使我对整个课程设计的思路有了总体的把握,并耐心地帮我解决了许多实际问题,使我有了很大收获。
课程设计时间虽然很短,但我学习了很多东西。
参考文献
[1]张迎新.《单片微型计算机原理、应用及接口技术》.国防工业出版社
[2]房小翠.《单片机实用系统设计技术》.国防工业出版社
[3]何立民.《单片机应用系统设计》.北航出版社
[4]王迎旭.《单片机原理及及应用》.机械工业出版社.2004年7月
[5]戴梅萼、史嘉权《微型计算机技术及运用》清华大学出版社,2003年
[6]潘新民《微型计算机硬件技术教程-原理*编译*接口及体系结构》机械工业出版社,2004年
[7]郑学坚《微型计算机原理及运用(第三版)》清华大学出版社,2001年
附录
A:
系统原理图
B:
印刷电路图:
C:
程序清单:
ORG0000H
LJMPSTART
ORG4100H
PORTEQU0cfa0H
START:
MOVR3,#1FH
SETBP1.0;按键位置高电平
SETBP1.1
SETBP1.2
SETBP1.3
SETBP1.4
JNBP1.0,LXP0;锯齿波选择
JNBP1.1,LXP1;三角波选择
JNBP1.2,LXP2;矩形波选择
JNBP1.3,LXP3;梯形波选择
JNBP1.4,LXP4;正弦波选择
WAIT:
DJNZR3,WAIT;延时,等待
AJMPMOTOP
LXP0:
ACALLPRG1;调用锯齿波
LJMPSTART
LXP1:
ACALLPRG2;调用三角波
LJMPSTART
LXP2:
ACALLPRG3;调用矩形波
LJMPSTART
LXP3:
ACALLPRG4;调用梯形波
LJMPSTART
LXP4:
ACALLPRG5;调用正弦波
LJMPSTART
MOTOP:
ACALLPRG1
NOP
ACALLPRG2
NOP
ACALLPRG3
NOP
ACALLPRG4
NOP
ACALLPRG5
NOP
LJMPSTART
PRG1:
MOVR1,#1
MOVDPTR,#0CFABH;设定DPTR指向8255控制端口
MOVA,#80H;写入控制字
MOVX@DPTR,A
MOVDPTR,#0CFA8H
MOVA,#06H;写入数码管显示代码(数字1~5)显示代码,锯齿波,三,方,梯形,正分别对应#06,#5BH,#4FH,#66H,#6DH
MOVX@DPTR,A
MOVDPTR,#0CFA9H;设定DPTR指向8255端口
MOVA,#02H;写入位选字,使数码管选通
MOVX@DPTR,A
PG1:
MOVDPTR,#PORT;指向0832端口地址
MOVR2,#15;
LOOP:
MOVA,#00H
LOOP1:
MOVDPTR,#PORT
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
INCA
CJNEA,#0FFH,LOOP1;
DJNZR2,LOOP;内循环次数控制
DJNZR1,PG1;外循环次数控
RET;子程序调用返回
PRG2:
MOVR1,#2;三角波生成
MOVDPTR,#0CFABH;指向8255控制端口
MOVA,#80H;写入控制字
MOVX@DPTR,A
MOVDPTR,#0CFA8H;指向A端口地址
MOVA,#5BH;写入数码管显示2代码
MOVX@DPTR,A
MOVDPTR,#0CFA9H;指向B端口地址
MOVA,#02H;写入位选,数码管选通
MOVX@DPTR,A
PG2:
MOVA,#00H
MOVR2,#8
LOOP0:
MOVDPTR,#0cfa0H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
INCA
CJNEA,#0FFH,LOOP0
LOOP01:
MOVDPTR,#0cfa0H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
DECA
CJNEA,#00H,LOOP01
DJNZR2,LOOP0
DJNZR1,PG2
RET
PRG3:
MOVR1,#5
MOVDPTR,#0CFABH;指向8255控制端口
MOVA,#80H
MOVX@DPTR,A
MOVDPTR,#0CFA8H
MOVA,#4FH
MOVX@DPTR,A
MOVDPTR,#0CFA9H
MOVA,#02H
MOVX@DPTR,A
PG3:
MOVR2,#8
LP1:
MOVDPTR,#PORT
MOVA,#0FFH
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
LCALLDELAY
LP2:
MOVDPTR,#PORT
MOVA,#00H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
LCALLDELAY
DJNZR2,LP1
DJNZR1,PG3
RET
DELAY:
MOVR4,#1FH
LP3:
MOVR5,#0FH
LP4:
DJNZR5,LP4
DJNZR4,LP3
RET
PRG4:
MOVR1,#4
MOVDPTR,#0CFABH;指向8255控制端口
MOVA,#80H
MOVX@DPTR,A
MOVDPTR,#0CFA8H
MOVA,#66H
MOVX@DPTR,A
MOVDPTR,#0CFA9H
MOVA,#02H
MOVX@DPTR,A
PG4:
MOVR2,#8
MOVA,#00H
LP00:
MOVDPTR,#0cfa0H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
INCA
CJNEA,#0D0H,LP00
ACALLDELAY1
LP001:
MOVDPTR,#0cfa0H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
DECA
CJNEA,#00H,LP001
ACALLDELAY1
DJNZR2,LP00
DJNZR1,PG4
RET
DELAY1:
MOVR4,#02H
LP10:
MOVR5,#0FFH
LP11:
DJNZR3,LP11
DJNZR4,LP10
RET
PRG5:
MOVR1,#0FFH
MOVDPTR,#0CFABH;指向8255控制端口
MOVA,#80H
MOVX@DPTR,A
MOVDPTR,#0CFA8H
MOVA,#6DH
MOVX@DPTR,A
MOVDPTR,#0CFA9H
MOVA,#02H
MOVX@DPTR,A
LPG0:
MOVDOTR,#TAB
MOVR5,#0FFH
MOVR7,#00H
LPG1:
MOVR3,DPH
MOVR4,DPL
MOVA,R7
MOVCA,@A+DPTR
MOVDPTR,#PORT
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
MOVDPH,R3
MOVDPL,R4
INCR7
DJNZR5,LPG1
DJNZR1,LPG0
RET
TAB:
DB080H,08CH,098H,0A5H,0B0H,0BCH,0C7H,0D1H;正选波数据表
DB0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH
DB0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH
DB0D1H,0C7H,0BCH,0B0H,0A5H,098H,08CH,080H
DB7FH,73H,67H,5AH,4FH,43H,38H,2EH
DB25H,1DH,15H,0FH,09H,05H,02H,00H
DB00H,02H,05H,09H,0FH,15H,1DH,25H
DB2EH,38H,43H,4FH,5AH,67H,73H,7FH
END;汇编结束