燕山大学课程设计说明书

燕山大学课程设计说明书
燕山大学课程设计说明书

燕山大学课程设计说明书

课程设计名称:操作系统

题目:多道程序缓冲区协调操作

班级:11级计算机应用1班

开发小组名称:多道程序缓冲区协调操作的程序设计课题负责人:吴楠

课题组成员:姓名吴楠学号 110104010058

班级应用1班自评成绩

姓名王乐学号 110104010045

班级应用1班自评成绩

课题开发日期:2014.1.10

1 概述

1.1 课程设计目的

通过编写一个生产者消费者的实例,了解多线程的创建,运行原理,通过信号量机制的运用了解各线程间的协调工作机制;通过实现界面编程,了解MFC 编程思想。

1.2 主要完成的任务

如下图所示,有多个PUT 操作要不断循环地向Buffer1送字符数据,有Move1操作不断地将Buffer1的数据取到Buffer2,Move2操作不断地将Buffer1的数据取到Buffer3,有多个GET 操作要不断地从Buffer2和Buffer3中取数据。PUT 、 MOVE 、 GET 每次操作一个数据,为了在操作的过程中要保证数据不丢失, 每个Buffer 每次只能接受一个PUT 或一个Move 或一个Get 。运用进程同步和互斥机制设计一个多道程序完成上述操作。

图1 Buffer 操作

(1) 可以随机产生字符数据,由put 操作放入Buff1,buffer 中容量单位是字符。 (2)提供良好图形界面,显示Buffer 的操作过程。

(3) 可以设定各Buffer 的容量、PUT 、GET 、Move 操作的个数; (4) 可以设定PUT 、GET 、Move 操作的速度;

(5) 实时显示每个Buffer 中数据的个数和数据的内容,空闲Buffer 的空间的个数; (6) 实时显示线程、进程所处于等待(阻塞)状态的个数 (7)程序运行结束,显示汇总数据:

总的运行时间; Buffer 中数据的个数; 已放入BUFFER 的数据个数; 已取出的数据个数;

平均每个buffer 中的数据个数。

Put

Move2

Buff1

Buff2

Buff3

Get

Move1 Get

1.3 课程设计使用的开发语言和工具

语言:C++

开发环境:Visual Studio 2008及其开发环境下的MFC平台。

1.4 解决的主要问题

(1)MFC界面设计

(2)模拟生产者消费者的互斥操作

(3)各信号量的使用

2 使用的基本概念和原理

2.1 MFC

MFC是Windows下程序设计的最流行的一个类库,它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。

2.2 MFC的消息实现机制

在MFC的框架结构下,可以进行消息处理的类的头文件里面都会含有DECLARE_MESSAGE_MAP()宏,这里主要进行消息映射和消息处理函数的声明。

所有能够进行消息处理的类都是基于CCmdTarget类的,也就是说CCmdTarget类是所有可以进行消息处理类的父类。CCmdTarget类是MFC处理命令消息的基础和核心。

2.3 线程

线程是程序独立运行的基本单位,一个程序通过执行多个线程可以提高机器本身资源的利用率,同时也可以完成多任务并行运行的操作。

2.4 信号量

信号量是一个在一定范围内变化的整形数据,用来表示一种临界资源,线程通过信号量的值来确定自己的状态是执行还是挂起,各线程间也是通过信号量机制来协调运行顺序一起完成任务。

3 总体设计

3.1基本的技术路线

确定基本技术路线为面向对象程序设计,使用MFC编写程序,建立基本对话框。

在对话框中设立生产者、MOVE、消费者板块,各板块内的按钮能控制各自线程的建立、暂停以及相关数据的设定。

3.2软件的总体结构

图2 总体结构

3.3模块关系

主要分为显示模块、数据模块和线程模块。模块之间的关系显示模块显示的数据模块的内容,而数据模块又影响线程模块,三个模块互相影响,并根据各自的变化,实时显示并协调工作。

3.4总体流程

通过创建生产者线程往BUFFER1中投放随机产生的字符,创建MOVE1线程和MOVE2线程将BUFFER1中的字符移动到BUFFER2和BUFFER3中,创建消费者线程从BUFFER2和BUFFER3中取出字符消费。

建立信号量,因为生产者线程和MOVE1、MOVE2线程共同使用临界资源BUFFER1,所以用Mutex1信号量来协调生产者线程和MOVE1和MOVE2线程;因为MOVE1线程和MOVE2线程共同使用临界资源BUFFER1,因为MOVE1线程和消费者线程GET1共同使用临界资源BUFFER2,MOVE2线程和消费者线程GET2共同使用临界资源BUFFER2,所以用Mutex23信号量来协调MOVE1线程和消费者线程GET1,用Mutex3信号量来协调MOVE2线程和消费者线程GET2。

4 详细设计

4.1r ThreadInfo结构体

typedef stuct ThreadInfo{

CListBox *pList;

}thread,*lpthread;

此结构体用来保存在线程建立时往线程中传送的参数信息(如该线程指定的操作控件),以供在本线程中使用。

4.2 线程操作函数

4.2.1 执行函数的声明

//声明PUT线程。

DWORD WINAPI ThreadPut(LPVOID lpParameter);

//声明MOVE1线程。

DWORD WINAPI ThreadMove1(LPVOID lpParameter);

//声明MOVE2线程。

DWORD WINAPI ThreadMove2(LPVOID lpParameter);

//声明GET线程,主要区别是能分别输出该消费的字符是哪个消费者消费的。DWORD WINAPI ThreadGet(LPVOID lpParameter);

4.2.2 各信号量的定义

Mutex = CreateMutex(NULL,false,NULL);

Mutex1 = CreateMutex(NULL,false,NULL);

Mutex2 = CreateMutex(NULL,false,NULL);

SemaphoreEmpty1=CreateSemaphore(NULL,m_buffer1,m_buffer1,NULL);

SemaphoreFULL1=CreateSemaphore(NULL,0,m_buffer1,NULL);

SemaphoreEmpty2=CreateSemaphore(NULL,m_buffer2,m_buffer2,NULL);

SemaphoreFULL2=CreateSemaphore(NULL,0,m_buffer2,NULL);

SemaphoreEmpty3=CreateSemaphore(NULL,m_buffer3,m_buffer3,NULL);

SemaphoreFULL3=CreateSemaphore(NULL,0,m_buffer3,NULL);

4.2.3各线程的函数接口的定义及算法描述

PUT线程函数接口:

DWORD WINAPI ThreadPut(LPVOID lpParameter)//put线程的入口函数

{

while(toend)

{

Sleep(speed1);

CString str;

str= rand()%128; //生成随机字符

WaitForSingleObject(SemaphoreEmpty1,INFINITE);//申请空间实现P(Empty1)

WaitForSingleObject(mutex1,INFINITE); //申请互斥信号

m_list1->InsertString(-1,str);

b1++;

buffernum1++;

CString s,s1,buff;

s.Format("%d",b1);

s1.Format("%d",buffer1-b1);//剩余的容量

full1_static->SetWindowText(s);

empty1_static->SetWindowText(s1);

ReleaseMutex(mutex1); //释放信号

ReleaseSemaphore(SemaphoreFULL1,1,NULL); //实现V(FULL1)

buff.Format("%s%d","已放入BUFFER的数据个数:",buffernum1);

product_static->SetWindowText(buff);

buffere1_progress->SetPos((m_list1->GetCount())*100/buffer1);

}

return 1;

}

MOVE1线程函数接口:

DWORD WINAPI ThreadMove1(LPVOID lpParameter) //move1线程函数{

while(toend)

