课程设计报告

阅读 / 问答 / 标签

求模电课程设计报告,关于直流电源串联稳压电路的,最好详细点儿。 有的话请发送至573607215@qq.com

电路完全不是问题,只是论文我就写不来了

求一份数据结构课程设计报告

//class CNode.h#ifndef __CNODE_H__#define __CNODE_H__#include <iostream>using namespace std;struct stData //出生年月结构{ int m_nYear; int m_nMonth; int m_nDay;};struct stResult //五门课成绩结构{ double m_dSubject_1; //自己改成绩的名称 double m_dSubject_2; double m_dSubject_3; double m_dSubject_4; double m_dSubject_5;};struct stStudent //声明学生信息的结构{ string m_strNumber; //学生学号 string m_strName; //姓名 char m_chSex; //性别 struct stData m_stData; //出生年月 string m_strAppearance; //政治面貌 struct stResult m_stResult; //五门课成绩};typedef class CNode{ private: struct stStudent m_stStudent; CNode* m_Next; public: CNode(); //构造函数 ~CNode(); //析构函数 void SetNodeData(); //设置结点内容的函数成员 stStudent GetNodeData(); //获取结点内容的函数成员 void SetNodeNext(CNode* _Next); //设置结点Next指针的函数成员 void ShowNodeData(); //输出结点内容的函数成员 CNode* GetNodeNext(); //获取结点Next指针的函数成员}LinkNode;#endif//class CLinkList#ifndef __CLINKLIST_H__#define __CLINKLIST_H__ #include "CNode.h"typedef class CLinkList{ private: LinkNode* m_Head; //链表的头指针 LinkNode m_Node; //链表的头结点 public: CLinkList(); //构造函数 ~CLinkList(); //析构函数 void CreateList(); //初始化链表的函数成员 LinkNode* GetListNode(int _nIndex); //按位置查找指定位结点的成员函数 void InsertList(int _nIndex); //插入结点的成员函数 void DeleteList(int _nIndex); //删除某一结点的成员函数 LinkNode* GetHeadList(); //获取头指针的成员函数 void SetListData(int _nIndex); //设置链表中某一结点的值的成员函数 void ShowListData(int _nIndex); //这个是现实链表中某一结点值的函数成员 void DestroyList(int _nIndex); //销毁某一位置以后链表的成员函数 void ShowList(); //显示链表的成员函数}LinkList;#endif//class CLinkList#include "CLinkList.h"#include "CNode.h"CLinkList::CLinkList() { cout << "这个是构造函数"<< endl; m_Head = &m_Node; //链表的头指针指向头结点 m_Node.SetNodeNext(NULL); //将头结点的Next指针设置为NULL;}CLinkList::~CLinkList(){ cout << "这个是析构函数" << endl;}void CLinkList::CreateList() //以向后追加的方式创建一个链表,输入0退出{ int nTemp = 0; //定义一个临时变量用于标志程序结束 cout << "欢迎来创建链表 !" << endl; CNode * pTemp = NULL; //定义一个临时结点指针,用来增加新结点用 CNode * pNode = m_Head; //定义一个标记指针,首先叫其指向头结点 while(1) { pTemp = new LinkNode; cout << "请输入下一个结点的内容!" << endl; pTemp->SetNodeData(); //设置链表中结点的内容 cout << "如果想继续输入下一个学生的信息请输入 1,否则输入 0" << endl; cin >> nTemp; if ("0" == nTemp) { break; } pNode->SetNodeNext(pTemp); //让链尾的Next指向新建的结点 pNode = pTemp; //将结尾元素向后移 } cout << "创建链表结束" << endl;}LinkNode* CLinkList::GetListNode(int _nIndex){ cout << "这个是按位置查找指定位结点的成员函数" << endl; LinkNode* pNode = m_Head->GetNodeNext(); //定义一个临时的结点指针,初始化指向头结点 int Temp = 0; //定义一个临时的变量,用来标记已检查结点的个数的 if(-1 == _nIndex) //返回头结点(即头指针) { return m_Head; } if(_nIndex < -1) //_nIndex控制条件 { cout << "您输入的是错误的位置!" << endl; return 0; } while(pNode != NULL) { if(_nIndex == Temp) { return pNode; } pNode = pNode->GetNodeNext(); //临时结点向后移动 ++Temp; } return pNode; //没找到结点就返回NULL}void CLinkList::ShowListData(int _nIndex);void CLinkList::InsertList(int _nIndex) //插入结点的函数成员{ cout << "这个是插入结点的成员函数" << endl; LinkNode* pNode = GetListNode(_nIndex - 1); //定义一个结点类的指针,指向的是要插入位置的前一指针 LinkNode* pTemp = new CNode; //定义一个临时结点指针,用来增加新结点用 pTemp->SetNodeData(); //设置插入结点的内容 pTemp->SetNodeNext(pNode->GetNodeNext()); pNode->SetNodeNext(pTemp); }void CLinkList::DeleteList(int _nIndex){ cout << "这个是删除某一结点的成员函数" << endl; LinkNode* pNode = GetListNode(_nIndex - 1); //定义一个结点类的指针,指向的是要删除位置的前一指针 LinkNode* pTemp = NULL; //定义一个临时结点指针,用来指向要删除的结点 pTemp =pNode->GetNodeNext(); //把pTemp指向要删除的结点 pNode->SetNodeNext(pTemp->GetNodeNext()); //把pNode指向要删除的结点的后一个结点 delete pTemp; //删除结点 pTemp = NULL; }LinkNode* CLinkList::GetHeadList(){ cout << "这个是获取头指针的成员函数" << endl; return m_Head;}void CLinkList::SetListData(int _nIndex){ cout << "这个是设置链表中某一结点的值的成员函数" << endl; CNode *pNode = GetListNode(_nIndex); //定义一个结点类的指针,指向的是要修改内容位置的结点 pNode->SetNodeData(); //修改内容}void CLinkList::ShowListData(int _nIndex){ cout << "这个是显示链表中某一结点值的成员函数" << endl; CNode *pNode = GetListNode(_nIndex); //定义一个结点类的指针,指向的是要获取内容位置的结点 pNode->ShowNodeData(); //返回想要得到位置的结点内容}void CLinkList::DestroyList(int _nIndex) { cout << "这个是销毁某一位置以后链表的成员函数" << endl; LinkNode* pTemp = GetListNode(_nIndex - 1); //定义一个结点指针,指向要销毁位置的前一结点 LinkNode* pNode = pTemp->GetNodeNext(); //定义一个结点指针,指向要销毁位置的结点 while(pTemp->GetNodeNext() != NULL) //销毁动作的结束条件或初始条件 { pTemp->SetNodeNext(pNode->GetNodeNext()); //把需要销毁的位置的前结点的Next指向销毁位置的下一个结点 delete pNode; //销毁结点 pNode = pTemp->GetNodeNext(); //把pNode重新指向要销毁位置的结点 }}void CLinkList::ShowList(){ cout << "这个是显示链表的成员函数" << endl; int nTemp = 0; //定义一个临时的整形变量用来控制输入的个数 LinkNode* pTemp = m_Head->GetNodeNext(); //定义一个结点类指针,指向第0位的结点 if(NULL == pTemp) { cout << "这是个空链" << endl; } while(pTemp != NULL) { pTemp->ShowNodeData(); ++nTemp; if(0 == nTemp % 5 && nTemp != 0) //控制每行只能输出5个结点的内容 { cout << endl; } pTemp = pTemp->GetNodeNext(); }}//class CNode#include "CNode.h"CNode::CNode() //构造函数 { //m_stStudent = {0}; m_Next = NULL;}CNode::~CNode() //析构函数{}void CNode::SetNodeData(){ char* pNumber = new char[30]; //用来接收字符串的临时变量 char* pName = new char[30]; char* pAppearance = new char[30]; cout << "学生学号: " << endl; cin >> pNumber; m_stStudent.m_strNumber = pNumber; cout << "姓名: " << endl; cin >> pName; m_stStudent.m_strName = pName; cout << "性别: " << endl; cin >> m_stStudent.m_chSex; cout << "出生年月: " << endl; cout << "m_stData.m_nYear" << endl; cin >> m_stStudent.m_stData.m_nYear; cout << "m_stData.m_nMonth" << endl; cin >> m_stStudent.m_stData.m_nMonth; cout << "m_stData.m_nDay" << endl; cin >> m_stStudent.m_stData.m_nDay; cout << "政治面貌: " << endl; cin >> pAppearance; m_stStudent.m_strAppearance = pAppearance; cout << "五门课成绩: " << endl; cout << "m_dSubject_1: " << endl; cin >> m_stStudent.m_stResult.m_dSubject_1; cout << "m_dSubject_2: " << endl; cin >> m_stStudent.m_stResult.m_dSubject_2; cout << "m_dSubject_3: " << endl; cin >> m_stStudent.m_stResult.m_dSubject_3; cout << "m_dSubject_4: " << endl; cin >> m_stStudent.m_stResult.m_dSubject_4; cout << "m_dSubject_5: " << endl; cin >> m_stStudent.m_stResult.m_dSubject_5; delete []pNumber; //释放内存 pNumber = NULL; //指针置空 delete []pName; //释放内存 pName = NULL; delete []pAppearance; //释放内存 pAppearance = NULL; }stStudent CNode::GetNodeData() //返回结点内容(即学生信息){ return m_stStudent;}void CNode::SetNodeNext(CNode* _Next){ m_Next = _Next;}void CNode::ShowNodeData(){ const char* pNumber = m_stStudent.m_strNumber.c_str(); //用来接收字符串的临时变量 const char* pName = m_stStudent.m_strNumber.c_str(); const char* pAppearance = m_stStudent.m_strAppearance.c_str(); cout << "学生学号: " << pNumber << " " << "姓名: " << pName << " " << "性别: " << m_stStudent.m_chSex; cout << "出生年月: " << m_stStudent.m_stData.m_nYear << "," << m_stStudent.m_stData.m_nMonth << "," << m_stStudent.m_stData.m_nDay; cout << "政治面貌: " << pAppearance << "五门课成绩: " << endl; cout << "m_dSubject_1: "<< m_stStudent.m_stResult.m_dSubject_1<< endl; cout << "m_dSubject_2: "<< m_stStudent.m_stResult.m_dSubject_2<< endl; cout << "m_dSubject_3: "<< m_stStudent.m_stResult.m_dSubject_3<< endl; cout << "m_dSubject_4: "<< m_stStudent.m_stResult.m_dSubject_4<< endl; cout << "m_dSubject_5: "<< m_stStudent.m_stResult.m_dSubject_5<< endl;}CNode* CNode::GetNodeNext(){ return m_Next;}#include "CLinkList.h"#include "CNode.h"void Text(); //测试函数声明int main(){ cout << "这是mian函数" << endl; Text(); return 0;}void Text(){ cout << "这个是测试函数" << endl; LinkList* pList = new LinkList; //创建一个内存链表对象 cout << "------------------CreateList-----------------------------" << endl; pList->CreateList(); //初始化链表的函数成员 pList->ShowList(); cout << endl; cout << "------------------GetListNode-----------------------------" << endl; LinkNode* pNode = NULL; //定义一个临时的结点类指针用于检测查找函数成员 pNode = pList->GetListNode(3); //按位置查找指定位结点的成员函数的测试 if(pNode) { cout << "用按位置查找的方法找到了指定位结点" << endl; } else { cout << "对不起,用按位置查找的方没有找到指定位结点" << endl; } cout << endl; cout << "------------------InsertList-----------------------------" << endl; pList->InsertList(0); //插入结点的成员函数的测试 pList->ShowList(); cout << endl; cout << "------------------DeleteList-----------------------------" << endl; pList->DeleteList(0); //删除某一结点的成员函数的测试 pList->ShowList(); cout << endl; cout << "------------------GetHeadList-----------------------------" << endl; pNode = NULL; pNode = pList->GetHeadList(); //获取头指针的成员函数的测试 if(pNode) { cout << "已经返回了头指针" << endl; } else { cout << "对不起,头指针为空" << endl; } cout << endl; cout << "------------------GetHeadList-----------------------------" << endl; pList->SetListData(3); //设置链表中某一结点的值的成员函数的测试 pList->ShowList(); cout << endl; cout << "------------------GetListData-----------------------------" << endl; cout << "pList->ShowListData(3) ="; pList->ShowListData(3); //获取链中某一结点值的成员函数的测试 cout << endl; cout << "------------------DestroyList(3)-----------------------------" << endl; pList->DestroyList(3); //销毁第3位置以后链表的成员函数的测试 pList->ShowList(); cout << endl; cout << "------------------DestroyList(0)-----------------------------" << endl; pList->DestroyList(0); //销毁第0位置以后链表的成员函数的测试 pList->ShowList(); cout << endl; delete pList; //释放内存 pList = NULL; //指针置空}你的要求太多 , 没仔细看, 我把我给别人写的赋值给你吧 , 我已经写的很全了,程序有问题可以给我留言

