单片机实习报告_第1页
单片机实习报告_第2页
单片机实习报告_第3页
单片机实习报告_第4页
单片机实习报告_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计任务书学生姓名:专业班级:指导教师:工作单位:武汉理工大学题目:单片机原理与应用初始条件:STC89C52温度采集芯片DS18B20数码管MAX232开关74LS04仿真软件规定完毕的重要任务:1)运用PROTEL等软件进行硬件设计;2)运用KeiluV2软件完毕应用系统软件设计;3)运用PROTEUS软件进行仿真设计;4)完毕单片机最小系统和应用系统电路板的焊接;5)对电路进行调试;6)运用stc-isp软件完毕在系统编程、下载,并完毕系统软件调试;7)题目由指导教师提供;8)规定每个学生单独完毕硬件软件设计、仿真、焊接、调试任务;9)写出实习汇报,实习汇报重要包括如下内容:目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真成果、实物运行成果照片、结论、参照文献等;10)实习完毕后通过答辩;11)答辩时交实习汇报电子文档,通过答辩后根据修改意见修改并打印、装订成册。时间安排:实习时间12月17日12月30日。指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 3Abstract 41基本原理 51.1基本原理及原理框图 51.2STC89C52构造功能简介 52方案论证 72.1数字温度计方案 73硬件设计 83.1复位电路 83.1.1上电复位 83.1.2按键复位 83.2振荡电路 93.3单片机最小系统单片机 103.4显示电路 103.5矩阵键盘电路 113.6温度采集电路 113.7串口通信电路 123.8总设计电路 134软件设计 144.1软件简介 144.1.1设计软件Protel 144.1.2程序编写软件Keil 144.1.3仿真软件Proteus 154.2数码管显示 154.3数字温度计的设计 164.4串口通信的设计 175仿真成果 185.1数字温度计仿真 185.2键盘扫描仿真 186实物调试成果 197元件列表 208参照文献 229实习日志 2310附录 40摘要单片微型计算机简称单片机,又称为微型控制器,是微型计算机的一种重要分支。伴随电子技术的发展,大规模及超大规模集成电路和制造工艺的深入提高,单片机以其高可靠性、高性价比、低电压、低功耗等一系列长处,广泛应用于控制系统、数据采集系统、智能化仪器表等领域。本次课程设计包括单片机最小系统(包括复位和时钟电路)及供电系统、4*4矩阵键盘、独立6个8段LED数码管显示电路及DS18B20温度传感器。运用Protel电路设计软件进行原理图设计,运用keil软件编程以及proteus软件仿真,借此巩固单片机应用、模拟电路、数字电路课程及学会多种工程软件的使用。关键字:单片机最小系统矩阵键盘仿真硬件设计AbstractSinglechipmicrocomputershortchip,alsoknownasthemicrocontroller,isamicrocomputerisanimportantbranchof.Withthedevelopmentofelectronictechnology,large-scaleandultralargescaleintegratedcircuitandmanufacturingprocesstofurtherimprove,chipforitshighreliability,highcost,lowvoltage,lowpowerconsumptionandaseriesofadvantages,widelyusedincontrolsystem,dataacquisitionsystem,intelligentinstrumentandmeteretc.Thecurriculumdesign,includingthesmallestsingle-chipsystem(includingaresetandclockcircuitandpowersupplysystem),4*4matrixkeyboard,theindependent68LEDdigitaltubedisplaycircuitandthetemperaturesensorDS18B20.UsingProtelcircuitdesignsoftwareschematicdesign,usingkeilsoftwareandProteusSoftwaresimulation,toconsolidatetheSCMapplication,analogcircuit,digitalcircuitcourseandlearnallkindsofengineeringsoftwareuse.1基本原理1.1基本原理及原理框图单片机最小系统,是指用最小的元件构成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应当包括:单片机、晶振电路、复位电路、按键输入、显示输出等。单片机接口电路重要用来连接计算机和其他外部设备。数码管显示STC89C52本次设计重要完毕的扩展电路包括键盘显示电路、数字温度计两大模块。其原理框图如下图1.1所示:数码管显示STC89C52震荡电路震荡电路矩阵键盘复位电路s矩阵键盘复位电路温度采集温度采集图1.1总原理框图1.2STC89C52构造功能简介STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压、高性能COMOS8位微处理器,又称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业原则的MCS-51指令集和输出管脚相兼容。STC89C52具有8K在系统可编程存储器。具有如下配置:8KFlash,512字节RAM,32I/O口线,定期器,内置4KBROM,三个16位定期器、计数器,一种6向量2级中断构造,双全工串行口。STC89C52引脚图如下:图1.2STC89C52引脚图STC89C52芯片共40引脚,各引脚功能如下:VCC(40引脚):电源电压VSS(20引脚):接地RST复位端P0端口(P0.0~P0.7,39~32引脚):P0口是一种漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在FlashROM编程时,P0端口接受指令字节;而在校验程序时,则输出指令字节。验证时,规定外接上拉电阻。P1端口(P1.0~P1.7,1~8引脚):P1口是一种带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸取或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,由于有内部上拉电阻,那些被外部拉低的引脚会输出一种电流P2端口(P2.0~P2.7,21~28引脚):P2口是一种带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸取或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,由于有内部的上拉电阻,那些被外部信号拉低的引脚会输出一种电流。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX@DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX@R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会变化。P3端口(P3.0~P3.7,10~17引脚):P3是一种带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸取或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,由于有内部的上拉电阻,那些被外部信号拉低的引脚会输入一种电流。P3口除作为一般I/O口外,尚有其他某些复用功能。2方案论证2.1数字温度计方案方案一:采用热敏电阻103.运用热敏电阻一类的感温器件的感温效应,然后将随被测温度变化的电压或者电流采集过来,进行A/D转换后,传到51单片机,运用51单片机对这些采集过来的数据进行处理,并最终将测量的温度显示在LED数码管之上。方案二:运用DS18B20采集温度。运用专门感应温度的温度传感器DS18B20感应温度,然后用51单片机的系统读取该温度传感器的温度,最终将温度显示在数码管上,同步运用串口通信将温度信号发送出去。方案一运用热敏电阻的感温特性,测量成果也许与实际相差较大,方案二采用了数字温度传感器DS18B20,使得电路分析数字化,其调试过程变得简朴,更是由于采用了单片机,使得电路大部分功能都可以由软件完毕,这使得硬件电路非常简朴,功能却非常完善。因此选择方案二。3硬件设计硬件电路重要由复位电路、振荡电路、数码管显示电路、矩阵键盘电路和串口电路等构成。各单元模块电路如下:3.1复位电路单片机的置位和复位都是为了把电路初始化到一种确定的状态一般来说单片机复位电路作用是把一种例如状态机初始化到空状态而在单片机内部复位的时候单片机是把某些寄存器以及存储设备装入厂商预设的一种值。单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须不小于单片机的两个机器周期。详细数值可以由RC电路计算出时间常数。复位电路由按键复位和上电复位两部分构成。其电路图如图2.1所示。图3.1复位电路3.1.1上电复位STC89系列单片及为高电平复位一般在复位引脚RST上连接一种电容到VCC再连接一种电阻到GND由此形成一种RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位随即回归到低电平进入正常工作状态这个电阻和电容的经典值为10K和10uF。3.1.2按键复位按键复位就是在复位电容上并联一种开关当开关按下时电容被放电、RST也被拉到高电平并且由于电容的充电会保持一段时间的高电平来使单片机复位.3.2振荡电路单片机系统里均有晶振在单片机系统里晶振作用非常大全称叫晶体振荡器他结合单片机内部电路产生单片机所需的时钟频率单片机晶振提供的时钟频率越高那么单片机运行速度就越快单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在一般工作条件下一般的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率称为压控振荡器VCO。晶振用一种能把电能和机械能互相转化的晶体在共振的状态下工作以提供稳定精确的单频振荡。单片机晶振的作用是为系统提供基本的时钟信号。一般一种系统共用一种晶振便于各部分保持同步。有些通讯系统的基频和射频使用不一样的晶振而通过电子调整频率的措施保持同步。晶振一般与锁相环电路配合使用以提供系统所需的时钟频率。假如不一样子系统需要不一样频率的时钟信号可以用与同一种晶振相连的不一样锁相环来提供。STC89C51使用11.0592MHz的晶体振荡器作为振荡源由于单片机内部带有振荡电路因此外部只要连接一种晶振和两个电容即可电容容量一般在15pF至50pF之间。其电路原理图如3.2所示。图3.2震荡电路3.3单片机最小系统单片机最小系统包括晶振时钟电路和复位电路。原理图如图3-1所示。图3.3单片机最小系统图3-3单片机最小系统在单片机引脚XTAL1和XTAL2外接晶体整荡器或陶瓷振荡器,就构成了内部震荡方式,由于单片机内部有一种高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲,晶振一般选择6MHz、12MHz或24MHz。与晶振连接的电容起稳定振荡频率、迅速起振的作用。电容值一般为5~30pf。复位操作完毕单片机片内电路初始化,复位结束后,单片机从一种确定状态开始运行。当单片机复位引脚RST出现5ms以上高电平时,单片机就完毕复位操作。复位操作一般有两种形式:上电复位和开关复位。常用上电开关复位电路如上图所示,上电后,由于电容C1充电,时RST持续一段时间高电平。当单片机已在运行中时,按下复位键也能使RST持续一段时间高电平,从而实现开关复位操作。一般C110~30ufR110kΩ。3.4显示电路本次需要采用6个数码管,若单独采用数码管连线时比较麻烦,故设计采用6位一体的共阴极数码管,若使6个数码管显示正常时间,必须采用采用数码管的动态扫描方式,即每一时刻只有一种数码管点亮,采用软件延时和人眼的视觉暂留效果,使人眼看到的数码管是同步点亮的。因此需要用6个端口控制数码管的位选,即决定哪个数码管点亮。每个数码管的8个数据口控制数码管的段选,即决定数码管显示什么字符。考虑到数码管采用动态扫描方式,即循环扫描数码管的6位,并将显示字符送入段选位,我们采用P0口控制数码管的8个段选位,并采用74HC04实现数码管驱动及数据锁存功能。3.5矩阵键盘电路其工作原理是从0列开始次序行扫描即该行输出为0。每扫描一行读入列线数据从0开始列检查找该行输出为0的列若无则次序扫描下一行并检查其各列若找到某列线为0则该列与检查行交叉的按键为被按下的键。从0行0列开始次序将按键编号就可以按扫描的值得到按键的值。本设计使用的是4个独立按键其功能设置为时间的显示、时间的设置、温度的显示和数字频率的显示。其电路原理图如图3.4所示。此外还要消除按键在闭合或断开时的抖动。消除抖动的措施可采用消抖电路RS触发器闩锁电路硬件消除抖动也克采用延时方式软件消除抖动延时后再重读以跳过抖动期。在矩阵键盘中一般采用软件消除抖动。本设计中重要使用了独立键盘故电路图中简要的画出了44的矩阵键盘和4个独立按键。图3.4矩阵键盘3.6温度采集电路由于采用温度采集芯片DS18B20,温度采集电路比较简朴。数字温度计的温度采集组要是由DS18B20进行,它可以采用两种供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一种电阻来完毕对总线的上拉。本次采用的是寄生电源供电方式。DS18B20的2脚接单片机的P3.2口。单片机从DS18B20的DQ引脚读取温度值之后,通过一定的处理显示在液晶屏上。温度采集电路如图3-5所示。图3.5温度采集电路3.7串口通信电路串口是计算机上一种非常通用设备通信的协议不要与通用串行总线UniversalSerialBus或者USB混淆。大多数计算机包括两个基于RS232的串口。串口同步也是仪器仪表设备通用的通信协议诸多GPIB兼容的设备也带有RS-232口。同步串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简朴串口按位bit发送和接受字节。尽管比按字节byte的并行通信慢不过串口可以在使用一根线发送数据的同步用另一根线接受数据。它很简朴并且可以实现远距离通信。例如IEEE488定义并行通行状态时规定设备线总常不得超过20米并且任意两个设备间的长度不得超过2米而对于串口而言长度可达1200米。经典地串口用于ASCII码字符的传播。通信使用3根线完毕1地线2发送3接受。由于串口通信是异步的端口可以在一根线上发送数据同步在另一根线上接受数据。其他线用于握手不过不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。MAX232是电平转换芯片。1970年美国电气学会规定“RS232”串口通信协议。规定逻辑“1”-5—-15V逻辑“0”5—15V。噪声容限为2V。要实现运用串口与单片机进行通信就要进行电平转换把原则转化成单片机可以识别的。MAX220–MAX249都是电平转换芯片在单片机最小系统中使用MAX232。其电路原理图如图3.6所示。图3.6串口通信电路3.8总设计电路图3.7总设计电路4软件设计4.1软件简介4.1.1设计软件ProtelPROTEL是Altium企业在80年代末推出的EDA软件,在电子行业的CAD软件中,它当之无愧地排在众多EDA软件的前面,是电子设计者的首选软件,它较早就在国内开始使用,在国内的普及率也最高,有些高校的电子专业还专门开设了课程来学习它,几乎所有的电子企业都要用到它,许多大企业在招聘电子设计人才时在其条件栏上常会写着规定会使用PROTEL。Protel99采用全新的管理方式,即数据库的管理方式。Protel99是在桌面环境下第一种以独特的设计管理和团体合作技术为关键的全方位的印制板设计系统。所有Protel99设计文献都被存储在唯一的综合设计数据库中,并显示在唯一的综合设计编辑窗口。Protel99软件沿袭了Protel此前版本以便易学的特点,内部界面与Protel98大体相似,新增长了某些功能模块。Protel企业引进了德国INCASES企业的先进技术,在Protel99中集成了信号完整性工具,精确的模型和板分析,协助你在设计周期里运用信号完整性分析可获得一次性成功和消除盲目性。本次设计采用的是AltiumDsigner进行电路原理图的绘制。4.1.2程序编写软件KeilKeilC51是美国KeilSoftware企业出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、构造性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一种功能强大的仿真调试器等在内的完整开发方案,通过一种集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN、WINXP等操作系统。假如你使用C语言编程,那么Keil几乎就是你的不二之选,虽然不使用C语言而仅用汇编语言编程,其以便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍本次设计编程重要使用Keil软件进行编程。4.1.3仿真软件ProteusProteus软件是英国Labcenterelectronics企业出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限企业)。它不仅具有其他EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最佳的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。使用Proteus