{

Sleep(speed2);

CString str;

WaitForSingleObject(SemaphoreFULL1,INFINITE);

WaitForSingleObject(SemaphoreEmpty2,INFINITE);

WaitForSingleObject(mutex2,INFINITE);

WaitForSingleObject(mutex1,INFINITE);

m_list1->GetText(0,str);

m_list1->DeleteString(0);

b1--;

CString s,s1;

s.Format("%d",b1);

s1.Format("%d",buffer1-b1);

full1_static->SetWindowText(s);

empty1_static->SetWindowText(s1);

m_list2->InsertString(-1,str);

b2++;

CString s2,s3;

s2.Format("%d",b2);

s3.Format("%d",buffer2-b2);

full2_static->SetWindowText(s2);

empty2_static->SetWindowText(s3);

ReleaseMutex(mutex1);

ReleaseSemaphore(SemaphoreEmpty1,1,NULL);

ReleaseMutex(mutex2);

ReleaseSemaphore(SemaphoreFULL2,1,NULL);

buffere1_progress->SetPos((m_list1->GetCount())*100/buffer1);

buffere2_progress->SetPos((m_list2->GetCount())*100/buffer2);

}

return 1;

}

MOVE2线程函数接口:

DWORD WINAPI ThreadMove2(LPVOID lpParameter)//move2线程函数{

while(toend)

{

Sleep(speed3);

CString str;

WaitForSingleObject(SemaphoreEmpty3,INFINITE);

WaitForSingleObject(SemaphoreFULL1,INFINITE);

WaitForSingleObject(mutex3,INFINITE);

WaitForSingleObject(mutex1,INFINITE);

m_list1->GetText(0,str);

m_list1->DeleteString(0);

b1--;

CString s1,s3;

s1.Format("%d",b1);

s3.Format("%d",(buffer1-b1));

full1_static->SetWindowText(s1);

empty1_static->SetWindowText(s3);

m_list3->InsertString(-1,str);

b3++;

CString s4,s5;

s4.Format("%d",b3);

s5.Format("%d",(buffer3-b3));

full3_static->SetWindowText(s4);

empty3_static->SetWindowText(s5);

ReleaseMutex(mutex1);

ReleaseMutex(mutex3);

ReleaseSemaphore(SemaphoreEmpty1,1,NULL);

ReleaseSemaphore(SemaphoreFULL3,1,NULL);

buffere1_progress->SetPos((m_list1->GetCount())*100/buffer1);

buffere3_progress->SetPos((m_list3->GetCount())*100/buffer3);

}

return 1;

}

GET线程函数的接口:

DWORD WINAPI ThreadGet(LPVOID lpParameter)//get2线程

{

while(toend)

{

Sleep(speed4);

CString str;

WaitForSingleObject(SemaphoreFULL3,INFINITE);

WaitForSingleObject(mutex3,INFINITE);

m_list3->DeleteString(0);

b3--;

buffernum2++;

CString s4,s5,buff1;

s4.Format("%d",b3);

s5.Format("%d",buffer3-b3);

full3_static->SetWindowText(s4);

empty3_static->SetWindowText(s5);

buff1.Format("%s%d","已放已取的数据个数:",buffernum2);

consumer_static->SetWindowText(buff1);

ReleaseMutex(mutex3);

ReleaseSemaphore(SemaphoreEmpty3,1,NULL);

finish=clock();

m_time=((int)(finish-start));

CString str2;

str2.Format("%s%d%s","总生产累计用时为:",m_time,"毫秒");

time_static->SetWindowText(str2);

buffere3_progress->SetPos((m_list3->GetCount())*100/buffer3);

}

return 1;

}

5 编码设计

5.1 开发环境的设置和建立

如图所示选择MFC 应用程序,输入项目名称后单击“确定”。

图1 新建项目

再选择“基于对话框”,之后单击“完成”建立项目。如图2:

图2 MFC程序向导

开发环境建立完毕。

5.2程序设计时要注意的事项

申请信号时P、V原语的顺序。

例如:创建move1线程时,首先要先申请buffer2的空区,buffer1的数据,再进行申请互斥信号mutex1、mutex2,否则将产生不可预知的结果。

代码如下:

WaitForSingleObject(SemaphoreFULL1,INFINITE);

WaitForSingleObject(SemaphoreEmpty2,INFINITE);

WaitForSingleObject(mutex2,INFINITE);

WaitForSingleObject(mutex1,INFINITE);

5.3关键控件的特点和使用

控件MFC类描述

按钮CButton 用来产生某种行为的按钮,以及复选

框、单选钮和组框

编辑框CEdit 用于键入文本

列表CListCtrl 显示文本及其图标列表的窗口

列表框CListBox 包括一系列字符串的列表

静态文本CStatic 常用于为其它控件提供标签

表一关键控件名称、作用

5.4主要程序的代码设计及注释

5.4.1开始执行按钮相关代码

void COs1Dlg::Onbegin() //开始执行

{

// TODO: Add your control notification handler code here

//UpdateData(1);

m_list1=(CListBox *)GetDlgItem(IDC_LIST1);

m_list2=(CListBox *)GetDlgItem(IDC_LIST2);

m_list3=(CListBox *)GetDlgItem(IDC_LIST3);

//信号初始化

SemaphoreEmpty1=CreateSemaphore(NULL,m_buffer1,m_buffer1,NULL);

SemaphoreFULL1=CreateSemaphore(NULL,0,m_buffer1,NULL);

mutex1 = CreateMutex(NULL,false,NULL);

SemaphoreEmpty2=CreateSemaphore(NULL,m_buffer2,m_buffer2,NULL); SemaphoreFULL2=CreateSemaphore(NULL,0,m_buffer2,NULL);

mutex2 = CreateMutex(NULL,false,NULL);

SemaphoreEmpty3=CreateSemaphore(NULL,m_buffer3,m_buffer3,NULL); SemaphoreFULL3=CreateSemaphore(NULL,0,m_buffer3,NULL);

mutex3 = CreateMutex(NULL,false,NULL);

int j =put;

toend=1;

clock_t pp;

pp=clock();

start=pp;

while(j!=0)//创建put类线程

{

Threadp[j-1]=CreateThread(NULL,0,ThreadPut,NULL,0,&ThreadP[j-1]);

j--;

}

int i = move1;

while(i!=0)//创建move1类线程

{

Threadm1[i-1]=CreateThread(NULL,0,ThreadMove1,NULL,0,&ThreadM1[i-1]);

i--;

}

int k= move2;

while(k!=0)//创建move2类线程

{

Threadm2[k-1]=CreateThread(NULL,0,ThreadMove2,NULL,0,&ThreadM2[k-1]);

k--;

}

int t= get;

while(t!=0)//创建move1类线程

{

Threadg[t-1]=CreateThread(NULL,0,ThreadGet,NULL,0,&ThreadG[t-1]);

t--;

}

m_begin.EnableWindow(false);//对各个按钮可操作不开操作的控制

m_stop.EnableWindow(true);

m_suspend.EnableWindow(true);

m_continue.EnableWindow(true);

}

5.4.2put线程相关代码

DWORD WINAPI ThreadPut(LPVOID lpParameter)//put线程

{

while(toend)

{

Sleep(speed1);

CString str;

str= rand()%128; //生成随机字符

WaitForSingleObject(SemaphoreEmpty1,INFINITE);//申请空间

WaitForSingleObject(mutex1,INFINITE); //申请互斥信号

m_list1->InsertString(-1,str);

b1++;

buffernum1++;

CString s,s1,buff;

s.Format("%d",b1);

s1.Format("%d",buffer1-b1);

full1_static->SetWindowText(s);

empty1_static->SetWindowText(s1);

ReleaseMutex(mutex1); //释放信号

ReleaseSemaphore(SemaphoreFULL1,1,NULL);

buff.Format("%s%d","已放入BUFFER的数据个数:",buffernum1);

product_static->SetWindowText(buff);

}

return 1;

}

5.4.3 move1线程相关代码

DWORD WINAPI Threadmove1(LPVOID lpParameter)//move1线程

