中南大学汇编课程设计报告

发布 2022-10-01 07:35:28 阅读 2656

中南大学。

微机原理课程设计报告。

—信号发生器功能程序设计。

第一章设计题目、要求及目的···3

1.设计题目要求3

2.设计目的3

第二章总体设计方案3

1.设计思想3

2.设计方案4

3.总体设计流程图5

第三章硬件设计5

1.硬件环境要求5

2.所用芯片及其功能说明6

3.硬件接线图9

第四章程序设计10

1.流程图10

2.典型程序模块及典型编程技巧分析··13

3.课程设计中遇到的问题及解决方法··14

4.程序清单和程序注释15

第五章收获与体会33

第六章参考文献33

第一章设计题目、要求及目的。

1.设计题目及要求。

设计题目:信号功能发生器设计。

设计要求:1)、编程语言为c语言和汇编语言;

2)、硬件电路基于80x86微机的接口电路;

3)、程序功能要求:小键盘给定、数码管(屏幕)显示,并产生对应信号波形(d/a)输出(信号波形包括正弦波、三角波、方波、锯齿波)、输出信号波形幅度、频率可调。(注意:

按键数量应尽量少)。

2.设计目的。

1)、熟练掌握汇编语言和c语言,并用它们实现对硬件的操作,实现设计要求。

2)、学会调试程序,可以通过编译(masm)、链接(link)、运行(run)可以看到汇编程序的运行结果,更多的是要通过debug来调试以发现程序的逻辑问题,熟练运用debug可以解决很多问题,如debug的t命令可以查看单步运行的结果。

3)、对硬件加深了解,特别是此实验要用到的8255及小键盘等。

4)、本课程设计,要求对微机系统有一个较全面的理解,对典型数字接口电路的应用技术有一个较深入的掌握,并对应用系统进行硬件原理和软件编程进行分析、设计和调试,达到基本掌握简单微型计算机应用系统软硬件的设计方法,提高项目开发能力的目的。

第二章总体设计方案。

1. 设计思想。

该课题要求实现信号功能发生器,首先通过小键盘给定一个按键,并将此信息送入计算机中,由计算机内部根据此信息去实现特定的功能,比如产生正弦波。计算机在获得小键盘给定的信息之后,送出一个信息到产生波形的芯片0832,由其去实现波形的产生。要实现数码管显示,则需要将显示的信息通过输入输出端口芯片送到数码管端口。

实现调频和调幅是跟据波形产生的原理改变产生波形的参数即可实现。从外设送数据进入cpu是通过8255a芯片实现的,波形的产生由0832实现。

首先我确定了所用到的芯片:8255a和0832,在此实验中通过小键盘的按键来控制信号发生器的各个功能,在实验中采用可编程中断控制器8259a可以简化程序的逻辑便于实现,但8259a在初始化及编写是比较麻烦故而不采用。为了减少按键,产生四种波形时我采用查询式的方法,即通过一个键控制不同波形的产生,比如按第一下的时候产生正弦波,第二次按键产生三角波,第三次按键产生方波,第四次按键产生锯齿波。

同时通过一个键控释信号功能发生器的开始和停止,第一次按键是开始,第二次按键是结束。再通过四个按键分别控制波形的幅度增加、幅度减少、频率增减、频率减少。因此在我的设计总共用到6个键。

如果还要减少键可以把频率增加和幅度增加放在一个键,频率减少和幅度减少放在一个键,此外还有多种实现方法。

小键盘给定主要是确定是哪个键按下,并且要注意消除抖动。

产生波形时,可以通过给定点通过延时产生不同的波形的,对于正弦波通过查表产生波形是最简单的方法,但要注意点的给定。但是也带来一个问题,正弦波的幅值的产生不能通过通过简单的给每一个点加一个固定的值,这样容易出现两个问题,一是如果给的表中如果出现较大的数值加上一个数值的时候进位舍去,此数值变成一个小的数值,是波形发生畸变。而是如果每个数值加上一个固定的数值不会使幅值发生变化,只是波形发生了平移,要对正弦波改变幅值需要对个点进行伸缩变化,即要通过乘或除改变其幅值大小。

在此过程中要注意处理溢出及位数的问题。其他波形的产生比较容易,方波是给定一个最低值和一个最高值,通过延时产生低电平和高电平两个状态,三角波是从一个最低值一直增加到最高值再从最高值一直减少到最低值,锯齿波是从一个最低值一直增加到最高值,然后再从最低值增加到最高值,一直循环。由此可以看出方波、三角波及锯齿波的幅值改变可以用同一个子程序实现,即改变最高值就可以改变幅值。