软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有助于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用Proteus

开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反应,对单片机的学习比单纯学习书本知识更轻易接受,更轻易提高。实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。本次采用的是Proteus进行仿真。4.2数码管显示在软件设计过程中,首先要理解满足规定的程序流程图,然后根据流程图写出对应的C51程序,运用proteus进行仿真,通过一步步的调试,使设计到达目的。数码管显示流程图:图4.1数码管显示流程图4.3数字温度计的设计图4.2数字温度计设计流程图4.4串口通信的设计图4.3发送数据的程序流程图图4.4接受数据的程序流程图 5仿真成果 5.1数字温度计仿真图5.1数字温度计仿真5.2键盘扫描仿真图5.2键盘扫描仿真6实物调试成果图6.1单片机运行成果图6.2结论:将程序烧进单片机之后,通过调试之后,发现单片机可以正常工作,并且可以实现规定的各项功能,阐明程序也能满足规定。这次的设计去的成功,自己的努力也得到了回报。7元件列表1单片机最小系统部分序号名称数量1万能试验电路板1块2单片机STC89C521只3晶振12MHz1只430PF瓷片电容2只510k/0.25W电阻1只610uF/16V电解电容1只72k/0.25W电阻1只810k/9脚排阻1只95V/500mA直流电源1个10排针、按钮、LED、导线等若干2下载电路部分序号名称数量1万能试验电路板1块2MAX2321片30.1uF瓷片电容4只4DB9插座1只5RS-232C串口电缆(9针)1根3软件部分序号名称数量1电路设计软件PROTEL1套2编程软件KeiluV21套3仿真软件PROTEUS1套4下载软件stc-isp1套4工具序号名称数量1PC(带RS-232C口)1台2万用表1块3电烙铁1只4焊锡、松香等若干8参照文献[1]霍孟友等,单片机原理与应用,机械工业出版社[2]李广弟等