{

int n=move1num;

move1num++;

CString str,str2,str1;

while(toend)

{

Sleep(move1speed);

WaitForSingleObject(SemaphoreFULL1,INFINITE);

WaitForSingleObject(SemaphoreEmpty2,INFINITE);

WaitForSingleObject(hMutex1,INFINITE);

WaitForSingleObject(hMutex2,INFINITE);

str2.Format("%s%d%s","数据个数:",list1->GetCount(),"个"); //动态显示数据个数、空区个数

buf1data_num->SetWindowText(str2);

str1.Format("%s%d%s"," 空区个数:",buffer1-list1->GetCount(),"个");

buf1emp_num->SetWindowText(str1);

list1->GetText(0,str);

list2->AddString(str);

list1->DeleteString(0);

str2.Format("%s%d%s","数据个数:",list2->GetCount(),"个");

buf2data_num->SetWindowText(str2);

str2.Format("%s%d%s"," 空区个数:",buffer2-list2->GetCount(),"个");

buf2emp_num->SetWindowText(str2);

ReleaseMutex(hMutex1);

ReleaseMutex(hMutex2);

ReleaseSemaphore(SemaphoreEmpty1,1,NULL);

ReleaseSemaphore(SemaphoreFULL2,1,NULL);

if(ifend==1)

{

ifend=0;

return 1;

}

}

return 1;

}

5.4.4 move2线程相关代码

DWORD WINAPI Threadmove2(LPVOID lpParameter)//move2线程

{

int p=move2num;

move2num++;

while(toend)

{

Sleep(move2speed);

CString str,str2;

WaitForSingleObject(SemaphoreFULL2,INFINITE);

WaitForSingleObject(SemaphoreEmpty3,INFINITE);

WaitForSingleObject(hMutex2,INFINITE);

WaitForSingleObject(hMutex3,INFINITE);

list2->GetText(0,str);

list3->AddString(str);

list2->DeleteString(0);

str2.Format("%s%d%s","数据个数:",list2->GetCount(),"个");//动态显示空区个数,数据个数

buf2data_num->SetWindowText(str2);

str2.Format("%s%d%s"," 空区个数:",buffer2-list2->GetCount(),"个");

buf2emp_num->SetWindowText(str2);

str2.Format("%s%d%s","数据个数:",list3->GetCount(),"个");

buf3data_num->SetWindowText(str2);

str2.Format("%s%d%s"," 空区个数:",buffer3-list3->GetCount(),"个");

buf3emp_num->SetWindowText(str2);

ReleaseMutex(hMutex2);

ReleaseMutex(hMutex3);

ReleaseSemaphore(SemaphoreEmpty2,1,NULL);

ReleaseSemaphore(SemaphoreFULL3,1,NULL);

if(ifend==1)

{

ifend=0;

return 1;

}

}

return 1;

}

5.4.5get线程相关代码

DWORD WINAPI Threadget(LPVOID lpParameter)//get线程

{

int m=getnum;

getnum++;

while(toend)

{ CString str2;

Sleep(getspeed);

WaitForSingleObject(SemaphoreFULL3,INFINITE);//申请需要的信号

WaitForSingleObject(hMutex2,INFINITE);

WaitForSingleObject(hMutex3,INFINITE);

list3->DeleteString(0);

str2.Format("%s%d%s","数据个数:",list3->GetCount(),"个");//动态显示个数

buf3data_num->SetWindowText(str2);

str2.Format("%s%d%s"," 空区个数:",buffer3-list3->GetCount(),"个");

buf3emp_num->SetWindowText(str2);

ReleaseMutex(hMutex2); //释放相关信号

ReleaseMutex(hMutex3);

ReleaseSemaphore(SemaphoreEmpty3,1,NULL);

}

return 1;

}

5.5解决的技术难点、经常犯的错误

因为四类线程类似,拥有类似代码,所以当重复时有点变量未改角标,导致用到的变量未声明的错误。

6. 测试时出现过的问题及其解决方法

6.1.问题1

开始按钮开始运行,但是暂停按钮出现问题,停不下开。

解决方法:将进程挂起,利用函数SuspendThread();将相应的线程挂起,增设一个继续按钮,利用函数ResumeThread();继续运行。

6.2.问题2

停止按钮只能停止第一个缓冲的put操作,不能全部停止。

解决方法:利用循环函数将各线程终止

for(;i!=0;i--)

{

DWORD j;

GetExitCodeThread(Threadp[i-1],&j);

::TerminateThread(Threadp[i-1],j);

CloseHandle(Threadp[i-1]);

}

7 软件使用说明

软件界面如图3

图3

7.1 基本功能

可以自己调节BFUUER容量,以及各线程的运行速度,可以控制运行线程的数量,可以随时控制各线程的启动和暂停,在所有线程运行结束后能在汇总数据输出栏输出本次操作的汇总情况。

7.2 需要运行的环境

Windows 7/xp运行环境以及最新的动态链接库。

7.3 操作

单在启动线程前可以设置BUFFER容量,以及各线程的运行速度,点击启动线程按钮后可以选择哪个线程启动,哪个线程暂停,点击结束线程按钮可结束所有可运行的线程,点击

清空按钮可清空所有输出栏中的数据。

8 总结

8.1 课程设计完成情况

8.1.1 已实现部分

(1) 可以随机产生字符数据,由put操作放入Buff1,buffer中容量单位是字符。

(2)提供良好图形界面,显示Buffer的操作过程。

(3) 可以设定各Buffer的容量、PUT、GET、Move操作的个数;

(4) 可以设定PUT、GET、Move操作的速度;

(5) 实时显示每个Buffer中数据的个数和数据的内容,空闲Buffer的空间的个数;

(6)程序运行结束,显示汇总数据:

总的运行时间;

Buffer中数据的个数;

已放入BUFFER的数据个数;

已放已取的数据个数;

平均每个buffer中的数据个数。

8.1.2 未能实现部分

实时显示线程、进程所处于等待(阻塞)状态的个数。

8.2 小组成员分工和成绩自我评定

王乐:能够完成程序代码,分析程序的要求,找到解决的方法,以及能够在网上找到所需要的信息,能够检查运行错误,通过多次检查代码解决错误。自我评定:A

吴楠:能够完成页面设计,遇到问题查找资料寻求解决办法,对程序提出自己的建议,完成一些代码工作。自我评定:B

8.3 课程设计收获

通过我们小组成员的不懈努力,我们最终取得了一定的成果,算是对这次课程设计有了一个交代。在这次课程设计中,我们学到了许多之前没有接触的到的知识,但是我们通过查阅相关书籍,上网搜索资料,找学长以及有过相关学习经历的同学的请教,终于把这些知识弄得明白并应用到程序的设计的当中。同时通过编写本程序我们对线程的互斥操作过程有

了深刻的理解,同时自己的编码能力得到了锻炼,有了充足的信心面对今后编程过程中遇到的一切困难。

9 参考文献

[1] 陈维新.C++面向对象程序设计教程(第三版).北京.清华大学出版社.2005

[2] 汤小丹等.计算机操作系统(第三版).西安.西安电子科技大学出版社.2007

[3] 百度百科

[4] CSDN网站以及博文

单片机课程设计题目

《单片机原理与应用》课程设计题目 1.基于单片机的电子秒表 本设计以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,两个按键,三位数码管显示,打开电源开关后显示8,每秒循环左移一位,即□□8—>□8□—>8□□—>□□8—>…,按A键开始计时,实时显示所经历的时间,按B键停止计时并显示从开始到当前时刻的时间,要求精确到0.1秒,量程为0~99.9秒。 要求按键输入采用中断方式,按键A接INT0,按键B接INT1。 2.智能电动百叶窗 本设计以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,用一台直流电机控制百叶窗叶片的旋转(正转/反转),用一个光敏电阻传感器测量室内光强度,并用两位数码管显示测量结果,设置三个按键:手动/自动切换、手动正转和手动反转,用一个发光二极管显示手动/自动状态,自动状态时二极管亮。 设置两个极限位置保护行程开关,用于保护百叶窗叶片:当正转到极限位置压下行程开关时,电机停止正转,但还可以反转;当反转到极限位置压下行程开关时,电机停止反转,但还可以正转。 按键输入采用中断方式,按键中断请求信号接INT0. 单片机根据设定光强S1和S2(S2 > S1)和实测光强P控制电机M的动作:当P<=S1时,控制M正转以增加进光量; 当P>S2时,控制M反转以减少进光量; 当S1S+1时,控制R断开电加热回路; 当S-1

