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

中南大学微机原理课程设计报告——信号发生器功能程序设计目录第一章设计题目、要求及目的 (3)1.设计题目要求 (3)2.设计目的 (3)第二章总体设计方案 (3)1.设计思想 (3)2.设计方案 (4)3.总体设计流程图 (5)第三章硬件设计 (5)1.硬件环境要求 (5)2.所用芯片及其功能说明 (6)3.硬件接线图 (9)第四章程序设计 (10)1.流程图 (10)2.典型程序模块及典型编程技巧分析··133.课程设计中遇到的问题及解决方法··144.程序清单和程序注释 (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.设计思想该课题要求实现信号功能发生器,首先通过小键盘给定一个按键,并将此信息送入计算机中,由计算机内部根据此信息去实现特定的功能,比如产生正弦波。
中南大学 汇编语言实验报告

计算机原理与汇编实验报告学生姓名学号专业班级指导教师贺建飚学院信息科学与工程学院完成时间2014年6月实验一二进制转十六进制一、实验目的(1) 掌握循环程序的设计方法。
(2)掌握汇编语言源程序的编辑、汇编、连接及调试过程。
(3)进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。
(4) 学会针对不同的问题,选用不同的组织循环的方法。
二、实验要求掌握循环程序的过程和汇编实现原理,进一步熟练掌握DEBUG操作指令以及汇编语言源程序的编辑、汇编、连接及调试过程。
三、实验内容掌握循环排序算法的思想:二进制到十六进制转换程序实验代码如下:assume cs:codecode segmentmain proc farstart: mov bx,1111000111110000b ;待转换成十六进制的二进制数mov ch,4 ;设置循环次数rotate: mov cl,4 ;设置循环左移的位数rol bx,cl ;将bx中的每位依次循环左移4位,;每左移一次,把最高位同时移入CF和操作数最低位mov al,bland al,0fh ;将al高4位清0,保留从rol循环移位到al低四位的值add al,30h ;将4位二进制数转换成对应的ASCII码cmp al,3ah ;判定4位二进制数是否大于9jl printadd al,7hprint: mov dl,al ;调用中断程序输出单个字符mov ah,2int 21hdec ch ;继续循环,直到循环4次为止jnz rotatemain endpmov ax,4c00hint 21hcode endsend四、实验结果DEBUG调试如下:五、实验心得编了这个程序之后发现,想要真正理解一个程序都是需要掌握众多助记符的用法以及它的意思,只有了解并明白了这些之后才可以分析程序或者是编写简单的小程序。
实验二起泡排序算法的程序实现一、实验目的(1)掌握循环程序的设计方法。
中南大学计算机原理与汇编实验报告(截图完整)

中南大学《计算机原理与汇编》实验报告学生姓名学号专业班级指导教师雷向东学院信息科学与工程学院完成时间 2010年12月实验2 算术逻辑运算实验一、实验目的1.掌握简单运算器的组成以及数据传送通路。
2.验证运算功能发生器(74LS181)的组合功能。
二、实验设备74LS181(两片),74LS273(两片), 74LS245(一片),开关若干,灯泡若干,单脉冲一片。
三、实验原理实验中的运算器由两片74LS181以并/串形式构成8位字长的ALU。
运算器的输出经过一个三态门(74LS245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74LS373)锁存,锁存器的输入连至数据总线,数据开关用来给出参与运算的数据(A和B),并经过一个三态门(74LS245)和数据显示灯相连,显示结果。
74LS181:完成加法运算。
74LS273:输入端接数据开关,输出端181。
在收到上升沿的时钟信号前181和其输出数据线之间是隔断的。
在收到上升沿信号后,其将输出端的数据将传到181,同时,作为触发器,其也将输入的数据进行保存。
因此,通过增加该芯片,可以通过顺序输入时钟信号,将不同寄存器中的数据通过同一组输出数据线传输到181芯片的不同引脚之中。
74LS245:相当于181的输出和数据显示灯泡组件之间的一个开关,在开始实验后将其打开,可以使181的运算结果输出并显示到灯泡上。
四、实验步骤及结果分析1.选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。
图1 运算器实验流程图2.搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。
搭建好的实验流程图如图1所示。
具体操作如下:①将74LS273芯片的0-7号引脚(数据端从低到高)及9号引脚(复位端)接到开关上,8号引脚接至单脉冲组件,左右两个74LS273芯片分别保存参与运算的数据A和B。
接着把两个74LS273组件的11-14号引脚(数据的低四位)分别接到74LS181组件(左)的0-7号引脚上,其中0-3号引脚为A的低四位,4-7号引脚为B的低四位。
中南大学计算机基础本科生课程设计(实践)设计报告[1]5
![中南大学计算机基础本科生课程设计(实践)设计报告[1]5](https://img.taocdn.com/s3/m/815de518bf1e650e52ea551810a6f524ccbfcbe9.png)
大学计算机基础课程设计(实践)设计报告1.任务内容网页的主题为印象山城——本溪。
本溪是我国著名的钢铁城市, 旧名“本溪湖”, 这里矿藏丰富, 被誉为“地质博物馆”, 以产优质焦煤、低磷铁、特种钢而著称。
主要旅游景点有本溪湖、本溪水洞以及东北道教名山——九顶铁刹山等。
山野菜、人参、鹿茸、冻梨等是当地著名的风味特产。
由于近几年国家重视老工业基地的发展, 本溪开始实施棚户区改造、绿化带的修建等, 使这个老工业城市又焕发新的光彩, 这是靠全本溪人民的共同努力。
截至2010年末, 本溪已完全年850亿元GDP的总量, 人均5.5万, 增长16.3%。
地方财政一般预算收入完成75亿元, 增长27.4%。
本溪县8000人口的高官镇, 以一镇之力单独创造了43.2亿的GDP 量值, 人均52.3万, 相当于深圳市人均GDP的五倍。
1.网页主要从本溪简介、本溪气候、人文历史、自然资源、旅游五个方面介绍本溪,Powerpoint则是主要从本溪简介、历史风韵、旅游信息三方面简要介绍。
2.设计的步骤①网页制作介绍本溪的城市风貌、人文历史、旅游信息, 它含有大量的图片, 故主页设计应包含“简介”、“本溪气候”、“自然资源”、“历史沿革”、“旅游信息”“风光展现”、“PPT欣赏”等字样, 每项均可制成单独的网页(由于时间关系, 仅完成其中几项), 每个单独的网页上部分应相同, 方便网页间切换。
②主页以城市的整体风貌为背景, 标题为山城印象——本溪, 左侧为目录,主页正中设有以本溪城市风貌为主题的Flash(自己制作)。
左侧的目录点击相应的文字就会弹出相对应的网页介绍。
③幻灯片制作3.幻灯片采用总分结构, 第一页设计为总标题“枫叶之都——本溪”。
第二页为总起目录页, 列出“地理位置”、“历史风韵”、“旅游风向标”。
每项均设超链接到其单独介绍的新幻灯片中。
各幻灯片以文字为主, 穿插相应图片, 分别插入层并设计动作效果, 方便演示, 应用演示模板到全部幻灯片, 添加动作按钮, 动作按钮可回到第二页总目录处, 以许嵩的宿敌为幻灯片音乐。
中南大学汇编实验报告

计算机汇编语言实验报告学院:信息科学与工程学院专业班级:指导老师:学号:姓名:目录汇编语言实验一 (4)一、实验目的 (4)二、实验要求 (4)三、实验编程 (4)四、DEBUG 命令: (5)五、运行界面 (6)六、心得体会 (8)汇编语言实验二 (9)一、实验目的 (9)二、二进制到十六进制转换程序 (9)1、思路方法 (9)2、程序代码 (10)3、程序截图 (11)三、起泡排序算法的程序实现 (11)1、方法思路 (11)2、程序代码 (11)3、程序截图 (14)汇编语言实验三 (15)一、实验目的 (15)二、实验要求 (15)三、实验内容求(Fibonacci递归数) (15)四、程序代码 (15)五、实验心得 (18)汇编语言实验四 (19)一、实验目的 (19)二、实验要求 (19)三、实验内容(分类统计字符个数) (19)四、程序代码 (19)五、实验心得 (23)汇编语言实验一一、实验目的学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,熟悉DEBUG调试程序和DOS功能表的查看,为后续实验打下坚实基础。
二、实验要求通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。
3、ASCII码及用16进制数表示二进制码的方法。
4、8086寄存器: AX,BX,CX,DX,F,IP。
三、实验编程'Hello World'程序:DATAS SEGMENTSTRING DB 13,10,'Hello World!',13,10,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,STRINGMOV AH,9INT 21HMOV AH,4CHINT 21HCODES ENDSEND START四、DEBUG 命令:1、打DEBUG 进入DEBUG,显示提示苻'_ '。
中南大学 计算机原理与汇编课程设计报告

计算机原理与汇编——课程设计报告姓名:学号:班级:指导老师:贺建飚汇编语言课程设计一、设计目的:课程设计是计算机原理与汇编语言教学过程中的重要环节。
本课程设计主要目的是使计算机专业学生深入学习计算机原理与汇编语言知识,进一步提高学生计算机原理与汇编语言综合能力和程序设计技能,锻炼运用计算机原理与汇编语言解决实际问题的能力。
二、设计要求:1.认真查阅资料,独立完成设计任务,每道题都必须上机通过。
2.独立思考,培养综合分析问题解决问题和调试程序的能力。
3.按时完成课程设计,写出课程设计报告。
三、设计内容及原理㈠设计内容:1.使用到子程序100 以内的素数,以十进制形式输出。
2.用递归计算50以内Fibonacci 数,以十进制形式输出。
3.编写一拷贝程序,要求在命令行指定源文件名和目标文件名。
㈡设计原理:1.结合几种含有特定功能的子程序以完成设计要求。
2.建立循环程序递归计算Fibonacci 数。
3.根据输入判断文件是否存在并执行拷贝过程。
四、设计思路1.使用到子程序100 以内的素数,以十进制形式输出。
按照设计要求,可以建立3个子程序,一个判断素数子程序,一个显示素数子程序,一个将素数以十进制形式输出子程序,然后在主程序中调用子程序,程序框架得以构建。
2.用递归计算50以内Fibonacci 数,以十进制形式输出。
按照设计要求,可以建立循环子程序,递归计算Fibonacci 数,以十进制形式输出,再将新Fibonacci 数与50比较,大于50则退出循环,程序结束。
3.编写一拷贝程序,要求在命令行指定源文件名和目标文件名。
在数据段中编写各种提示语句,在代码段中加入各种判断语句及中断跳转语句,程序运行时,即可根据命令行输入的指定源文件名和目标文件名执行相应的功能。
五、实现步骤1.使用到子程序100 以内的素数,以十进制形式输出。
程序代码如下:DA TAS SEGMENTcount dw 0;存放素数的个数sushu db 100 dup(?);存放素数msgsushu db'all prime numbers below 100 are:','$';显示素数的提示信息msgcount db 0dh,0ah,'count of prime numbers is:',0dh,0ah,'$';显示素数个数的提示信息DA TAS ENDSCODE SEGMENTassume cs:CODE, ds:DATASMAIN PROC FAR ;主程序入口call jisuanlea dx,msgsushu;显示素数的提示信息mov ah,9int 21hcall dispsushu;显示素数lea dx,msgcount;显示素数个数的提示信息mov ah,9int 21hcall dispcount;显示素数个数mov ah,1;按任意键退出int 21hmov ax, 4c00h ;程序结束,返回到操作系统系统int 21hMAIN ENDPjisuan proc nearmov ax, datasmov ds, axlea di,sushumov bh,0mov bl,2;求从2到100的素数、素数个数,BL从2到100变化next11:cmp bl,100ja tjmov dl,2;如果BL不能被DL从2到BL-1整除的话,则BL为素数next12:cmp dl,bljae next13mov ax,bxdiv dlcmp ah,0jz next14;整除则不是素数inc dljmp next12next13:inc count;是素数,则将个数加1mov [di],bl;是素数,则存入相应单元中inc dinext14:inc bljmp next11tj:retjisuan endpdispsushu proc nearlea si,sushumov cx,countnext21:mov ax,count;每行10个素数sub ax,cxmov bl,10div blcmp ah,0jnz next22mov dl,0dh;每行10个素数,行末加回车换行mov ah,2int 21hmov dl,0ahmov ah,2int 21hnext22:mov bl,[si];取出一个素数mov bh,0call disp10;以十进制形式输出mov dl,20h;每个素数之间加一个空格,便于区分mov ah,2int 21hinc siloop next21retdispsushu endpdispcount proc nearmov bx,count;取出素数个数call disp10;以十进制形式输出retdispcount endpdisp10 proc near;该子程序的作用是将BX中的数以十进制形式输出push cxmov cx,10dcall dec_divmov cx,1dcall dec_divpop cxretdec_div proc nearmov ax,bxmov dx,0div cxmov bx,dxmov dl,aladd dl,30hmov ah,2int 21hretdec_div endpdisp10 endpCODE ENDSEND MAIN程序运行结果:2.用递归计算50以内Fibonacci 数,以十进制形式输出。
中南大学c课程设计报告

中南大学《高级程序设计实践(C++)》课程设计报告设计题目教学设备管理系统指导老师设计者专业班级设计日期目录一课题的基本内容和要求二程序功能简介三主体内容:1 设计分析2 程序整体结构3 部分模块的结构4 相关模块源程序5 操作方法6试验结果7设计体会8 参考文献一基本内容和要求(一)基本要求本设计采用教师指导、学生自学和独立编程操作方式,先由学生查阅与本设计有关的书籍和资料,利用Visual C++ 6.0设计环境与开发工具,在两周时间内,完成课程设计内容中的一个管理系统,具体要求如下:1、独立思考:独立完成课程设计中各任务的设计和调试。
2、上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
3、数据管理:管理系统中的数据可用数据库(如Access数据库)的形式保存,也可用普通文件(文本文件或二进制文件)的形式保存。
4、程序要求:界面美观、可操作性强、稳定性好。
(二)基本内容:教学设备管理系统为方便管理学校教学设备,编写一个教学设备管理系统软件。
系统记录必须包括设备编号、设备名称、生产厂家、购置日期、台数、单价、及备注等。
二程序功能简介(1)添加:增加一台设备的记录到管理系统中。
(2)查询:可以根据设备编号查找某台设备的相关信息,若找到则显示其信息。
(3)修改:在管理系统中修改一台设备的记录。
(4)保存:将所有教学设备信息保存在一个文件中(数据库文件或普通的文本文件)。
(5)读取:从文件中读取已保存了数据。
(6)删除:从管理系统中删除一条记录。
(7)恢复:能恢复被删除的记录。
(8)统计:(A)统计每页合计台数及金额;(B)累计设备的总台数及总金额;(C)统计单价在:200元以下、200~800元之间和800元以上的设备总台数及总金额。
(D)以表格形式打印教学设备明细表。
(9)其他:可以根据自己的思路设计其他功能。
三主体内容1 设计分析根据问题描述和要求,系统要求能够添加设备,按设备编号查询,修改,保存,读取,删除,恢复设备的信息。
中南大学数学院C课程设计报告

中南大学《C++课程设计》设计报告题目C++课程设计学生姓名学号专业班级数学类0901指导老师袁修贵数学科学与计算技术学院2010年6月一、实验目的、内容1.用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。
思考:利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入任意一个年份和一个月份,则程序就应按格式显示出该年那一个月的月历。
2.编写程序,从键盘读入一个文本文件名字(可带路径),为该文件中的所有单词建立一个词汇索引。
按字母顺序显示所有单词(仅一次),后面紧跟着它们所在的行号。
大写与小写字母被认为是相同的。
例如,对于下列的输入文件:To be ornot to be,that is the question.产生的词汇索引如下:be 1 2is 3not 2or 1question 3that 3the 3to 1 23.模拟计算器程序问题描述设计一个程序来模拟一个简单的手持计算器。
程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。
基本要求程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’ 符号后,窗口显示出结果。
测试数据程序输入不少于5种不同的表达式进行测试。
实现提示可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。
二、实验程序设计及结构1、需求分析○1对需求的信息进行模糊查询○2模拟电子辞典○3模拟计算器2、设计结构(1)#include <stdio.h>#include <stdlib.h>int a[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){int i,n,s = 0,r = 0,year,month,days = 0,day,date = 1;int b[42] ={1,2,3,4,5,6,7}; //日历中的星期puts("Please input the weekday of date month 1/day 1:");scanf("%d",&n);puts("Please input the date you want:");scanf("%d%d%d",&year,&month,&day);if((year % 4 == 0 && year % 100 != 0)||year % 400 == 0)a[2] = 29;for(i=1;i<month;i++)days += a[i];s = day + days;if((s + n - 1) >= 7)s = (s + n - 1) % 7;elses = s + n - 1;printf("weekday:");switch(s){case 0: puts("7\n");break;case 1: puts("1\n");break;case 2: puts("2\n");break;case 3: puts("3\n");break;case 4: puts("4\n");break;case 5: puts("5\n");break;case 6: puts("6\n");break;}if((days +n)>= 7)r = (days + n)%7;elser = days +n;for(i = 0;i < 42;i++){if(i == r + 6&&date < a[month]) {b[i] = date;date++;r++;}printf("%d\t",b[i]);if(i > 5&&(i+1) % 7 == 0)printf("\n");}return 0;}(2)#include <iostream>#include <fstream>#include <vector>#include <string>using namespace std;typedef struct _unit{string word;int line;}unit;int main(){vector<unit> list;ifstream in;string fileName;cout<<"输入文件路径: ";cin>>fileName;in.open(fileName.c_str());if (in.fail()){cout<<"文件打开错误,退出"<<endl;exit(0);}unit temp;int lineNumber = 1;while(!in.eof()){in>>temp.word;temp.line = lineNumber;list.push_back(temp);if (in.peek()=='\n'){lineNumber++;}}in.close();bool isIn = false;vector<string> copy;for (unsigned int i=0; i<list.size(); i++) {isIn = false;for (unsigned int j=0; j<copy.size(); j++) {if (list[i].word == copy[j]){isIn = true;break;}}if (!isIn)copy.push_back(list[i].word);}vector<int> lineNo;for (unsigned int m=0; m<copy.size(); m++){for (unsigned int n=0; n<list.size(); n++){if (list[n].word == copy[m]){lineNo.push_back(list[n].line);}}lineNo.push_back(0);}int current=0;for (unsigned int o=0; o<copy.size(); o++){cout<<copy[o]<<" ";for (unsigned int p=current; p<lineNo.size(); p++){if (lineNo[p] == 0){current=p+1;break;}elsecout<<lineNo[p]<<" ";}cout<<endl;}return 0;}(3)#include <stdio.h>#include <string>#include <cctype>#include <iostream>#include <map>#include <sstream>#include <strstream>using namespace std;istream* input; // pointer to input streamint no_of_errors; // note: default initialized to 0double error(const char* s){no_of_errors++;cerr << "error: " << s << '\n';return 1;}enum Token_value {NAME, NUMBER, END,PLUS='+', MINUS='-', MUL='*', DIV='/',PRINT=';', ASSIGN='=', LP='(', RP=')'};Token_value curr_tok = PRINT;double number_value;string string_value;Token_value get_token(){char ch;do { // skip whitespace except '\en'if(!input->get(ch)) return curr_tok = END;} while (ch!='\n' && isspace(ch));switch (ch) {case ';':case '\n':return curr_tok=PRINT;case '*':case '/':case '+':case '-':case '(':case ')':case '=':return curr_tok=Token_value(ch);case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.':input->putback(ch);*input >> number_value;return curr_tok=NUMBER;default: // NAME, NAME=, or errorif (isalpha(ch)) {string_value = ch;while (input->get(ch) && isalnum(ch))string_value += ch; // string_value.push_back(ch); // to work around library buginput->putback(ch);return curr_tok=NAME;}error("bad token");return curr_tok=PRINT;}}map<string,double> table;double expr(bool); // cannot do withoutdouble prim(bool get) // handle primaries{if (get) get_token();switch (curr_tok) {case NUMBER: // floating-point constant{ double v = number_value;get_token();return v;}case NAME:{ double& v = table[string_value];if (get_token() == ASSIGN) v = expr(true); return v;}case MINUS: // unary minusreturn -prim(true);case LP:{ double e = expr(true);if (curr_tok != RP) return error(") expected"); get_token(); // eat ')'return e;}default:return error("primary expected");}}double term(bool get) // multiply and divide {double left = prim(get);for (;;)switch (curr_tok) {case MUL:left *= prim(true);break;case DIV:if (double d = prim(true)) {left /= d;break;}return error("divide by 0");default:return left;}}double expr(bool get) // add and subtract {double left = term(get);for (;;) // ``forever''switch (curr_tok) {case PLUS:left += term(true);break;case MINUS:left -= term(true);break;default:return left;}}int main(int argc, char* argv[]){switch (argc) {case 1: // read from standard inputinput = &cin;break;case 2: // read argument string// input = new istringstream(argv[1]);input = new istrstream(argv[1]);break;default:error("too many arguments");return 1;}table["pi"] = 3.1415926535897932385; // insert predefined names table["e"] = 2.7182818284590452354;while (*input) {get_token();if (curr_tok == END) break;if (curr_tok == PRINT) continue;cout << expr(false) << '\n';}if (input != &cin) delete input;return no_of_errors;d}三、设计过程写出设计过程,实验源代码可不写出,但实验中出错信息及处理方法及解决错误的方法要写。
中南大学C++课程设计实践报告!

中南大学本科生课程设计(实践)任务书、设计报告(C++程序设计)题目学生成绩管理系统学生姓名指导教师学院专业班级学生学号计算机基础教学实验中心年月日学生成绩管理系统关键字:学生成绩 MFC 编写系统内容:定义一个结构体,存放下列信息:学号、姓名、性别、系名、班级名、成绩等1.学生成绩管理系统开发设计思想要求:一:数据输入:输入学生的相关信息,若用户输入数据或信息不正确,给出“错误”信息显示,重复刚才的操作;至少要输入10个学生的数据;可以随时插入学生信息记录;二:每个学生数据能够进行修改并进行保存;三:可以根据学号或者姓名删除某学生数据;四:查询模块要求能按学号,按姓名,按班级等条件进行查询;五:界面要求美观,提示信息准确,所有功能可以反复使用。
学生成绩管理程序从总体设计方面来看,基本的功能包括主控模块,数据输入模块,数据修改模块,数据查询模块等。
设计模块图:2.系统功能及系统设计介绍详细设计:对于总体设计说明的软件模块,进一步细化,要说明各个模块的逻辑实现方法。
下面逐个说明。
主控模块:主要完成初始化工作,包括屏幕的初始化,显示初始操作界面。
初始界面中主要包括功能的菜单选择项。
输入处理:利用链表技术输入多名学生的数据,直到输入学生的学号以“@”开头,则结束数据的输入。
程序运行流程图如下:删除处理:利用链表技术删除某学号的学生成绩信息,如果找到该学号则进行删除,否则输出“未找到”的信息。
程序运行流程图略。
查找处理:利用链表技术根据学生学号或姓名等方式查找某学号的学生成绩信息,其程序流程图略。
排序处理:利用链表技术根据学生学号对学生数据进行排序,其部分源代码如下:/***********xuesheng.c***********//******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#include "string.h" /*字符串函数*/#include "conio.h" /*屏幕操作函数*/#include "mem.h" /*内存操作函数*/#include "ctype.h" /*字符操作函数*/#include "alloc.h" /*动态地址分配函数*/#define N 3 /*定义常数*/typedef struct z1 /*定义数据结构*/{char no[11];char name[15];char sex[5];char major[15];char class[15];char tele[15];char address[15];int order;struct z1 *next;}STUDENT;/*以下是函数原型*/STUDENT *init(); /*初始化函数*/STUDENT *create(); /*创建链表*/STUDENT *dele(STUDENT *h); /*删除记录*/void print(STUDENT *h); /* 显示所有记录*/void search(STUDENT *h); /*查找*/STUDENT *sort(STUDENT *h); /*排序*/int menu_select(); /*菜单函数*/STUDENT *insert(STUDENT *h); /*插入记录*/void save(STUDENT *h); /*保存*/STUDENT *load(); /*读入记录*/void inputs(char *prompt, char *s, int count);/******主函数开始*******/main(){int i;STUDENT *head; /*链表定义头指针*/head=init(); /*初始化链表*/clrscr(); /*清屏*/for(;;) /*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ { /*值不同,执行的函数不同,break 不能省略*/case 0:head=init();break; /*执行初始化*/case 1:head=create();break; /*创建链表*/case 2:head=dele(head);break; /*删除记录*/case 3:print(head);break; /*显示全部记录*/case 4:search(head);break; /*查找记录*/case 5:head=insert(head); break; /*插入记录*/case 6:head=sort(head);break; /*排序*/case 7:save(head);break; /*保存文件*/case 8:head=load(); break; /*读文件*/case 9:exit(0); /*如菜单返回值为14程序结束*/}}}/*菜单函数,返回值为整数*/int menu_select(){char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/" 0. init list", /*初始化*/" 1. Input", /*输入记录*/" 2. Delete", /*删除记录*/" 3. List", /*显示记录*/" 4. Seek(name)", /*查找*/" 5. insert record to list ", /*插入记录到表中*/" 6. Sort", /*排序*/" 7. Save", /*保存*/" 8. Load", /*从文件中读入记录*/" 9. Quit",/*退出*/3.系统开发的体会本次程序设计所用时间较长,工作量很饱满,而且所用的知识很多,但是我们平常在课堂上所学的知识很有限,这就需要我大量的自学书本和课外的其他书籍上的知识。
中南大学C++课程设计报告

中南大学C++程序设计基础课程设计题目学生成绩管理系统姓名学号班级指导教师刘嫔学院信息科学与工程学院日期二〇一四年七月设计任务书1、题目:C++课程设计报告2、程序功能组成:✧数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;✧数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;✧数据的插入:插入某个学生信息;✧数据的查询:如按学号查询、按姓名查询等;✧数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;✧平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;✧列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
3、 进度安排:目 录一、总设计方案 (1)序号 设计内容名称 完成时间 备注 1 组队;确定题目;分工 6.25 2初步的需求分析与设计建模6.25~6.273 详细的需求分析与设计建模6.28~6.304 关键模块的实现与测试 7.015 编写课程设计报告 7.01~7.02 6最后总结,修改。
7.03二、使用说明及运行实例 (2)三、成员设计内容简介 (6)四、项目源程序代码 (7)五、设计心得 (19)一、总设计方案系统流程图:开始 结束选择操作输入数据排序 显示数据查询 删除 主菜单插入数据 退出系统按学号按姓名保存数据按景平均成绩选择选择选择选择选择选择选择选择按平均成绩高读取数据选择班级学号性别 姓名二、使用说明及运行实例主界面1.数据录入2.数据修改3. 数据插入4.数据查询5.数据删除6.平均值计算7.列出不及格学生三、成员设计内容简介1.数据录入:数据录入的功能是将需要的数据进行录入,用于后面的各项操作。
实现:用输入函数对数据进行录入,先确定学生的个数,再用一个循环进行输入,选修课程数量亦然。
2. 数据修改:数据修改的主要功能是为修改数据输入出现的错误,实现:先指定该生的学号,找到该生,再输出该生当前的信息,用一个if语句对数据进行修改,再用一个循环语句对选修课信息进行修改。
中南大学JAVA课程设计报告1

中南大学JAVA课程设计报告题目: 简单图形实现目录设计分析 ................................................3~4 程序结构 .. (4)功能及说明..............................................5~11 操作方法 ..............................................11~12 实验结果 ..............................................12~13一、设计分析1、项目要求实现各种二维图形的基本操作, 要求采用图形用户界面(1)实现圆、矩形、三角形的创建及参数修改(2)实现各种图形的绘制(3)求各种图形的面积和周长(4)实现同一类型图形的大小比较(5)实现同一类型的形状比较2.实现分析首先项目要求采用图形用户界面, 当然首先要创建出一个界面JFrame出来。
在这个界面中, 首先做一个总体的布局: 本次试验简单的采用流式布局, 当然我们希望画图的时候有一个特定的区域, 以便我们能够控制边界, 采用一个JPanel, 将这个JPanel添加到JFrame中, 我们在面板中画各种图形。
当然我们还要有一些按钮, 来标明形状和颜色。
因此, 我们的整个界面分为两大部分, 上面为形状颜色按钮, 下面为画图板。
JAVA中自带有画出各种图形的函数, 只需要我们获取一个画笔, 然后利用这个画笔来调用各种方法即可。
但是我们怎么控制利用我们的鼠标来画图呢, 及在这里, 鼠标就相当于一支笔。
当然是利用监听器。
在这个程序中, 我们要用到三种监听器, ActionListener、MouseListener、MouseMotionListener。
前面我们讲到我们的窗体中上一层是按钮, 而这些按钮就要用到ActionListener监听器, 后面两个监听器主要是在画图的过程中用到。
中南大学EDA课程设计报告

中南大学EDA课程设计报告指导老师:张静秋姓名:梁雪林学号:0909091925专业班级:自动化0905目录一、设计内容简介 (2)二、设计要求 (2)基本要求 (2)提高部分要求 (3)三、方案论证(整体电路设计原理) (3)四、各个模块设计原理 (4)4.1 分频电路模块设计 (5)4.2 秒计时器模块设计 (7)4.3 分计时器模块设计 (9)4.4 小时计时器模块设计 (11)4.5 报时模块设计 (13)五、实验中遇到问题及解决方法 (20)六、结论 (20)七、实验心得 (21)八、参考文献 (22)一、设计内容简介设计一个数字钟,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。
我设计的电路在具有基本功能的基础上,增加了下列功能:改变分频比、不同整点不同报时等;二、设计要求基本要求1、能进行正常的时、分、秒计时功能;2、分别由六个数码管显示时分秒的计时;3、K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变);4、K2是系统的校分开关;5、K3是系统的校时开关;提高部分要求1、使时钟具有整点报时功能(当时钟计到59’50”时开始报时,四个不同整点发出不同声音);2、分频比可变;三、方案论证(整体电路设计原理)本实验在实现实验基本功能的基础上,加入了整点报时等功能;图1为实验功能方框图:图1 实验方框图数字计时器基本功能是计时,因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为4KHZ,通过分频获得所需脉冲频率(1Hz,1KHz,500Hz)。
为产生秒位,设计一个模60计数器,对1HZ的脉冲进行秒计数,产生秒位;为产生分位,通过秒位的进位产生分计数脉冲,分位也由模60计数器构成;为产生时位,用一个模24计数器对分位的进位脉冲进行计数。
整个数字计时器的计数部分共包括六位:时十位、时个位、分十位、分个位、秒十位和秒个位。
中南大学结构力学课程设计报告

《结构力学程序设计实践》报告学院名称资源与安全工程学院专业班级城地专业0......学生学号020208....学生姓名李 ..指导老师蒋....2010年 12月 29 日目录一、指导书 (3)二、任务书 (4)三、课程名称 (6)四、课程教学目的 (6)五、实践步聚 (6)5.1 确定单榀刚架KJ-1的计算单元 (6)5.2 选取平面刚架KJ-1的计算简图 (7)5.3 KJ-1的荷载计算 (8)5.4上机操作过程 (9)5.5 输出软件计算数据 (9)六、分析计算结果 (24)一.《结构力学程序设计实践》指导书1.1 学时与学分课程性质:必修;学时:1周;学分:1.0。
1.2 教材(1)《结构力学》周竞欧主编同济大学出版社(2)《结构力学程序设计实践》指导书蒋青青编(3)《PK用户手册及技术条件》中国建筑科学研究院PKPM CAD工程部1.3 《结构力学程序设计实践》课程的任务、性质与目的实践教学是理论联系实际、培养学生实验技能和实践能力的重要教学环节。
结构力学是一门与工程设计密切相关的重要学科,根据城市地下空间工程专业本科培养方案和教学计划安排,《结构力学程序设计实践》为三性实验(综合性、设计性、创造性)。
通过该实践教学,要求学生掌握结构力学的手工计算方法和电算方法,使学生熟悉结构力学电算的基本原理,正确分析结构的传力途径,学会使用结构CAD系列软件PKPM中的PK计算软件来分析平面杆件结构内力和位移的实际操作步骤和方法,了解结构力学在地下空间工程中的用途,培养学生综合运用所学理论知识解决地下结构实际工程问题的动手技能,为今后学习《混凝土结构》、《地下建筑结构》等专业课程打下一定的基础。
1.4 课程名称结构力学程序设计实践1.5 仪器设备在计算机房进行实验,每人一台计算机,采用中国建筑科学研究院编制的《微机结构CAD系统软件PKPM系列》中的PK平面框架计算软件进行实验。
1.6 教学方式与基本要求(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)3.1调试与测试 (8)3.2测试结果与分析 (8)4 小结(心得体会) (11)5 附录 (12)1设计内容及要求1.1设计要求用c语言绘图函数绘制函数图像;要根据输入的信息,用c语言画出相应函数y=sin(x),y=cos(x),...;画出的点数为N个,即N个像素点;可以不画出坐标值,N的值要大于20。
程序界面设计合理,色彩得体大方,显示正确,界面清晰、美观。
1.2程序设计流程图开始输出可选函数列表设置背景色和线条色画出坐标轴设置文本属性标记坐标轴和原点绘制基本初等函数关闭图像处理系统结束图1:总程序流程开始float i,x0,y0,x,y; int a,b;i nt gd=DETECT,gm;for(b=0;b<=20;b++)initgraph(&gd,&gm,""); printf linesettextstyle outtextxyswitchcase1 case2 ......Putpixel(x,y,RED);break; defaultgetch();closegraph();结束图2:总程序流程图2详细设计2.1详细设计(1)#include<stdio.h>调用系统提供的标准库函数#include<math.h>调用math库文件里的函数#include<conio.h>调用通过控制台进行数据输入和数据输出的函数 #include<graphics.h>调用图像处理函数(2)main(){float i,x0,y0,x,y;int a,b;int gd=DETECT,gm;定义变量(3) for(b=0;b<=20;b++){实现程序的多次循环使用(4)initgraph(&gd,&gm,"");初始化图形系统(5)printf("Choose a function to see its functional image!\n"); printf("1.y=x\n");printf("2.y=sinx\n");printf("3.y=cosx\n");printf("4.y=e^x\n");printf("5.y=log(e)(x)\n");printf("6.y=x^2\n");printf("7.y=tanx\n");printf("Number 1-7,just try them!\n");printf("Please enter number:");输出一个基本初等函数可选列表 scanf("%d",&a);输入一个整型变量(6)cleardevice();清除屏幕和图形缓冲区setbkcolor(WHITE);设置背景色setcolor(GREEN);设置前景颜色line(100,350,100,180);line(95,190,100,180);line(100,180,105,190);line(40,250,500,250);line(495,245,500,250);line(500,250,495,255);画坐标轴和箭头settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);设置字体outtextxy(500,250,"x");标记x轴outtextxy(110,180,"y");标记y轴outtextxy(90,245,"o");标记原点(7)switch(a)实现多分支选择{case 1:第一种情况{for(x0=0;x0<=21;x0+=1){y0=x0;要画出的函数表达式x=6*x0+100; x,y的坐标控制,使点落在屏幕适当位置 y=-6*y0+250;putpixel(x,y,RED);画点函数,画出红色像素点}break;跳出多分支选择结构}case 2:第二种情况{for(x0=0;x0<=10*3.14159;x0+=0.1){y0=50*sin(x0+2*3.14159);正弦函数x=10*x0+100;y=-y0+250;putpixel(x,y,RED);}break;}case 3:第三种情况{for(x0=0;x0<=10*3.14159;x0+=0.1){y0=50*sin(x0+3.14159/2);余弦函数x=10*x0+100;y=-y0+250;putpixel(x,y,RED);}break;}..........其他常见函数default:printf("Enter data error!\n");否则输出数据错误提示}(8) getch();从控制台读取一个字符,但不显示在屏幕上,等待你按下任意键,再继续执行下面的语句closegraph();关闭图形系统}}2.2数据结构与程序评析(1)对图形处理函数作比较全面的分析,即对程序要使用的编写方法功能,运行方式进行分析,并作出正确的解决方案。
中南大学《大学计算机基础》课程设计_实践报告 我的家乡

中南大学Array本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目我的家乡学生姓名指导教师朱从旭学院材料科学与工程专业班级学生学号计算机基础教学实验中学2012 年 12 月我的家乡1.任务内容制作该网页主要是介绍我的家乡长沙,包括:长沙的地理环境,长沙的名字由来,长沙的著名景点,长沙的小吃,长沙的高校,长沙的历史。
长沙,岳麓为屏,湘江为带,水陆洲浮碧江心,浏阳河曲绕城外,湖泊星布,岗峦交替,城廓错落其间,是一座典型的山水城市。
湘江是长沙的母亲河,它滔滔南来,汩汩北去,过昭山而进入长沙城,经三汉矾又转向西北,至乔口而出望城县,再过岳阳入洞庭,流经长沙市境约25公里。
湘江两岸赤壁如霞,白砂如雪,垂柳如丝,樯帆如云,构成美丽的长沙沿江风光带。
长沙为湖南省省会,位于湖南省东部,湘江下游长浏盆地西缘。
长沙市南接株洲市和湘潭市,西抵娄底市,北达岳阳市、益阳市,东挨江西省宜春市、萍乡市。
地理坐标为东经111°53'~114°5',北纬27°51'~28°40',东西长约230公里,南北宽约88公里。
截至2011年7月1日,长沙市辖:长沙市区(芙蓉区、天心区、岳麓区、开福区、雨花区、望城区)及长沙县、宁乡县、浏阳市,共六区二县一市。
长沙位于中国中南部的长江以南地区,湖南省的东部偏北。
地处洞庭湖平原的南端向湘中丘陵盆地过渡地带,与岳阳、益阳、娄底、株洲、湘潭和江西萍乡接壤。
总面积为11818平方公里,其中市区面积954.6平方公里,建成区面积256平方千米(截至09年底)。
位于浏阳境内的大围山七星岭海拔1616米,为辖区最高处;岳麓山的云麓峰海拔300.8米,为城区至高点。
湘江为长沙最重要的河流,由南向北贯穿全境,境内长度约75公里。
湘江自南向北贯穿长沙城区,把城市分为河东和河西两大部分。
河东以商业经济为主,河西以文化教育为主。
中南大学c课程设计实践报告

中南大学c 课程设计实践报告一、教学目标本课程的教学目标是使学生掌握中南大学C课程的核心知识,包括基本概念、原理和应用。
具体目标如下:1.知识目标:学生能够准确理解并掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。
2.技能目标:学生能够熟练运用C语言进行程序设计,包括编写、调试和运行C程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生的问题解决能力和创新意识。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.C语言的基本语法和数据类型,包括变量、常量、数据类型、运算符等。
2.控制结构,包括条件语句、循环语句等。
3.函数,包括函数的定义、声明、调用和返回值等。
4.指针和数组,包括指针的概念、指针的运算、数组的基本操作等。
5.结构体和文件操作等高级内容。
三、教学方法为了达到教学目标,本课程将采用多种教学方法,包括:1.讲授法:通过教师的讲解和演示,使学生掌握C语言的基本知识和技能。
2.讨论法:通过小组讨论和课堂讨论,激发学生的思考和问题解决能力。
3.案例分析法:通过分析实际案例,使学生了解C语言在实际应用中的作用和意义。
4.实验法:通过编写和调试C程序,培养学生的实际编程能力和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将使用以下教学资源:1.教材:选择一本适合学生水平的C语言教材,作为学生学习的主要参考资料。
2.参考书:提供一些相关的参考书籍,供学生进一步深入学习和参考。
3.多媒体资料:制作一些教学PPT、视频等多媒体资料,帮助学生更好地理解和掌握知识。
4.实验设备:提供计算机实验室,让学生能够进行实际编程和实验操作。
五、教学评估本课程的评估方式包括平时表现、作业和考试等。
具体评估方式如下:1.平时表现:通过学生的课堂参与、提问、回答问题等方式评估学生的学习态度和理解程度。
2.作业:布置适量的作业,包括编程练习和理论题目,以巩固学生对知识的理解和应用能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学微机原理课程设计报告——信号发生器功能程序设计目录第一章设计题目、要求及目的 (3)1.设计题目要求 (3)2.设计目的 (3)第二章总体设计方案 (3)1.设计思想 (3)2.设计方案 (4)3.总体设计流程图 (5)第三章硬件设计 (5)1.硬件环境要求 (5)2.所用芯片及其功能说明 (6)3.硬件接线图 (9)第四章程序设计 (10)1.流程图 (10)2.典型程序模块及典型编程技巧分析··133.课程设计中遇到的问题及解决方法··144.程序清单和程序注释 (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.总体设计流程图第三章 硬件设计微型计算机总线键盘给定输入用于选择DAC 0832输出某种频率波形微型计算机总线8255A 可编程外围接口芯片将数据送给数码管显示1.硬件环境要求(1)、唐都(tangdu)仪器硬件环境:操作系统:中文Windows98/Me/2000/XP最低配置CPU:奔腾400Mhz内存:16MB显示卡:标准VGA,256色显示模式以上硬盘:50MB驱动器:2X倍速CD-ROM以上其它设备:鼠标器建议配置CPU:奔腾400Mhz或更高内存:16MB以上显示卡:SVGA,16K色以上显示模式(2)、8086、8088的功能简介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寄存器写选通输入线,低电平有效I OUT1:电流输出线,当DAC寄存器为全1时电流最大I OUT2:电流输出线,其值与I OUT1之和为一常数Rfb:反馈信号输入线,调整Rfb端外接电阻值可以调整转换满量程精度Vcc:电源电压线,为+5V~+15范围V REF:基准电压输入线,范围为:-10V~+10VAGND:模拟地DGND:数字地(2)、8255A的功能简介8255A是Intel公司生产的可编程输入输出接口芯片,它具有3个8位的并行I/O口,具有三种工作方式,可通过程序改变其功能,因而使用灵活,通用性强,可作为单片机与多种外围设备连接时的中间接口电路。
8255有三种基本工作方式,三种工作方式由工作方式控制字决定,方式控制字由CPU通过输入/输出指令来提供.三个端口中PC口被分为两个部分,上半部分随PA口称为A组,下半部分随PB口称为B组.其中PA口可工作与方式0、1和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. 流程图(1)、方波流程图(2)、锯齿波流程图开始AL 中的数据输送到0832AL 中的数据增量 数据00送AL 寄存器结束开始将00H 送到0832端口延时将最大值送入0832端口延时结束是最大值?(3)、三角波流程图开始数据00送AL寄存器AL中的数据输送到0832AL中的数据自增与上限是否相等AL中的数据自减与下限00是否相等(4)、正弦波流程图开始循环次数给CXSI指向的数据给ALAL中的数据给0832SI自加1指向表中下一个数据(5)、主程序流程图开始给变量赋初值,初始化8255有按键按下?判断键值1号键开始其它键有按键按下?1号键2号键产生正弦波有按键按下?2号键3、4、5、6号键改变频率或幅值1号键产生方波有按键按下?3、4、5、6号键改变频率或幅值2号键1号键产生三角波3、4、5、6号键改变频率或幅值有按键按下?2号键1号键产生锯齿波PC有键按下有按键按下?1号键结束有按键按下?返回DOS2.典型程序模块及典型编程技巧分析在此设计中主要用了查询式的方法来确定小键盘输入,设1号键控制信号功能发生器的启动与关闭,2号键用来确定产生四种波形,由于一个键要判断四种波形故在一个循环中至少要包含四种波形都产生的情况。