课程设计报告要写哪几步,各有什么要求?

、设计过程(方案论证及用EWB模拟分析)。2、理论分析(公式计算,数据分析)。3、将理论值与实际值比较,分析误差。4、电路稳定后测完数据、验收电路板并上交。以上为电子类课程设计报告内容。

算法课程设计报告

实验报告: 1. 需求分析 以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:输入的形式和输出、值的范围;输出的形式;程序所能达到的功能;测试的数据:包括正确的输入和错误的输入及其相应的输出结果。 2. 概要设计 说明程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系。 3. 详细设计 实现概要设计中定义所有数据类型,对每个操作只需要写出伪代码算法(伪代码算法达到的详细程度建议为:按照伪代码算法可以在计算机键盘直接输入高级程序设计语言程序),画出函数的调用关系图。 4. 调试分析 内容包括:调试过程中遇到的问题并且是如何解决的以及对设计实现的回顾讨论和分析;算法的时空分析(包括基本操作和主要算法的时空复杂度的分析)和改进设想;经验和体会等 5. 测试结果 列出测试结果,包括输入的数据和相应的输出数据。这里的测试数据应该完整和严格,最好多于需求分析中所列。 6. 总结 总结可以包括 : 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《算法分析》课程的认识等内容。 7、附录 应附上带详细注释的源程序。在上交资料中请写明:存储结构、基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。