单片机课程设计选题

单片机课程设计选 题

单片机原理与接口技术课程设计题目 以下题目任选其一,1-2人一组,自由组合,组内各人必须有明确的分工,原则上同一组最多一个同学得优。 可使用任何单片机或ARM,1-4要求自己设计全部硬件和焊接电路板,5-10题可用现成的单片机开发板,5-6题亦可用proteus仿真。自拟题的根据题目难度由指导老师决定能否用现成的单片机开发板。 一、PC机看门狗(每班最多6人选此题,难度系数:低) 功能:当PC机死机时能自动使其重新启动。 硬件:可使用串口或USB与PC机通讯。 软件:PC机上软件编程可选用任何一种面向对象开发软件,如VC,Delphi等。 实现原理:PC机正常时,每隔一段时间经过串口向单片机发送一些固定的数据,单片机如果收到此数据,说明PC机正常,如果超时未收到,则控制PC机重新启动。 二、电子琴设计(每班最多6人选此题,难度系数:中) 使用4×4行列式键盘和蜂鸣器实现电子琴的功能。键盘符号定义如下: 按下1-7,实验箱上的蜂鸣器发出对应的音调(中音),当同时按下L和1-7时是,蜂鸣器发出低音,同时按下H和1-7时,蜂鸣

器发高音。只要按键没松开,蜂鸣器一直发声,直到松开按键。 扩展功能:在彩屏LCD上显示电子琴图片,用触摸屏控制发音,就像真正弹电子琴一样。 三、自行车测速仪 (难度系数:中偏高) 基本功能:能实时显示自行车的行驶速度 附加功能:实时时钟,行驶里程累计 要求具备一定的实用价值,即要考虑如下问题(也是答辩时的考察和评分指标): 1、体积要做到尽量小 2、为了省电,要使用低电压工作的单片机,比如使用2.0-3.3V 工作电压的单片机 3、供电采用可充电的聚合物锂电池(普通手机电池),一次充 电后的使用时间最少12小时 4、最好能直接用单车轮子的旋转为电池充电(选做)。 四、计算器设计 1、使用4×4行列式键盘和1602液晶(其它液晶亦可)或数码 管,实现普通十进制计算器的功能,键盘符号定义如下:

单片机课程设计实习报告

【最新】单片机课程设计实习报告 单片机课程设计实习报告 实训任务: 做单一灯的左移右移,八个发光二极管l1-l8分别接在单片机的p1.0 p1.2 p1.3┅ p1.7 p1.6 ┅ p1.0亮,重复循环3次.然后左移2次,右移2次,闪烁2次(延时的时间0.2秒). 一. 实训目的和要求: (1)熟练掌握keil c51集成开发环境的使用方法 (2)熟悉keil c51集成开发环境调试功能的使用和dp?https://www.360docs.net/doc/6c8742313.html,单片机仿真器.编程器.实验仪三合一综合开发平台的使用. (3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口. (4)了解掌握单片机芯片的烧写方法与步骤. (5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用. (6)掌握利用protel 99 se绘制电路原理图及pcb图. (7)了解pcb板的制作腐蚀过程. 二.实训器材: pc机(一台)http://shi_i.e_am8/ pcb板(一块) 5_ 电阻(八只) 10k电阻(一只) led发光二极管(八只) 25v 10 f电容(一只) 单片机ic座(一块) at89c51单片机芯片(一块) 热转印机(一台) dp?https://www.360docs.net/doc/6c8742313.html,单片机仿真器.编程器.实验仪三合一综合开发平台(一台) 三.实训步骤: (1)根据原理图(下图所示),用导线把单片机综合开发平台a2区的j61接口与d1区的j52接口相连.

(2)将流水灯程序编写完整并使用tkstudy ice调试运行. (3)使用导线把a2区j61接口的p1口7个口分别与j52接口的八个led 相连. (4)打开电源,将编写好的程序运用tkstudy ice进行全速运行,看能否实现任务要求. (5)观察运行结果,若能实现功能,则将正确编译过的he_文件通过easypro51编程器写入mcu片内存储器,然后将烧写的芯片a2区的圆孔ic座进行最终实验结果的演示. (6)制板.首先利用protel 99 se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb板上布线图外的铜全部后,将其取出,清洗干净. (7)焊接.将所给元器件根据原理图一一焊至pcb板相应位置. _3下一页

燕山大学软件工程课程设计

燕山大学 课程设计报告自习室座位管理系统 学院信息科学与工程学院年级专业09级计算机科学2班学生姓名XXX 090104010XXX XXX 090104010XXX XXX 090104010XXX 指导教师XXX 提交日期2012-6-14

摘要 本次课程设计在Windows 7平台上,以VS2010作为界面开发工具,分析设计了“图书馆自习室座位管理系统”。学生可以通过终端进行座位申请、座位退还、座位保留操作;管理员可以通过账户登录获取管理权限,对数据库进行更新和修改。 本报告中首先说明了该系统的特点与业务需求,构造了系统的数据模型、功能模型和动态模型,之后详细说明了系统的业务流程和系统开发流程,重点介绍了系统各模块的功能及相关功能的实现方向。 关键词座位管理系统;座位;数据库;VS2010;动态模型;模块

目录 摘要 (1) 第1章绪论 (2) 1.1 课题背景 (3) 1.2 课题意义 (4) 1.3 选题依据 (5) 第2章系统需求分析 (10) 2.1 系统功能描述 (10) 2.2 系统功能需求 (11) 2.3系统功能模块图 (12) 第3章系统总体设计 (13) 2.1 系统方案选取 (14) 2.2 系统功能设计 (15) 2.3数据库设计 (16) 结论 (18) 参考文献 (53)

第一章绪论 1.1 背景和意义 在大学中,公共自习室的座位管理是一个很重要的问题,因为它牵扯到能否让每个同学公平地享用到其应有的公共资源,同时更好的做好配合学校教学的服务工作,所以一个有力的图书馆座位管理系统不可或缺。由于图书馆的座位是免费使用,所以必须要做到公平;但是,图书馆的座位资源有限,应该得到最大限度地使用,所以必须讲究效率。每到学期末或考试周,图书管的公共自习室就变成了紧俏资源,一系列因为管理上的不力所产生的问题接踵而至,例如:一些座位被长期占用却得不到回收,一人同时占用多个座位,座位信息不能及时反馈给同学等等。一个有力的座位管理系统可以公平管理和分配公共资源,使其得以充分利用,并节省人力物力,避免人为因素所导致的错误,同时还可以实时更新信息使得信息统一从而为同学节省宝贵时间。 现代信息技术的飞速发展给我们生活带来了极大的便利,尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。作为计算机应用的一部分,管理信息系统具有着手工管理所无法比拟的优点,例如:检索迅速、查找方便、可靠性高、存储量大、寿命长、实时性好、成本低等。如果我们将信息技术运用至自习室座位管理系统,那么再给我们带来方便的同时,也能让我们时刻体会到数字化的乐趣。 1.2 主要内容和工作 (1)前期准备:做好需求分析工作,作为一个座位管理系统,使用者应该以学生为主,自习室座位信息更新界面应简单易用,输入方便,针对学生对系统的实时性要求较高的特点,要做好数据库的设计。需求分析之后要进一步明确问题域,站在用户人群的角度进行开发。进行可行性分析,从经济、技术、操作等方面入手,看问题能否解决。 (2)设计实施:对系统功能进行调查分析,逐步抽象,构造功能模块,建立系统的功能模型、数据模型、动态模型。然后进行总体设计,完成系统的大致框架,画出层次图。然后再进行详细设计工作,完成数据编码工作,设计出数据库和人机界面。

单片机课程设计计算器

课程设计说明书 课程设计名称:单片机课程设计 课程设计题目:四位数加法计算器的设计学院名称:电气信息学院 专业班级: 学生学号:

学生姓名: 学生成绩: 指导教师: 课程设计时间:至