单片机基础北京航空航天出版社,.7[3]楼然苗等51系列单片机设计实例北京航空航天出版社[4]马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社[5]张毅刚等,MCS-51单片机应用设计,哈工大出版社,第2版

[6]李全利,迟荣强编著

单片机原理及接口技术高等教育出版社9实习日志实习日记年12月17日今天拿到了单片机实习课设的题目,由于一看到任务规定就觉得比以往做过的模电、数电、强化训练等等课程设计不仅数量多了并且难度也增大了。今天的重要任务就是查找资料,安装软件,做好十足的准备工作。为了提高自己的能力,不准备将软件汉化。在装好需要用的proteus7professional,KeiluVIision4以及AltiumDesigner等软件后来,根据借来的参照书籍,熟悉了这些软件的基础使用方法,这真是一种看起来轻易做起来去不太轻易的事情。利用休息的时间,我对接下来十三天的实习期做了一种初步的规划,满怀期待的憧憬着十三天后可以做出成果的日子。实习日记年12月18日今天重要的任务就是把这次课程设计的各个模块的方案选择出来。因此第一件要做的事情就是要弄清各个模块的基本原理,根据原理才能来进行发难论证。而方案论证真不是一件轻松的事情,由于根据规定,通过从图书馆借的参照书籍和在网上找到的期刊文献等,选出某些可以实现并且能满足课程设计规定的多种方案,并且要在这多种方案的基础上,优中选优,选出一种更适合实际的方案。在单片机上有一种很大的麻烦,就是对于芯片的选择,这规定对多种芯片的功能性能要熟悉,还要对它们的拓展有些许的理解。这些都加大了对方案选择的难度,好在目前网络很快捷,因此搜索多种芯片的资料并不是很难,更多的时间用在挑选方案了。调好方案之后,明天就可以进行硬件的设计了。实习日记年12月19日由于昨天选好了各个模块的方案,因此今天可以根据预期顺利的进行硬件设计。硬件设计感觉也挺棘手的,假如说方案论证是件基于纯理论上面的事情,那么硬件设计就是件要结合实际的事情了。在方案流程图的实行背后是更多的细节讨论。通过器件的性能求出公式,并得到理论数据,在根据实际也许产生的误差而加某些旁路电路来使电路的稳定性更高。而怎样运用好单片机的自身优性,来进行硬件设计。今天设计的是最小系统,包括晶振模块和复位模块。实习日记年12月20日昨天完毕了最小系统的设计,今天开始进行外部扩展电路的设计。今天设计通信接口部分。经典地串口用于ASCII码字符的传播。通信使用3根线完毕1地线2发送3接受。由于串口通信是异步的端口可以在一根线上发送数据同步在另一根线上接受数据。其他线用于握手不过不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。懂得原理之后就可以继续设计硬件电路了。这个设计过程就简朴了许多。实习日记年12月21日由于前几天只完毕了接口电路和数字温度计电路的硬件设计,因此今天主要任务就是把剩余的显示电路和数字温度计电路硬件电路给设计出来。在用AltiumDesigner画硬件图的时候发现忘掉了一种关键环节,就是对其中部分元件的参数值确实定。目前能体会那种差之毫厘谬以千里的心情,作为一种学工科的人,必须要有一颗严谨认真的心,来把握整个电路的设计。实习日记年12月22日今天是硬件电路设计的最终一天,就是设计矩阵键盘电路。看了原理图,发现不是很难,但最重要的是布线问题,在这个问题上花了很久的时间。最终完毕了硬件的设计。此外,今天干的另一件事情就是将这几天的设计融合在一起,汇成了总设计图,一加一真是大于二的事情啊。弄完了硬件部分,明天就可以弄软件了,加油加油!实习日记年12月22日今天终于要弄软件部分了,其实还是满忐忑的,由于设计程序对我来说并不是一件轻易的事情,我一直都觉得这是一门很难学的外语。编程历来是我并不在行的,因此我今天花了不少时间,把我自己的单片机上面所附带的例程找出来,选出有关键盘显示,温度控制等有关的例程找出来,并通过对例程的学习,对于基本的关键字,语句等有所理解。然后尝试写好软件流程图,并根据软件流程图和例程的程序,进行修改和改善,重新编写了自己程序。不过进度时钟有点慢,总是会出现某些错误,使KeiluVIision4没有措施进行编译。最终只有数字温度计电路模块编译成功了。实习日记年12月22日昨天的程序编写让我懂得我的C基础的微弱,由于单片机书本上以及单片机的考试更多的是用汇编程序编写,而学习C已经是好几种学期之前的事情了,因此我决定临时变化一下计划,今天恶补一下C语言。因此今天把当时考二级的时候的参照书,参照资料都翻找出来,幸好有诸多的重点和笔记协助我找回重拾的记忆,想着后来也许就要吃程序员这碗饭了,像我目前这样的技术含量,真是让我倍感羞愧呀。昨天熬夜的编写,让我开始担忧,与否后来工作了就会像现在这样没完没了的写程序呢?假如真是这样的话,压力真是如此之大啊。但我还是要坚持下来。实习日记年12月22日前天只完毕了数字温度计电路模块的程序编写,今天必须得完毕显示电路和键盘扫描电路的编写,这是件不轻易的事情,好不轻易编译成功,在一番心中小小的激动之后,却面临更大的困境,就是该怎样把已经写好的是三个分块程序融合为一种程序呢?刚开始我天真认为把所有的程序贴在一起就可以了,编译失败和那实在是不堪入目的错误数目,让我意识到接下来融合在一起的工程才是最艰难的事情。这让我再一次感受到,一加一不小于二的感觉。看着那些引脚,那些端口,在刚开始分开编程的时候并没有考虑到接口的问题,于是多种接口就会相冲,实在是多种相冲突。在纠结了很久之后,仍旧无果,只能明天继续了,唉,但愿明天有个好运气。实习日记年12月23日今天又是很苦的一天,融合程序实在是件不轻易的事情,至少通过编译就是件不轻易的事情。不过不经意间,已经实习了一周多了,时间真是无声无息的溜走了,不懂得是时间过的太快还是过的太慢,这一周紧凑的安排和大工作量,让我毫无感觉的过了上个周末。可是,在多种求援和纠结的编程之后,终于通过了编译,一阵窃喜,虽然不懂得是不是可以仿真成功,不过心情却好了一大截,感觉就和过周末同样,好开心。于是趁热打铁,我决定开始进行电路的仿真,于是便开始用proteus来画电路仿真图。虽然之前做准备工作的时候有熟悉一下软件,不过毕竟又过了没日没夜的一周,对于找元器件等制图过程,便显得格外的辛劳。于是用了比我想象中更久的时间画好了仿真电路图并设置好了多种连接端口。明天就开始我的仿真之旅吧。

