微机原理与接口技术课程设计之三角波发生器.docx
《微机原理与接口技术课程设计之三角波发生器.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计之三角波发生器.docx(18页珍藏版)》请在冰豆网上搜索。
![微机原理与接口技术课程设计之三角波发生器.docx](https://file1.bdocx.com/fileroot1/2023-2/3/c5d14b21-1868-4c93-bf12-d30ed4281d8d/c5d14b21-1868-4c93-bf12-d30ed4281d8d1.gif)
微机原理与接口技术课程设计之三角波发生器
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
设计一简单信号发生器
初始条件:
1.选用8088CPU最小工作模式;
2.选择DAC0832芯片完成模拟信号输出,确定芯片地址范围;
3.输出三角波的电压范围为0~+2.5V,能够实现频率调节功能。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.查阅参考资料,自学相关可编程接口芯片的内部结构、工作方式和初始化编程过程;
2.根据设计系统的具体功能和性能参数,明确设计目标;
3.微机基本系统及其扩展接口电路设计,绘制微机系统硬件原理图;
4.编制扩展接口电路工作的汇编源程序,绘制汇编源程序流程图,包括初始化和监控工作程序;
5.撰写设计说明书(包括参考资料目录,字数不少于5000字)
时间安排:
序号
内容
所用时间(天)
1
查阅资料,学习相关芯片知识
1.5
2
系统及扩展电路硬件设计
3
3
初始化程序和应用程序设计
2
4
相关硬件电路和程序调试
2
5
编写课程设计说明书和答辩
1.5
合计
10
指导教师签名:
2010年12月12日
系主任(或责任教师)签名:
年月日
(一)
概述
设计内容及要求
本设计综合应用8088CPU、D/A转换器、定时器/计数器电路,中断技术:
通过PC机定时,产生三角波模拟信号输出,信号频率可通过PC机键盘调节。
输出电压范围在0~2.5V之间。
课程设计要求
设计要求画出电路原理图,说明工作原理,编写程序及程序流程图。
设计目的
通过该课程的学习使学生对微机系统有一个全面的了解、掌握常规芯片的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力。
本设计主要能够完成对制定波形的形成,可以通过输入来改变频率。
此信号发生器可以很好的运用于有需要的场合。
(二)系统总体设计
1、设计思想及方案论证
由于要求达到模拟信号波形发生,因此要由D/A转换芯片0832来来完成此项任务,由0832形成波形的主要做法是:
先输出一个下限电平,将其保持t然后输出一个稍高的电平,再保持t,然后重复此过程,因此需要改变0832输入数据的时间间隔t来改变频率。
如图3-1信号发生波形图所示。
0832输入的数据的延时可以通过软件完成,也可以通过硬件完成。
由于实验要求输出的波的频率可以改变,且精确,所以选用硬件延时。
+5v
0v
图3-1信号发生波形图
硬件延时主要由计时器8253和中断控制器8259来实现。
由8253输出的方波的高低电平,来触发8259的IR0端,8259给CPU中断信号,CPU中断来执行相应的中断子程序,中断子程序为向0832输出数据的程序,通过此程序可以产生三角波。
由于8253产生的方波的频率可以控制,所以每次中断执行波形发生程序的时间间隔可以精确控制。
以此来控制0832输出的波形频率。
功能框图,1页
2、硬件系统总体布局(画一简图)1页
3、线路图(大图)
4、芯片选择
根据需要,选择了8088CPU,时钟发生器8284*1,总线控制器8286*1,总线地址锁存器8282*3,RAM6264*1,ROM2764*1,计时器8253*1,中断控制器8259*1,D/A转换器0832*1,地址译码器74L138*2
4.1.1可编程中断控制器8259a
8259a是8086/8088系列的可编程中断控制器,8259a为28个引脚的双列直插芯片。
它的主要功能是:
(1)据8级优先级控制,通过联级可以扩展到64级优先控制。
(2)每一级中断可由程序单独屏蔽或允许。
(3)可提供中断类型号传送给CPU。
(4)可以通过编程选择多种不同工作方式。
引脚功能:
D7-D0:
双向数据线,三态,与数据总线相连。
IR7-IR0:
外设的中断请求信号输入端,输入,中断请求:
可以是电平触发,或者边缘触发。
RD:
读命令信号,输入,低电平有效,用来控制数据由8259A读
WR:
写命令信号,输入,地点平有效,用来控制写到8259
CS:
片选信号,输入,通过译码器与地址总线相连
INT:
向CPU发出中断请求信号,输出,与CPU的INTR相连
INTA:
CPU给8259的中断响应信号,输入。
4.1.2DAC0832:
NSC公司生产的DAC0832,是一种内部带有数据输入寄存器的8位D/A转化器,采用CMOS工艺制成,芯片内部R-2R梯形电阻网络,用于对参考电压产生的电压进行分流,完成模数转换,转换结果以一组差动电流IOUT1IOUT2输出。
0832具有8位分辨率,如果输出电压范围在0~5V间的话,当输入数字量为0时,输出电压为0V;输入数字量为255(0FFH)时,输出电压为5V。
各引脚的功能分述如下:
VREF:
参考电压输入端。
根据需要一定大小的电压,由于它是转换的基准,要求数值正确,稳定性好。
VCC:
工作电压输入端。
AGAN为模拟地,DGAN为数字地。
在模拟电路中,所有的模拟地要连在一起然后将模拟地,数字地连接到一个公共接地点。
DI7-DI0:
数据输入。
可直接连接到数据总线。
IOUT1IOUT2:
互补的电流输出端。
为了输出模拟电压,需加转换电路。
4.1.38253
inter8253是一种能够完成定时和计数的芯片,8253内部有3个16位计数器通道,通过对他们编程,每个计数器可以按照6种工作方式工作,并且都可以按2或10进制格式进行计数。
,最高频率为2MHZ。
8253还可以用于许多其他场合,比如可作编程方波发生器,分频器等。
引脚:
1数据缓冲总线
数据总线缓冲器是8253与系统总线相连时使用的接口电路,它由8位双相三态缓冲器构成,CPU用输入输出指令对8253进行读写操作的信息都由8位数据总线传输:
(1)CPU在对8253进行初始化编程时,向他写入控制字。
(2)CPU向某一计时器写入计数初值。
(3)从计数器读出计数值。
2读写控制逻辑
读写控制逻辑接受系统控制总线送来的输入信号,经由组合后形成控制信号,对各部分操作进行控制。
可接受的信号有:
(1)CS片选,低电平有效,由数据总线经由IO端口译码电路产生。
只有CS低电平时,CPU才能对8253进行读写操作。
(2)RD读信号,低电平有效,当RD位地电平时,表示CPU正在读取所选定的计数器的通道的内容。
(3)WR写信号,低电平有效。
当WR为低电平时,表示CPU正在将计数器初值写入所选中的通道口中,或者将控制字写入内部寄存器中。
(4)A1A2端口选择信号,改变它的值,来选择8253内三个计数器通道。
如果8253和与8位数据总线的微机相连,只要将A1A0分别与地址总
相联。
如果系统采用的是8086CPU,则数据总线为16位,传输数据时,总是将低8位数据送往偶地址,将高8位送往奇地址。
3计数器
8253内部包含三个完全相同俄计数器定时器通道,对3个通道的操作,
完全独立的。
每个通道都包含1个8位的控制字寄存器,1个16位的减寄存器,和一个锁存器,执行部件是一个16位的减法计数器。
每个通道工作时,对输入到CLK引脚上的脉冲按2进制或10进制格式进行计数。
每当输入一个时钟脉冲,计数器减1,当计数器的值减为0时从,从OUT引脚输出一个脉冲信号。
GATE引脚上的门控制信号,决定他是否允许计数。
4.1.48284
时钟发生器8284的引出线如图6—8所示。
其引线功能叙述如下:
CLK:
为CPU提供时钟信号,频率为4.77MHz
READY:
接CPU的READY引脚
RESET:
接CPU的RESET引脚,为CPU提供复位信号
PCLK:
为外设提供时钟信号,频率为2.38MHz
VCC:
工作电压输入端。
有一些引线在使用中没有用到,如OSC,EFI等可空着不接。
外设或其他电路板上的速度慢的器件在工作过程中需要CPU等待时,是通过向8284的RDY1端提供控制信号来实现的。
4.1.58282
4.1.68286
4.1.66264
4.1.72764
5、译码方式及地址范围计算
包括存储器地址(RAM和ROM的地址)和端口地址。
端口地址有8259(两个地址),8253(四个地址),0832(一个地址?
)均需译码器译码分配CS。
(三)接口扩展电路设计
接口电路的设计、原理和工作方式
使用8253产生定时中断,故8253使用方式3以产生方波信号,以方波信号的上升沿触发中断达到定时目的。
8253的计数初值根据所需输出地三角波频率计算得到。
8253的输入时钟频率来自8284芯片的PCLK引脚,频率为2.38MHz。
8259芯片在此次应用中只负责产生定时中,没有设置从片及,所以使用一般嵌套,根据8253的输入波形,选择上升沿触发方式。
列写端口地址表
8259的工作方式及初始化程序
MOVDX,8259AD0;初始化8259,设置为单片,上升沿触发,完全
MOVAL,00010011B;非自动EOI方式,03H
OUTDX,AL
MOVDX,8259AD1
MOVAL,10000000B…………..ICW2,10H,中断向量码IR0——10H
OUTDX,AL
MOVAL,00000001B…………..ICW4,01H,
OUTDX,AL
8253的工作方式及初始化程序
OUTDX,ALMOVDX,316H……………初始化8253,计数器地址,写计数器1
MOVAL,01110110B;通道1方式字,方式3,二进制记数
OUTDX,AL方波发生器,用以产生中断
MOVDX,312H……………………写计数值
POPCX……………………………..计数值弹到CX
MOVAL,CL………………………..写低八位
OUTDX,AL
MOVAL,CH…………………………写高八位
OUTDX,AL
0832的工作方式及初始化程序
工作方式单缓冲模式,没有初始化程序
(四)系统程序设计
1流程图主要进行系统初始化和外围接口芯片初始化,及开中断,等待中断产生,其流程图所示。
三角波频率控制的实现
计时器初始输入频率来自8284芯片PCLK引脚,频率为2.385MHz。
本程序要实现三角波控制,每周期取步进值为511次,每步进值增1或减1。
前半周期为增1,后半周期减1,输出量分别由0到255和255到0。
设分频后频率为F,输入频率为f,步进值为N,三角波周期为T,中断间隔t,计数初值CX
有:
CX*1/F=t
Nt=T
T=N*CX/F
CX=F*T/N=F/(N*f)
故在本程序中,CX=2.385MHz/(511*f)=4667/f
由于CX取值在1~25536之间,所以f可取0.18HZ~4667.3HZ,本程序供用户可选频率为100Hz~4KHz
2、中断向量表
中断向量地址指针
8259A引脚
中断类型号
优先级
中断源
00020H
主片IR0
08H
0
定时器
00024H
主片IR1
09H
1
键盘
3、程序清单
DATASEGMENT定义数据段
MESSDB'输入发生频率(100Hz~4000Hz)',0DH,0AH,'$'…………………….提示信息
CUNCHUDB?
…………………………………………………暂存量存储位置
JISHUDW0
PINLVDW?
DATAENDS
STACKSEGMENTSTACK……………………………………………堆栈段定义
STDW20DUP(?
)…………………………………………………..堆栈空间大小为20字节
TOPLABELWORD………………………………………………...定义栈顶指针为TOP
STACKENDS……………………………………………………………堆栈段结束
CODESEGMENT………………………………………………………..定义指令段
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA……………初始化段基地址
MAINPROCFAR…………………………………………………………定义远调用MAIN函数
MOVAX,DATA……………………………………………………..初始化段基地址
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVAX,CODE
MOVCS,AX
MOVDX,8259AD0;初始化8259,设置为单片,上升沿触发,完全
MOVAL,00010011B;非自动EOI方式,03H
OUTDX,AL
MOVDX,8259AD1
MOVAL,10000000B…………..ICW2,10H,中断向量码IR0——10H
OUTDX,AL
MOVAL,00000001B…………..ICW4,01H,
OUTDX,AL
LEADX,MESS;输入频率
MOVAH,09H
INT21H
LEADX,PINLV…………………将输入频率存到PINLV中
MOVAH,01H
INT21H
XORCX,CX…………………….CX清零
XORAX,AX
MOVBX,10
KEY:
MULBX…………………………乘法。
AX=BX*AX
MOVCX,AX
MOVAL,[DX]
CMPAL,0DH…………………..输入字符等于回车?
JEENTER………………………相等则跳到ENTER
SUBAL,30H................................ACSII变成数字
ADDCX,AL
MOVAX,CX
MOVPINLV,CX…………………将算得的频率值存在PINLV中
INCDX
JMPKEY
ENTER:
MOVAX,4667…………………….将输入的频率计算,得出写入8253的时间数
MOVCX,PINLV
MOVBX,CX
DIVBX
MOVCX,AX
PUSHCX…………………压栈
MOVDX,316H……………………初始化8253,计数器地址,写计数器1
MOVAL,01110110B;通道1方式字,方式3,二进制记数
OUTDX,AL方波发生器,用以产生中断
MOVDX,312H……………………写计数值
POPCX……………………………..计数值弹到CX
MOVAL,CL………………………..写低八位
OUTDX,AL
MOVAL,CH…………………………写高八位
OUTDX,AL
MOVCUNCHU,0H;将存储单元清零
MOVJISHU,0H
MOVDX,OFFSETSANJIAOBO………取偏移地址赋DX
MOVAX,SEGSANJIAOBO………….取段地址
MOVDS,AX………………………..段地址赋DS
MOVAL,08H......................................中断向量08H
MOVAH,25H......................................DOS的功能调用,设置中断程序入口地址
INT21H
CIR:
JMPCIR………………………………...无限循环程序,等待中断
RET
MAINENDP
三角波子程序
SANJIAOBOPROCNEAR
PUSHAX……………………..保护现场
PUSHBX
PUSHCX
PUSHDX
STI……………………………..开中断
MOVDX,228H………………..0832地址
MOVAL,CUNCHU
OUTDX,CUNCHU
CMPJISHU,511
JAECN………………………..步进值达到最大值时,跳转CN
JMPCM……………………….没到最大值,跳转CM
CN:
MOVJISHU,0
CM:
CMPJISHU,0FFH…………….步进值与255比较
JAEJINAG……………………步进值大于255时,跳转到下降沿程序
JMPSHENG…………………..否则跳到上升沿程序
JIANG:
DECAL……………………….下降沿程序
MOVCUNCHU,AL
JMPINTRETURN……………..去往结束中断
SHENG:
INCAL………………………....上升沿程序
MOVCUNCHU,AL
JMPINTRETURN……………去往结束中断
INTRETURN:
CLI
POPDX……………………….恢复现场
POPCX
POPBX
POPAX
MOVAL,20H………………..EOI命令
OUT20H,AL
IRET…………………………..结束中断
SANJIAOWOENDP
CODEENDS
(五)参考资料
[1]周荷琴.微型计算机原理与接口技术.合肥:
中国科学技术大学出版社,2004.12
[2]刘全忠.汇编语言实用程序.天津:
天津大学出版社,1991.6
3高福祥,张君.接口技术.沈阳:
东北大学出版社,1999.12
4葛玻.微机接口及实际应用.武汉:
武汉理工大学出版社,2000.9
5冯博琴,吴宁.微型计算机原理及接口技术.北京:
清华大学出版社,2007.8
(六)总结
在这两周的实习中,我再次的巩固了微机课中所学的知识,了解了各种芯片的的用法,各个接口的名称,作用。
明白了微机系统在生产生活中最基本的用处.
在两周的实习中,我也感到所学的知识不是很深,动手的能力不是很强,面对问题解决问题的能力还有待加强。
总的来说,《微型计算机原理与接口技术》对于我以后学习,工作的影响是很大的。