格式说明(打印版格式,手写版不做要求) (1)任务书三项的内容用小四号宋体,倍行距。 (2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。 (3)章的标题用四号黑体加粗(居中排)。 (4)章以下的标题用小四号宋体加粗(顶格排)。 (5)正文用小四号宋体,倍行距;段落两端对齐,每个段落首行缩进两个字。 (6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。 (8)页码:封面、扉页不占页码;目录采用希腊字母Ⅰ、Ⅱ、Ⅲ…排列,正文采用阿拉伯数字1、2、3…排列;页码位于页脚,居中位置。 (9)标题编号应统一,如:第一章,1,,……;论文中的表、图和公式按章编号,如:表、表……;图、图……;公式()、公式()。

课程设计任务书 一、课程设计的任务和基本要求 (一)设计任务(从“单片机课程设计题目”汇总文档中任选1题,根 据所选课题的具体设计要求来填写此栏) 1. 系统通过4x4的矩阵键盘输入数字及运算符。 2. 可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E。 3. 可以进行加法以外的计算(乘、除、减)。 4. 创新部分:使用LCD1602液晶显示屏进行显示,有开机欢迎界面,计算数据与结果分两行显示,支持小数运算。 (二)基本要求 1.有硬件结构图、电路图及文字说明; 2.有程序设计的分析、思路说明; 3.有程序流程框图、程序代码及注释说明; 4.完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus 软件中仿真模拟); 5.有程序运行结果的截屏图片。

机械设计制造及其自动化专业_百度文库(精)

机械设计制造及其自动化专业 业务培养目标: 业务培养目标:本专业培养具备机械设计制造基础知识与应用能力,能在工业生产第一线从事机械制造领域内的设计制造、科技开发、应用研究、运行管理和经营销售等方面工作的高级工程技术人才。 业务培养要求:本专业学生主要学习机械设计与制造的基础理论,学习微电子技术、计算机技术和信息处理技术的基本知识,受到现代机械工程师的基本训练,具有进行机械产品设计、制造及设备控制、生产组织管理的基本能力。 毕业生应获得以下几方面的知识和能力: 1.具有较扎实的自然科学基础、较好的人文、艺术和社会科学基础及正确运用本国语言、文字的表达能力; 2.较系统地掌握本专业领域宽广的技术理论基础知识,主要包括力学、机械学、电工与电子技术、机械工程材料、机械设计工程学、机械制造基础、自动化基础、市场经济及企业管理等基础知识; 3.具有本专业必需的制图、计算、实验、测试、文献检索和基本工艺操作等基本技能; 4.具有本专业领域内某个专业方向所必要的专业知识,了解其科学前沿及发展趋势; 5.具有初步的科学研究、科技开发及组织管理能力; 6.具有较强的自学能力和创新意识。 主干课程: 主干学科:力学、机械工程。

主要课程:工程力学、机械设计基础、电工与电子技术、微型计算机原理及应用、机械工程材料、制造技术基础。 主要实践性教学环节:包括军训,金工、电工、电子实习,认识实习,生产实习,社会实践,课程设计,毕业设计(论文等,一般应安排40周以上。 修业年限:四年 授予学位:工学学士 相近专业:机械设计制造及其自动化材料成型及控制工程工业设计过程装备与控制工程车辆工程机械工程及自动化机械电子工程汽车服务工程机械类车辆保险与理赔专业 ====推荐图书=== 高考专业详解与填报指南 开办院校 北京 [比较]华北电力大学(北京 [比较]中国农业大学[比较]中国地质大学[比较]北京化工大学 [比较]北京林业大学[比较]北京信息科技大学[比较]北方工业大学[比较]北京石油化工学院 [比较]北京物资学院 天津 [比较]天津大学[比较]天津工程师范学院[比较]天津城市建设学院 上海

单片机课程设计题目汇总(全)

单片机课程设计题目汇总(一) 说明:为便于同学提前探讨开发思路,自学相关内容,特将本课程设计的可选题目发给大家。本次题目为其一部分,稍后会有另一部分。鼓励大家自己设计题目。 要求:每个小组2-3人,每个题目最多限两个小组选;课程设计考核内容包括:C51源程序;现场显示结果;设计报告文档(文档的格式稍后公布,请注意查收)。 一、基于单片机的交通灯显示系统(一) 设计内容:1、东西方向、南北方向均有红、黄、绿三种信号灯;(30分) 2、带紧急制动按钮,按钮按下,所有方向亮红灯;再次按下, 恢复正常显示(20分) 3、夜间模式按钮按下,所有方向显示黄灯闪烁(20分) 4、实时提醒绿灯亮的剩余时间(30分) 图示: 二、基于单片机的交通灯显示系统(二) 设计内容:1、东西干道和南北干道的通行分左行、右行、直行,其中左行、右行固定15秒;直行固定30秒(40分) 2、信号灯分绿灯(3种)、红灯、黄灯,每次绿灯换红灯时,黄 灯亮3秒钟。(30分) 3、东西干道和南北干道交替控制,每次干道绿灯交替时,有3 秒钟所有干道的交通灯都是黄灯闪烁3秒钟,提示已经进入路口的车辆迅速通过。(30分) 4、其他创新内容。(10分) 图示: 三、基于单片机的波形发生器设计 设计内容:1、设计一款能产生3种以上波形的波形发生器(30分) 2、设计波形选择按钮(采用3个独立按键)(10分) 3、点阵显示波形图案(20分) 4、能同时输出两种波形(30分)

5、显示频率(10分) 图示: 四、基于单片机的LED点阵广告牌设计 设计内容:1、能显示不同字符、图形的LED点阵广告牌(30分) 2、用独立按键控制不同字符的切换效果(如闪烁、静止、平移) (30分) 3、可通过串口从电脑下载更新需要显示的字符(30分) 4、其他创新功能(10分) 图示:略 五、基于单片机的篮球计分器设计 设计内容:1、设计LCD显示篮球比分牌(30分) 2、通过加分按钮可以给A队或B队加分(20分) 3、设计对调功能,A队和B队分数互换,意味着中场交换场地。 (20分) 4、显示比赛倒计时功能(20分) 5、创新内容:如显示第几小节(10分) 显示: 六、基于单片机的电子贺卡设计 设计内容:1、设计基于单片机的伴奏乐曲(30分) 2、设计基于单片机的彩屏图片(30分) 3、通过矩阵键盘按键显示不同彩屏图片,并伴有不同乐曲(30 分) 4、创新部分(自主设计)(10分) 显示:(略) 七、电风扇模拟控制系统设计 设计内容:1、3个独立按键分别控制“自然风”、“睡眠风”、“常风”,(三者的区别是直流电机的停歇时间不同),并在数显管上显示出区别(30分) 2、每种类型风可以根据按下独立按键次数分为4个档的风力调 节。(30分) 3、设计风扇的过热保护,用继电器实现。即当风扇运行一段时 间后,暂停10秒。(30分) 4、其他创新内容(如报警提示)(10分)

燕山大学操作系统课程设计说明书

燕山大学课程设计说明书课程设计名称:操作系统 题目:多道程序缓冲区协调操作 (模拟生产者消费者问题) 课题负责人: 学院:信息科学与工程学院 班级: 姓名: 学号: 课题开发日期:2014年1月13日 自评成绩: A

目录 1概述-------------------------------------------------------------------- ------------------3 目的--------------------------------------------------------3 主要完成的任务----------------------------------------------3 使用的开发工具、开发语言------------------------------------3 本软件解决的主要问题 ---------------------------------------4 2 设计的基本理念、概念和原理------------------------------------------------4 设计的基本理念----------------------------------------------4 基本概念----------------------------------------------------4 基本原理----------------------------------------------------5 3 总体设计----------------------------------------------------5 基本的技术路线:面向对象--------------------------------------------------------5 模块关系及总体流程-------------------------------------------5 4 详细设计----------------------------------------------------7 变量设计----------------------------------------------------7 线程的设计--------------------------------------------------7 button按钮的设计-------------------------------------------8 5编码设计----------------------------------------------------9 开发环境----------------------------------------------------9 注意事项----------------------------------------------------9 主要代码设计------------------------------------------------9 PUTTER线程的设计---------------------------------------------------9 MOVER1线程的设计---------------------------------------------------10 GETTER1线程的设计--------------------------------------------------11 “开始”按钮的设计--------------------------------------------------12 “结束”按钮的设计--------------------------------------------------14 解决的主要难题----------------------------------------------16 6测试出现的问题及其解决方案-------------------------------16 7工程总结----------------------------------------------------16 8参考文献----------------------------------------------------16

单片机课程设计题目汇总(全)

单片机原理与接口技术课程设计题目汇总 说明:为便于同学提前探讨开发思路,特将本课程设计的可选题目发给大家。 每个同学可以在以下题目中选一题要求:课程设计考核内容包括:源程序;设计报告文档基于单片机的电子时钟设计设计内容:1、用LCD液晶作为显示设备(30分) 2、可以分别设定小时,分钟和秒,复位后时间为:00: 00:00 (30 分) 3、能实现日期的设置,年、月、日(30分) 4、其他创新内容(10分)如:闹钟功能;显示星期;整点音乐报时等。 图示: 2010-04-09 MON 11:06:42 基于单片机的交通灯显示系统(一) 设计内容:1、东西方向、南北方向均有红、黄、绿三种信号灯;(30 分) 2、带紧急制动按钮,按钮按下,所有方向亮红灯;再次按下,恢复正常显 示(20分) 3、夜间模式按钮按下,所有方向显示黄灯闪烁(20分) 4、实时提醒绿灯亮的剩余时间(30分)图示: 基于单片机的交通灯显示系统(二) 设计内容:1、东西干道和南北干道的通行分左行、右行、直行,其中左行、右行固定15秒;直行固定30秒(40分) 2、信号灯分绿灯(3种)、红灯、黄灯,每次绿灯换红灯时,黄灯亮3秒 钟。(30分) 3、东西干道和南北干道交替控制,每次干道绿灯交替时,有 3 秒钟所有干道的交通灯都是黄灯闪烁3秒钟,提示已经进入路口的车辆迅速通过。(30分)

4、其他创新内容。(10分) 图示: 四、基于单片机的波形发生器设计 设计内容:1、设计一款能产生3种以上波形的波形发生器(30分) 2、设计波形选择按钮(采用3个独立按键)(10分) 3、点阵显示波形图案(20分) 4、能同时输出两种波形(30分) 5、显示频率(10分) 图示: 五、基于单片机的LED点阵广告牌设计 设计内容:1、能显示不同字符、图形的LED点阵广告牌(30分) 2、用独立按键控制不同字符的切换效果(如闪烁、静止、平移)(30 分) 3、可通过串口从电脑下载更新需要显示的字符(30分) 4、其他创新功能(10分) 图示:略 六、基于单片机的篮球计分器设计 设计内容:1、设计LCD显示篮球比分牌(30分) 2、通过加分按钮可以给A队或B队加分(20分) 3、设计对调功能,A队和B队分数互换,意味着中场交换场地。(20 分) 4、显示比赛倒计时功能(20分) 5、创新内容:如显示第几小节(10分) 显示: A 083: B 079 4th Period 10:25

燕山大学金属材料工程专业焊接方向培养计划

金属材料焊接专业培养计划 学制:四年起用年级:2008 培养目标: 金属材料焊接专业:本专业培养能坚持社会主义道路、德智体全面发展、适应社会主义市场经济发展需要的、高素质的复合型金属材料焊接专业的高级工程技术人才。要求学生具有良好的物理、化学基础及较高的外语水平、掌握计算机应用技术,掌握金属材料及焊接的基本知识、同时在两者的结合领域受到严格的训练。学生毕业后可到工矿企业、科研院所、大专院校等企事业单位从事现代金属材料的焊接生产、管理和开发新材料、新工艺、新产品等工作,也可以继续攻读材料科学与工程专业及相关学科的硕士、博士学位。 培养要求: 金属材料焊接专业:本专业主要学习金属材料及焊接技术方面的基本理论和基本知识,受到焊接基本方法的训练,具有分析和解决金属材料的的结构、性能和焊接生产等问题的基本能力。 毕业生应获得以下几方面的知识和能力: 1. 掌握金属材料的物理冶金、制备和焊接工艺以及相关设备的基本理论、基本知识; 2. 掌握金属材料组织和性能的研究方法; 3. 具有较强的分析和解决金属材料及其热处理质量问题的基本能力; 4. 了解本学科的理论前沿和发展动态; 5. 掌握文献检索、资料查询基本方法,具有一定的科学研究和实际工作能力。 主干学科:金属材料焊接 学位课:毛泽东思想、邓小平理论和“三个代表”重要思想概论、高等数学、材料近代分析测试方法、金属力学性能、金属物理性能、金属腐蚀与防护、计算机在材料科学中的应用、大型铸锻件材料及热加工工艺。 金属材料焊接专业:金属学与热处理、焊接冶金学、金属焊接性、弧焊方法及工艺、焊接结构、压力焊与钎焊。 集中实践教学环节:国防教育与军事训练、课程设计、金工实习、专业调研、材料专业实验、生产实习、毕业设计。 授予学位:工学学士

STC12C5A60S2单片机课程设计报告

一、课程设计基本情况介绍 1.1课程设计的基本目的与任务 本课程设计旨在驾驭本专业学生理论指导实践能力以及电子产品工程设计与开发能力。本实践课所要达到的主要目的是: 1、通过本次课程设计,是对学生综合能力的检,提高学生综合运用专业知识,强化单片机 应用系统设计与防震能力。 2、本次课程设计是在生产实习所完成的“单片机核心板+电子钟模块+MP3模块+RFID模块+无线传输模块+GPS模块+脉搏传感模块”的基础上设计该硬件系统的工作程序。 1.2课程设计的基本内容 1、在生产实习设计单片机硬件系统的基础上,设计相应的应用软件系统。 2、在LCD1602上显示学号程序设计。 3、基于DS1302的实时时钟软件设计。 4、基于DS18B20的温度测量软件设计。 5、基于TL1838A的红外遥控解码软件设计。 6、设计应用软件系统框图和流程图,完成所设计软件的调试。 1.3课程设计的教学要求 1、通过资料查阅及学习了解单片机应用系统的软件设计方法及单片机编程、软硬件联机调 试技巧。 2、独立设计并编写下列应用程序: (1)LCD1602学号显示程序; (2)DS1302实时时钟程序; (3)DS18B20温度测量程序; (4)TL1838A红外遥控解码程序; 3、独立完成所设计程序与硬件系统的联机仿真。 二、整机系统框图(硬件、软件) 该设计方案是以STC12C5A60S2单片机为核心,采用LCD液晶屏幕显示模块、实时时钟模块、温度测量模块、红外遥控解码等模块所构建的系统,能在LCD1602液晶屏上显示当前的日期(年、月、日)、时间(时、分、秒)数据、当前环境温度值和红外遥控解码值。用户可通过遥控器或单片机核心板上的按键来进行日期和时间的设置。本系统设计大部分功能由软件来实现,电路简单明了,系统稳定性也得到大大提高。 1、总体硬件设计框架图: 2、总体软件设计框架图 /////// 三、整机硬件电路原理图(见99SE图) 1、核心板电路原理图 2、蜂鸣器驱动电路 3、按键电路 4、单片机复位电路 5、LCD1602液晶显示电路 6、电子钟模块接口电路 四、软件系统设计思想 //////////// 五、系统软件资源分配表(调试程序、工作程序) ////////////// 六、显示学号的调试程序流程图、程序源代码

燕山大学发电厂电气部分课程设计 大型骨干电厂电气主接线

目录 第一章原始资料的分析 (1) 1.1电压等级 (1) 第二章电气主接线方案 (1) 2.1 电气主接线设计的基本原则 (1) 2.2 具体方案的拟定 (2) 第三章主要电气设备的选择 (4) 3.1 发电机 (4) 3.2 主变压器 (4) 3.4 断路器和隔离开关 (5) 3.5电压互感器 (8) 3.6电流互感器的选择 (9) 3.7 母线的导体 (10) 第四章方案优化 (11) 第五章短路电流计算 (12) 5.1 等效阻抗网络图 (12) 5.2阻抗标幺值计算 (12) 5.3 短路点短路电流计算 (14) Q的计算 (15) 5.4 短路电流热效应 K 第六章校验动、热稳定(设备) (17) 6.1断路器稳定校验 (18) 6.2 隔离开关稳定校验 (18) 6.3电流互感器稳定校验 (19) 6.4 母线导体稳定校验 (20) 第七章心得体会 (20) 参考资料 (21)

大型骨干电厂电气主接线 第一章原始资料的分析 1.1电压等级 根据原始资料的分析可知,需要设计的是一个大型骨干凝汽电厂,共有两个电压等级:220KV,500KV 1.2 系统(电源)、负荷 电压等级进出线回数负荷(max) 负荷(min) 220kv 4 600MW 300MW 500kv 6 1.3 发电机、主变压器容量及台数 发电机容量和台数为6× 300MW (QFSN-300-2) 因此主变压器的台数选为6台。 1.4 联络变压器 选择三绕组变压器,连接两个电压等级,剩余一端引接备用电源。 第二章电气主接线方案 2.1 电气主接线设计的基本原则 电气主接线设计的基本原则是以设计任务书为依据,以国家的经济建设方针、政策、技术规定、标准为准绳,结合工程实际情况,在保证供电可靠、调度灵活、满足各项技术要求的前提下、兼顾运行、维护方便,尽可能的节省投资,就近取材,力争设备元件和设计的先进性与可靠性,坚持可靠、先进、适用、经济、美观的原则。 电气主接线是由高压电器通过连接线,按其功能要求组成接受和分配电能的电路,成为传输强电流,高电压的网络,它要

51单片机课程设计

课程设计说明书
课程设计名称






学生姓名
指导教师
单片机原理及应用课程设计 电子信息工程 140405 20141329 李延琦 胡黄水
2016 年 12 月 26 日

课程设计任务书
课程设计 题目
酒精测试仪
起止日期
2016 年 12 月 26 日— 2017 年 1 月 6 日
设计地点
计算机科学与工程学 院单片机实验室 3409
设计任务及日程安排: 设计任务:分两部分: (一)、设计实现类:进行软、硬件设计,并上机编程、联线、调试、 实现; 1.电子钟的设计 2.交通灯的设计 3.温度计的设计 4.点阵显示 5.电机调速 6.电子音乐发声(自己选曲) 7.键盘液晶显示系统 (二)、应用系统设计类:不须上机,查资料完成软、硬件设计画图。 查资料选定题目。 说明:第 1--7 题任选其二即可。(二)里题目自拟。 日程安排: 本次设计共二周时间,日程安排如下: 第 1 天:查阅资料,确定题目。 第 2--4 天:进实验室做实验,连接硬件并编写程序作相关的模块实验。 第 5--7 天:编写程序,并调试通过。观察及总结硬件实验现象和结果。 第 8--9 天:整理资料,撰写课程设计报告,准备答辩。 第 10 天:上交课程设计报告,答辩。 设计报告要求:
1. 设计报告里有两个内容,自选题目内容+附录(实验内容),每 位同学独立完成。 2. 自选题目不须上机实现,要求能正确完成硬件电路和软件程序 设计。内容包括: 1) 设计题目、任务与要求 2)硬件框图与电路图 3) 软件及流程图 (a)主要模块流程图 (b)源程序清单与注释 4) 总结 5) 参考资料 6)附录 实验上机调试内容
注:此任务书由指导教师在课程设计前填写,发给学生做为本门课程设计 的依据。