实习日记年12月24日本来打算怀着愉悦的心情踏上今天的仿真之旅的,可是刚开始就遭到了一种晴天霹雳。发现软件不能生成的hex文献放入主机和从机,真是六神无主了。于是通过高手指教之后,才发现一直以来我都忽视了双机通信的模块。看来做一种编程者,必须要看清全局,把多种也许的冲突不兼容都给消灭掉,看来真的最厉害的编程不是越复杂的编程,而是可以和多种终端兼容的编程。只能继续研究程序,更改程序了。不过接口问题让我发现,这是一种比我想象中更麻烦的事情,怎样运用好三个P口,并且使他们都不发生冲突真的棘手。不过开心的事情是时钟模块已经部分可以调整出来了,这样多按键怎样分派也是一种大问题呢,明天继续仿真,加油加油!实习日记年12月25日今天继续仿真之旅,预期仿真出来数字温度计模块和键盘扫描模块。数字温度计模块没有过多久也可以仿真出成果了,很开心,不过对于键盘扫描模块,却非常担忧,不过我请教了其他的同学,在通过自己的思索最终得到了成果。长时间在电脑前工作,电脑也开始吃不消扛不住了,没有措施,时间也一点一点的过去了,我想我应当换一种脑筋,临时跳出这个迷局,明天就出去走走,多日没有见到太阳了,走到外面去呼吸下新鲜空气,买买元器件,焊接前置电路,好歹也是任务中的一种啦。