课程设计报告怎么写

课程设计报告主要包括以下几个方面.1.封面(根据自己的个性设计)2.目录3.主界面(介绍这次设计的课题、人员、目标、任务、人员分工)4.主要过程(要告诉别人你的这个作品该怎么用)5.程序流程图(用图来表示主要过程)6.核心源程序(你觉得这个作品它具备的主要功能是什么,就将实现这个功能的代码给COPY下来)7.主要函数(你程序代码里用的函数中你觉得重要的或是难的)8.心得9.附录(你完成这次课程设计参考的书,这个可以多写一点,以示用心认真)我第一次做课程设计时写报告就是这么写的.你参考参考.希望能对你有些帮助

C语言程序设计课程设计报告怎么写啊?有谁有样本吗?谢啦!

我去年自己写过一份课程设计报告,我已经把我写的这份发给你了,你可以参考一下,我当时做的设计是烟花绽放,跟你做的不一样,所以没把我的源代码给你。希望你还是自己好好写吧,不要在乎自己写的怎么样,只要是通过自己努力写出来的东西就要相信自己是最好的!~~~~

老师要求写一份C语言课程设计报告,有一个问题是系统运行环境与数据库设计,应该怎么回答?

1.开场自我介绍, 简单讲述我大学的学习的历程,成果和感想。(1分钟)我一直都感慨本年级许多同学在大一时因为缺乏好指引,在一开始就对编程很害怕,对计算机的学习没有开好头,动手能力长期跟不上,空会理论,不会实践,一直拖累到大四,最终选择忍痛考研或者抱怨找工作难。我也帮助过不少在这方面比较弱的同学,但是总是因为基础没打好导致难以提高。我也一直希望学校能在大一的时候就让同学们明白学习的重要性,打好扎实的专业基础。现在终于有一次这样的机会站在这里,为指引大家如何在大学专业技术学习的道路上开好头做点贡献。今天我将结合我自身的经历和我对计算机的理解,我对编程的感悟,我对大学学习的认识,给大家做报告。首先问三个问题:1) qq聊天软件是用什么语言写的(第二天要换个问题)答对的演讲结束后留下来,我要亲自给他传授宝贵经验,没人答的话,很遗憾2) 谁玩电脑游戏比较牛恩,人很多,大家很踊跃,很好展示下我写的人工智能黑白棋游戏,声明真正的编程高手基本从来不玩游戏(结合大四同学长期沉迷游戏最后找不到工作的例子,说明一个严肃的问题,只会玩游戏没有用,会做游戏才牛,鼓励大家努力学习,让会玩游戏的同学也热爱编程,最后也能自己写游戏)请大家记住:只会玩游戏没有用,会做游戏才牛3) 有没有人对计算机特别感兴趣 (为什么感兴趣)如果有兴趣,对学习计算机有巨大的帮助兴趣是最好的老师,鼓励他们,勉励其他人,兴趣是可以培养的,要学会培养兴趣2.概述计算机"科学"与"技术" 包含两个层面 "科学" 指计算机硬件、软件与应用的理论知识 理论的学习"技术" 指软件开发、工程实践等技能与方法 能力的培养我主要讲的是如何学习技术(计算机技术) 讲之前 澄清一个观点 计算机技术 不等于 编程技术编程只是一个工具,编程没学好不代表你技术就学不好计算机技术应该是与计算机软件、硬件和网络三个部分相关的各种科技成果和应用的综合,包括了多媒体,数据库,操作系统,嵌入式系统,计算机安全,计算机网络,计算机管理和维护,计算机应用,人工智能,模式识别,管理信息系统等,在我们生活的方方面面计算机技术几乎无处不在。(举几个例子)在现在社会,它几乎与我们的生活息息相关。(大学和高中的学习方式的区别)(学好技术的重要性)在大学,学习的方式与高中或小学是有很大的区别的,大学更大,大学更自由,不再是完全跟着老师,不再是只要吃透了老师教授的内容就万事大吉了,从我这一届的情况看,许多同学特别是女生在大学还沿袭着高中的学习方式,勤奋刻苦,天天自习,非常认真,上课笔记做得秘密麻麻,把理论学得非常扎实,但是却严重地忽略了实践能力的培养,理论考试分数很高,但课程设计做不出东西来,显然这种学习方式是不对的,这和高中的偏科又有什么本质区别呢。我觉得理论的学习和技术的学习是同等重要的,二者都不应该轻视,没有侧重点是不可能的,至于如何侧重,如何在二者之间找到平衡点就取决于你自己的人生目标了。如果你喜欢研究理论,以后想继续读研深造可以稍微偏向理论,把理论基础打得扎实一些,毕业以后可以留校任教或到科研院所去发展。如果你想走技术路线,那么你就可以稍稍偏向技术,在不落下理论学习的情况下,把技术学好学精,毕业以后可以去IT企业发展,也可以自己创业,有了一身技术不怕没饭吃。切莫完全忽视技术最后变成书呆子或完全不顾理论最后只是个代码搬运工。大家每个人,从现在开始就要下决心学好技术,那么,如何学好技术呢。3.如何学好技术3.1制定好的学习计划3.1.1大一大二:打好基础3.1.1.1计算机方面的基本技能的学习包括计算机众多的应用技术的学习 和 常见的硬件维护(大家应该尽量多多掌握计算机方面的基本技能,如word excel ppt access* photoshop* flash* dreamveaver* 结合我的经历讲讲,我大一在自己没有电脑的情况下把这些基本全学了 举一个考研的同学不会在excel里找自己的名字的例子,如果这些最基本的技能都不会,只能说计算机还没入门)大二有电脑之后,终于有机会整自己的电脑了,要学习常见的常见的硬件维护(系统崩溃了怎么办,如何安装操作系统,如何分区等)3.1.1.2专业理论基础和编程基础的学习技术是将理论运用到实践中去,不能轻视理论,没有理论何来应用。计算机"科学"与"技术" 中的"科学"和"技术"应该是相互依赖和促进的。先学好《高级语言程序设计》《数据结构》等专业课,理论基础扎实了,学应用性技术就更容易了编程基础:学精C++(为什么),可以考虑过渡到 java 或 C# (最好只学一个,为什么)(编程的学习会在后面再详细讲)3.1.1.3珍惜这两年大学自由学习的黄金时间 (曾经和一家公司的经理开玩笑,总经理感慨的说现在在大学里找一个又能力的学生来帮忙做项目真是很难啊,我说是呀,大学四年,大一的刚进校还在打基础没法做,大二的还刚起步没足够的能力做,大三的课程会很紧没时间做,大四的找工作的找工作去了,考研的考研去了,没人做了),大学四年,实则三年,希望大家不要把最宝贵的时间荒废在游戏和娱乐上3.1.2大三:深入学习,确定方向(技术方向,职业规划)+多多实践到了大三,各种专业课会非常多,包括很重要的操作系统,汇编,组成原理,编译原理,数据库,计算机网络,软件工程等等,大家将深入学习计算机的各大核心课程。这时大家的基础打得也差不多了,可以选择一门自己比较感兴趣的技术并确定自己的技术的一个方向,比如选择j2ee, .NET,WEB技术,数据库技术,嵌入式,linux内核开发等等。当然也会有非常丰富多彩的专业选修课可以选择学习。这段时间大家可以利用课程设计的机会好好锻炼自己。3.1.3大四:实践和进步大四,如果不打算考研的同学,工作有了着落之后,可以试着做项目,大四基本没什么课,相对轻松,这段时间是获得经验,银子和巨大的进步黄金时期。3.2重视专业课的学习要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络,离散数学等基础课程学好除非你足够牛,请务必认真听专业课,有些课像《数据结构》,《编译原理》,《组成原理》,《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月3.3培养好的思维能力数学是锻炼是思维的最好的东西了,他是你思考问题的最得力的工具,他体现着你的思想,在编程中会思考才能编出好的程序。此外还要注重离散数学,数值分析,线性代数,数字逻辑等等课程的学习,他们对培养好的思维能力大有裨益3.4激励创新意识创新太重要了,不管在哪个学科都重要,计算机同样需要3.5培养独立分析问题和解决问题的能力 遇到问题,要先学会独立思考,不能凡事依赖他人,尽量自己解决,在独立解决问题过程中能获得更大的进步,实在不能解决再请教别人也不迟3.6培养自学能力和快速获取知识的能力自学能力之重要(大学和高中的学习方式的区别)可以说高中是靠老师,大学是靠自己,要做到严格自律,自我约束,必须要学会自学学习的过程也是学会学习的过程要充分利用图书馆和网络上的丰富学习资源, 要培养计算机新知识,新技术方面的自学习能力,要学会如何通过网络,书籍,文献,独立地快速获取自己需要的知识和信息3.7培养团队协作精神在一个大型项目中,往往要求各种参与者密切配合才能取得成功。大家要从现在就开始注重团队协作精神的培养,要学会与人沟通,善于表达,要注意提高自己的综合素质,成为综合型人才。3.8学好英语包括现在的大学英语和日后的专业英语。也许有人会问,英语和技术有什么大的关系吗。大家是否知道,计算机的发展飞速,国际上新技术不断涌现,如果今天国外出现了一门新的技术,或者国外某本技术书籍出了新版本,相关资料的中文的翻译不知道要等到什么猴年马月才会出来,现在的许多出版也有了越来越多的英文原版书。大家要学好英语,培养阅读专业外语资料的能力,开始会看不懂,看多了自然熟练了。(讲下四六级,四级最好一次就过,六级在大二下结束前最好过)3.9适时关注新技术了解学科发展动态,跟上时代步法3.10勤学苦练,持之以恒学好技术不是一蹴而就的,要长期坚持。4.无5.无6.关于编程的学习6.1为什么要学习编程编程是软件开发的基础,学习计算机,只会编程是千万不行的,但是开发软件,不会编程是万万不行的(结合本年级的情况将一下现状,学习的重要性等)6.2编程真的那么难学吗(讲讲编程的苦与乐)编程真的那么可怕,那么枯燥,那么没意思吗?假如真是这样,为什么世界上还有那么多优秀的人乐此不疲。其实编程并不可怕,可怕的是你的心态。编程固然很苦,编程时长时间对着屏幕,对身体不好,而且,经常因为考虑不周,会遇到各种各样的错误和麻烦,初学者处处容易受挫。但是其实编程是很有趣的,编程中充满着无穷的快乐首先,你通过编程得到了想要的成果的过程是一种创造的快乐(编出了有用的东西的那一刻会有一股美好的成就感)其次,你开发了有用的软件可以方便自己或他人,方便自己,是一种享受的快乐,方便他人,是一种奉献的快乐再次,假如你开发的软件得到了用户的认可或好评,会有一种欣慰和满足感还有,你可以根据自己的意愿写你想要的东西,经过自己的努力亲自实现你心中的愿望然后,编程也是一个挑战自我的过程,遇到困难想办法解决的过程是思考的过程,思维能得到锻炼最后,在代码中有一种看不见的美,就像诗一样,美景全是你的,你可以随心所欲编程真的非常有趣,它不仅满足了我们内心深处进行创造的渴望,让人头脑变得灵活,而且还愉悦了每个人内在的情感。6.3学好编程的建议6.3.1请热爱编程如果想成为编程牛人的话,请热爱编程。有兴趣是最好了,没兴趣也没关系,可以慢慢培养,当你感受到了编程的乐趣的时候你会爱上它。6.3.2不要畏难很多初学者往往都在遇到许多困难,遭受多次挫折后,自信心受到打击从而对编程丧失兴趣这些困难每个人都会遇到,我在初学编程时也遇到过,关键是看你用什么心态对待,是想办法解决困难还是选择逃避。很多问题其实是有很多解决方法的。譬如看书,遇到看不懂的部分,可以暂时跳过,先往后看,看完后面的之后,再回头看前面跳过的部分往往会有一种豁然开朗的感觉。再比如,编程调试时死活找不到错误会很郁闷,这个时候很多同学会束手无策,其实只要在程序不同的地方加上输出语句,然后运行看有哪些输出,这样一步步缩小错误的范围从而确定错误发生的位置。等等。。。不要畏惧困难,要用你的智慧战胜它。6.3.3多实践,多交流学习编程的秘诀是:编程,编程,再编程;(讲讲如何动手实践)在学校的实验室就算你做错一万次程序都不会有人骂你,如果在公司你试试看!所以多去实验室上机,现在错得多了,毕业后就错得少了。多实践,多从失败中吸取教训,积累经验。要勤奋,三天打鱼两天晒网是学不好的,学会了的东西一段时间不用就容易忘记,实践得越多才能记得越牢。现在大家是大一,可能有人会说没有电脑不方便,其实实验室不是只有在老师安排的实验时间才可以去的,它是是面向计算机专业的学生免费开放的,大家有时间就去实验机房练习,只要拿着学生证,或者干脆直接跟那个阿姨说你是计算机的就行了。航海楼7楼的机房和图书馆电子阅览室也是可以的。我大一的时候甚至还到阳光网吧编程呢。到大二大三的时候课程设计就会多起来,大家一定要自己动手做,不要去网上搜一个就完事了。与人交流,分享自己编程中的乐趣和经验,共同进步。6.3.4多阅读书籍和代码编程不是非要在电脑上才能学的,阅读书籍和书中的代码也是一种学习方式,自己还可以尝试着改进那些代码,最后可以把自己的成果拿到电脑上调试千万不要忽视书后面的习题6.3.5养成良好习惯细节很重要要细心,沉下心来编程,戒骄戒躁养成良好习惯,注重编程风格,尽量写代码注释,把写过的代码保留下来,以后会有用6.3.6善于思考遇到问题动脑筋解决6.3.7注重基础打好编程基础,除了熟悉基本的语法之外,要深刻理解指针,引用,面向过程思想,类,模板,标准库,接口,继承机制,面向对象思想等等,课后习题尽量全做一下 刚才说了,有精力的可以学学 photoshop图像处理, flash动画制作,3dmax或maya三维建模,dreamveaver网页设计,但是不要因为他们花费过多的时间而影响了你基础的学习,那些都是些应用技术,你学会了更好,不会也没什么丢人的,基础打好了,以后学啥都轻松。在基础没打好的情况下,不要觉得你编的程序只能在黑白的DOS窗口了运行就去学VC做漂亮的窗口,3d程序很有意思就去看OpenGL或DirectX,那些都属于高级应用,没有基础学起来会很吃力。基础要扎实,不要觉得C#中没有指针就扔掉C++, 不要今天看C#,明天搞java要有明确的方向,计算机技术的发展实在太快,新技术不断涌现,了解一下就可以了,不要随波逐流,要沉得住气6.3.8选好开发环境选择一种适当的开发环境并熟悉它就可以了,不要今天摆弄Visual Studio,明天钻研Eclipse,后天来个netbeans,在工具的使用的学习上白白浪费时间。6.3.9选好编程语言我在选择语言时,走过一些弯路,浪费了一些精力,我在这里选出一些主流编程语言,对语言特性与环境稍作介绍,希望可以帮助大家,让大家尽早了解与选择,少走弯路C(多用在性能要求较高的场合,如操作系统,嵌入式等)C++(应用最广泛、成熟,强大而复杂,兼有性能高和易于构建大型程序的优点,基本是衡量一个国家软件产业发达程度的核心基础)Java(著名的SUN公司推出的,面向对象、安全、跨平台、强大稳健,需要java虚拟机的支持)C#(微软推出的完全面向对象,运行在 .NET Framework 环境中新兴、易学、强大语言)Python(新兴的面向对象脚本语言,跨平台,语法清新易于使用,代码优美得像数学一样,非常容易学)PHP (目前最流行、强大、稳健的动态网站开发脚本语言,语法类似C++)ActionScript (Flash的编程脚本,最新版支持面向对象,能基于Flex开发RIA应用)除此之外,还有vb, vb.net, asp.net, jsp, asp, ruby, Javascript等这么多五花八门的语言,大家可能都会觉得眼花缭乱了。其实各种语言之间只是语法不同,编程思想都是相通的,学精一门,了解多门是上策。" 程序=算法+数据结构 " 其中并没有编程语言,说明语言只是程序员与计算机的编译器沟通的一种工具,程序员用某种语言来表达程序的逻辑结构,计算机中相应的编译器或解释器理解这种语言,编译得到二进制程序或者直接解释执行。以上这些语言我在大学前三年全部学过了,有的学得很深,有的很浅。因为人的精力毕竟有限,很多语言学过了之后根本就很少用到,几乎是白学了,现在我深深的体会到,语言并不是学得越多越好,与其泛而不精不如有针对性的先精通一门,其他的触类旁通。就大家现在的情况,希望大家把当前正在学习的C++学好,学到一定程度的时候,可以继续深入的研究C++的各种库,也可以从上面选择感兴趣的新语言学习,如果把C++基础打好了,后面的学习就会容易得多。最流行的语言不一定是最好的语言,用的人最多的语言也不一定是最好的语言。请大家记住,没有最好的语言,只有最适合某个领域的语言, 在不同的环境下选择不同的语言就可以了。6.3.10重视数据结构和算法 理论上,计算机的任何编程语言都有可能会被淘汰,随着时间的推移和计算机软硬件的飞速发展,不断会有新的语言产生和和旧的语言过时,但不会过时的是数据结构和优秀的算法。真正的高手应该是善于设计优秀的数据结构和算法的,应该是具有独立分析和解决问题的能力并利用计算机程序来实现的,他的思想应该是超脱语言、在更高处的一种升华。如果某一天,你深切的体会到,真正重要的不是什么语言而是思想的时候,说明你可以出师了。

