当前位置:文档之家› 西北工业大学c++大作业

西北工业大学c++大作业

西北工业大学c++大作业
西北工业大学c++大作业

程序设计挑战式课程设计极限挑战挑战,不是为着征服自然,而是为着突破自我,超越自我生命有极限,思想无极限,高度有极限,境界无极限

作业名称:

利用OpenGL 实现有色立体茶壶旋转图形 学 院:

航海学院 班 级:

03021301 学 号:

2013300749 姓 名:

刘德柱 团队组成: 刘德柱主要负责茶壶形态构建函数模块、潘峰主要负责旋转实现函数,调试、完善、报告等共同完成。

西北工业大学

2015年12月6日

请填写以下十项内容,将表格按页对齐(插入空行),勿删除任何部分。

1、问题与背景(描述程序所要解决的问题或应用背景)

2、开发工具(列出所使用的开发工具和第3方开发库)

3、主要功能(详细说明程序的功能)

4、设计内容(详细描述解决问题的原理和方法、算法、数据结构等)

5、程序文件与工程名称(标出程序中所有文件名、工程名称及其说明)

6、函数模块(程序中各个函数的原型声明及其说明)

7、使用说明(运行程序的小型说明书)

8、程序开发总结(简要叙述编写本作业的收获与思考)

9、运行截图(附上程序运行的截图画面,至少有1幅,截图越翔实得分越高)

Windows中抓取当前活动窗口:Alt + Print Screen,抓取全屏:Print Screen。或者使用HyperSnap等软件(百度搜索)。

10、源程序(附上程序源代码,若是多个文件,标出文件名)

// 1.应用程序主窗框的源代码

// MainFrm.cpp : CMainFrame框架类的实现

#include "stdafx.h"

#include "OPENGLAct.h"

#include "MainFrm.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

//////////////////////////////////////////////////////////////// /////////////

// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

// 注意,ClassWizard将添加和删除映射宏。

// 不编辑你所看到的这些生成的代码块!

ON_WM_CREATE()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

static UINT indicators[] =

{

ID_SEPARATOR, // 状态行指标

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

//////////////////////////////////////////////////////////////// /////////////

// CMainFrame建设/破坏

CMainFrame::CMainFrame()

{

// 待办事项:添加成员初始化代码

}

CMainFrame::~CMainFrame()

{

}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbar\n");

return -1; // 无法创建

}

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT))) {

TRACE0("Failed to create status bar\n");

return -1; // 无法创建

}

// 待办事项:删除这三行如果你不想工具栏

// be dockable

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

return 0;

}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWnd::PreCreateWindow(cs) )

return FALSE;

// 待办事项:修改窗口类或样式来修改

// the CREATESTRUCT cs

return TRUE;

}

//////////////////////////////////////////////////////////////// /////////////

// CMainFrame诊断

#ifdef _DEBUG

void CMainFrame::AssertValid() const

{

CFrameWnd::AssertValid();

}

void CMainFrame::Dump(CDumpContext& dc) const

{

CFrameWnd::Dump(dc);

}

#endif //_DEBUG

//////////////////////////////////////////////////////////////// /////////////

// CMainFrame消息处理程序

// 2. 主程序源代码

// OPENGLAct.cpp : 为应用程序定义了类的行为。

//

#include "stdafx.h"

#include "OPENGLAct.h"

#include "MainFrm.h"

#include "OPENGLActDoc.h"

#include "OPENGLActView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

//////////////////////////////////////////////////////////////// /////////////

// COPENGLActApp

BEGIN_MESSAGE_MAP(COPENGLActApp, CWinApp)

//{{AFX_MSG_MAP(COPENGLActApp)

ON_COMMAND(ID_APP_ABOUT, OnAppAbout)

// 注意,ClassWizard将添加和删除映射宏。

// 不编辑你所看到的这些生成的代码块

//}}AFX_MSG_MAP

// 基于标准的文件文档的命令

ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)

ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)

// 标准的打印设置命令

ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP()

//////////////////////////////////////////////////////////////// /////////////

// COPENGLActApp construction

COPENGLActApp::COPENGLActApp()

{

// 待办事项:建设代码添加在这里

// 把所有InitInstance的重要初始化

}

//////////////////////////////////////////////////////////////// /////////////

// 唯一的COPENGLActApp对象

COPENGLActApp theApp;

//////////////////////////////////////////////////////////////// /////////////

// COPENGLActApp initialization

BOOL COPENGLActApp::InitInstance()

{

AfxEnableControlContainer();

// 标准的初始化

// 如果你不使用这些功能,希望减少规模

// 你的最终的可执行文件,你应该从以下删除

// 你不需要特定的初始化例程。

#ifdef _AFXDLL

Enable3dControls(); // 称之为当使用MFC DLL共享

#else

Enable3dControlsStatic(); // 当链接到MFC静态调用这个

#endif

// 改变我们的注册表键设置存储。

// 待办事项:你应该修改这个字符串是合适的

// 如您的公司或组织的名称.

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

LoadStdProfileSettings(); // 加载标准INI文件选项(包括系统) // 注册应用程序的文档模板。文档模板

// 作为文件之间的连接,框架窗口和视图。

CSingleDocTemplate* pDocTemplate;

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(COPENGLActDoc),

RUNTIME_CLASS(CMainFrame), // 主要SDI框架窗口

RUNTIME_CLASS(COPENGLActView));