机械设计说明书

燕山大学 机械设计课程设计说明书题目:带式输送机传动装置 学院(系):机械工程学院 年级专业: 13级锻压2班 学号: 130101020076 学生姓名:张建雷 指导教师:周玉林

目录 一、机械设计课程设计任务书 (1) 二传动方案的拟定 (1) 三、电动机的选择及传动装置的运动和动力参数计算 (1) 四、传动零件的设计计算 (3) 4.1第一级直齿圆锥齿轮的设计 (3) 4.2第二级斜齿圆柱齿轮的设计 (6) 五、轴的设计及校核 (10) 5.1轴的机构设计 (10) 5.2输出轴的校核 (13) 六、轴承的选择和寿命计算 (17) 七、键的选择和校核 (19) 八、联轴器的选择 (20) 九、箱体的结构尺寸 (20) 十、传动装置的附件及说明 (21) 十一、润滑和密封说明 (22) 十二、三维设计 (23) 十三、设计小结 (24) 十四、参考文献 (25)

计算及说明结果一、机械设计课程设计任务书 一、设计题目:带式输送机传动装置 二、传动装置简图: v F D 图1-1传动装置简图 三、原始数据及要求 F=1611N D=0.27m v=1.28m/s 四、其他条件: 使用地点:室外生产批量:小批 载荷性质:微振使用年限:八年一班 二、传动方案的拟定 圆锥齿轮减速器相对于其他减速器机构可以改变力矩方向,可以把横向传动转为竖直传动,用于输入轴与输出轴垂直方向布置的传动装置。而且承载能力高,噪音低,传动相对平稳,箱体体积小,节省空间,重量轻,传动效率高,可靠耐用,使用寿命长。针对本题目的设计要求,决定采用圆锥—圆柱齿轮的设计方案。 三、电动机的选择及传动装置的运动和动力参数的计算。 1、电动机类型和结构方式,选择Y系列IP44 2、选择电动机功率,所选电动机的额定功率稍大于工作功率P d,即P ed≥P d. 卷筒的输出功率P w=FV/1000ηw=2.148KW 其中卷筒的工作效率ηw=0.96 则电动机的输出功率P d=P w/ηa=2.148KW/0.85=2.527KW 其中传动总效率ηa=η12η22η34=0.85 η1为联轴器效率0.99, η2为齿轮传动啮合效率(弹性联轴器)0.97 η3为滚动轴承传动效率0.98. 3、电动机转速的确定 卷筒转速n w=60V/πD=90.6r/min 传输带牵引力:F=1611N 传输带工作速度: v=1.28m/s 滚筒直径:D=0.271m P d=2.527 KW