相对幅值的改变,频率的改变更简单,频率的改变可以通过改变延时来实现。

要数码管显示,首先要选定显示的数码管,如果要显示一位比较容易,要显示两位则需要注意延时问题,即显示第二位的时候第一位的数据也要确保能显示在数码管上。

2、设计方案。

方案选择:1.四种波形的幅度和频率调节采用硬件的方法实现,但由于实验室器材的原因,以及加入很多芯片或是外围电路会使控制过程更麻烦。

2、采用软件的方法实现,虽然加大了编程的难度,但我们可以在寝室编程,方便和同学们的讨论,同时他不向方案一那样过度依赖硬件。

1)、总体设计。

该阶段主要是通过查阅资料以及讨论确定实现方案,并合理设计软硬件部分。

功能,一般来说软件硬件具备一定的互通性,用硬件的有点是可以提高系统的工作速度,但会增加电路的复杂性和硬件成本,用软件可以代替硬件的某些功能使电路简化,但增加了软件的成本,比如在该设计中可以用可编程中断控制器8259a控制键盘的工作,也可以通过软件编程实现小键盘的给定功能,由于用8259a产生中断控制电路复杂而且初始化设置不简单,故用软件编程代替。

2)、硬件设计过程。

确定所需要的芯片以及所硬件原理图、连接图。

3)、软件设计过程。

画出程序流程图,分模块实现各个部分的功能,并上机实现。

4)、软、硬件联调。

连接电路图,并运行软件,调节硬件并适当地修改软件,实现整体功能。

3.总体设计流程图。

第三章硬件设计。

1.硬件环境要求。

1)、唐都(tangdu)仪器硬件环境:

操作系统:中文windows98/me/2000/xp

最低配置。cpu:奔腾400mhz

内存:16mb

显示卡:标准vga,256色显示模式以上。

硬盘:50mb

驱动器:2x倍速cd-rom以上。

其它设备:鼠标器。

建议配置。cpu:奔腾400mhz或更高。

内存:16mb以上。

显示卡:svga,16k色以上显示模式。

的功能简介。

intel 8086 cpu是十六位微处理器。它采用n-沟道,耗尽型负载的硅栅工艺(hmos)制造,外形为双列直插式,有40个引脚。8086cpu有十六根数据线和20根地址线,直接寻址空间为2的十次方,为1mb。

8086有一组强有力的指令系统内部有硬件乘除指令以及串处理指令,可对多种数据类型进行处理。8086cpu与8位cpu8088向上兼容,处理能力比8080高10倍以上,而相同任务程序**长度可缩短20%.8086可与8087协处理器及8089输入/输出多处理器构成多机系统,以提高数据处理及输入/输出能力。

8088cpu内部结构与8088基本相同,但对外数据总线只有8条,称为准16微处理器。

2.所用芯片及其功能说明。

(1)、ac0832功能简介。

芯片介绍:dac0832是美国数据公司的8位d/a转化器,片内带数据锁存。

电流输出,输出电流稳定时间为1μm,功耗为20mw,其引脚说明如下:

d0~d7:数据输入线,ttl电。

wr1:数据锁存器写选通输入线,负脉冲有效。

xfer:数据传输控制信号输入线,低电平有效。

wr2:dac寄存器写选通输入线,低电平有效。

iout1:电流输出线,当dac寄存器为全1时电流最大。

iout2:电流输出线,其值与iout1之和为一常数。

rfb:反馈信号输入线,调整rfb端外接电阻值可以调整转换满量程精度。

vcc:电源电压线,为+5v~+15范围。

vref:基准电压输入线,范围为:-10v~+10v

agnd:模拟地。

dgnd:数字地。

a的功能简介。

8255a是intel公司生产的可编程输入输出接口芯片,它具有3个8位的并行i/o口,具有三种工作方式,可通过程序改。

变其功能,因而使用灵活,通用性强,可作为单片机与多种外围设备连接时的中间接口电路。8255有三种基本工作方式,三种工作方式由工作方式控制字决定,方式控制字由cpu通过输入/输出指令来提供。三个端口中pc口被分为两个部分,上半部分随pa口称为a组,下半部分随pb口称为b组。

其中pa口可工作与方式和2,而pb口只能工作在方式0和1。8255共有40个引脚,采用双列直插式封装。

各引脚功能如下:

d0--d7:三态双向数据线,与单片机数据总线连接,用来传送数据信息。

cs:片选信号线,低电平有效,表示芯片被选中。

rd:读出信号线,低电平有效,控制数据的读出。

wr:写入信号线,低电平有效,控制数据的写入。

vcc:+5v电源。

pa0--pa7:a口输入/输出线。