AddDocTemplate(pDocTemplate);

// 解析命令行标准shell命令,DDE,文件打开

CCommandLineInfo cmdInfo;

ParseCommandLine(cmdInfo);

C语言大作业报告

目录 一、设计题目 二、目标和需求分析 三、开发工具 四、应用平台 五、程序模块 1、游戏盒子 2、2048 3、扫雷 4、贪吃蛇 六、开发日志 七、程序调试及运行 八、程序开发总结 总结:虽然做出来的东西真的没什么技术水平,但是我们尽量把这个东西的每个方方面面做完整。

目标和需求分析一个小的游戏盒子,可以用来启动其它游戏,当然,其它游戏也是我们大作业的编写内容,平时可以玩玩用来打发时间 用到的工具VS2005 Easyx图形库 Pthread线程库 Hge 分工 秦贤康 组织大家,编写主程序,及构思计划,技术指导 王尧 所有的文件处理,数据算法方面优化 王懿晨 合作2048模块 杨梓晗 图片资源加工,音乐裁剪,按钮制作 程维驰 合作扫雷模块 应用平台:WINDOWS X64

程序功能模块: 一、 安装包:(写入开始菜单快捷方式,桌面快捷方式,开机启动等)//pascal 脚本编写 #define MyAppName "C 大作业" #define MyAppVersion "2.0" #define MyAppPublisher "五人小组" #define MyAppExeName "1.exe" [Setup] AppId={{49DB1DB4-FAE9-4ACB-A4B9-E5C420C5F10B} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName={pf}\{#MyAppName} DisableDirPage=yes DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes (剩余代码未全部给出) 安装包 内嵌:C 语言报告 游戏盒子 开机启动,桌面快捷方式等 进入动画,左侧动画 启动模块 通知,和显示游戏信息 2048 扫雷 贪吃蛇 主界面信息显示 通知栏信息显示 意见箱

凸轮机构大作业___西工大机械原理要点

大作业(二) 凸轮机构设计 (题号:4-A) (一)题目及原始数据···············(二)推杆运动规律及凸轮廓线方程·········(三)程序框图········· (四)计算程序·················

(五)程序计算结果及分析·············(六)凸轮机构图·················(七)心得体会··················(八)参考书··················· 一题目及原始数据 试用计算机辅助设计完成偏置直动滚子推杆盘形凸轮机构的设计 (1)推程运动规律为五次多项式运动规律,回程运动规律为余弦加速度运动规律; (2)打印出原始数据; (3)打印出理论轮廓和实际轮廓的坐标值; (4)打印出推程和回程的最大压力角,以及出现最大压力角时凸轮的相应转角;(5)打印出凸轮实际轮廓曲线的最小曲率半径,以及相应的凸轮转角; (6)打印最后所确定的凸轮的基圆半径。 表一偏置直动滚子推杆盘形凸轮机构的已知参数 题号初选的 基圆半 径 R0/mm 偏距 E/mm 滚子 半径 Rr/m m 推杆行 程 h/mm 许用压力角许用最小曲率半径 [ρamin] [α1] [α2] 4-A 15 5 10 28 30°70?0.3Rr 计算点数:N=90 q1=60; 近休止角δ1 q2=180; 推程运动角δ2 q3=90; 远休止角δ3 q4=90; 回程运动角δ4 二推杆运动规律及凸轮廓线方程推杆运动规律: (1)近休阶段:0o≤δ<60 o s=0;

ds/dδ=0; 2/δd 2 d=0; s (2)推程阶段:60o≤δ<180 o 五次多项式运动规律: Q1=Q-60; s=10*h*Q1*Q1*Q1/(q2*q2*q2)-15*h*Q1*Q1*Q1*Q1/(q2*q2*q2*q2)+6*h*Q1*Q1*Q 1*Q1*Q1/(q2*q2*q2*q2*q2); ds/dδ =30*h*Q1*Q1*QQ/(q2*q2*q2)-60*h*Q1*Q1*Q1*QQ/(q2*q2*q2*q2)+30*h*Q1*Q1*Q 1*Q1*QQ/(q2*q2*q2*q2*q2); 2/δd 2 d=60*h*Q1*QQ*QQ/(q2*q2*q2)-180*h*Q1*Q1*QQ*QQ/((q2*q2*q2*q2))+1 s 20*h*Q1*Q1*Q1*QQ*QQ/((q2*q2*q2*q2*q2)); (3)远休阶段:180o≤δ<270 o s=h=24; ds/dδ=0; 2/δd 2 d=0; s (4)回程阶段:270≤δ<360 Q2=Q-270; s=h*(1+cos(2*Q2/QQ))/2; ds/dδ=-h*sin(2*Q2/QQ); 2/δd 2 d=-2*h*cos(2*Q2/QQ); s 凸轮廓线方程: (1)理论廓线方程: s0=sqrt(r02-e2) x=(s0+s)sinδ+ecosδ y=(s0+s)cosδ-esinδ (2)实际廓线方程 先求x,y的一、二阶导数 dx=(ds/dδ-e)*sin(δ)+(s0+s)*cos(δ);