单片机课程设计报告书----电子秤

一、设计任务及要求: 设计任务: 完成一个简单的使用数字电子秤的硬件与软件部分的设计。 设计要求: 1.利用单片机实现对所设计的电子秤的各项功能的控制。 2.电子秤能够LCD液晶显示出商品的名称、价格,重量、总价等信息。 3.电子秤具有储存几种简单商品价格的功能。 4.电子秤的测量范围要求达到5KG,测量精度要求达到0.001。 5.电子秤能够自动完成商品的价格计算。 指导教师签名: 2010 年6月16 日二、指导教师评语: 指导教师签名: 2010 年7月3日三、成绩 验收盖章 2010 年7 月日

基于单片机的实用电子秤的设计 1 设计目的 单片机以其功能强,体积小,功耗低,易开发等很多优势被广泛应用。本 次数字电子秤的设计就是需要通过选择合适的单片机来进行主控,再结合A/D 转换、键盘、液晶显示、复位电路和蜂鸣器报警驱动电路的知识,同时在软件 的设计过程中用到键盘扫描、液晶显示驱动、模数转换程序及汉字库的的设计, 做到对我们所学数电、模电、单片机等知识的综合应用,最终实现所设计数字 电子秤的各项功能,达到“巩固知识,培养技能,学而用之”的实践目的。通过这次课程设计,不但要提高我们在工作中的学习能力、探究能力、应用能力和动 手能力,还要历练我们不畏艰难、不懂便学、有漏必补的认真严谨的工作态度,强化我们的社会适应力和社会竞争力,为走向社会提前试水,完善自我。 2 设计的主要内容及要求 本设计主要完成一个简单实用数字电子秤的硬件电路部分和软件部分的设计。硬件部分包括数据采集、最小系统板、人机交互界面三大部分。其中,数 据采集部分由压力传感器和A/D 转换部分组成;人机界面部分为键盘输入、 液晶显示。软件部分应用单片机 C 语言实现了本设计的全部控制功能。本设 计的数字电子秤要求能够显示商品的名称、价格、总量、总价等;能够自动完 成商品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能, 一旦重量超出了自身重量的测量的范围,发出警报;同时对数字电子秤的测量 范围要达到5KG,测量精度要求达到0.001。 3 整体设计方案 整个数字电子秤电路由压力传感电路(ADC0832采样)、模数转换系统、单 片机主控制电路、LM4229显示电路、蜂鸣器报警电路和4*4键盘电路6 个部

