版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于可调式稳压器LM的直流稳压电源课程设计自己制作【实用文档】doc文档可直接使用可编辑,欢迎下载
***********************电子技术课程设计总结报告基于可调式稳压器LM的直流稳压电源课程设计自己制作【实用文档】doc文档可直接使用可编辑,欢迎下载题目:运算放大器组成的0-20倍放大器学生姓名:只写一个人的名字系别:电气信息工程系专业年级:2004级电气工程专业1班指导教师:某某某2011年7月基于可调式稳压器LM317的直流稳压电源TAG:可调式稳压器LM317LM317直流稳压电源LM317电源摘要:该设计主要利用可调式稳压器LM317实现直流稳压电源的正负输出可调性.整个电源主要由变压器、整流电路、滤波电路,以及稳压电路几部分组成。其体积小,稳定性好且性价比较高。主要介绍其具体实现及原理,并分析具体硬件电路的工作原理及具体实现方法.结合单片机原理以及其他相关集成电路模块的相关原理实现了直流稳压电源的显示等具体功能.经反复实验,结果表明其具有灵活的可调性,控制效果良好.该电源可广泛运用于电力电子、仪表、控制等实验场合。关键词:可调式稳压器;直流稳压电源;整流电路;滤波电路1、引言:在电子线路的相关应用中,电源是其必不可少的部分,电源系统质量的优劣和性能的可靠性直接决定着整个电子设备的质量.直流稳压电源作为直流能量的提供者,在各种电子设备中有着极其重要的地位,它的性能良好与否直接影响到电子产品的精度、稳定性和可靠性。随着电子技术的日益发展,电源技术也得到了很大的发展,它从过去一个不太复杂的电子线路发展到今天具有较强功能的模块.人们对电源的质量、功能和性能要求也随之变得越来越高.本文介绍一种以可调式稳压器为核心组成的正负输出可调的直流稳压电源.该电源主要由电源变压器、单相桥式整流电路、滤波电路和稳压电路等部分所组成。单向交流电经过这几部分电路后即可转换成正负输出可调的稳定直流电压。在本电源设计中,不仅制作了实用的稳压电源,更是结合单片机原理、汇编语言等学科,提高电源的性能和功能,使电源设备功能更加完善,使用方便,显示直观.初步实现了电子产品的体积小、功能多、性能高、价格低、智能化等方面的功能。2、电路所用核心元器件(1)LM317简介LM317是美国国家半导体公司的三端可调正稳压器集成电路.我国和世界各大集成电路生产商均有同类产品可供选用,是使用极为广泛的一类串连集成稳压器。LM317的输出电压范围是1.2V至37V,负载电流最大为1。5A.它的使用非常简单,仅需两个外接电阻来设置输出电压。此外它的线性调整率和负载调整率也比标准的固定稳压器好。LM317内置有过载保护、安全区保护等多种保护电路。通常LM317不需要外接电容,除非输入滤波电容到LM317输入端的连线超过6英寸(约15厘米)。使用输出电容能改变瞬态响应。调整端使用滤波电容能得到比标准三端稳压器高的多的纹波抑制比。LM317能够有许多特殊的用法。比如把调整端悬浮到一个较高的电压上,可以用来调节高达数百伏的电压,只要输入输出压差不超过LM317的极限就行。当然还要避免输出端短路.还可以把调整端接到一个可编程电压上,实现可编程的电源输出。317稳压块存在一个最小稳定工作电流的问题,可以通过设定R1和R2阻值的大小,而使317稳压块空载时输出的电流大于或等于其最小稳定工作电流,从而保证317稳压块在空载时能够稳定地工作。此时,只要保证Vo/(R1+R2)≥1.5mA,就可以保证317稳压块在空载时能够稳定地工作。上式中的1。5mA为317稳压块的最小稳定工作电流。当然,只要能保证317稳压块在空载时能够稳定地工作,Vo/(R1+R2)的值也可以设定为大于1.5mA的任意值。经计算可知R1的最大取值为R1≈0.83KΩ。又因为R2/R1的最大值为28.6。所以R2的最大取值为R2≈23。74KΩ.在使用317稳压块的输出电压计算公式计算其输出电压时,必须保证R1≥0。83KΩ,R2≤23。74KΩ两个不等式同时成立,才能保证317稳压块在空载时能够稳定地工作。当然在317稳压块的输出端并联泄流电阻R,也可以为317稳压块提供最小稳定工作电流。但是,由于并联的泄流电阻不能随输出电压的变化而变化,如果要保证317稳压块在输出电压为1.25V时,其输出电流大于其最小稳定工作电流,则在317稳压块的输出电压为37V时,流过泄流电阻的电流就太大了,这样不仅浪费了电能,而且增加了317稳压块的负担,不是一种妥当的办法。3、直流稳压电源的实现原理本设计电路主要采用三端可调式集成稳压器LM317,构成正负输出可调的稳压电源电路。本电源电路的原理框图如图1所示,其主要由变压器、整流、滤波、稳压、等部分所组成。4、电路工作原理分析(1)电源变压器由于电源变压器的副边电压有效值将决定后面电路的需要,所以在此应选择输出电压有效值为12V的电源变压器.(2)整流部分该设计采用单相桥式整流电路(桥式KBP307).其由四只二极管组成,其构成原则就是保证在变压器副边电压u:的整个周期内,负载上的电压和电流方向始终不变。为达到这一目的,需要在Uz的正、负半周内正确引导流向负载的电流,使其方向不变,设变压器副边两端分别为a和b,则a为“+”b为“一”时应有电流流出a点,a为“一”b为“+”时应有电流流入a点;相反,a为“+”b为“一”时应有电流流入b点,因而a和b点均应接两只二极管,以引导电流,具体电路原理如图2所示。如果桥式整流电路变压器副边中点接地,就应将两个负载电阻相连接且连接中点接地。根据桥式整流电路的工作原理,当a点为“+”b点为“一”时,Dl、D3导通,D2、D4截止,U01=U2,U02=一U2;而当b点为“+”a点为“一”时,D2、D4导通,D1、D3截止,U01=一U2,U02=U2,这样两个负载上就分别获得正、负电压.若设变压器副边电压u2=U2sinwt,U2为其有效值。当u2为正半周时,电流由a点流出,经Dl、RL、D3流入b点,因而负载电阻RL上的电压等于变压器副边电压,即uo=u2,D2和D4管承受的反向电压为一u2。当u2为负半周时,电流由b点流出,经D2、RL、D4流入a点,负载电阻RL上的电压等于一u2,即uo=一u2,D1、D3承受的反向电压为u2。这样,由于D1、D3和D2、D4两对二极管交替导通,致使负载电阻RL上在u2的整个周期内都有电流通过,而且方向不变,则输出电压uo=|U2sinwt|。(2)滤波电路经过整流后的直流电幅值变化很大,会影响电路的工作性能.可利用电容的“通交流,隔直流”的特性,在电路中并人两个并联电容作为电容滤波器,滤去其中的交流成分.电容滤波电路是最常见也是最简单的滤波电路,在整流电路的输出端(即负载电阻两端)并联一个电容即构成电容滤波电路。滤波电容容量较大,因此一般均采用电解电容,在接线时要注意电解电容的正负极。电容滤波电路利用电容的充、放电作用,使输出电压趋于平滑。如果将两个滤波电容相连接,且连接点接地,就可同时得到输出电压平滑的正负电源。在理想情况下,变压器副边无损耗,二极管导通电压为零,所以电容两端电压相等.而当其上升到峰值后开始下降,电容便通过负载电阻放电,其电压也开始下降,趋势与电容两端电压基本相同.但是由于电容按指数规律放电,所以当其下降到一定数值后,电容将继续通过负载放电,电容两端电压按指数规律缓慢下降.总之,在电容充电时,回路电阻为整流电路的内阻,即变压器电阻和二极管的导通电阻,其数值很小,因而时间常数很小。电容放电时,回路电阻为RL,放电时间常数R。.C通常远大于充电的时间常数。因此滤波效果取决于放电时间。电容愈大,负载电阻愈大,滤波后输出电压愈平滑,并且其平均值愈大。换言之,当滤波电容容量一定时,若负载电阻减小(即负载电流增大),则时间常数RLC减小,放电速度加快,输出电压平均值即下降,且脉动变大。故在此选择一个滤波电容2200。输出电压的平均值U似蝴与放电时间常数RLC有关。RLC越大,电容器放电速度越慢,则输出电压所包含的纹波成分越小,U驭㈣越大.为获得平滑的输出电压,一般取放电时间常数为:式中:T为交流电的周期,在滤波电路放电时间常数满足上式的关系时,可用下式对输出电压的平均值约为电容两端电压的1。2倍。滤波电路输出电压波形难于用解析式来描述,近似估算时,其波形近似为锯齿波,此时脉动系数S可按下式近似估算,其中T为电网电压的周期。当滤波电容选定后,输出电压平均值U0和输出电流平均值I0的关系称为输出特性,脉动系数S和输出电流平均值I0的关系称为滤波特性。电容滤波电路如图3(1).输出特性和滤波特性如图3(2)所示。图3(1)电容滤波电路图图3(2)输出特性级滤波特性曲线表明,电容愈大电路带负载的能力愈强,滤波效果愈好;电流平均值愈大(即负载电阻的RL愈小),电压平均值愈低,S的值愈大。为减小输出电压的脉动成分,采用的滤波电容器的容值越大越好,交流电源的频率越高越好。目前在计算机、电视机等电子设备中采用了高频整流电源,它的滤波电容的容量就比50赫兹工频交流电的滤波电容小得多。(3)稳压部分集成串联型稳压电路有三个引脚,分别为输入端,输出端和公共端,因而称为三端稳压器。按功能可分为固定式稳压电路和可调式稳压电路;前者的输出电压不能进行调节,为固定值;后者可通过外接元件使输出电压得到很宽的调节范围。便于实时控制,此设计采用可调式三端稳压器LM317。LM317可调式三端稳压器有三个引出端,分别为输入端、输出端和电压调整端(简称调整端)。调整端是基准电压电路的公共端,其典型值为1.25V。其典型线性调整率为0。01%,负载调整率为0.1%,80dB的纹波抑制比,其工作温度范围为o℃至+125℃。LM317可调式三端稳压依靠外接电阻来调节输出电压的,为保证输出电压的精度和稳定性,要选择精度高的电阻,同时电阻要紧靠稳压器,防止输出电流在连线上产生误差电压。为了减小电位器上的纹波电压,可在其上并联了一个lo的电容,由于电容容量较大,一旦输入端断开,电容将从稳蘸器输出端向稳压器放电,易使稳压器损坏,因此在稳压器的输入端和输出端之间跨接一个二极管,并置在输出短路时,曦套将向稳压器调熬端放电,并使调整管发射结反偏,为了保护稳压器,故加一个二极管。利用电容可以抵消输入线较长时的电感效应,以防止电路产生壹激振荡,其容量较小,一般小于1,故在此选择0.1。图4LM317的基本应用电路图5LM317稳压电源电路.LM317输出电流为1。5A,输出电压可在1.25—37V之间连续调节,其输出电压由两只外接电阻R1、RP1决定,输出端和调整端之间的电压差为1.25V,这个电压将产生几毫安的电流,经R1、RP1到地,在RP1上分得的电压加到调整端,通过改变RP1就能改变输出电压。注意,为了得到稳定的输出电压,流经R1的电流小于3。5mA。LM317在不加散热器时最大功耗为2W,加上200×200×4mm3散热板时其最大功耗可达15W。VD1(IN4002)为保护二极管,防止稳压器输出端短路而损坏IC,VD2(IN4002)用于防止输入短路而损坏集成电路。安装时注意电容C2应靠近IC的输入端,C3应靠近IC的输出端,这样能更好地抑制纹波。5、设计步骤及电路元件选择电路参数计算如下:大部分元件的选择都有弹性。IC选用LM317或与其功能相同的其它型号(如KA317等,可向售货员咨询).二极管选1N4001-1N4007均可,因为这里涉及到的电压比较小。一般当整流输出电流大时,必须用电解电容滤波稳压;输出电流小时,用一般电容或电解电容滤波都可以,如果对直流输出电压有纹波系数要求或者为了防止高频噪音,用电解电容和小容量无极性电容并联使用效果较好。小容量电容可滤掉脉动直流中的高次谐波,电解电容滤掉大幅值的低频成分,稳压范围宽、效果好.稳压范围宽、效果好。整流滤波电路对电容器的容量和耐压值要求不是太高,一般根据输出电流大小估算电容器的容量,输出电流大,容量就大;电流小,容量就小。但是,容量太大会降低输出电压值,太小则会导致电压脉动大、不稳定.故C1选择耐压大于16V、容量470—2200μF的电解电容均可。C2选用普通的磁片电容即可,容量为10×104=100000PF=0.1μF。C3的选择类似于C1,电阻选用1/8W的小型电阻。图5是由LM317三端可调双电源稳压电路,正输出电压是可调的。电路中的VREF=V31(或V21)=1。2V,R1和R2=(120~240)Ω,为保证空载情况下输出电压稳定,R1和R2不宜高于240Ω。R2和R2的大小根据输出电压调节范围确定。变压器的选择。输出电压为3~6V,最大电流可达100mA,因此变压器的功率必须为6W以上,输出电压为两个15V的变压器(即15*25W的变压器或选用中间抽头的)。6、各部分电路图及其仿真结果(1)单向桥式整流电路图及其仿真结果整流电路的任务是把交流电压转变为直流脉动的电压电路图:仿真结果:(2)电容滤波电路图及其仿真结果电路图:仿真结果:滤波电容C=22uF滤波电容C=470uF时(3)稳压电源电路的电路图及仿真通过调节滑动变阻器Rp1的阻值可得到3~6V的稳定的直流电压电路图:仿真结果:输出电压U2的波形图:输出电压U0的波形图:7、总结本系统主要以三端可调式集成稳压器LM317为核心部件,并结合荜片瓿等原理.该电源具有输出电压范围宽,输出电流大,性能稳定等优点。能较好地进行数字亿的信息显示及智能控制,不仅提高了稳压电源的综合性能,而且能防止负载短路、过载。通过其体设计及实际测试,充分证明了该系统设计方案的可行性程有效性,各项性能指标均达到了预期的要求,广泛适用于各种电子类研究及实验室,积极推进各种电子行业的技术与质量管理事业的快速发展.郑州工业应用技术学院课程设计说明书题目:学生信息管理系统姓名:蔡阳阳院(系):信息工程学院专业班级:14级计算机科学与技术一班学号:1401110107指导教师:张吉同成绩:时间:2021年9月11日至2021年11月14日郑州工业应用技术学院课程设计任务书题目学生信息管理系统专业、班级14级计算机科学与技术一班学号1401110107姓名蔡阳阳主要内容:1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.
基本掌握面向对象程序设计的基本思路和方法;3。
掌握用VC++开发应用程序的的一般步骤和方法;4.
能够利用所学的基本知识,设计一个简单的学生信息管理应用程序,具有以下功能:①实现学生信息的存储,可以用文件来实现。②编程实现学生信息的添加、删除、修改、浏览和查询等功能(必须实现的功能).基本要求:1。
用VC++进行编码,实现应用程序的功能.注重编码质量,代码要有适当的注释;2.
采用单文档多视图方式,左边为树视图,右边为列表视图,左边一级节点为中原工学院,二级节点为计算机学院和软件学院,三级节点为计算机学院的三个专业.要求可以动态增加节点.楼便为列表视图,包含学生的学号、性别、姓名各科成绩等。右边也可以实现动态增加3.当选中节点时,显示对应的学生信息.如当选中”中原工学院”时选中所用的学生信息,选中“计算机学院”时,显示所有计算机学院学生信息主要参考资料:[1]谭浩强。C++语言基础课程[M]。北京:清华大学出版社,2021[2]于永彦。C++程序设计基础案例教程[M]。北京:北京大学出版社,2021[3]郑莉。C++语言程序设计习题与实验指导[M].清华大学出版社,2007完成期限:9月11日-11月14日指导教师签名:课程负责人签名:2021年11月14日摘要随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸劳动方面发挥越来越重要的作用,不仅咋商业、企业、银行等起着重要作用,而且在日常生活中国也越来越来离不开计算机。就像在大学,有很多学生信息需要处理、保存.以及提供优质的服务,此事计算机显得尤为重要。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识。作为计算机应用的一部分,使用计算机对学生作业信息进行管理,有着手工管理所无法比拟的有点。所以,现今大部分大学都使用了计算机来规划整个学生信息、提供选课、网络教学等。学生作业处理系统能方便用户迅速、准确处理学生作业,给出评分评价,得到想要的数据并能将学生的信息以文档的形式保存,以供使用时调出。本文介绍了简易学生的作业处理系统在MicrosoftVisualC++6。0环境下的实现过程:系统的分析、功能模块的设计、系统的调试和测试.此系统的主要管理信息:学生的班级、学生的学号、学生的作业情况、作业评分.本系统的主要功能有:输入数据、显示所有的数据、按成绩降序排列、查找并显示一组数据、插入一组数据、修改一组数据、删除一组数据、从文件中读取数据、将所有记录写入文件、退出本系统。关键字:学生成绩处理、VC++、MFC、控件四、主要步骤1、新建工程:用MFCAppWizard(exe)创建一个单文档的应用程序StudentCheck。在第六步中将视图的基类选择为。2、1添加一个基于ListView类的新的类listView、用于显示学生信息2、2为CMainFrame添加一个切分窗口的映射函数OnCreateClient并添加一个切分窗口的函数成员CSplitterWndm_wndSplitter;然后添加下列代码: CRectrect;GetClientRect(&rect); CSizepaneSize(rect。Width()/3,rect。Height());m_wndSplitter.CreateStatic(this,1,2); m_wndSplitter。CreateView(0,0,RUNTIME_CLASS(CStudentCheckView),paneSize,pContext);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(listView),CSize(0,0),pContext); returntrue; 2、4创建一个CstuInfoDlg对话框2、5添加下列控件并为上面控件添加变量在WorkSpace中进入ClassView视图,为CStuInfoDlg类添加一个BOOL型的成员变量m_bMale,并在CStuInfoDlg类设置该变量的初始值,添加代码如下:StuInfoDlg::StuInfoDlg(CWnd*pParent/*=NULL*/) :CDialog(StuInfoDlg::IDD,pParent){ m_bMale=FALSE; //{{AFX_DATA_INIT(StuInfoDlg) m_strSpecial=_T(""); m_tBirth=0; m_strMath=0; m_strName=_T("”); m_strNO=_T(””); m_strAcademy=_T(””); //}}AFX_DATA_INIT}用MFCClassWizard为CStuInfoDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码: if(!m_bMale) CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_FEMALE); else CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_MALE);//对专业组合框进行初始化 m_comboSpecial.AddString("网络工程"); m_comboSpecial.AddString("软件工程"); m_comboSpecial。AddString("计算机科学"); m_comboSpecial。AddString("服装设计"); m_comboSpecial。AddString("服装表演"); m_comboSpecial.AddString(”艺术设计"); m_strSpecial=”网络工程"; m_comboAcademy。AddString("计算机学院"); m_comboAcademy。AddString("服装学院"); m_strAcademy="计算机学院”; m_tBirth=CTime(1989,10,7,0,0,0); m_strMath=80; UpdateData(FALSE);//将信息显示在控件中2、6用MFCClassWizard为单选按钮IDC_RADIO_MALE添加BN_CLICKED的消息映射,并添加下列初始代码:m_bMale=TRUE;用MFCClassWizard为单选按钮IDC_RADIO_FEMALE添加BN_CLICKED的消息映射,并添加下列初始代码:m_bMale=FALSE;用MFCClassWizard为单选按钮IDOK添加BN_CLICKED的消息映射,并添加下列初始代码: UpdateData(); m_strName。TrimLeft();//将字符串最前面的空格修整掉 m_strNO。TrimLeft(); if(m_strName。IsEmpty()) MessageBox("必须要有姓名!”); elseif(m_strNO。IsEmpty()) MessageBox(”必须要有学号!"); Else3、1用MFCClassWizard为CStudentCheckView类添加NM_CLICK消息映射通过映射来在列表视图显示学生信息。并添加下列初始化代码:CPointpoint; UINTuFlags; ::GetCursorPos(&point);//该函数检取光标的位置,以屏幕坐标表示 CTreeCtrl&m_TreeCtrl=GetTreeCtrl();m_TreeCtrl。ScreenToClient(&point);HTREEITEMhSel=m_TreeCtrl。HitTest(point,&uFlags); //测试鼠标点是否在一个节点项上,若是,则选中该点 if((hSel!=NULL)&&(TVHT_ONITEM&uFlags)) { m_TreeCtrl.SelectItem(hSel); CStringstrItem=m_TreeCtrl。GetItemText(hSel); CStudentCheckDoc*doc=GetDocument(); intnIndex=doc—〉m_stuObArray。GetSize();//得到数组的大小:知道储存了几个学生的信息"); for(intn=0;n〈nIndex;n++) { CStudentInfo*stu=(CStudentInfo*)doc—〉m_stuObArray.GetAt(n);//调取m_stuObArray中储存的第n个对象信息 CStringstr=stu->strSpecial;//得到该学生的专业信息 CStringdlg=stu—>strAcademy;//得到该学生的学院信息 POSITIONpos=GetDocument()—〉GetFirstViewPosition(); GetDocument()->GetNextView(pos); listView*list=(listView*)GetDocument()—〉GetNextView(pos);//定义一个指向列表视图类的指针 if(n==0) list—〉GetListCtrl()。DeleteAllItems();//删除全部列表项 if(strItem==str||strItem==dlg||strItem==”中原工学院") { list—〉Onprint(stu);//把息输信入到列表中 } }3、2然后为CStudentCheckView添加一个void类型的成员函数CreateTree()函数,用来动态添加学生信息并添加下列初始代码: CTreeCtrl&m_TreeCtrl=GetTreeCtrl(); m_TreeCtrl。DeleteAllItems(); HTREEITEMhRoot,hParent,hChild,pS; hRoot=m_TreeCtrl.InsertItem(”中原工学院",0,1); BOOLflag=TRUE; CStudentCheckDoc*doc=GetDocument(); inti=doc->m_stuObArray。GetSize(); for(intn=0;n<i;n++) { CStudentInfo*stu=(CStudentInfo*)doc—>m_stuObArray.GetAt(n); CStringstr1=stu—〉strAcademy; CStringstr2=stu—>strSpecial; if(!m_TreeCtrl。ItemHasChildren(hRoot))//判断根节点是否有子节点 { hParent=m_TreeCtrl.InsertItem(str2,hRoot); m_TreeCtrl.InsertItem(str1,0,1,hParent); } else { hParent=m_TreeCtrl。GetChildItem(hRoot); pS=hParent; for(;pS!=NULL;pS=m_TreeCtrl。GetNextItem(pS,TVGN_NEXT)) { CStringstrItem1=m_TreeCtrl。GetItemText(pS); if(strItem1==str2)flag=FALSE; } if(flag) { hParent=m_TreeCtrl.InsertItem(str2,hRoot); m_TreeCtrl.InsertItem(str1,0,1,hParent); } else {if(!m_TreeCtrl.ItemHasChildren(hParent))//判断是否有子节点 m_TreeCtrl.InsertItem(str1,0,1,hParent); else {hChild=m_TreeCtrl。GetChildItem(hParent); for(;hChild!=NULL;hChild=m_TreeCtrl。GetNextItem(hChild,TVGN_NEXT)) {CStringstrItem2=m_TreeCtrl.GetItemText(hChild); if(strItem2==str1)flag=TRUE;} if(!flag)m_TreeCtrl.InsertItem(str1,0,1,hParent); }}}} SetCtrlStyle(m_TreeCtrl。GetSafeHwnd(), TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS);}3、3为CStudentCheckView添加消息映射OnIntialUpte,用来调用CreateTree()函数,动态添加学生信息。并添加下列初始代码: CTreeCtrl&m_TreeCtrl=GetTreeCtrl(); m_TreeCtrl。DeleteAllItems();CreateTree();3、4为CStudentCheckView添加一个void类型的成员函数SetCtrlStyle(HWNDhWnd,DWORDdwNewStyle)//设置列表控件不同的显示方式并添加下列初始代码: LONGlStyle;lStyle=GetWindowLong(hWnd,GWL_STYLE);//获取当前窗口stylelStyle&=~LVS_TYPEMASK;//清除显示方式位lStyle|=dwNewStyle;//设置styleSetWindowLong(hWnd,GWL_STYLE,lStyle);//设置style4、1在WorkSpace中进入ClassView视图,为listView类添加一个void型的成员函数Onprint(CStudentInfo*dlg),用来添加学生信息。并添加下列初始代码: CListCtrl&m_listctrl=GetListCtrl();//变量 m_listctrl。InsertItem(0,dlg—>strName);//姓名 m_listctrl。SetItemText(0,1,dlg-〉strNO);//学号 if(dlg->bMale) m_listctrl.SetItemText(0,2,”男"); else m_listctrl.SetItemText(0,2,”女”); m_listctrl。SetItemText(0,3,dlg—>tBirth.Format(”%Y—%m—%d”));//出生年月 CStringstr;//理解 str。Format("%d",dlg-〉strMath);//数学成绩 m_listctrl.SetItemText(0,4,str); m_listctrl。SetItemText(0,5,dlg->strSpecial);//专业 m_listctrl.SetItemText(0,6,dlg—>strAcademy);//学院4、2然后为listView添加消息映射NM_CLICK,用来通过点击或得学生的映射,并通过点击查找学生信息。并添加下列初始代码: inti=lpItem—>iItem; if(i>=0) { CListCtrl&ListCtrl=GetListCtrl(); CStringstr=ListCtrl.GetItemText(i,0); MessageBox(str); } 4、3为listView添加消息映射OnIntialUpte,用来在列表视图输出学生的信息并添加下列初始代码: CListCtrl&m_listctrl=GetListCtrl(); CStringstrHeader[7]={”姓名”,”学号",”性别",”出生年月","数学成绩",”所选专业","所在学院"}; intnWidth[7]={100,100,100,100,100,100,100}; for(intnCol=0;nCol<7;nCol++) m_listctrl.InsertColumn(nCol,strHeader[nCol],LVCFMT_LEFT,nWidth[nCol]);5、1建立序列化类CStudentInfo用来保存学生信息,添加C/C++HeaderFile,并添加下列初始代码:classCStudentInfo:publicCObject{public: CStringstrName; CStringstrNO; BOOLbMale; CTimetBirth; intstrMath; CStringstrSpecial; CStringstrAcademy; DECLARE_SERIAL(CStudentInfo)public:CStudentInfo(){}; CStudentInfo(CStringname,CStringid,BOOLmale,CTimebirth,intmath,CStringspecial,CStringacademy); voidSerialize(CArchive&ar);};5、2添加C/C++SourceFile,并添加下列初始代码:#include”stdafx.h”#include”StudentInfo.h"CStudentInfo::CStudentInfo(CStringname,CStringid,BOOLmale,CTimebirth,intmath,CStringspecial,CStringacademy){ strName=name; strNO=id; bMale=male; tBirth=birth; strMath=math; strSpecial=special; strAcademy=academy;}IMPLEMENT_SERIAL(CStudentInfo,CObject,1)//序列化实现voidCStudentInfo::Serialize(CArchive&ar)//从档案文件中读取该对象或向档案文件中写入该对象。{ if(ar.IsStoring())ar〈〈strName<<strNO〈<bMale〈<tBirth〈〈strMath〈<strSpecial〈<strAcademy; else ar〉>strName>>strNO>〉bMale〉>tBirth〉>strMath>〉strSpecial>〉strAcademy;}6、1打开该文档应用程序的菜单资源,添加顶层菜单项“学生基本操作"并添加菜单项目:添加删除、修改、查询,ID依次为ID_STUINFO_ADD、ID_STUINFO_Del、ID_STUINFO_XIUGAI、ID_STUINFO_FIND。打开CStudentCheckDoc,分别添加下列映射:6、2分别为下列函数添加下列代码用来添加、删除、修改、查询学生的信息,添加初始代码:voidCStudentCheckDoc::OnStuinfoAdd()//添加信息{ StuInfoDlgdlg; if(dlg。DoModal()!=IDOK)return;//判断学生信息是不是已经添加 CStudentInfo*pStudent=newCStudentInfo(dlg。m_strName,dlg。m_strNO,dlg。m_bMale,dlg.m_tBirth, dlg。m_strMath,dlg.m_strAcademy,dlg。m_strSpecial); m_stuObArray.Add(pStudent); POSITIONpos=GetFirstViewPosition(); CStudentCheckView*stu=(CStudentCheckView*)GetNextView(pos); stu->CreateTree(); SetModifiedFlag();//设置文档更改标志 UpdateAllViews(NULL);//更新视图 }voidCStudentCheckDoc::OnSTUINFODEl()//删除学生信息{ Finddlg; if(dlg.DoModal()!=IDOK)return; inti=m_stuObArray.GetSize(); for(intn=0;n<i;n++) { CStudentInfo*stu=(CStudentInfo*)m_stuObArray。GetAt(n); if(stu-〉strName==dlg.m_name) { deletem_stuObArray。GetAt(n); m_stuObArray.RemoveAt(n,1); } } SetModifiedFlag();//设置文档更改标志 UpdateAllViews(NULL);//更新视图 }voidCStudentCheckDoc::OnStuinfoFind()//查找学生信息{ Finddlg; if(dlg.DoModal()!=IDOK)return; inti=m_stuObArray.GetSize(); if(i==0) AfxMessageBox("无学生信息"); else { for(intn=0;n<i;n++) { CStudentInfo*stu=(CStudentInfo*)m_stuObArray.GetAt(n); if(stu->strName==dlg.m_name) { /*POSITIONpos=GetFirstViewPosition(); GetNextView(pos); listView*list=(listView*)GetNextView(pos); CListCtrl&m_list=list—>GetListCtrl(); m_list。DeleteAllItems(); list->Onprint(stu); flag=FALSE;*/ CStringstrRes,strSex("女”); CStringstr;//理解 str.Format("%d”,stu—>strMath); if(stu—〉bMale)strSex="男"; strRes。Format("姓名:%s,\n学号:%s,\n性别:%s,\n出生年月:%s,\n学院:%s,\n专业:%s,\n数学成绩:%s", stu—>strName,stu->strNO,strSex, stu—〉tBirth.Format(”%Y-%m-%d"),stu-〉strAcademy,stu—>strSpecial,str); AfxMessageBox(strRes);}} //判断是否找到}}voidCStudentCheckDoc::OnStuinfoXiugai()//修改学生信息{ Finddlg; StuInfoDlgdl; BOOLflag=TRUE; if(dlg.DoModal()!=IDOK)return; inti=m_stuObArray.GetSize(); if(i==0) AfxMessageBox(”无学生信息”); else { for(intn=0;n〈i;n++) { CStudentInfo*stu=(CStudentInfo*)m_stuObArray。GetAt(n); if(stu-〉strName==dlg.m_name) { dl.m_strName=stu—〉strName; dl。m_strNO=stu—>strNO; dl。m_bMale=stu-〉bMale; dl。m_tBirth=stu—>tBirth; dl。m_strMath=stu—〉strMath; dl。m_strAcademy=stu—〉strAcademy; dl.m_strSpecial=stu—〉strSpecial; dl。DoModal();//此成员函数用来显示一个模态对话框Dialog2 stu->strName=dl.m_strName; stu—>strNO=dl.m_strNO; stu—〉bMale=dl。m_bMale; stu-〉tBirth=dl。m_tBirth; dl。m_strMath=stu—>strMath; stu->strAcademy=dl.m_strAcademy; stu—>strSpecial=dl.m_strSpecial; flag=FALSE; SetModifiedFlag();//设置文档更改标志 UpdateAllViews(NULL);//更新视图 } } if(flag) AfxMessageBox("无此学生信息");}}7、1添加一个新的对话框Find,通过调用该该对话框来实现删除、修改、浏览学生信息:并添加下列控件:添加Find类的映射BN_CLICKED并为该编辑框添加控件变量运行程序实现改程序的功能五、设计心得1、通过这次课程设计,是我对MFC有了更进一步的了解,对消息的机制有了更深刻的认识,对MFC中的应用结构类、菜单类、窗口以及对话框和控件有了更深刻的认识。2、也对上学期学习的VC++进行了复习,是我对上学期学期的有了更进一步的了解和熟悉,对编程能力有了进一步的提升。3、合理的规划和设计页面对编程者是十分重要的。一个好的程序也学要便捷的操作和美观的界面,人性化设计需要我们更加细心的去设计和美化程序.4、虽然在MFC课程设计是遇到了这样和那样的问题,通过我自己和同学的帮助,还有参考数的帮助,这次课程设计是我收获很多,不仅对编程有了更进一步的了解,同时也看到了我自己编程能力的不足和与班级学习MFC好的同学之间的差距,需要进一步努力、才能不被他们抛的更远。六、参考文献[1]VisualC++教程清华大学出版社[2]C/C++程序设计教程电子工业出版社[3]VisualC++程序设计与实践摘要近年来,随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新.在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,正在不断的应用到实际生活中,并且根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊.那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MCS-51系列单片机STC89C51为中心器件来设计交通灯控制器,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。关键词:交通灯单片机数码管一.总体设计思路1.1设计目的及思路设计目的了解交通灯管理的基本工作原理,熟练掌握STC89C51的工作原理和应用编程,熟悉STC89C51单片机并行接口的各种工作方式和应用,并了解计数器/定时器的工作方式和应用编程外部中断的方法,掌握多位LED显示问题的解决。设计思路(1)分析目前交通路口的基本控制技术,提出自己的交通控制的初步方案.(2)确定系统交通控制的总体设计,增加了倒计时显示提示。(3)进行显示电路.(4)进行软件系统的设计。1.2实际交通灯显示时序及状态转换的理论分析图1所示为红绿灯转换的状态图。S2S1S2S1S4S3S4S3图1红绿灯状态转换图状态S1S2S3S4时间30s5s30s5s东西道红灯亮红灯亮绿灯亮黄灯亮南北道绿灯亮黄灯亮红灯亮红灯亮表1十字路口指示灯燃亮方案说明:(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。时间为60秒。(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换.(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为80秒.东西方向车流大通行时间长。(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。(5)此表可根据车流量动态设定红绿灯初始值。共四种状态,分别设定为S1、S2、S3、S4,交通灯以这四种状态为一个周期,循环执行如下图所示:图2交通灯状态循环图图2交通灯状态循环图程序就是在上述四种状态下循环转化的。一个周期四个状态,在正常模式下共花费1分10秒。二.具体设计方案2.1方案要求:本设计要求与交通信号实际控制一致,采用LED模拟信号灯,信号灯分东西、南北二组,分别有红、黄、绿三色。其工作状态由程序控制,启动、停止按钮分别控制信号灯的启动与停止。白天/黑夜转换开关可对信号进行控制转换。并且要求能用两位数码管(或者一位数码管)来显示红灯或者绿灯等待的时间,在黄灯的时候数码管不显示。信号灯的控制要求如下:⑴假设东西方向交通繁忙为主干道,车流量为南北交通的两倍.因此东西方向的绿灯通行时间为是南北方向上的两倍。⑵开始时东西方向绿灯先亮,南北为红灯。⑶按下启动按钮开始工作,,按下停止按钮,停止工作.白天/黑夜转换开关闭合时为黑夜工作状态,这时只有黄灯来回闪烁,断开为白天工作状态。白天工作状态要求:东西方向绿灯亮40s,然后黄灯闪三下(1下/秒,共5秒),然后红灯亮20s,而南北方向为红灯亮40s然后绿灯亮20s,然后黄灯也闪三下;如此周期循环下去。示意图2。2方案分析根据十字路口交通灯的要求,可将本系统分为三个模块,第一模块是控制模块,主要负责整个系统的控制和运算,从而使各模块正常工作,第二个模块式显示模块包括LED灯和数码管;第三是电源模块,给各模块提供电源,让各模块工作。其系统设计结构如图:图3.系统设计结构图图3.系统设计结构图2。389C51单片机引脚功能说明89C51外部引脚图:(可以直接拷入ASM程序文件中,作注释使用,十分方便)
┏━┓┏━┓
P1.0
┫1┗┛40┣
Vccﻫ
P1.1
┫2
39┣
P0.0
P1.2
┫3
38┣
P0.1
ﻫ
P1。3
┫4
37┣
P0。2
P1.4
┫5
36┣
P0.3
P1.5
┫6
35┣
P0.4
P1.6
┫7
34┣
P0.5
ﻫ
P1。7
┫8
33┣
P0。6
ﻫ
RST/Vpd
┫9
32┣
P0.7
ﻫ
RXDP3.0
┫10
31┣
—EA/Vpp(内1/外0程序地址选择)ﻫ
TXDP3.1
┫11
30┣
ALE/—P(地址锁存输出)ﻫ-INT0P3.2
┫12
29┣
-PSEN
(外部程序读选通输出)
-INT1P3。3
┫13
28┣
P2。7
ﻫ
T0
P3.4
┫14
27┣
P2。6
T1
P3.5
┫15
26┣
P2.5
—WRP3。6
┫16
25┣
P2。4
ﻫ
-RDP3.7
┫17
24┣
P2。3
ﻫ
X2
┫18
23┣
P2。2
ﻫ
X1
┫19
22┣
P2.1
GND
┫20
21┣
P2.0
ﻫ
┗━━━━┛引脚说明:ﻫ
①电源引脚ﻫ
Vcc(40脚):典型值+5V.
Vss(20脚):接低电平.ﻫ
②外部晶振ﻫ
X1、X2分别与晶体两端相连接。当采用外部时钟信号时,X2接振荡信号,X1接地
③输入输出口引脚:
P0口:I/O双向口。作输入口时,应先软件置“1”。
P1口:I/O双向口。作输入口时,应先软件置“1”。ﻫ
P2口:I/O双向口。作输入口时,应先软件置“1"。
P3口:I/O双向口.作输入口时,应先软件置“1”。
④控制引脚:ﻫ
RST/Vpd、ALE/—PROG、—PSEN、-EA/Vpp组成了MSC-51的控制总线。
RST/Vpd(9脚):复位信号输入端(高电平有效).
第二功能:加+5V备用电源,可以实现掉电保护RAM信息不丢失。ﻫ
ALE/-PROG(30脚):地址锁存信号输出端。
第二功能:编程脉冲输入.ﻫ
—PSEN(29脚):外部程序存储器读选通信号.ﻫ
—EA/Vpp(31脚):外部程序存储器使能端。ﻫ
第二功能:编程电压输入端(+21V).图6.单片机8051的内部结构图6.单片机8051的内部结构2.4单片机最小系统时钟电路图7.时钟电路XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空.内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz.晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右.系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中.对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF.在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。复位电路在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位.复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零.当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序.复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。复位操作不会对内部RAM有所影响.常用的复位电路如下图所示:图8.复位电路图显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED数码管是现在最常用的显示器之一。发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或号。LED数码管有共阳、共阴之分。本系统采用的是两位共阴极数码管三.电路图和程序图10.交通灯电路图具体程序:#include<REG51.H>#defineucharunsignedchar#defineuintunsignedintuintnum,shi,ge;sbitred=P1^0;sbityel=P1^1;sbitgre=P1^2;ﻩ voiddelay(){uinta;for(a=500;a〉0;a-—);ﻩ }ucharcodearry_duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidinitial(){EA=1;ET0=1;TMOD=0x01;TH0=0x4c;TL0=0xd0;}voiddisplay(intY){shi=Y/10;ge=Y%10;TR0=1;while(shi|ge!=0){P2=0xfe;P3=arry_duan[shi];delay();P2=0xfd;P3=ﻩarry_duan[ge];delay();}TR0=0;}voidtimer0()interrupt1{TH0=0x4c;TL0=0xd0;num++;if(num==20){num=0;ge-—;if(ge==-1){ge=9;shi—-;}}}main(){initial();while(1){red=0;yel=0;gre=1;display(40);red=0;yel=1;gre=0;display(3);red=1;yel=0;gre=0;display(20);red=0;yel=1;gre=0;display(3);}}程序编译和。hex文件创建截图仿真截图四.实验心得体会通过本次试验我复习了单片机程序的编写,电路的连接以及程序的调试仿真,更加深刻的感受到了单片机的强大功能,通过实验也加强了动手操作的能力,和同学一起更加懂得了相互合作的重要性,以后我会更加努力的把本专业知识学好学精,争取为国家做到属于自己应做的奉献。五.课程设计参考资料1.《电子系统综合设计》郭勇北京大学出版社2.《数字电子技术基础》阎石高教出版社3.《模拟电子技术基础》童诗白高教出版社4.《单片机原理及应用》张毅刚高等教育出版社基于51单片机课程设计报告院系:电子通信工程团组:电子设计大赛1组姓名:指导老师:2目录
一、摘要………………3二、系统方案的设计…3三、硬件资源…………5四、硬件总体电路搭建……………13五、程序流程图…………14六、设计感想……………14七、参考文献……………16附录………17附录1程序代码………………17一、摘要本设计以STC89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、led关键词:STC89C51单片机DS18B20温度芯片温度控制,LED报警提示.二、系统方案的设计1、设计要求基本功能:不加热时实时显示时间,并可手动设置时间;设定加热水温功能。人工设定热水器烧水的温度,范围在20~70度之间,打开开关后,根据设定温度与水温确定是否加热,及何时停止加热,可实时显示温度;设定加热时间功能。限定烧水时间,加热时间内超过温度上限或低于温度下限报警,并可实时显示温度。2、系统设计的框架本课题设计的是一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间.其主要包括:电源模块、温度测量及调理电路、键盘、数码管显示、指示灯、报警、继电器及单片机最小系统。图1系统设计框架3工作原理温度传感器DS18B20从设备环境的不同位置采集温度,单片机STC8951获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器),当采集的温度经处理后低于设定温度的下时,单片机通过三极管驱动继电器开启升温设备(加热器),这里采用通过LED1和LED2取代!!!当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声,这里采用HLLED提示。加热器继电器2加热器继电器2三、硬件资源1、器件选择:1。51单片机一块STC89c51STC8951是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In—systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS—51指令系统及STC8951引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC8951可为许多嵌入式控制应用系统提供高性价比的解决方案。STC8951具有如下特点:40个引脚,8kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信,片内时钟振荡器。此外,STC8951设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位.同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求.由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用STC8951单片机作为主控芯片。主控模块采用单片机最小系统是由于STC8951芯片内含有8kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉,批量价在10元以内。其单片机的外围引脚有40个,分别是:第20脚和40脚分别是电源,即GND和Vcc;第9脚是复位脚RST;第18脚是时钟XTAL2脚,片内振荡电路的输出端;第19脚是时钟XTAL1脚,片内振荡电路的输入端;第29脚:~PSEN脚,当访问外部程序存储器时,此引脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上;第30脚:ALE/~PROG,当访问外部数据存储器时,ALE(地址锁存)的输出用于锁存地址的低字节;第31脚:~EA/Vpp为程序存储器内外部选通信号;P0^0-P0^7.P1^0—P1^7。P2^0-P2^7.P3^0-P3^7.这32个引脚为数据的输出及输入引脚,即I/0口;单片机图如下:2、8位7段共阴数码管一个7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管,如图4.9所示.共阴数码管共阴数码管共阴数码管的编码为:0x3F,0x0C,0x76,0x5E,0x4D,0x5B,0x7B,0x0E,0x7F,0x5F,0x6F,0x79,0x33,0x7C,0x73,0x630,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F3、温度显示DS18B20一个DS18B20采用3脚TO—92封装或8脚的SOIC封装,如图1所示。各引脚的功能:GND为电压地;DQ为单数据总线;V为电源电压;NC为空引脚.图1DS18B20引脚图DS18B20的DQ单数据总线与单片机P3.7连接,GND电压地、V电源电压分别和电压地和5伏直流电源连接.本文设计的系统主机只对一个DS18B20进行操作,因此不需要读取ROM编码以及匹配ROM编码,只要跳过ROM命令,就可以进行如下温度转换和读取操作。(1)CCH—跳过ROM,直接向DS18B20发送温度变换命令.(2)44H—读暂存器。读内部RAM中9字节的温度数据.(3)BEH—写暂存器。发出向内部RAM的第2、3字节写上、下限温度数据命令,紧跟该命令之后,再传送两字节数据。DS18B20在出厂时默认配置为12位,其中最高位为符号位,即温度值共11位,单片机在读取数据时,一次会读两字节共16位,读完后将低11位的二进制数转换为十进制后再乘以0.0625变为所测的温度值。另外,还需要判断温度的正负。前5个数字为符号位,这5位同时变化,我们只需判断11位就可以了。前5位为1时,读取的温度为负值,且测到的数值需要取反再加一再乘以0。0625才可以得到实际的温度值。前5位为0时,读取的温度为正值,只要将测得的数值乘以0.0625即可得到实际温度值.由于提前给DS18B20赋了上限、下限值,所以当温度超过上限或者不足下限时,会伴有LED灯闪烁和蜂鸣器响作为警报.4、按键在按下键时,实际情况下,都会出现抖动。其直观图如下:按键消抖一般采用硬件和软件消抖两种方法。硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。在微机系统中一般都采用软件延时的消抖方法,本文用的是软件延时的消抖方法。5、74HC573锁存器高性能硅门CMOS器件SL74HC573跟LS/AL573的管脚一样。器件的输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)相当于图上的Dx-Qx相通,I/0口可以进行数据交换。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。在这里我们是将LE接高电平,把锁存器当作驱动器,驱动数码管的显示;6、晶振其晶振的运用,在这地方我们用的是12MHz,主要用在单片机的最小系统中,参照单片机最小系统图示;电阻.电容。导线等(一)单片机最小系统电路在课题设计的温度控制系统设计中,控制核心是STC89C52单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4KFLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1μS。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图2所示:图2单片机最小系统(二)温度传感器电路采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上.本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(1)系统的特性:测温范围为20℃~70℃,测温精度为士0.5(2)系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年人力资源培训师招聘策略及面试题解析
- 医疗机构病历管理指南(标准版)
- 公共交通服务与应急预案指南(标准版)
- 企业人力资源招聘与配置指南手册
- 2025年企业客户服务规范与指南
- 能源行业设备运行与检修手册
- 2025年家政服务操作规范与服务流程手册
- 企业财务管理与成本控制流程
- 直销专卖店培训制度
- 法院办公室培训制度
- 大型电站锅炉空气预热器漏风控制细则
- 湖北省襄阳四中2026届高三年级上学期质量检测五历史试卷
- 城市社区工作者培训课件
- 2026年军检心理意志品质测试题及详解
- 供热生产调度工岗前教育考核试卷含答案
- 实验题(专项练习)教科版(2017秋)六年级科学上册
- 2025江西南昌市安义县林业局招聘专职护林员20人笔试备考题库及答案解析
- 2026年煤矿矿长证考试题库及答案
- 危重病人营养支持教案
- 《毛泽东思想概论》与《中国特色社会主义理论体系概论》核心知识点梳理及100个自测题(含答案)
- 分级护理质量考核标准
评论
0/150
提交评论