西北工业大学C语言大作业实验报告

学院*****************

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (4) 2 详细设计 (4) 2.1程序结构 (4) 2.2主要功能 (10) 2.3函数实现 (13) 2.4开发日志 (18) 3 程序调试及运行 (20) 3.1程序运行结果 (20) 3.2程序使用说明 (22) 3.3程序开发总结 (22) 4 附件(源程序) (22)

1 摘要 1.1 设计题目 折半法查找演示程序 1.2 设计内容 本程序是一个演示折半查找算法的演示程序。由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。 1.3 开发工具 Visual C++ 6.0和Win32。

1.4 应用平台 Windows 2000/XP/Vista 32位 2 详细设计 2.1 程序结构 程序功能模块: 本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。各模块的主要功能如下: 程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。 此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文) printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n"); puts("\n"); /*程序欢迎语*/ p_s(13); printf("制作者:***************** "); /*作者信息*/ p_s(4); printf("Email:************************ "); /*电子邮件*/

哈工大机械原理大作业凸轮机构第四题

Harbin Institute of Technology 机械原理大作业二 课程名称:机械原理 设计题目:凸轮机构设计 姓名:李清蔚 学号:1140810304 班级:1408103 指导教师:林琳

一.设计题目 设计直动从动件盘形凸轮机构,其原始参数见表 1 表一:凸轮机构原始参数 升程(mm ) 升程 运动 角(o) 升程 运动 规律 升程 许用 压力 角(o) 回程 运动 角(o) 回程 运动 规律 回程 许用 压力 角(o) 远休 止角 (o) 近休 止角 (o) 40 90 等加 等减 速30 50 4-5-6- 7多 项式 60 100 120

二.凸轮推杆运动规律 (1)推程运动规律(等加速等减速运动) 推程F0=90° ①位移方程如下: ②速度方程如下: ③加速度方程如下: (2)回程运动规律(4-5-6-7多项式) 回程,F0=90°,F s=100°,F0’=50°其中回程过程的位移方程,速度方程,加速度方程如下:

三.运动线图及凸轮线图 本题目采用Matlab编程,写出凸轮每一段的运动方程,运用Matlab模拟将凸轮的运动曲线以及凸轮形状表现出来。代码见报告的结尾。 1、程序流程框图 开始 输入凸轮推程回 程的运动方程 输入凸轮基圆偏 距等基本参数 输出ds,dv,da图像 输出压力角、曲率半径图像 输出凸轮的构件形状 结束

2、运动规律ds图像如下: 速度规律dv图像如下: 加速度da规律如下图:

3.凸轮的基圆半径和偏距 以ds/dfψ-s图为基础,可分别作出三条限制线(推程许用压力角的切界限D t d t,回程许用压力角的限制线D t'd t',起始点压力角许用线B0d''),以这三条线可确定最小基圆半径及所对应的偏距e,在其下方选择一合适点,即可满足压力角的限制条件。 得图如下:得最小基圆对应的坐标位置O点坐标大约为(13,-50)经计算取偏距e=13mm,r0=51.67mm.

C语言程序大作业.doc

大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统 学生姓名:罗 专业班级: 学号: 联系电话: Email : 完成日期:2015年 5 月29日

一、设计任务 我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。主要能够实现的目的主要有: 第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt。 第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。 第三.对输入错误的学生信息加以修改重新排序保存。 第四.增加学生信息,重新排序,加以保存。 第五.按每个学生的平均分进行表格化和图形化处理。 第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。 以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。 二、程序设计与实现 1.结构框图 下图描述预期实现题目的设计方案或功能设计的组成结构。绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:

2.功能模块设计及其流程图 (1) 数据描述与存储 该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及平均分保存在结构体,然后供设计各种程序调用,以完成修改,增加,排序和数据显示的功能。学生成绩数据以二进制存储在d://score.txt文件,可以利用程序随时进行增加和修改,同时它会自动排序。的描述题目所使用的核心数据,如;结构体类型定义及结构体成员含义说明。并说明所使用的数据存储方法,指定文件的路径和文件名,保存数据的格式和读数据的目的。 (2) 结构体定义及介绍 typedef struct rec /*定义一个结构体类型*/ { char name[20]; /*第一个元素为学生姓名,20个字节*/ short number; /*第一个元素为学生学号,2个字节(输入注意不要超出)*/ short score[M]; /*(M为全局3)依次定义三门科目分数:数,英,机*/ float average; /*定义浮点型平均数,保留2位小数,有函数计算赋值*/ }score; score stu[N]; /*(N为全局100)定义全局总数100个学生信息以录入*/ (3)对于该程序的一点说明 1.学号在0~32768之间,请录入前对学号做好数据处理。 2.该系统的成绩满分为一百分制,如有某科成绩不符合应提前处理。 3.录入退出后,同样的数据不需两次输入,可直接运行程序处理及查看。 4.保存退出后请勿删除文件,数据会丢失。 5.柱状图的分辨率在十位数。 (4) 主要函数功能基变量说明