实习日记年12月26日今天打算休息一下大脑,跳出调程序的思绪,因此我打算今天去焊接电路。恰好今每天气也不错,真是天公作美呀,早上打点好元件清单,便火速火燎的骑车去了广埠屯,然后买到了所需要的元件。下午在试验室焊电路。其实从我画的硬件电路上来看,需要附加焊接的电路并不复杂,只不过该怎样漂亮布局,合理排版,并且对的无误的将电路焊出来,也不是一件轻易的事情。并且焊板子也得有耐心,反复着同一件事,还得忽视那烟味和也许会出现的意外伤害。实习日记年12月27日今天继续要焊东西,于是又在试验室呆了一天,虽然这一种过程有些按部就班,不过仍会出现某些问题。不如说元件的布局以及焊的精不精美,这都需要动脑筋。一种上午加一种下午,我终于完毕了最小系统和外部扩展电路的焊接。在初步检查之后,我终于完毕了硬件电路的焊接。实习日记年12月28日昨天焊接好了电路板,目前心情很轻松,感觉整个人都被更新系统了同样,神清气爽的。怀着好心情,我开始新的一轮仿真,这一次的仿真比以往课设花的时间更久,难度更大。故在和同学请假了一段时间之后,再几次失败之后,终于稳定了,不过在这个时候真是一剂强心剂呀。最终的火候就是硬件调试了,将程序下在单片机里面,不过又出现了意想不到的插曲了,例如按键失灵等,可是要找到问题也是件很麻烦的事情,由于不懂得是哪个环节的问题。究竟是芯片问题呢,还是跳线问题呢,还是程序的问题呢。在同学的协助下一一排除了问题的所在,终于可以通过按键出来了所有模块的成果。实习日记年12月29日今天是倒数第二天,答辩前的最终一天了,对于终审答辩,我的内心却没有以往的忐忑,而是非常的安静。今天应当做的事情就是争取调好我的单片机,让因此的努力都在单片机上展现。我终于领悟到调试的重要性,纸上得来终觉浅,绝知此事要躬行,只有调试过程中碰到那些意外的事情才懂得程序的局限性性和要改善的方向。今天只用把双击通信的部分弄好就大功告成了,对于主机和从机的相接,还是重要是对接口的把握,怎样使各个部分不相冲突。在修改程序后,终于实现了功能。实习日记年12月30日怀着喜悦激动尚有点忐忑的心情迎接着今天,由于今天是这次单片机实习课设的最终一天了。而今天也将干这样久以来最重要的事情,就是验收这两周以来的成功——答辩。看着自己焊的前置电路,紧张的又熟悉了一遍原理,并进行了最终一次的单片机实物调试,一切还算正常,没有太大的失控。整顿了一遍汇报,没有太大的失误。但愿答辩的时候也能一切顺利。这两周的艰苦日子是我在大学里从未体验过的两周,这两周很辛劳,晚上睡觉的时候眼前都是单片机,甚至做梦都是在写程序,烧程序。我深深的觉得要有过硬的硬件软件知识,才可以在未来的学习和工作中迎接一次又一次的任务和挑战,这样才能让自己变得愈加有底气,才能提高自己的能力,才能为未来做好准备。10附录单片机源程序:#include"18b20.h"#include"main.h"externunsignedcharl_tmpdate[6];externinttemp;externcharfunc3_flag;voiddisplaytemp(void){ intl_tmp,i;tmpchange();//温度转换 l_tmp=tmp(); //读取温度值 //if(l_tmp<0) //l_tmpdate[0]=57; //判断温度为负温度,前面加"-" //else// {// l_tmpdate[0]=l_tmp/1000; //显示百位,这里用1000,是由于我们之前乖以10了// if(l_tmpdate[0]==0) // l_tmpdate[0]=32;//判断温度为正温度且没有上百,前面不显示,查表第是空// } l_tmp=l_tmp%1000; l_tmpdate[0]=l_tmp/100;//获取十位 l_tmp=l_tmp%100; l_tmpdate[1]=l_tmp/10;//获取个位再 l_tmpdate[1]+=16;//加入小数点,查表可得出有小数点的排在后10位,因此加10 l_tmpdate[2]=l_tmp%10;//获取小数第一位 l_tmpdate[3]=12; if(func3_flag==1) { for(i=0;i<6;i++)//将数据通过串口发送给从机,当串口打开时可以发送 { SBUF=l_tmpdate[i];//发送串行数据 while(TI==0);//等待发送完毕 TI=0; } } for(i=0;i<10;i++){ //循环输出10次,提高亮度 display(l_tmpdate,4); }}voiddelayb(unsignedintcount)//delay{unsignedinti;while(count){i=200;while(i>0)i--;count--;}}voiddsreset(void)//DS18B20初始化{unsignedinti;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;bittmpreadbit(void)//读一位{unsignedinti;bitdat;DS=0;i++;//小延时一下DS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return(dat);}unsignedchartmpread(void)//读一种字节{unsignedchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好//一种字节在DAT里}return(dat);//将一种字节数据返回}voidtmpwritebyte(unsignedchardat){//写一种字节到DS18B20里unsignedinti;unsignedcharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)//写1部分{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;//写0部分i=8;while(i>0)i--;DS=1;i++;i++;}}}voidtmpchange(void)//发送温度转换命令{dsreset();//初始化DS18B20delayb(1);//延时tmpwritebyte(0xcc);//跳过序列号命令tmpwritebyte(0x44);//发送温度转换命令}inttmp()//获得温度{floattt;unsignedchara,b;dsreset();delayb(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);//发送读取数据命令a=tmpread();//持续读两个字节数据b=tmpread();temp=b;temp<<=8;temp=temp|a;//两字节合成一种整型变量。tt=temp*0.0625;//得到真实十进制温度值,由于DS18B20//可以精确到0.0625度,因此读回数据的最低位代表的是//0.0625度。temp=tt*10+0.5;//放大十倍,这样做的目的将小数点后第一位//也转换为可显示数字,同步进行一种四舍五入操作。returntemp;//返回温度值}voidreadrom()//readtheserial读取温度传感器的序列号{//本程序中没有用到此函数unsignedcharsn1,sn2;dsreset();delayb(1);tmpwritebyte(0x33);sn1=tmpread();sn2=tmpread();}voiddelay10ms(){unsignedchara,b;for(a=10;a>0;a--)for(b=60;b>0;b--);}副机程序://P2位选,P0#include<reg52.h>#include<intrins.h>unsignedcharcodetable[]={//共阳数码管常用段码0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,//0-f[0-15]0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e,0xff,//0.-f.,''[16-32]0x8b,0xf1,0xc7,0xab,0xa3,0x8c,0x98,0xaf,0xc1,0xe3,0x89,0x91,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论