工程技术方案价值分析综合课程设计报告怎么写

探索其工程技术方案对市场的影响

c语言课程设计报告模板

我去年自己写过一份课程设计报告,我已经把我写的这份发给你了,你可以参考一下,我当时做的设计是烟花绽放,跟你做的不一样,所以没把我的源代码给你

作业,数字钟课程设计报告

数字电子技术课程设计报告题 目: 数字钟的设计与制作 学 年学 期: 专 业 班 级:学 号: 姓 名: 指导教师及职称:讲师时 间: 地点:设计目的熟悉集成电路的引脚安排.掌握各芯片的逻辑功能及使用方法.了解面包板结构及其接线方法.了解数字钟的组成及工作原理.熟悉数字钟的设计与制作.设计要求1.设计指标时间以24小时为一个周期;显示时,分,秒;有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时;为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号.2.设计要求画出电路原理图(或仿真电路图);元器件及参数选择;电路仿真与调试;PCB文件生成与打印输出.3.制作要求 自行装配和调试,并能发现问题和解决问题.4.编写设计报告 写出设计与制作的全过程,附上有关资料和图纸,有心得体会.设计原理及其框图1.数字钟的构成数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路.由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定.通常使用石英晶体振荡器电路构成数字钟.图 3-1所示为数字钟的一般构成框图.图3-1 数字钟的组成框图⑴晶体振荡器电路 晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路.⑵分频器电路 分频器电路将32768Hz的高频方波信号经32768()次分频后得到1Hz的方波信号供秒计数器进行计数.分频器实际上也就是计数器.⑶时间计数器电路 时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器.⑷译码驱动电路 译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流.⑸数码管 数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管.2.数字钟的工作原理1)晶体振荡器电路晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定.图3-2所示电路通过CMOS非门构成的输出为方波的数字式晶体振荡电路,这个电路中,CMOS非门U1与晶体,电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波.输出反馈电 阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器.电容C1,C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能.由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确.晶体XTAL的频率选为32768HZ.该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数.从有关手册中,可查得C1,C2均为30pF.当要求频率准确度和稳定度更高时,还可接入校正电容并采取温度补偿措施.由于CMOS电路的输入阻抗极高,因此反馈电阻R1可选为10MΩ.较高的反馈电阻有利于提高振荡频率的稳定性.非门电路可选74HC00.图3-2 COMS晶体振荡器2)分频器电路通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频.通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现.例如,将32768Hz的振荡信号分频为1HZ的分频倍数为32768(215),即实现该分频功能的计数器相当于15极2进制计数器.常用的2进制计数器有74HC393等.本实验中采用CD4060来构成分频电路.CD4060在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便.CD4060计数为14级2进制计数器,可以将32768HZ的信号分频为2HZ,其内部框图如图3-3所示,从图中可以看出,CD4060的时钟输入端两个串接的非门,因此可以直接实现振荡和分频的功能.图3-3 CD4046内部框图3)时间计数单元时间计数单元有时计数,分计数和秒计数等几个部分.时计数单元一般为12进制计数器计数器,其输出为两位8421BCD码形式;分计数和秒计数单元为60进制计数器,其输出也为8421BCD码.一般采用10进制计数器74HC390来实现时间计数单元的计数功能.为减少器件使用数量,可选74HC390,其内部逻辑框图如图 2.3所示.该器件为双2—5-10异步计数器,并且每一计数器均提供一个异步清零端(高电平有效).图3-4 74HC390(1/2)内部逻辑框图秒个位计数单元为10进制计数器,无需进制转换,只需将QA与CPB(下降沿有效)相连即可.CPA(下降没效)与1HZ秒输入信号相连,Q3可作为向上的进位信号与十位计数单元的CPA相连.秒十位计数单元为6进制计数器,需要进制转换.将10进制计数器转换为6进制计数器的电路连接方法如图3-5所示,其中Q2可作为向上的进位信号与分个位的计数单元的CPA相连.图3-5 10进制——6进制计数器转换电路分个位和分十位计数单元电路结构分别与秒个位和秒十位计数单元完全相同,只不过分个位计数单元的Q3作为向上的进位信号应与分十位计数单元的CPA相连,分十位计数单元的Q2作为向上的进位信号应与时个位计数单元的CPA相连.时个位计数单元电路结构仍与秒或个位计数单元相同,但是要求,整个时计数单元应为12进制计数器,不是10的整数倍,因此需将个位和十位计数单元合并为一个整体才能进行12进制转换.利用1片74HC390实现12进制计数功能的电路如图3-6所示.另外,图3-6所示电路中,尚余-2进制计数单元,正好可作为分频器2HZ输出信号转化为1HZ信号之用.图3-6 12进制计数器电路4)译码驱动及显示单元计数器实现了对时间的累计以8421BCD码形式输出,选用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,选用CD4511作为显示译码电路,选用LED数码管作为显示单元电路.5)校时电源电路当重新接通电源或走时出现误差时都需要对时间进行校正.通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可.根据要求,数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中.图3-7所示即为带有基本RS触发器的校时电路,图3-7 带有消抖动电路的校正电路6)整点报时电路一般时钟都应具备整点报时电路功能,即在时间出现整点前数秒内,数字钟会自动报时,以示提醒.其作用方式是发出连续的或有节奏的音频声波,较复杂的也可以是实时语音提示.根据要求,电路应在整点前10秒钟内开始整点报时,即当时间在59分50秒到59分59秒期间时,报时电路报时控制信号.报时电路选74HC30,选蜂鸣器为电声器件.元器件1.实验中所需的器材5V电源.面包板1块.示波器.万用表.镊子1把.剪刀1把.网络线2米/人.共阴八段数码管6个.CD4511集成块6块.CD4060集成块1块.74HC390集成块3块.74HC51集成块1块.74HC00集成块5块.74HC30集成块1块.10MΩ电阻5个.500Ω电阻14个.30p电容2个.32.768k时钟晶体1个.蜂鸣器.2.芯片内部结构图及引脚图图4-1 7400 四2输入与非门 图4-2 CD4511BCD七段译码/驱动器图4-3 CD4060BD 图4-4 74HC390D 图4-5 74HC51D 图4-6 74HC303.面包板内部结构图面包板右边一列上五组竖的相通,下五组竖的相通,面包板的左边上下分四组,每组中X,Y列(0-15相通,16-40相通,41-55相通,ABCDE相通,FGHIJ相通,E和F之间不相通.个功能块电路图一个CD4511和一个LED数码管连接成一个CD4511驱动电路,数码管可从0---9显示,以次来检查数码管的好坏,见附图5-1.图5-1 4511驱动电路利用一个LED数码管,一块CD4511,一块74HC390,一块74HC00连接成一个十进制计数器,电路在晶振的作用下数码管从0—9显示,见附图5-2.图5-2 74390十进制计数器利用一个LED数码管,一块CD4511,一块74HC390,一块74HC00和一个晶振连接成一个六进制计数器,数码管从0—6显示,见附图5-3.图5-3 74390六进制计数器利用一个六进制电路和一个十进制连接成一个六十进制电路,电路可从0—59显示,见附图5-4.图5-4 六十进制电路利用两个六十进制的电路合成一个双六十进制电路,两个六十进制之间有进位,见附图5-5.图5-5 双六十进制电路利用CD4060,电阻及晶振连接成一个分频——晶振电路,见附图5-6.图5-6 分频—晶振电路利用74HC51D和74HC00及电阻连接成一个校时电路,见附图5-7.图5-7 校时电路利用74HC30和蜂鸣器连接成整点报时电路.见附图5-8.图5-8 整点报时电路利用两个六十进制和一个十二进制连接成一个时,分,秒都会进位的电路总图,见附图5-9.图5-9 时,分,秒的进位连接图总接线元件布局简图,见附图6-1芯片连接图见附图7-1八,总结设计过程中遇到的问题及其解决方法.在检测面包板状况的过程中,出现本该相通的地方却未通的状况,后经检验发现是由于万用表笔尖未与面包板内部垂直接触所至.在检测CD4511驱动电路的过程中发现数码管不能正常显示的状况,经检验发现主要是由于接触不良的问题,其中包括线的接触不良和芯片的接触不良,在实验过程中,数码管有几段二极管时隐时现,有时会消失.用5V电源对数码管进行检测,一端接地,另一端接触每一段二极管,发现二极管能正常显示的,再用万用表欧姆档检测每一根线是否接触良好,在检测过程中发现有几根线有时能接通,有时不能接通,把接触不好的线重新接过后发现能正常显示了.其次是由于芯片接触不良的问题,用万用表欧姆档检测有几个引脚本该相通的地方却未通,而检测的导线状况良好,其解决方法为把CD4511的芯片拔出,根据面包板孔的的状况重新调整其引脚,使其正对于孔,再用力均匀地将芯片插入面包板中,此后发现能正常显示,本次实验中还发现一块坏的LED数码管和两块坏的CD4511,经更换后均能正常显示.在连接晶振的过程中,晶振无法起振.在排除线与芯片的接触不良问题后重新对照电路图,发现是由于12脚未接地所至.在连接六进制的过程中,发现电路只能4,5的跳动,后经发现是由于接到与非门的引脚接错一根所至,经纠正后能正常显示.在连接校正电路的过程中,出现时和分都能正常校正时,但秒却受到影响,特别时一较分钟的时候秒乱跳,而不校时的时候,秒从40跳到59,然后又跳回40,分和秒之间无进位,电路在时,分,秒进位过程中能正常显示,故可排除芯片和连线的接触不良的问题.经检查,校正电路的连线没有错误,后用万用表的直流电压档带电检测秒十位的QA,QB,QC和QD脚,发现QA脚时有电压时而无电压,再检测秒到分和分到时的进位端,发现是由于秒到分的进位未拔掉所至.在制作报时电路的过程中,发现蜂鸣器在57分59秒的时候就开始报时,后经检测电路发现是由于把74HC30芯片当16引脚的芯片来接,以至接线都错位,重新接线后能正常报时.连接分频电路时,把时个位的QD和时十位的1脚断开,然后时十位的1脚接到晶振的3脚,时十位的3脚接到秒个位的1脚,所连接的电路图无法正常工作,时十位从0-9的跳,时个位只能显示一个0,在这个电路中3脚的分频用到两次,故无法正常显示,因此要把12进制接到74HC390的一个逻辑电路空出来用于分频即可,因此把时十位的CD4511的12,6脚接地,7脚改为接74HC390的5脚,74HC390的3,4脚断开,然后4脚接9脚即可,其中空出的74HC390的3脚就可用于2Hz的分频,分频后变为1Hz,整个电路也到此为正常的数字钟计数.2.设计体会在此次的数字钟设计过程中,更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法.在连接六进制,十进制,六十进制的进位及十二进制的接法中,要求熟悉逻辑电路及其芯片各引脚的功能,那么在电路出错时便能准确地找出错误所在并及时纠正了.在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的,例如仿真的连接示意图中,往往没有接高电平的16脚或14脚以及接低电平的7脚或8脚,因此在实际的电路连接中往往容易遗漏.又例如74HC390芯片,其本身就是一个十进制计数器,在仿真电路中必须连接反馈线才能正常显示,而在实际电路中无需再连接,因此仿真图和电路连接图还是有一定区别的.在设计电路的连接图中出错的主要原因都是接线和芯片的接触不良以及接线的错误所引起的.3.对该设计的建议此次的数字钟设计重在于仿真和接线,虽然能把电路图接出来,并能正常显示,但对于电路本身的原理并不是十分熟悉.总的来说,通过这次的设计实验更进一步地增强了实验的动手能力.

音频功率放大器实验报告_音频功率放大器课程设计报告

本科实验报告 课程名称:姓名:学院:系:专业:学号:指导教师: 电子电路安装与调试 信息与电子工程学院 电子科学与技术 一、实验目的 二、实验任务与要求 三、实验方案设计与实验参数计算(3.1 总体设计、3.2 各功能电路设计与计算、3.3完整的实验电路u201eu201e) 四、主要仪器设备 五、实验步骤与过程 六、实验调试、实验数据记录 七、实验结果和分析处理 八、讨论、心得 一、实验目的 1、学习并初步掌握音频功率放大器的设计、调试方法。 2、学习并掌握电路布线、元器件安装和焊接。 3、掌握音频功率放大器各项主要性能及指标的调试方法。 二、实验任务与要求 1、设计 (1)设计一音频功率放大器,使其达到如下主要技术指标: 负载阻抗:R L =4Ω 额定功率:P o =10W 带宽:BW ≥(50~15000) Hz 音调控制: 低音:100Hz ±12dB 高音:10kHz ±12dB 失真度:γ≤3% 输入灵敏度:U " i (2)设计满足以上设计要求的稳压电源。 2、在Altium Designer中画出原理图, 并进行PCB 板的编辑与设计。 3、根据给定的功率放大器的原理图(三),做如下工作: (1)分析计算晶体管前置放大器的直流工作电压、电流、输入电阻、输出电阻、各级放大器的交流增益。 (2)分析音调控制电路的工作原理,计算4个极端情况下的交流增益。 (3)安装实验电路板 (4)调试和测试实验电路的增益、频响特性曲线、输入电阻和输出电阻、以及改变某 实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ 些电路参数后的性能测试(电路图中括号内的数字)。 (5)分析实验数据,并与理论计算值比较,讨论二者之间的误差和产生误差的原因。 三、实验原理和实验方案设计 作为音频放大器的音源部分,其输出电平既有高至数百毫伏(如调谐器:50~500mV,线路输出:100~500mV),也有低至1mV (如话筒:1~5mV),相差达几百倍。音频放大器就是要把这些不同大小的音源放大后驱动喇叭,发出同等强度的声音。因此,根据不同音源 的需要,可以画出音频放大器的原理框图,如图1所示。 P.2 装订线 图1音频功率放大器框图 1、各部分电路电压增益的确定 根据额定输出功率P o =10W和负载R L =4Ω,可求得输出电压为 : V o ===6.32V 所以整机中频电压增益为:A O um = V V =6.32V =63.2 i 100mV 通常前置级产生的噪声对整个系统的影响最大,因此前置级的增益不宜太高,一般选取该级增益为:A um 1=5~10 对音调控制电路无中频增益要求,一般选为:A um 2=1 实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ 因此,功放输出级电压增益应满足下式要求:A um 1A um 2A um 3≥A um 对于话筒放大器,话筒输出约为5mV ,而音源线路输出约为100mV ,因此,话筒放大器的电压增益应为:A 100mV umic ≥ 5mV =20。 确定A um 1=10,A um 2=1,A um 3=6.32,A umic =20。 P.3 2、功放电源电压的确定 为保证电路安全可靠工作,通常电路的最大输出功率P oM 比额定输出功率要大一些,一般取 P oM =1.5P o 。 最大输出电压V om = ≈ 7.75V ,峰峰值V pp =om =21.9V 。 考虑到功率管的饱和压降和串联电阻,电源电压必须大于输出峰-峰值电压。使用双电源,则为±12~14V。 3、话筒放大器的设计 话筒放大器电路图与给出图三相同,采用共射极放大电路放大,射极跟随器输出。 图2话筒放大电路 3.1 I c 1、I c 2的确定 电路的噪声系数与晶体管的工作点有关,晶体管I c 的选择应考虑噪声系数,9014型晶体管一般取几百微安。 实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ 这里取900微安。 3.2 U C 1、U E 2的选择 一般选取U C 1≈E C 1/2,U E 2≈E E 2/2 3.3 R 4、R 6、R 7的选取 P.4 R E C 1-U C 1I =E C 1,R E C 1 4= I E 2≈I C 2) 。 C 12I C 16+R 7≈2I C 1 R 4=5KΩ,R 6=R 7=2.5KΩ 3.4 R 2的确定 增益A u 1=R 4/R 2=10, R 2=500Ω 3.5 R 8、C 4的确定 R 3~5 8一般选取几百欧姆至几千欧姆,C 4≥ 2πf =3uF L R 8 取R 8为5.1K ,C 4为3.3uF 。 3.6 补偿电容C 1的选择 C 1为防止高频自激之用,一般取几十至几百pF 。 取C 1为270pF 。 3.7 耦合电容C 2 C ~5 2≥ 32πf ,这里C 0取2.2uF 。 L R i 1 3.8 R 1的选择 R 1的取值应与话筒的输出阻抗相当。由图知为18K 。 3.9 R 3、R 5为反馈电路,这里R 3=R 5=20K。 C 6隔直,为2.2uF 。 实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ 4、音调控制部分的设计 4.1选择电路形式及其工作原理 P.5 其增益为A =- Z f Z 。 i 当信号频率不同时,Z i ,Z f 也不同,从而增益随信号频率的改变而改变。 电路图如图所示。 图3音调控制电路 其中C28、C29较大,当低频时起作用,高频时可看作短路。C13、C14较小,低频时刻看作开路。 所以在低频时,C13、C14看作开路,又因为,运放的开环增益很大,输入阻抗很高,因此R17的影响可忽略不计。 运放增益A R 15-2P 1/j ωC 29+R 18 uL = R P 1/j ωC 。 15-128+R 14 实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ 分析极端情况,滑动变阻器滑到左端,A 29+R 18 uL = R 15P 1/j ωC R ,增益最大,滑动 14 变阻器滑到右端,A R 18 uL = R ,增益最小,可以看出滑动变阻器从左滑到 15P 1/j ωC 28+R 14 右,增益由大变小,在中间时为1,因此R15在低频时实现了低音的提升和衰减。 P.6 在高频时C28、C29看作短路,分析电路可得到与低频时相同的规律,高音的最大衰减量为A 28+R 30 u 2 min = R 30 R ,最大提升量为A u 2 max = R 28+R 30 R 。 30 4.2设计 ①确定转折频率,电路的带宽在50~15KHz之间 f L =f L 1=50Hz , f H =f H 1=15000kHz ②确定滑动变阻器数值。 因为运放的输入阻抗很高,一般R id >500k Ω,所以R15,R28选用100k Ω的线性电位器。 ③ C 28=C 29= 1 2πR =32nF 15f L 1 R R 28 14=R 17=R 18= f /f 1 =11.1K Ω L 2 L 1-④ R 3R 16= f H 2 /f =3.7K H 1-1 C 113=C 14= 2πf nF H 2R =1.416 ⑤C30为综合电容,与运放增益有关,会影响到音调控制的高频截止频率,这里C30为10pF 。 ⑥C31与R19共同组成同相输入的阻抗,平衡偏置电流,C31为1nF ,R19为39K 。 ⑦R29,R30与高音提升的增益有关,设高音增益最高为10,最低为1/10,则 R 29=R 30=11.1K 5、集成功放级设计 5.1根据额定功率Po 和负载RL 的要求来选择集成块。这里Po=10W,RL=4Ω,集成功实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ 放选择TDA2030。 5.2参数确定 功放电路如图所示 P.7 图4集成功放电路 增益为A 1/j ωC 17P R 23 up =1+ 1/j ωC 。 18+R 24 中频段,C17可以视为开路,C18可以视为短路。 低频段,C17可以视为开路。 高频段,C18可以视为短路。 ①R 24的取值范围一般在几十欧姆至几千欧姆均可。取R 24为1K Ω。 ②根据中频增益确定R 23。 A um 3≤A R 23 up = R +1,R 23≥(A um 3-1) R 24=5.32K 24 取R 23为6K Ω。 ③C 17的选取 C 1 17≤ 2πR =1.7nF 23f H 实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ 取C 17为300pF 。 P.8 ④根据低频响应f L 来确定C 18。 C 18≥ 1 2πR =3.2u 24f L 取C 18为4.7u 。 ⑤R21的选取 考虑到差分放大器的平衡性,R21为功放的直流反馈电阻,因此R21=R23=6K。 ⑥D1、D2的作用是为防止输出脉冲电压损坏集成电路,一般选用开关二极管。 ⑦C19、R25 为了使负载喇叭在高频段仍为纯电阻,需要加补偿电阻R25和补偿电容C19,一般选取R25≈RL=4Ω,C 1 19= 2πf =1.3uF H (R L +R 8) ⑧R20,C36 R20为音量控制电阻,控制输入功放的电压,从而控制输出功率,这里取20K 的滑动变阻器。 C36为耦合电容,取10uF 。 6、前置放大电路设计 前置放大电路为运算放大器电路,为一同相放大电路,电路如图所示。 实验名称:音频功率放大器的设计、安装和调试姓名:陈肖苇学号:3140104580_ P.9

求一份C语言课程设计报告要求包括:系统需求分析,总体设计,详细设计,程序调试分析。

发给你了邮箱里

android开发课程设计报告需求分析怎么写

可以做这个~~

求《微机原理与接口技术》课程设计报告

微机接口课程设计实验报告一、实验目的:1. 掌握综合使用基本输入设备,通用接口芯片,专用接口芯片的方法;2. 熟悉并行接口芯片8255的使用与硬件接口方法, 熟悉8255的各种工作方式,掌握8255的编程方法;3. 掌握实时处理程序的编制和调试方法;