西工大DSP大作业

西工大DSRt作业

实验1基于CCS的简单的定点DSF程序 一、实验要求 1、自行安装CCS3.3版本,配置和运行CCS 2、熟悉CCS开发环境,访问读写DSP勺寄存器AC0-AC3 AR0-AR7, PC, T0-T3 3、结合C5510的存储器空间分配,访问DSR的内部RAM 4、编写一个最简单的定点DSP程序,计算下面式子 y=0.1*1.2+35*20+15*1.6 5、采用定点DSP进行计算,确定每个操作数的定点表示方法,最后结果的定点表示方法,并验证结果 6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件 二、实验原理 DSP芯片的定点运算---Q格式(转)2008-09-03 15:47 DSP 芯片的 定点运算 1. 数据的溢出: 1>溢出分类:上溢(oveflow ): 下溢(underflow ) 2>溢出的结果:Max Min Min Max un sig ned char 0 255 sig ned char -128 127 un sig ned int 0 65535 signed int -32768 32767

上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。 例:signed int : 32767+1 = —32768 ; -32768-1 = 32767 unsigned char : 255+1 = 0; 0-1 = 255 3>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。当 发生溢出时,自动将结果设置为最大值或最小值。 2. 定点处理器对浮点数的处理: 1>定义变量为浮点型(float , double ),用C语言抹平定点处理器和浮点处理器 2>放大若干倍表示小数。比如要表示精度为0.01的变量,放大100倍去运算,3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小 数的精度。Q0 :小数点在第0位的后面,即我们一般采用的方法Q15 小数点在第15位的后面,0~ 14位都是小数位。转化公式:Q= (int ) (F X pow(2, q)) F =(float ) (Qx pow (2,—q)) 3. Q格式的运算 1>定点加减法:须转换成相同的Q格式才能加减 2>定点乘法:不同Q格式的数据相乘,相当于Q值相加 3>定点除法:不同Q格式的数据相除,相当于Q值相减 4>定点左移:左移相当于Q值增加 5>定点右移:右移相当于Q减少 4. Q格式的应用格式 实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。 所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两 种方法:

C语言大作业报告范文

学院XX学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (3) 2.3函数实现 (3) 2.4开发日志 (4) 3 程序调试及运行 (4) 3.1程序运行结果 (4) 3.2程序使用说明 (4) 3.3程序开发总结 (4) 4 附件(源程序) (4)