pb0--pb7:b口输入/输出线。

pc0--pc7:c口输入/输出线。

reset:复位信号线。

a1、a0:地址线,用来选择8255内部端口。

gnd:地线。

8255可编程并行接口新片工作方式说明:

方式0:基本输入输出方式。适用于三个端口的任何一个 ,每个端口都可以做输出或输出,输出可被锁存,输入不能锁存。

方式1:基本输入输出方式。这是a口或b口的八位外设线用作输入或输出 ,c口的四条。

线中三条用作数据传输的联络信号和终端请求信号 。

方式2:双向总线方式。只有a口具备双向总线的方式,8位外设线用作输入或是输出,此。

时c口的4条线用作通讯联络信号和中断请求信号。

8255有两种控制命令字:一个是方式选择控制字,另一个是c口按位置位或复位。

3)、键盘部分。

3.硬件接线图。

注:dac单元和8255需要不同的端口地址寻址,则在连成系统的时候,需要用不同的端口来寻址,8255用ioy0来寻址,dac用ioy1来寻址。

第四章程序设计。

1. 流程图。

3)、三角波流程图。

4)、正弦波流程图。

5)、主程序流程图。

2.典型程序模块及典型编程技巧分析。

在此设计中主要用了查询式的方法来确定小键盘输入,设1号键控制信号功能发生器的启动与关闭,2号键用来确定产生四种波形,由于一个键要判断四种波形故在一个循环中至少要包含四种波形都产生的情况号键用来进行幅度增减、幅度减少、频率增加、频率减少的操作。第一次按键的时候判断是否为1号键,是则开启仪器,进入到产生波形的程序,若为其它按键则一直等待知道出现1号键为止。第二次按键的时候判断为1号键还是二号键,1号键则关闭仪器,2号键则产生正弦波,其它按键则一直等到1号或2号键为止。

第三次按键的要判断为号键的那一个键值相应去执行相对的程序,1号键结束,二号键产生方波号键分别改变正弦波的幅值或频率,其它按键则一直等待出现这六个按键中一个并执行相应的程序为止。第四次按键的要判断为号键的那一个键值相应去执行相对的程序,1号键结束,二号键产生三角波号键分别改变方波的幅值或频率,其它按键则一直等待出现这六个按键中一个并执行相应的程序为止。第五次按键的要判断为号键的那一个键值相应去执行相对的程序,1号键结束,二号键产生锯齿波号键分别改变三角波的幅值或频率,其它按键则一直等待出现这六个按键中一个并执行相应的程序为止。

至此产生波形进行了一次循环,此时还需要第六次按键,第六次按键判断是否为1,为1则关闭仪器,为2的话继续循环产生波形。特别值得强调的是每次按键是改变幅值和频率的则执行此操作之后还需返回到该次判断,直至按键是产生波形的产生完波形之后再继续向下执行相应的程序。也就是说这里所说的第三次按键实际是可以产生方波的按键次数,排除了幅值频率改变的按键次数,也就是频率幅值可以改变多次之后仍然回到最初的按键判断,即频率幅值按键不会影响波形的产生。

按键之后若进行结束操作,则暂时关闭信号功能发生器,判断是否小键盘有按键按下,有按下则从新开启仪器即回到程序的开端开始运行,若没有按键按下则判断是否有pc键按下,有则返回dos系统,若无则继续从正弦波开始通过判断按键循环产生波形。

中南大学C语言课程设计报告

中南大学。c语言程序设计实践报告。题目校际运动会管理系统。学生姓名 xxxx 学号 xxxxxxxxxx 指导教师 xxxxxx 学院信息科学与工程学院。专业班级 xxxxxxxxxxxx 完成时间 2012年06月xx日。校际运动会管理系统 1 实验要求。1 需要处理的基础数据。学校信息 学校编号...

中南大学c语言课程设计报告

中南大学。c语言程序设计 课程设计报告。题目 数据的图形化处理 学院。专业。班级。姓名。指导老师。2015年1月3日。1 设计内容及要求 3 1.1设计要求 3 1.2程序设计流程图 3 2 详细设计 5 2.1详细设计 5 2.2数据结构与程序评析 7 2.3用法说明 8 3 设计结果与分析 8 ...

中南大学钢结构课程设计

中南大学土木工程学院土木工程专业 本科 钢结构基本原理 课程设计任务书。题目 钢框架主次梁设计。姓名 班级 学号 一 设计规范及参考书籍。1 规范。1 中华人民共和国建设部。建筑结构制图标准 gb t50105 2001 2 中华人民共和国建设部。房屋建筑制图统一标准 gb t50001 2001 ...