燕山大学11计算机编译原理课程设计安排

大校11计算机《编译原理》课程设计安排 时间:18周(12月30日-1月3日)地点:信息馆317、318实验室 一、设计目的:研究、改进或自行设计、开发一个简单的编译程序或其部分功能,加深对编译理论和编 译过程的理解。编程语言不限。 二、设计任务 (学号最后一位%4+1): 1.扩展PL/0编译程序功能 目的:扩充PL/0编译程序功能, 要求:(1)阅读、研究PL/0编译程序源文件。 (2)在上述工作基础上,可有选择地补充、完善其中词法分析、语法分析、语义分析、目标代码生成、目标代码解释执行等部分的功能。如以语法分析部分为例,则可以增加处理更多语法成分的功能,如可处理一维数组、++、--、+=、-=、*=、/=、%(取余)、!(取反)、repeat、for、else、开方、处理注释、错误提示、标示符或变量中可以有下划线等。还可以增加类型,如增加字符类型、实数类型;扩充函数如有返回值和返回语句的,有参数函数等; (3)设计编制典型的运行实例,以便能反映出自己所作的改进。 2. 基于LL(1)方法的语法分析程序 目的:设计、编制和调试一个典型的语法分析方法,进一步掌握常用的语法分析方法。 要求: (1)根据LL(1)分析法编写一个语法分析程序,可根据自己实际情况,选择以下一项作为分析算法 的输入:a.直接输入根据已知文法构造的分析表M; b.输入文法的FIRST(α)和FOLLOW(U)集合,由程序自动生成文法的分析表M; c.输入已知文法,由程序自动构造文法的分析表M。 (2)所开发的程序可适用于不同的文法和任意输入串,且能判断该文法是否为LL(1)文法。 (3)如完成前两项,可增加运行实例,对于输入的文法和符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子,并要求输出分析过程。 3.基于LR(0)方法(或SLR(1)方法、或LR(1)方法)的语法分析程序 要求: 可根据自己实际情况,选择以下一项作为分析算法的输入: (1)直接输入根据己知文法构造的LR(0)(或SLR(1) 、或LR(1))分析表。 (2)输入已知文法的项目集规范族和转换函数,由程序自动生成LR(0) ( 或SLR(1) 、或LR(1))分析表; (3)输入已知文法,由程序自动生成LR(0) ( 或SLR(1) 、或LR(1))分析表。 目的和其它要求参考“基于LL(1)方法的语法分析程序” 4.词法分析程序设计 目的:设计、编制和调试一个具体的词法分析程序,加深对词法分析的理解。 要求: 通过对PL/0词法分析程序(GETSYM)的分析,编制一个具有以下功能的词法分析程序: a.输入为待进行词法分析的源程序,输出为单词串,即由(单词,类别)所组成的二元组 序列; b.有一定的错误检查能力,例如能发现2a这类不能作为单词的字符串。 选作题目:若以上题目均不感兴趣,可申请做选作题目。 ①基于Lex和Y acc的C-Minus编译器。 基于W indows环境下的Lex和Yacc集成环境Parser Generator, 实现了以C _ M inus ( C 语言子集) 语言为源语言的编译器。主要从编译技术的角度对C _ M inus语言的词法分析、语法分析、符号表的建立以及目标代码生成的过程进行详细的阐述。 ②利用Lex和Yacc工具制作一个小型的计算器编译器。 功能如下:1. 分别能够完成十进制、八进制、十六进制的一些基本运算。可以通过DEC_ON,OCT_ON,HEX_ON三个开关进行控制。 2.能够完成一些基本的算术运算和逻辑运算,如:加、减、乘除、乘方、取模、与、或、非等运算。 3.提供帮助提示操作,如:HELP命令,清屏命令CLEAR等,错误提示信息等。

燕山大学里仁学院专业介绍

燕山大学里仁学院专业介绍 机械设计制造及其自动化专业 本专业培养具备机械设计、制造及其自动化基础知识和专业知识,能在工业生产第一线从事机械工程及其自动化领域内的技术、经营和管理的,具有综合素质,创新精神和专业技术能力的应用型高级专门人才。本专业的学生按机械设计制造及其自动化的宽口径专业培养、并设有现代冶金机械工程、流体传动及控制工程、机电一体化工程、现代制造工程、现代设计工程等特色专业方向的课程模块供学生修读。 本专业的主要课程有:高等数学、理论力学、材料力学、工程制图、机械原理、机械设计、控制工程基础、电工与电子技术、微机原理与数控技术、液压与气压传动、计算机文化基础、基础英语等课程。 学生毕业后,可在高等院校、科研单位及工矿企业等部门从事相关的教学、科研、开发、生产与管理等工作。 材料成型及控制工程专业 本专业属于机械、材料和计算机交叉渗透的综合性工程技术学科,主要培养具备现代设计方法、计算机辅助设计(CAE/CAD/CAM)及材料加工方面知识与应用能力、能从事技术开发、材料成型质量控制、相关设备及模具设计于制造、企业管理与经营销售等方面工作,具有综合素质,创新精神和专业技术能力的应用型高级专门人才。 本专业的主要课程有:高等数学、理论力学、材料力学、工程制图、机械原理、机械设计、控制工程基础、塑性成形原理、机械CAD/CAM、冲压工艺及模具设计、塑性成形工艺及模具设计、现代成形设备、现代材料成形技术等。 学生毕业后,可在高等院校、科研单位及工矿企业等部门从事相关的教学、科研、开发、生产与管理等工作。 建筑环境与设备工程专业 本专业培养从事采暖供热、通风除尘、空气调节、制冷技术及锅炉房工艺设计、施工、运行调节、技术经济管理工作的应用型高级技术人才。 本专业的专业课程有:传热学、流体力学、工程热力学、建筑环境学、流体输配管网、供热工程、空调工程、工业通风、空调用制冷技术、锅炉与锅炉房设备、安装工程概预算、自动控制理论、建筑环境测量、建筑给排水等。 学生毕业后,可在设计单位、建筑安装工程公司、工程监理公司、物业管理公司等单位从事室内环境设备系统及建筑公共设施系统的设计、安装调试、运行管理等工作。 土木工程专业 本专业培养掌握坚实土木工程基本理论,熟悉全面土木工程知识结构,具有基本人文科学素养,具备从事土木工程项目规划、设计、研究开发、施工及管理的能力,能在土木工程的设计、研究、施工、教育、管理、投资、开发部门从事技术和管理工作的应用型高级工程技术人才。本专业设有建筑工程、工程管理和道路桥梁工程三个专业方向。 本专业的主要课程有:工程力学、结构力学、建筑材料、工程测量、工程制图、地基基础、混凝土结构、钢结构、房屋建筑工程、道桥工程、工程管理、施工技术等。 学生毕业后可从事建筑工程、市政工程和房地产等部门的设计、规划、开发及管理。也可在高等院校、科研单位从事教学与科研工作。 国际经济与贸易专业 本专业以经济学、管理学、国际金融、国际经济贸易理论为基础,掌握进口业务、国际商法、基本理论、基本知识与基本技能,培养具有国际市场营销、国际投资与技术转让、商务谈判技巧以及跨国公司经营等业务知识,熟悉通行的国际交易规则和国际惯例,以及中国对外贸易的政策法规,并能熟练地运用外语从事对外经济贸易工作的应用型高级专门人才。

相关文档
最新文档