1 摘要 1.1 设计题目 (A)求最大数;(B)高次方数的尾数 1.2 设计容 (A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数1.3 开发工具 Visual C++ 6.0和Win32。 1.4 应用平台 Windows XP 32位 2 详细设计 2.1 程序结构 (A)求最大数

定义变量a、b、c,a从100至999递增,b为555555,用b除以a,判断是否可以整除,若可以,则把a的值赋给c,a自加1;若不可,a自加1。重复以上步骤,直到a>999,输出c。循环语句采用for 循环。 (B)高次方数的尾数

定义变量i、j,i从1至13递增,j初值为1。用j乘以13,用得到的乘积除以1000并取其余数,赋给j,i自加1。重复以上步骤,直到i>13,输出j。循环语句采用for循环。

2.2 主要功能 程序功能:(A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数。 原理和方法: (A)题目的原理和方法:因为要求的是三位数,就用555555从小到大依次除以100到999的所有数,并判断能否整除,最后一个可以整除555555的数即为所求。循环语句采用for循环。 (B)题目的原理和方法:乘积的最后三位数只与乘数和被乘数的后三位数有关,因此用1乘以13,再除以1000并取余数,用余数乘以13,再除以1000并取余数,依次进行下去,累乘13个13后除以1000取得的余数即为所求。循环语句采用for循环。 2.3 函数实现 (A)求最大数 int a,b=555555,c; /*定义变量,赋初值*/ for(a=100;a<=999;a++) /*FOR循环*/ { if(b%a==0) /*利用IF语句判断b是否可以被a整除*/ c=a; /*将555555的约数赋给c*/ } printf("%d\n",c); /*输出c*/ (B)高次方数的尾数 int i,j=1; /*定义变量,赋初值*/ for(i=1;i<=13;i++) /*FOR循环*/ { j=j*13%1000; /*将j乘以13的乘积的后三位数赋给j*/ } printf("%d\n",j); /*输出j*/ 2.4 开发日志 (A)选定这个题目后,我先分析此题用何种算法完成,确定了使用FOR循环并限定除数围,然后画出程序框图,再一步步编写源代码。调试过程很顺利,只有一个地方忘加了“;”。运行程序后,结果非常满意。 (B)这个题目不难,但是也不简便,我想到只取三位数的方法,并使用FOR循环,然后画出程序框图,再一步步编写源代码。调试过程发现对其中一个变量的初值是1还是13有待解决,分析程序后发现应该用1,然后进一步调试,运行,直至结果正确。

西工大DSP大作业

实验1 基于CCS的简单的定点DSP程序 一、实验要求 1、自行安装CCS3.3版本,配置和运行CCS 2、熟悉CCS开发环境,访问读写DSP的寄存器AC0-AC3,ARO-AR7, PC, T0-T3 3、结合C5510的存储器空间分配,访问DSP的内部RAM 4、编写一个最简单的定点DSP程序,计算下面式子y=0.1*1.2+35*20+15*1.6 5、采用定点DSP进行计算,确定每个操作数的定点表示方法, 最后结果的定点表示方法,并验证结果 6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件 二、实验原理 DSP芯片的定点运算---Q格式(转) 2008-09-03 15:47 DSP芯片的定点运算 1.数据的溢出: 1>溢出分类:上溢(overflow):下溢(underflow) 2>溢出的结果:Max Min Min Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int -32768 32767 上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。例:signed int :32767+1=-32768;-32768-1=32767

unsigned char:255+1=0;0-1=255 3>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。当 发生溢出时,自动将结果设置为最大值或最小值。 2.定点处理器对浮点数的处理: 1>定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器的区 2>放大若干倍表示小数。比如要表示精度为0.01的变量,放大100倍去运算,运算 3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小 数的精度。Q0:小数点在第0位的后面,即我们一般采用的方法Q15 小数点在第15位的后面,0~14位都是小数位。转化公式:Q=(int) (F×pow(2,q))F=(float)(Q×pow(2,-q)) 3.Q格式的运算 1>定点加减法:须转换成相同的Q格式才能加减 2>定点乘法:不同Q格式的数据相乘,相当于Q值相加 3>定点除法:不同Q格式的数据相除,相当于Q值相减 4>定点左移:左移相当于Q值增加 5> 定点右移:右移相当于Q减少 4.Q格式的应用格式 实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。 所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两 种方法: 1>使用时使用适中的定标,既可以表示一定的整数复位也可以表示 小数复位,如对于2812的32位系统,使用Q15格式,可表示

机械原理大作业3 凸轮结构设计

机械原理大作业(二) 作业名称:机械原理 设计题目:凸轮机构设计 院系:机电工程学院 班级: 设计者: 学号: 指导教师:丁刚陈明 设计时间: 哈尔滨工业大学机械设计

1.设计题目 如图所示直动从动件盘形凸轮机构,根据其原始参数设计该凸轮。 表一:凸轮机构原始参数 序号升程 (mm) 升程运动 角(o) 升程运动 规律 升程许用 压力角 (o) 回程运动 角(o) 回程运动 规律 回程许用 压力角 (o) 远休止角 (o) 近休止角 (o) 12 80 150 正弦加速 度30 100 正弦加速 度 60 60 50 2.凸轮推杆运动规律 (1)推杆升程运动方程 S=h[φ/Φ0-sin(2πφ/Φ0)]

V=hω1/Φ0[1-cos(2πφ/Φ0)] a=2πhω12sin(2πφ/Φ0)/Φ02 式中: h=150,Φ0=5π/6,0<=φ<=Φ0,ω1=1(为方便计算) (2)推杆回程运动方程 S=h[1-T/Φ1+sin(2πT/Φ1)/2π] V= -hω1/Φ1[1-cos(2πT/Φ1)] a= -2πhω12sin(2πT/Φ1)/Φ12 式中: h=150,Φ1=5π/9,7π/6<=φ<=31π/18,T=φ-7π/6 3.运动线图及凸轮线图 运动线图: 用Matlab编程所得源程序如下: t=0:pi/500:2*pi; w1=1;h=150; leng=length(t); for m=1:leng; if t(m)<=5*pi/6 S(m) = h*(t(m)/(5*pi/6)-sin(2*pi*t(m)/(5*pi/6))/(2*pi)); v(m)=h*w1*(1-cos(2*pi*t(m)/(5*pi/6)))/(5*pi/6); a(m)=2*h*w1*w1*sin(2*pi*t(m)/(5*pi/6))/((5*pi/6)*(5*pi/6)); % 求退程位移,速度,加速度 elseif t(m)<=7*pi/6 S(m)=h; v(m)=0; a(m)=0; % 求远休止位移,速度,加速度 elseif t(m)<=31*pi/18 T(m)=t(m)-21*pi/18; S(m)=h*(1-T(m)/(5*pi/9)+sin(2*pi*T(m)/(5*pi/9))/(2*pi)); v(m)=-h/(5*pi/9)*(1-cos(2*pi*T(m)/(5*pi/9))); a(m)=-2*pi*h/(5*pi/9)^2*sin(2*pi*T(m)/(5*pi/9)); % 求回程位移,速度,加速度

哈工大机械原理大作业凸轮

机械原理大作业二 课程名称: _______ 设计题目: 凸轮机构设计 院 系: ------------------------- 班 级: _________________________ 设计者: ________________________ 学 号: _________________________ 指导教师: ______________________ 哈尔滨工业大学 Harbin I nstituteof Techndogy

设计题目 如右图所示直动从动件盘形凸轮机构,选择一组凸轮机构的原始参数, 据此设计该凸轮机构。 凸轮机构原始参数 二.凸轮推杆升程、回程运动方程及推杆位移、速度、加速度线图 凸轮推杆升程运动方程:冷3唱—亦(中] 156 12 .. v 」1 - cos()] 兀1 5 374.4 2 12 ? a 1si n( ) 兀 1 5 % t 表示转角, s 表示位移 t=0:0.01:5*pi/6; %升程阶段 s= [(6*t)/(5*pi)- 1/(2*pi)*si n(12*t/5)]*130; hold on plot(t,s);

t= 5*pi/6:0.01:pi; %远休止阶段 s=130; hold on plot(t,s); t=pi:0.01:14*pi/9; %回程阶段 s=65*[1+cos(9*(t-pi)/5)]; hold on plot(t,s); t=14*pi/9:0.01:2*pi; %近休止阶段 s=0; hold on plot(t,s); grid on % t表示转角,令3 1=1 t=0:0.01:5*pi/6; %升程阶段v=156*1*[1-cos(12*t/5)]/pi hold on plot(t,v); t= 5*pi/6:0.01:pi; %远休止阶段

C语言大作业(图书管理)

c语言图书管理系统 主要功能: 1. 新进图书基本信息的输入。 2. 显示全部记录 3. 按图书名称查询图书基本信息。 4. 根据图书名称对撤消的图书信息进行删除。 5. 按图书名称从小到大排序。 6. 统计某价格以上的图书数量。 7. 列出所有未借出去的图书信息。 基本信息:图书编号、图书名称、单价、作者、存在状态、借书人姓名、性别、学号等 #include #include #include #include typedef int BOOL; typedef struct bookinfo { char number[15];/*产品编号*/ char name[30];/*产品名称*/ float price;/*单价*/ char auther[20];/*作者*/ BOOL isExit;/*存在状态*/ char lendername[20];/*借书人姓名*/ char lendersex[2];/*借书人性别*/ char lendernum[15];/*借书人学号*/ }BOOKINFO; void menu() { printf("\n\n\n\n\n\n\n"); printf("\t\t\t图书管理系统\n"); printf("\t\t\t1:新进图书基本信息的输入\n"); printf("\t\t\t2:显示全部记录\n");

printf("\t\t\t3:根据图书名称查询图书基本信息\n"); printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n"); printf("\t\t\t5:按照图书名称从小大到排序\n"); printf("\t\t\t6:统计某价格以上的图书数量\n"); printf("\t\t\t7:列出所有未借出去的图书信息\n"); printf("\t\t\t8:退出\n"); } void choice_1_input_new()/*输入新进的图书信息*/ { char choice; FILE *p; BOOKINFO newbook; system("cls"); while(1) { printf("输入图书编号:"); gets(newbook.number); printf("输入图书名称:"); gets(https://www.doczj.com/doc/9910176203.html,); printf("输入图书单价:"); scanf("%f",&newbook.price); while(getchar()!='\n'); printf("输入图书的作者:"); gets(newbook.auther); printf("输入借书人姓名:"); gets(newbook.lendername); printf("输入借书人性别:"); gets(newbook.lendersex); printf("输入借书人学号:"); gets(newbook.lendernum);

哈工大机械原理大作业

H a r b i n I n s t i t u t e o f T e c h n o l o g y 大作业设计说明书 课程名称:机械原理 设计题目:凸轮机构 院系:机电学院 班级: 姓名: 学号: 指导教师:丁刚 设计时间: 哈尔滨工业大学 1.设计题目 2.运动方程式及运动线图 由题目要求凸轮逆时针旋转 (1)确定凸轮机构推杆升程、回程运动方程,并绘制推杆位移、速度、加速度线图。升程第一段:(0 <φ< pi /4)φ0=pi/2; s1 = 73*φ^2; v1=146*w*φ; a1 = 146*w^2;

升程第二段:(pi/4 <φ< pi /2) s2 =90-73*(pi/2-φ)^2; v2=146*w*( pi/2-φ); a2 =-146*w.^2; 远休止程:(pi/2 <φ< 10*pi/9) s3 = 90; v3 = 0; a3 = 0; 回程:(10*pi/9)< φ< ( 14*pi/9) s4 =45*(1+cos(9/4*(φ-10*pi/9))); v4 =*w*sin(9/4*(φ-10*pi/9)) ; a4 =*w^2* cos(9/4*(φ-10*pi/9)); 近休止程:(14*pi/9)< φ < ( 2*pi); s5 =0; v5 =0; a5 =0; 1.由上述公式通过编程得到位移、速度、加速度曲线如下:(编程见附录). 2. 凸轮机构的线图及基圆半径和偏距的确定 凸轮机构的线图如下图所示(代码详见附录): 因为凸轮逆时针旋转,,所以滚子从动件右偏,但由于绘图原因,采用向左为正方向,由此 确定凸轮基圆半径与偏距: 基圆半径为r0 = (50^2+100^2)=112mm,偏距e = 50mm。 3.凸轮实际轮廓,理论轮廓,基圆,偏距圆绘制

C语言大作业

学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (10) 2.3函数实现 (10) 2.4开发日志 (17) 3 程序调试及运行 (18) 3.1程序运行结果 (18) 3.2程序使用说明 (19) 3.3程序开发总结 (20) 4 附件(源程序) (20)

1 摘要 1.1 设计题目 A题算法型:折半查找算法演示程序 B题空间桁架结构节点位移求解 1.2 设计内容 A题: 本程序是一个演示折半查找算法的演示程序。当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。 B题: 空间桁架结构节点位移求解 1.3 开发工具 Code Blocks 12.11(内置MinGW) 1.4 应用平台 Windows 7 64位 2 详细设计 2.1 程序结构 A题: 程序功能模块: 本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序

退出模块。 工程文件结构: 本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。 六大模块说明: (1) 程序说明模块: 给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)

哈工大机械原理大作业24题

班级 1013102 学号 6 机械原理大作业说明书 题目 1、连杆机构运动分析 2、凸轮机构设计 3、齿轮传动设计 学生姓名

1连杆机构运动分析1.设计题目:

一、先建立如下坐标系: 二、划分杆组如下,进行结构分析: 该机构由I级杆组RR(如图1)、II级杆组RPR(如图2、3)和II级杆组RRP(如图4)组成。 (1)(2) (3)(4)

三、运动分析数学模型: (1)同一构件上点的运动分析: 如右图所示的原动件1,已知杆1的角速度=10/rad s ω,杆长1l =170mm,A y =0,A x =110mm 。可求得下图中B 点的位置B x 、B y ,速度xB v 、yB v ,加速度xB a 、yB a 。 θcos 1l xB =,θsin 1l yB = θωυsin 1l xB -=,θωυcos 1l yB =, 222B 2==-cos =-B xB i d x a l x dt ω?ω 222 2 ==-sin =-B yB i B d y a l y dt ω?ω。 (2)RPRII 级杆组的运动分析: a. 如右图所示是由2个回转副和1个移 动副组成的II 级组。已知两个外运动副C 、B 的位置(B x 、B y 、c x =110mm 、C y =0)、速度(xB υ,yB υ, xC υ=0, yC υ=0)和加速度 (0,0,,==yC xC yB xB a a a a )。可确定下图中D 点的位置、速度和加速度。确定构件3的角位移1?、角速度1ω、角加速度1α。 1sin 31..??l x dt dx C B -= 1sin 131cos 13.....2????l l x dt x d C B --= 1cos 31..??l y dt dy C B += 1cos 131sin 13.....2????l l y dt y d C B +-= 根据关系:1111d 122..11. α??ω??====dt d dt , 故可得出: D x =)1cos( 4β?++l x C

哈工大机械原理大作业

连杆的运动的分析 一.连杆运动分析题目 图1-13 连杆机构简图 二.机构的结构分析及基本杆组划分 1.。结构分析与自由度计算 机构各构件都在同一平面内活动,活动构件数n=5, PL=7,分布在A、B、C、E、F。没有高副,则机构的自由度为 F=3n-2PL-PH=3*5-2*7-0=1 2.基本杆组划分 图1-13中1为原动件,先移除,之后按拆杆组法进行拆分,即可得到由杆3和滑块2组成的RPR II级杆组,杆4和滑块5组成的RRP II级杆组。机构分解图如下:

图二 图一 图三 三.各基本杆组的运动分析数学模型 图一为一级杆组, ? c o s l A B x B =, ? sin lAB y B = 图二为RPR II 杆组, C B C B j j B E j B E y y B x x A A B S l C E y x S l C E x x -=-==-+=-+=0000 )/a r c t a n (s i n )(c o s )(?? ? 由此可求得E 点坐标,进而求得F 点坐标。 图三为RRP II 级杆组, B i i E F i E F y H H A l E F A l E F y y l E F x x --==+=+=111)/a r c s i n (s i n c o s ??? 对其求一阶导数为速度,求二阶导数为加速度。

lAB=108; lCE=620; lEF=300; H1=350; H=635; syms t; fai=(255*pi/30)*t; xB=lAB*cos(fai); yB=lAB*sin(fai); xC=0; yC=-350; A0=xB-xC; B0=yB-yC; S=sqrt(A0.^2+B0.^2); zj=atan(B0/A0); xE=xB+(lCE-S)*cos(zj); yE=yB+(lCE-S)*sin(zj); a=0:0.0001:20/255; Xe=subs(xE,t,a); Ye=subs(yE,t,a); A1=H-H1-yB; zi=asin(A1/lEF); xF=xE+lEF*cos(zi); vF=diff(xF,t); aF=diff(xF,t,2); m=0:0.001:120/255; xF=subs(xF,t,m); vF=subs(vF,t,m); aF=subs(aF,t,m); plot(m,xF) title('位移随时间变化图像') xlabel('t(s)'),ylabel(' x') lAB=108; lCE=620; lEF=300; H1=350; H=635; syms t; fai=(255*pi/30)*t; xB=lAB*cos(fai); yB=lAB*sin(fai); xC=0;

西北工业大学 程序设计大作业

学院××××学院班级××××××××学号××××××××姓名×××

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (4) 2.3函数实现 (5) 2.4开发日志 (7) 3 程序调试及运行 (7) 3.1程序运行结果 (7) 3.2程序使用说明 (12) 3.3程序开发总结 (12) 4 附件(源程序) (12)

1 摘要 1.1 设计题目 算法型大作业题目:编写七种排序算法的演示程序。 1.2 设计内容 编写快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序函数,通过主函数调用以实现七种排序算法的演示。 1.3 开发工具 Visual C++ 6.0 1.4 应用平台 Windows 2000/XP/Vista 32位 2 详细设计 2.1 程序结构 程序的整体结构与流程见下图所示。 程序运行时在主菜单中输入序号选择排序方法或选择结束程序,当进行某种排序方法后,在主函数中输入待排数据个数和待排数据,通过调用对应的排序函数实现排序并输出。该排序结束后再次进入主函数,通过循环重复上述操作。其中,主函数中将数组地址和待排序数据个数传递给排序函数,在排序函数中实现排序功能。

2.2 主要功能 函数的功能为对快速排序、插入排序、选择排序、冒泡排序、堆排序、归并排序、基数排序算法的演示。 主函数:程序运行时,可使运行者根据提醒输入相关操作,从而进入不同的排序方法或者退出。 快速排序函数:根据快速排序的算法,最后输出 插入排序函数:根据插入排序的算法,最后输出 选择排序函数:根据选择排序的算法,最后输出 冒泡排序函数:根据冒泡排序的算法,最后输出 堆排序函数:根据堆排序的算法,最后输出 归并排序函数:根据归并排序的算法,最后输出 基数排序函数:根据基数排序的算法,最后输出

西工大C语言程序作业

第2季:循环第1题 1.完全数 #include int main() {int m,i,j,s;

for(m=6;m<1000;m++) {s=1; for(i=2;i

2.迭代求根 #include #include int main() { float x0,x1,a; scanf("%f",&a); x1=a/2; do { x0=x1;x1=(x0+a/x0)/2; } while(fabs(x0-x1)>=0.00001); printf("%.5f\n",x1); return 0; } 第3题

Time 1000MS Limit 10000KB Memory Limit Descripti 请编写程序,用二分法求下面方程在(-10,10)之间的根:on Input输入区间数据为实型、用空格隔开输出均。 Output输出根为实型,保留两位小数。 -10 10 Sample Input Sample 2.00 Output 3.二分求根 #include #include int main() { float x0,x1,x2,f0,f1,f2; printf("请输入x1,x2的值:"); scanf("%f%f",&x1,&x2); f1=2*x1*x1*x1-4*x1*x1+3*x1-6; f2=2*x2*x2*x2-4*x2*x2+3*x2-6; do

哈工大机械原理大作业三上传版

哈尔滨工业大学 机械原理大作业三 齿轮传动系统设计说明书 题目:(3) 课程名称:机械原理 学院:外国语学院 姓名:XX 班号:XXX 学号:XXX

一:设计题目 二:传动比的分配计算 根据传动系统的原始参数可知,传动系统的总传动比为: 667.9615 14501 3===n n i 048.692114502 2===n n i 769.552614503 1===n n i 传动系统的总传动比由带传动、滑移齿轮传动和定轴齿轮传动三部分实现。设带传动的传动比为5.2max =p i ,滑移齿轮的传动比为321,v v v i i i 和,定轴齿轮传动的传动比为f i ,则总传动比: f v p i i i i 1max 1 = f v p i i i i 2max 2 = f v p i i i i 3max 3= 令: 4max 3 ==v v i i 则可得定轴齿轮传动部分的传动比: 677.94 5.2677 .96max max 3=×== v p f i i i i 滑移齿轮传动的传动比: 305.2677 .95.2769.55max 11 =×==f p v i i i i

854.2677 .95.2048 .69max 22 =×= = f p v i i i i 定轴齿轮传动由3对齿轮传动组成,则每对齿轮的传动比为 4≤131.2677.9max 33====d f d i i i 三:齿轮齿数的确定 根据滑移齿轮变速传动系统中对齿轮齿数的要求,可大致选择齿轮5、6、7和8为角度变位齿轮,其齿数分别为:22,51,19,54它们的齿顶高系数为1径向间隙系数 25.0*=c ,齿轮9与10齿顶高系数为0.8,C=0.3,采用短齿。分度圆压力角α=20°, 实际中心距75' =a 。 根据定轴齿轮变速传动系统中对齿轮齿数的要求,可大致选择齿轮11、12、13和14为角度变位齿轮,其齿数:42,20,42,2014 131211 ====z z z z 。它们的齿顶高系数* a h =1, 径向间隙系数* c =0.25,分度圆压力角α=20°,实际中心距93' =a mm 。圆锤齿轮15和16 选择为标准齿轮42,202515 ==z z ,齿顶高系数 * a h =1,径向间隙系数* c =0.2,分度圆压力 角α=20°(等于啮合角' α)。 四:滑移齿轮变速传动中每对齿轮几何尺寸及重合度的计算 表1 滑移齿轮5、6参数 序号 项目 代号 计算公式及计算结果 1 齿数 齿轮5 Z 5 22 齿轮6 Z 6 51 2 模数 m 2 3 压力角 α 200 4 齿顶高系数 *a h 1

相关主题
文本预览
相关文档 最新文档