2《数字电路与单片机课程设计》管理规定(精选8篇)
2《数字电路与单片机课程设计》管理规定 篇1
<<数字电路与单片机课程设计>>管理规定
目的:课程设计是机械科学与工程教学的重要组成部分,通过课程设计使学
生掌握电机系统的基本组成、工作原理,学习机电系统的分析、设计方法,培养学生团队合作精神和基本科学研究能力。
组织形式:每个小组最多3人,每组选择一个题目。要求学生每人独立承担一部
分设计内容,同时参与本组其它同学设计工作。小组成员分工合作,共同完成课程设计任务。
课堂讨论:每周安排一次课堂讨论,要求所有学生必须参加。每个小组介绍本周小组课程设计进展情况,遇到的问题及解决途径等。报告形式可以是一位同学主讲,其它同学进行补充;也可以每位同学介绍自己的工作。老师、同学共同对设计内容进行提问和讨论。
答疑: 除每周安排一次固定时间进行课堂讨论外,还安排半天答疑时间。具
体时间与地点另行通知。
设计成果:学生每人独立完成一份完整的课程设计报告(word文档)。设计报告
简要介绍整个项目完成的设计工作,详细、重点介绍本人完成的设计工作。
答辩:课程设计最后一天按组汇报、答辩,要求每人发言并重点汇报自己完
成的设计任务。每组汇报时间10-15分钟,提问5分钟。
成果提交:答辩时提交下列材料:每人提交课程设计报告(A4打印版和Word
电子版),每个小组提交答辩PPT(电子版)。
成绩评定:课程设计最后总成绩=课堂讨论成绩(20%)+答辩和课程设计报告
成绩(80%)。
2《数字电路与单片机课程设计》管理规定 篇2
机械电位器因为体积大、性能稳定性较差、受物理环境限制大、调整不方便、易损等缺点, 已逐渐被数字电位器 (Digital Potentiometer) 所取代。数字电位器是一种特殊形式的D/A转换器 (DAC) , 亦称为数控电阻器 (Digitally Controlled Potentio-meters) , 可简称为DCP, 它是采用CMOS工艺制成的数字-模拟混合信号处理集成电路。数字电位器的优点:调节准确和稳定;滑动臂位置数据可长期保存和随时刷新;抗震动、抗污染;易于与计算机接口;性能稳定, 寿命长。因此, 任何需要用电阻进行参数调整、校准或控制的场合, 都可使用数字电位器构成可编程模拟电路。
数字电位器有多种接口形式, SPI同步串行接口是智能控制中常用的一种形式, 本文针对数字电位器X9420的SPI接口功能, 设计一种X9420与单片机接口电路, 该电路利用单片机ATmega8高性能、低功耗、低价格的优势, 实现了电路的高精度和高稳定性, 在多传感器放大电路中具有一定的应用价值。
1 X9420的基本工作原理
数字电位器X9420是Xicor公司生产的一种集成电位器, 其内部结构和管脚图如图1所示。
数字电位器X9420内部主要包括以下部分:递增/递减逻辑电路;4个8位数据寄存器;存储与调用控制电路;接口与控制电路;译码器 (64选1译码电路) ;由MOS场效应管构成的64个模拟开关;电阻网络 (电阻阵列包含63个电阻单元) ;1个滑动端计数寄存器 (WCR) 。X9420经过3线串行接口 (SCK 、SI和SO ) 与单片机 (ATmega8) 相连。X9420通过串行口时钟输入端 (SCK) 、串行口数据输入端 (SI) 、串行口数据输出端 (SO) 、设备地址端 (A0) 和片选信号端undefined传输信号。VCC、VSS分别接电源和系统地。RH、RL分别为数字电位器的高端和低端。RW为滑动端电阻, 滑动端位置数据存储在E2PROM中, 每次掉电后再上电时, 滑动端位置保持在掉电以前的位置。
X9420的基本工作原理:当undefined端接低电平 (即选中该芯片) 时, SCK每输入1个脉冲, 芯片内计数器自动加1, 所得数据由SO送到单片机 (单片机读出) , 经单片机处理的数据经SI输送到芯片 (由单片机写入) 数据寄存器后送入滑动端计数寄存器 (WCR) , WCR低6位经译码器译码后接通模拟开关控制RW, 这相当于移动1次RW位置。当RW位置上移, 使W~L之间的电阻值RWL增大;当RW位置下移, W~L之间的电阻值RWL减小。设H、L端的总电阻为R;W~H端的电阻值为RWH;W~L端的电阻值为RWL。
X9420的指令如表1所示。
2 X9420与单片机ATmega8的接口方法
2.1 硬件连接
单片机ATmega8片内集成了较大容量的非易失性程序和数据存储器以及工作存储器:8 KB的系统内可编程FLASH, 512 B的E2PROM, 1 KB的SRAM, 23个通用I/O口线, 32个通用工作寄存器, 1个SPI串行端口、可编程串行USART, 1个面向字节的2线串行 (I2C) 接口。
X9420与单片机ATmega8组合可以实现智能控制, 两者的接口连接如图2所示。
2.2 软件设计
软件部分主要采用单片机ATmega8的SPI接口对DCP数据信号进行读出、写入控制。首先对单片机ATmega8进行初始化, 并对其SPI控制寄存器SPCR写入01010100, 配置SPI为主模式时, 通过单片机ATmega8的控制将要调整的滑动端位置直接读出或写入指定的寄存器中, 再用简单的程序指令就可实现对X9420的控制。两者的接口控制程序流程如图3所示。
3 应用实例
3.1 在仪表放大器电路中的应用
仪表放大器的用途并不局限于仪器仪表, 它还可广泛用于煤矿井下监测 (声、光、气、温度) 、医用仪器 (例如心电图仪、脑电图仪及血压计) 、控制电子设备、音频设备 (例如传声器的前置放大器) 、信号调理 (多传感器电路) 、视频设备 (用来放大或处理高频信号) 等领域。
X9420与单片机ATmega8和3个运放 (A1~A3) 构成的可编程仪表放大器电路如图4所示。
图4中, A1~A3合用1片LM6064型4运放 (现仅用其中3个运放) :A1和A2均为同相放大器, A1和A2形成输入级或第一级, 作输入缓冲放大器使用, 以提高输入阻抗并降低输出阻抗;A3形成输出级或第二级, 为差分放大器, 作减法器使用, 可完成减法运算。U01、-U01为差分输入信号电压;UREF为-2.5 V 基准电压;R1为数字电位器的总电阻。仪表放大器的电压增益可通过数字电位器进行编程。考虑到上、下2部分电路呈对称结构, 因此, R2~R4各使用2只电阻, 且均采用误差为±0.1%的5.1 kΩ精密金属膜电阻。差分输入信号电压首先由2个缓冲放大器按照单位增益进行放大, 得到差分电压U01、-U01, 然后送至减法器。在减法器中, U01与-U01的运算结果为2U01, 而共模电压被减法器减小到接近于零, 从而大大提高了输出电压的信噪比。放大器的增益和输出电压的计算公式分别如式 (1) 、 (2) 所示:
undefined
式中:A为可编程仪表放大器的增益。
该电路采用X9420系列64抽头的 10 kΩ数字电位器, 其滑动端电阻RW的最大值为400 Ω。当滑动端滑到高端时, R1=R1max=10 kΩ+400 Ω=10.4 kΩ, 取R2=R3=R4=5.1 kΩ, 根据式 (1) , 计算出A=1.98≈2倍。同理, 当滑动端滑到低端时, R1=R1min=400 Ω, 计算出A=26.5倍。因此, 该可编程仪表放大器的增益调节范围约为2~26.5 倍。由此可见, 利用该组合电路取代手动调节R1的方式, 使电路调节更加精准、可靠。
3.2 在振荡器电路中的应用
图5 (a) 为采用NE555组成的占空比可调的脉冲振荡器电路图, 电路实现占空比调节的关键器件是机械电位器RW, NE555工作于无稳态工作方式。采用X9420和ATmega8单片机组成的占空比可调的脉冲振荡器电路如图5 (b) 所示, 该电路替换机械电位器RW, 在单片机控制下可根据需要, 通过程序直接调整输出脉冲的占空比, 驱动继电器实现功率调节功能。
4 结语
本文介绍的数字电位器X9420与单片机ATmega8接口电路, 解决了过去需要对电位器进行参数调整而精度很难达到要求的问题, 并可通过该接口电路进行自动调节, 实现对数字电位器的智能控制;该接口电路优于其它接口形式 (如I2C接口) 的数字电位器, 程序指令编写简单, 自动调节可靠、精度较高, 输出稳定;该接口电路能优化系统电路设计, 可较广泛地应用于传感器放大电路和其它放大器电路的设计中。不足之处是对数字电位器有接口要求。
参考文献
[1]FRANCO S.Design with Operational Amplifiers andAnalog Integrated Circuits[M].西安:西安交通大学出版社, 2005:62~78.
[2]尤克, 倪景秀.气敏传感器及其应用[J].仪表技术与传感器, 2007 (7) :78~80.
[3]师宝山, 张贵州.气体传感器在多参数气体检测仪中的应用[J].仪表技术与传感器, 2007 (6) :23~24.
2《数字电路与单片机课程设计》管理规定 篇3
关键词 集成电路设计 教学方法 教学探索
中图分类号:TN79 文献标识码:A 文章编号:1002-7661(2015)19-0006-02
1958年,美国德州仪器公司的基尔比发明了第一块集成电路,随着半导体工艺和集成电路设计技术的发展,集成电路的规模可以达上亿个晶体管。集成电路具有速度快、体积小、重量轻等优点,广泛应用于汽车、医疗设备、手机和其他消费电子,其2012年集成电路设计市场应用结构如图1所示。
自2006年以来,我国集成电路的产值为126亿美元,占全球产业总产值的5.1%,2013年我国集成电路的产值为405亿美元,占全球产业总产值的13.3%。2006年到2013年的年复合增长率达到18%,远超过全球集成电路产业整体增速。我国集成电路行业的产值如表1所示。
近年来,半导体集成电路产业在国家政策支持下发展迅速,因此对集成电路设计人才的需求剧增。为了满足社会日益发展的需要,国家在高校内大力推广集成电路设计相关的课程,并且取得了较好的效果,使人才缺口减小,但是还是不能满足国内对集成电路设计人才实际数量的需求。为了更好地加快集成电路设计人才的的培养,本文针对《数字集成电路原理》教学中存在的问题,并且根据教学的现状,探索出集成电路设计的教学改革。
一、数字集成电路设计原理教学中的现状
集成电路设计相对于以分立器件设计的传统的电子类专业而言,偏向于系统级的大规模集成电路设计,因此,微电子专业和集成电路设计专业的学生注重设计方法的形成,避免只懂理论、不懂设计的现象。即使学生掌握了设计的方法,能够进行一些小规模的集成电路设计,但是设计出来的产品不能用,不能满足用户的需求。这就成了数字集成电路设计原理面临的问题。
二、数字集成电路设计原理教学改善的方法
(1)针对上述的问题,在多年教学的基础上,在教学方法上进行改进,改变传统的以教师为中心,以课堂讲授为主的教学方式,采用项目化教学来解决数字集成电路设计中只懂理论、不懂设计的现状。注重数字集成电路设计原理与相关课程之间的内部联系,提高学生的学习兴趣,通过将一个项目拆分成几个小项目,使学生在项目中逐渐加深了对知识点理解,并且将课程的主要内容相互衔接与融合,形成完整的集成电路设计概念。学生分成5-8人一组,通过小组的方式加强了学生的相互合作能力,让学生更有责任感和成就感。学生应用相关的EDA软件来完成项目的设计,能够掌握硬件描述语言、综合应用等数字集成电路设计工具。
(2)通过PDCA戴明环的方式改善了集成电路设计的产品可用度不高的问题。在集成电路设计过程中,通过跟踪课内外学生设计中反应的问题,对项目难易度的进行调整,提高学生计划、分析、协作等多方面的能力。结合新的技术或者领域,对项目进行适当的调整。通过PDCA戴明环的方式来持续改进教学内容和方法,使其满足社会对数字集成电路设计人才的需求。PDCA戴明环如图2所示。
(3)开展校企合作的方式,进一步提高教学质量和学生的综合素质,促进企业和学校的共同发展。这种方式实现了学校与企业的优势互补,资源共享,培养出更加适合社会所需要的集成电路设计人才,也能够让学校和企业形成无缝对接。
三、小结
随着大规模集成电路设计的发展,更多的设计工具和设计方法出现,因此,使用最新的设计工具,合理设置《数字集成电路设计原理》的教学内容,可以提高学生的设计能力和培养学生的创新能力。通过对《数字集成电路设计原理》课程教学的探索,改变了以教师为中心的传统采理论课教学方式,充分发挥了学生的能动性和协作能力,使学生理论与实践都能够满足集成电路设计人才的要求。
参考文献:
[1]殷树娟,齐巨杰. 集成电路设计的本科教学现状及探索[J].中国电力教育,2012,(4):64-65.
[2]王铭斐,王民,杨放.集成电路设计类EDA技术教学改革的探讨[J].电脑知识与技术, 2012,8(9):4671-4672.
[3]谢海情,唐立军,文勇军.集成电路设计专业创新型人才培养模式探索[J].人才培养改革, 2013,(28):29-30.
基金项目:(1)重庆市高等学校教学改革研究重点项目(132014);(2)重庆市高等教育学会2013-2014年高等教育科学研究课题(CQGJ13C446);(3)重庆市教育科学“十二五”规划课题(2014-GX-006)。
数字电路课程设计数字时钟实现 篇4
《电子技术课程设计报告》
设计题目:数字钟的设计与制作
专业班级:13级《物联网工程》2班 姓名:白雪 王贞 张莹 学号:068 108 131 指导老师:刘烨
时间:2015年5月15日~ 2015年 5 月30日 地点:四教4414实验室
海南大学儋州校区应用科技学院
摘要:
数字时钟是一种用数字电路技术实现秒﹑分﹑时的计时装置,与传统的机械钟相比,它具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因而得到了广泛的应用。小到人们的日常生活中的电子手表,大到车站﹑机场等公共场所的大型数显电子钟。数字时钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
本课程设计要用通过简单的逻辑芯片实现数字时钟。要点在于用555芯片连接输出为一秒的多谐振荡器用于时钟的秒脉冲,用14位二进制计数器CC4060芯片、7双BCD同步加计数器CD4518芯片、十进制加计数器/7段译码器CD4033芯片等连接成60和12进制的计数器,再通过七段数码管显示,构成了简单数字时钟。关键词:数字时钟;555芯片;计数器;数码管
海南大学儋州校区应用科技学院
1设计目的................................................................................................................................4 1.1设计指标.........................................................................................................................4 2课程设计任务及要求............................................................................................................4 2.1 设计任务........................................................................................................................4 2.2 设计要求........................................................................................................................4 3系统设计................................................................................................................................4 3.1 设计思路........................................................................................................................4 3.2 系统设计........................................................................................................................5 3.2.1 原理图及说明.......................................................................................................5 3.2.2 具体设计.................................................................................................................6
3.2.2.1.小时计时电路...............................................................................................6 3.2.2.2.分钟计时电路...............................................................................................6 3.2.2.3.秒钟计时电路...............................................................................................6 3.2.2.4.手动时间校准电路的设计...........................................................................6 3.2.2.5.光敏电阻的设计...........................................................................................6 主要元器件的介绍...............................................................................................................7 4.1 40161------4位二进制同步计数器(有预置端,异步清除).....................................7 4.2 CD40106..........................................................................................................................7 4.3 CD4009............................................................................................................................8 5 电路板的安装与测试...........................................................................................................8
海南大学儋州校区应用科技学院
1设计目的数字电子钟是一种用数字显示秒﹑分﹑时的记时装置,与传统的机械钟相比,他具有走时准确﹑显示直观﹑无机械传动装置等优点,因而得到了广泛的应用:小到人们的日常生活中的电子手表,大到车站﹑机场等公共场所的大型数显电子钟。
我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。且由于数字钟包括组合逻辑电路和时叙电路。通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
1.1设计指标
1.时间以12小时为一个周期; 2.显示时、分、秒; 3.具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;
2课程设计任务及要求
2.1 设计任务
1、设计一个有“时”,“分”,“秒”(11小时59分59秒)显示且有校时功能的数字时钟钟;
2、用中小规模集成电路组成数字时钟。
2.2 设计要求
1.用555定时器设计一个秒钟脉冲发生器,输入1HZ的时钟;(对已有1kHz频率时钟脉冲进行分频);
2.能显示时、分、秒,12小时制; 3.设计晶体震荡电路来输入时钟脉冲;
4.用双BCD同步加计数器CD4518芯片设计一个分秒钟计数器,即六十进制计数器.;
5.用十进制加计数器/7段译码器CD4033芯片设计一个12小时计数器, 6.译码显示电路显示时间。
3系统设计
3.1 设计思路
数字电子钟由信号发生器、“时、分、秒”计数器、LED数码管、校时电路、整点报时电路等组成。工作原理为时钟源用以产生稳定的脉冲信号,作为数字种的时间基准,要求震荡频率为1HZ,为标准秒脉冲。将标准秒脉冲信号送入“秒计数器”,该计数器采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每 累计60分,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用12进制计数器,可以实现12小时的累计。LED数码管将“时、分、秒”计数器的输出状态显示。校时电路是来对“时、分、秒”显示数字进行校对调整。
海南大学儋州校区应用科技学院
本设计使用芯片数最少、计时准确、动态显示的节电工作方式(耗电量仅为静态显示模式的1.8%)、调试方便、时间校准方便。电路中的振荡器XT为目前多数石英晶体电子表中使用的频率为215=32768HZ的石英晶体,经IC(2CC4060)组成的14级2分频和IC3A(CD4518)组成的一级2分频后可得到1HZ的“秒”脉冲信号。用6个40161分别控制6个数码管,用逻辑门电路选择各个数码管的最大数字,比如说输出9,就要对应的输入二进制数1001,输出3对应0011,1对应 0001。逻辑门电路选择好最大数,就接入下一个40161的 CLK 端,来进位。MR端要接入与非门和40106之间,读取最大数。我们设计的是实现0~9,0~5,0~1,0~2的进位方式。从秒开始,0~59,分0~59,时0~11.3.2 系统设计
3.2.1 原理图及说明
时LED数码管分LED 数码管秒LED数码管时计数(十二进制)分计数(六十进制)秒计数(六十进制)时校准分校准晶体振荡器分频器(1)电路原理框图
(2)电路原理图
海南大学儋州校区应用科技学院
用555电路构成的1KHz多谐振荡器,调节电阻R3可以改变输出信号频率。74LS160是二,五,十进制同步加法器,用三片74LS90构成三级十分频器,将1KHz矩形波分频得到1Hz基准秒计时信号。由于74LS160是十进制计数器,分别将个位接成十进制计数器,十位接成六进制计数器,分别将个位的RCO输出端接十位的9脚端,就构成60进制计数器,用两个相同的60进制计数器分别做作为秒,分计时,并在个位和十位输出端接上数码显示管显示小时计数器直接采用整体反馈清零法构成24进制计数器。工作原理:振荡电路产生的1KHZ脉冲信号经三级十分频电路分频后产生的1HZ脉冲信号输入74LS90N连成的60进制秒计数器,再由秒计数器每60秒进位输出给60进制分钟计数器,分钟计数器满60后产生进位信号输入给24进制小时计数器,从而实现12小时制电子钟的功能。
3.2.2 具体设计
3.2.2.1.小时计时电路
小时计时电路由两块4033B和4081芯片7段译码器组成12进制计数电路。该电路译码器能识别数字00到11的计数,当接收到从“分”传来信号到芯片4033的第1个管脚时,使得在小时的计数模块进行加1,每接收到一次信号,即进行一次计数,计一次为一小时,同时将信号反馈回“分”,使得将计数清零。即可可以将小时从“00”到“11”后,在继续计时时,计数器计数将会被置回“00”。使整个计数器在小时的计数模块成为从“00”到“11”到清零循环回“00”到“11”这样的12进制的12个稳定状态的计时方法。3.2.2.2.分钟计时电路
与小时计时模块相比,分钟计时模块相对简单些。它的电路原理是由于两块4033B芯片组成的60进制的分钟计数方式,该译码器电路能识别信号59,整个计数计时方式是从“00”到“01”“02”.....“59”在到“00”的共60个稳定状态的自动连续循环模式。3.2.2.3.秒钟计时电路
秒钟的计数又有些相同与不同。它同样是由4033B两块芯片进行构成60进制计数。该译码器识别信号至59,然后清零循环计数。计数方式与分钟计数方式一样。但除了4033B芯片外,外加了4060和4518两块芯片。外加了两块芯片使得在秒钟计数模块有了自动的计数方法。而不是通过外来校准不停的进行调整计数。
3.2.2.4.手动时间校准电路的设计
S1和S2分别为“小时”与“分”的手动校准电路。S1按动一次,在小时计时部位计数加1,S2按动一次,在分钟计时计数数码管显示上显示加1,。滤波电路C3、R10和C4、R13分别用来吸收S1和S2的动作产生的电压抖动。二极管D1、D2分别为“小时”与“分”校准电路与相邻下一级计数器“清零”端R之间的单向隔离文件。R11、R12为手动校准电路的限流范围。3.2.2.5.光敏电阻的设计
光敏电阻R1~R6分别为数码管DS1~DS6夜间工作在节电模式时的亮度自动控制电路。光敏电阻可选用MG41-22或MG45-
12、或5606、6106型(亮电阻≤2KΩ,暗电阻≥900KΩ)。每只数码管的公共端第3(8)脚通过一光敏电阻串联晶体开关管9013接地。当夜晚室内光线较暗时,数码管自动降低亮度。数码管DS1~DS6采用超高亮度的数码管5011型,这种LED数码管耗电为普通数码管的十分之一,每个段码的驱动电流仅为1mA,就可以发出普通数码管20mA
海南大学儋州校区应用科技学院
工作电流时相同的亮度。当其工作电流达20mA时,发出光亮足以保证在室外阳光下正常显示。该控制电路可使数码管显示的供电电流降低到原来的1/30,即为10~15 mA的水平。开关管Q1~Q3选用9013(40V、0.5A、0.625W、低频)可满足控制两个数码管阴极电流通断的要求。本设计还充分利用芯片CD4033的“零”数字消隐功能,即当十位上海数字为零时,该数码管不亮。例如,当时间为9时8分5秒,不是显示“09”时“08”分“05”秒,而是显示“9”时“8”分“5”秒,该设计方案可使数码管显示的供电电流降低到原来的1.8%,即为5~9 mA的水平,可大大降低电源的能耗。主要元器件的介绍
4.1 40161------4位二进制同步计数器(有预置端,异步清除)
40161是4位可编程计数器,复位采用异步方式,当CLEAR为低电平时,使四个输出端均置为低电平,而与CLOCK、/LOAD或PE、TE输入的状态无关,/LOAD为低电平时,计数器无效,使输出端在下一时钟脉冲与设置的数据一致,并与PE、TE输入端的状态无关。
N位同步级联计数器可由超前进位电路实现,不需要外加控制,此功能由两个计数控制输入端和进位输出端完成。PE、TE输入端均为高电平时,计数有效,当计数超过“15”时,进位输出端CARRY OUT(CO)即产生一正向输出脉冲,其脉冲宽度约等于Q1输出正向宽度,此正向溢出进位脉冲可使下一级联电路有效,时钟无论为高电平或低电平,均可实现PE或TE输出的逻辑转换。
4.2 CD40106 CD40106由六个施密特触发器电路组成。每个电路均为在两输入端具有施密特触发器功能的反相器。触发器在信号的上升和下降沿的不同点开、关。上升电压(V T+)和下降电压(V T-)之差定义为滞后电压。它的2 4 6 8 10 12引脚是数据输出端,1 3 5 9 11 13是数据输入端,14是电源正,7接地。
CD4016引脚图
海南大学儋州校区应用科技学院
4.3 CD4009 CD4009是十六进制的CMOS缓冲器/变换器 电路板的安装与测试
为了方便检测,电路有6位数码管安装在CD4033的上方,分别显示出时“00~11”分“00~59”秒“00~59”的时钟显示。根据电路的设计特点,在安装过程中,基于测试同时进行。在安装测试顺序是①1HZ脉冲信号的产生电路,运用逻辑笔测试芯片IC34的Q0端的“1HZ”的脉冲输出信号;②“秒钟”计数/译码/显示电路,显示0秒钟~59秒钟,运用逻辑笔测试芯片IC5A第3期的“满60秒进一”的进位脉冲输出信号;③“分”钟计数/译码/显示电路,显示0分钟~59分钟,运用逻辑笔测试芯片IC58第四脚的“满60进一”的进位脉冲输出信号;④“小时”计数/译码/显示电路,显示0小时~12小时,运用逻辑笔测试芯片IC5C第10脚的“清零”脉冲输出信号;⑤分别按动开关S1、S2,测试时间校准电路的功能及可靠性;⑥用厚纸片遮蔽敏光电阻的上方,观测数码管亮度显示接受控制前后的响应情况。6个单元电路组装合格后,电路可以显示12小时内的任一时间。时间校准电路组装完成后,可以校准当前时间,并验证一昼夜
海南大学儋州校区应用科技学院
24小时的计时误差是否在一定范围内;然后在一定电源内测量整机最大工作电流是否也在一定范围之间。
海南大学儋州校区应用科技学院
海南大学儋州校区应用科技学院
2《数字电路与单片机课程设计》管理规定 篇5
1)设计题目
简易数字频率计
2)设计任务和要求
要求设计一个简易的数字频率计,测量给定信号的频率,并用十进制数字显示,具体指标为:
1)测量范围:1HZ—9.999KHZ,闸门时间1s;
HZ—99.99KHZ,闸门时间0.1s;
HZ—999.9KHZ,闸门时间10ms;
KHZ—9999KHZ,闸门时间1ms;
2)显示方式:四位十进制数
3)当被测信号的频率超出测量范围时,报警.3)原理电路和程序设计:
(1)整体电路
数显式频率计电路
(2)单元电路设计;
(a)时基电路
(b)放大逻辑电路
(c)计数、译码、驱动电路
(3)说明电路工作原理;
四位数字式频率计是由一个CD4017(包含一个计数器和一个译码器)组成逻辑电路,一个555组成时基电路,一个9014形成放大电路,四个CD40110(在图中是由四个74LS48、四个74LS194、四个74LS90组成)及数码管组成。
两个CD40110串联成一个四位数的十进制计数器,与非门U1A、U1B构成计数脉冲输入电路。当被测信号从U1A输入,经过U1A、U1B两级反相和整形后加至计数器U13的CP+,通过计数器的运算转换,将输入脉冲数转换为相应的数码显示笔段,通过数码管显示出来,范围是1—9。当输入第十个脉冲,就通过CO输入下一个CD40110的CP+,所以此四位计数器范围为1—9999。
其中U1A与非门是一个能够控制信号是否输入的计数电路闸门,当一个输入端输入的时基信号为高电平的时候,闸门打开,信号能够通过;否则不能通过。
时基电路555与R2、R3,R4、C3组成低频多谐振荡器,产生1HZ的秒时基脉冲,作为闸门控制信号。计数公式:来确定。
与非门U2A与CD4017组成门控电路,在测量时,当时基电路输出第一个时基脉冲并通过U2A反相后加至CD4017的CP,CD4017的2脚输出高电平从而使得闸门打开。1s后,时基电路送来第二个脉冲信号,CD4017的2脚变为低电平,闸门关闭,测量结束。数码管显示即为所测频率。当555第三个脉冲送过来的时候,电路保持间歇1S,第四个脉冲后高电平加至R,使计数器复位。为下一次计算准备。
(4)元件选择。
资
料
元
件
标号
封装
数量
芯片
CD40110
GK7491AG
陶瓷熔扁平
CD4017
62F2X6KE4
陶瓷熔扁平
74LS00
陶瓷熔扁平
74LS10
陶瓷熔扁平
NE555
K104G4
双列直插型号
显示器
七段共阴数码管
电阻
300Ω
1KΩ
5.1KΩ
10KΩ
100KΩ
1MΩ
10KΩ(滑动)
电容
1000PF
0.1μF
100μF
二极管
1N4148
发光LED
开关
单刀双掷
导线
导线
若干
三极管
9014
电源
12V直流电源
4)电路和程序调试过程与结果:
a)、设计逻辑流程:
b)、理论波形图:
c)、仿真波形图:
1)、时基电路
2)、未、已经过施密特的波形:
d)、误差分析:
本实验的误差来自多方面的原因:一、时基电路NE555的滑动变阻器调节导致误差;二、闸门开放时间与信号输入时间的冲突导致测量不准确;三、整体电路的阻抗、容抗对电路信号的影响。
对于第一点,先计算相关的滑动变阻器的相应阻值大小,然后可以在关闭电源的情况下用万用表测量后才进行测量;第二点有点系统的偶然性;第三点可以尽量减少电路布局,从而减少相应的影响。
5)总结
这个电路多处使用了集成IC芯片,让电路更加简洁明了,并且提高了电路的安全性、可行性,减少了整个电路的功耗和整个电路的布线。但是此电路没有完全地符合实验要求:首先,整个电路没有施密特触发器,输入信号放大电路,数码管的小数点驱动,满位报警电路。因此我首先加入以三极管9014为核心的放大电路;然后用74LS00两个双输入与非门构成施密特触发器,对输入信号进行整形;对于报警电路,由于集成IC没有译码电路引脚,所以选择了一个8输入与非门和一个74LS00结成,这样可以充分考虑到唯一性;还有就是它的计数不是直接显示频率,而是显示一个数字,再与闸门的时候计算才可以得出真正的频率。
总体来说,电路还是存在一点小问题没有得到很好的解决,因为74LS00组成的施密特触发器没有很好地整形波,在示波器上出现脉冲波,还得于计算,可以改为以NE555组成的施密特电路。改用其他的数码管驱动,从而驱动小数点。
通过这次实验,让我认识到数字电路的万千变化,集成IC的推出,大大提高安全性和可行性。理解了科学就是力量。最主要是学习到设计电路的思想以为加强自己的焊接能力。让自己的电子技术更上一层楼。
附录:完整的电路PCB图,完整的源程序名列表(不需要把源程序打印出来,作为电子文档提交)。
附录一:
数电课程设计 数字钟电路设计 篇6
目录
一、设计目的........................................................................................2
二、设计要求和设计指标....................................................................2(1)基本功能..................................................................................2(2)扩展功能..................................................................................2
三、设计内容........................................................................................2 3.1数字钟电路工作原理...................................................................2 3.2总体设计.......................................................................................3 3.2.1原理框图:.........................................................................3 3.2.2主要仪器及元器件.............................................................4 3.2.3系统模块设计.....................................................................4 3.3仿真结果.......................................................................................7 3.3.1电路连接.............................................................................7 3.3.2仿真截图.............................................................................8
四、本设计改进及建议........................................................................9
五、总结....................................................................................................9
六、参考文献..........................................................................................10 1
数字电子技术课程设计报告
一、设计目的
(1)掌握多功能数字钟的工作原理。
(2)掌握基本逻辑门电路、译码器、数据分配器、数据选择器、数值比较器、触发器、计数器、锁存器、555定时器等常用数字电路的综合设计方法。(3)熟悉用Proteus软件进行数字电路仿真设计的方法。(4)了解用Altium Designer软件进行PCB设计的方法。
(5)熟悉复杂数字电路的安装、测试方法,提高实验技能,增强工程实践能力。
二、设计要求和设计指标
(1)基本功能
具有“秒”“分”“时”计时和显示功能。小时按24小时计时制计时。校时功能,能够对“分”和“时”进行调整。(2)扩展功能
具有整点报时功能,在59min51s后隔秒发出500Hz的低音报时信号,在59min59s时发出1kHz的高音报时信号,声响时间持续1s。闹钟功能,闹时信号持续1min。
三、设计内容
3.1数字钟电路工作原理
电子数字钟的,通过计时精度很高的石英晶振,采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。
1.晶体振荡器电路
晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数
数字电子技术课程设计报告
字钟的走时准确及稳定。2.分频器电路
分频器电路将32768Hz的高频方波信号经32768()次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。3.时间计数器电路
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器。4.译码驱动电路
译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,译码电路及驱动电路由74LS248电路完成。5.数码管
数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。
3.2总体设计
3.2.1原理框图:如图1
数字电子技术课程设计报告
图1:数字钟设计原理
3.2.2主要仪器及元器件
用到的元件有:7SEG-BCD、74HC30、74LS08、74LS90、555、BUTTON、CAP、CELL、LED-RED、RES等。3.2.3系统模块设计
(1)秒信号发生电路
根据计时的精度确定石英晶振的频率,采用32768HZ的石英晶体振荡器通过15次的分频来获得秒脉冲的信号,作为计时的基本单位。选CD4060作为秒脉冲发生电路的主要器件,它是14级的二进制计数器/分频器/振荡器。如图2,C1,C2,晶振,R4,CD4060等器件构成32768HZ振荡器。3脚输出14分频信号,图中的R4是反馈电阻,可使内部的非门电阻工作在线性放大区,C2是微调电容,可改变振荡频率,以保证精确度。从3脚输出的为32768的第14级二分频,即为2HZ,经74LS74(D触发器)再作二分频,从而得到秒脉冲(1HZ信号)为止。
(2)“时”“分”“秒”计数器电路“秒”、“分”、“时”计数器电路采用双BCD同步加法计数器CD4518,由图2得到的秒脉冲送图3a秒计数器,由此完成60秒计数功能。由74LS08的3脚输出信号即为60秒的进位时脉冲。
数字电子技术课程设计报告
图中,QA1、QB1、QC1、QD1为秒个位上十进制显示的二进制BCD码,QA1、QB2、QC2、QD2为秒十位上6进制BCD码,当十位要显示十进制6时即0110,QB2、QC2位均为1,利用此条件,经74LS08(四二输入与门)内部与门输出为1即高电平,给15脚,高电平使CD4518一组十位上的计数输出全部为0并向前输出一高电平,其他时候为低电平,此脉冲即为分脉冲的输入信号。CD4518 15脚和2脚分别为清零端,当它为高电平时,QD~QA=0为低电平,执行计数功能,其脉冲输入有2个方式,从2脚10脚输入时,为下降沿计数,此时9脚1脚接低电平才有效,否则不能计数,计数脉冲信号从9脚1脚输入时,从脉冲的上升沿开始计数,此时,2脚10脚应高电平才有效,否则不能计数。
分计数器与秒计数器完全相同。不同之处在于输出的脉冲不同,前者是1HZ,这里是1/60 HZ。图略。
时计数器为24进制计数,基本电路与分秒计数器相同。不同的是找出24进制的复位脉冲即显示24时个位及十位共8个输出端全部清零。十位为0010(显示2)时,个位为0100(显示4)时全部清零即00点。选十位的QB=1和个位的QC=1,通过与门74LS08给CD4518的15脚与7脚为高电平,使输出QA~QD全为0从而实现24进制,此进位
脉冲即为一天的计数脉冲,此设计中未使用。时计数器电路如图4:
数字电子技术课程设计报告
(3)译码显示电路设计 由计数器得到的4位二进制码的必须通过译码后转为人民习惯的数字显示。如12:54:30的二进制码为00010010:01010100:00110000。译码之后再驱动7段数码管显示时、分、秒。译码电路及驱动电路由74LS248电路完成。
见图5:
74LS248既作译码又是LED的驱动电路。13.12.11.10.9.15.14 输出分别推动数码管的a.b.c d.e.f.g.字段。74LS248的7、1、2、6 脚分别输出4 位二进制BCD码。根据计数器的输出状态由74LS248译码后再驱动LED直观显示出来。LED是共阴的。在LED 的第3或8脚串接一个电阻。可以改变LED 的亮度。
数字电子技术课程设计报告
(4)校时电路的设计
当出现时间误差时,可利用秒脉冲来进行校对,具体方法是通过校时开关将秒脉冲直接输入到分计数器和时计数器。利用微动开关进行校对。如图6所示:
校对工作过程,校对时,将开关拨到校对位置。此时秒计数器无脉冲输入停止计数。接下微动开关S1时。脉冲输入到74LS32的10脚。内部为二输入或门电路。⑨脚输入的是分脉冲,因秒计数器停止,分计数器也停止(不停也可以),分脉冲用秒脉冲替代。分计数器由1分计数脉冲变为1秒计数脉冲,加快了调整速度。同理,按下S2开关后,小时输入脉冲就以1秒脉冲代替,快速改变小时的显示,达到校时目的。当时间调到与标准时间相同时将开关拨到正常位置,计时又开始。
3.3仿真结果
3.3.1电路连接如图7所示
数字电子技术课程设计报告
D1LED-RED+5v8U574HC30+5v1234U10141CKACKBQ0Q1Q2Q31298116U4:B5474LS083174LS08U4:A22367R0(1)R0(2)R9(1)R9(2)74LS90U3U9141CKACKBQ0Q1Q2Q3129811U7141CKACKBQ0Q1Q2Q***2Q0Q1Q2Q3129811CKACKB2367R0(1)R0(2)R9(1)R9(2)74LS902367R0(1)R0(2)R9(1)R9(2)74LS902367R0(1)R0(2)R9(1)R9(2)74LS9021U8:A74LS08U2U63141CKACKBQ0Q1Q2Q3129811141CKACKBQ0Q1Q2Q3129811U4:C108911U4:D131274LS082367R0(1)R0(2)R9(1)R9(2)74LS902367R0(1)R0(2)R9(1)R9(2)74LS9074LS088U1QDC37R2500k23%RVCC4RV11kC150.01u2CVR1GNDTRTH6250k1555C21.428577u
图7 仿真电路
3.3.2仿真截图
(1)仿真后的截图如下:
图8 仿真后截图
(2)仿真后的波形图如下:
数字电子技术课程设计报告
图9 仿真波形图
四、本设计改进及建议
1.用示波器检测集成电路多谐振荡器的输出信号波形和频率,振荡器输出频率应为32768HZ。
2.将频率为32768Hz的信号送入分频器,并用示波器检查各级分频器的输出频率是否符合设计要求。
3.将1秒信号分别送入“时”、“分”、“秒”计数器,用显示器检查计数器的工作情况,看计数器是否按设计的进制计数。4.观察校时电路的功能是否满足校时要求。
5.当分频器和计数器正常工作后,将各级的电路相连,观察数字钟能否准确正常工作。
五、总结 在此次的数字钟设计过程中,更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法.在连接六进制,十进制,六十进制的进位及十二进制的接法中,要求熟悉逻辑电路及其芯片各引脚的功能,那么在电路出错时便能准确地找出错误所在并及时纠正了.在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的。在设计电路的连接图中出错的主要原因都是接线和芯片的接触不良以及接线的错 9
数字电子技术课程设计报告
误所引起的.接线的时候一定要细心,不要接错
对自己的设计图要仔细考虑,是否可行,尤其是进位输出,着重看看进位的CP脉冲是否正确。
在连接校正电路的过程中,出现时和分都能正常校正时,但秒却受到影响,特别时一较分钟的时候秒乱跳,而不校时的时候,秒从40跳到59,然后又跳回40,分和秒之间无进位,电路在时,分,秒进位过程中能正常显示,故可排除芯片和连线的接触不良的问题.经检查,校正电路的连线没有错误,后用万用表的直流电压档带电检测秒十位的QA,QB,QC和QD脚,发现QA脚时有电压时而无电压,再检测秒到分和分到时的进位端,发现是由于秒到分的进位未拔掉所至.在EWB软件中得到绘制出原理图。每一部分电路完成后就对其进行功能检测,以便及时发现问题进行改正。扩展电路是在主体电路的基础上加上一部分功能实现电路,以实现定时、整点报时等功能。并附带原理阐述。
通过这次课程设计学习,让我对各种电路都有了大概的了解,也学会了常用绘图软件及仿真软件的应用。
所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解,才会有收获。
六、参考文献
2《数字电路与单片机课程设计》管理规定 篇7
1 电路设计
1.1 设计方案
如图1所示, 以C8051单片机为控制核心, 以直流电动机为控制对象, 由转速设定电路设定转速初值, 由C8051自带的ADC转换器检测电流, 由霍尔元件检测电动机的实际转速, 经PI运算, 控制C8051自带的PWM信号发生器的输出占空比, 经PWM功放, 对直流电动机的转速进行控制。
1.2 电路工作原理
如图2所示, 采用转速、电流双闭环调速电路, 在电路中设置了两个调节器, 分别调节转速和电流, 二者之间实行串级联接, 这样就可以在起动过程中只有电流负反馈, 它和转速负反馈不同时加到一个调节器的输入端;到达稳态转速后, 就只靠转速负反馈, 而不靠电流负反馈发挥主要的作用, 这样就能够获得良好的静、动态性能。
1.3 转速设定电路
如图3所示, 采用P1口构成16个键, 其中十个数字键“0~9”, 4个功能键, 包括“设置”、“左移”、“右移”、“确认”。“设置”键用来使电路进入转速设置状态;“左移”和“右移”键用来确定要设置的位;“确认”键用来确认转速设置完毕;另外两个键没有定义, 可留作以后作功能扩展。
1.4 转速显示电路
如图4所示, 显示部分由采用4块数码管串行显示, 其中74LS164为串入并出译码器, C8051通过串行口输出的BCD串行码经74LS164译码输出为七段BCD码, 直接与LED的a~g相连, C8051采用串行口的工作方式0。
1.5 电流检测与控制
在测量较大的电流时, 必须通过互感器把强大电流按一定比例转变为容易测量的小电流供测量。电流检测电路通过电流互感器将交流电流变成0~5V电压信号, 经整流和滤波后加到C8051单片机的模/数转换器DAC端口AIN0。电流控制环节的输入为速度调节器的输出, 该环节根据电流的给定和反馈, 经数字PI控制电枢电流。本文采用较常见的二次为5A的300/5A电流互感器, 精度选用0.5级。
1.6 转速检测与控制
如图5, 图6所示, 转速检测部分采用霍尔元件测量转速。从传感器得到的矩形脉冲经传输后往往会发生波形畸变, 此时, 可通过信号预处理电路对所测得的脉冲信号进行处理。信号预处理电路由二级电路组成, 第一级是由开关三级管级成的零偏置电路, 可保证放大器具有良好的高频响应;第二级采用带施密特触发器的反相器DM74LS14把放大器生所的单相脉冲转换成与CMOS电平相兼容的方波信号, 从而得到较理想的矩形脉冲波形。
1.7 PWM功放电路
C8051单片机将捕捉/比较模块0设置为PWM方式, 并将PWM口定向到引脚P0.0, 使用片内时钟, 时钟频率设置为16MHZ, 定时器/计数器列阵PCA的时钟设置为系统时钟的4分频, 所以PWM的频率f为:
因为单片机产生的PWM信号不能直接驱动电机, 所以必须要有合适的功放电路, 采用最简单的IGBT-PWM放大器, 如图7所示:
在IGBT管Tr栅极加如图8所示的脉冲信号, 当0≤t≤ton时, Tr导通, 集电极电流流过电动机电枢;在ton≤t≤T期间, Tr关断, 续流二极管D续流, 电动机电枢仍有电流, 电枢电压和电流波形分别如图8所示。
电枢电压的平均值为:, 其中称为占空比。如果栅极输入电压信号的频率一定, 改变脉冲宽度, 就改变了占空比, 电枢上的平均电压就改变了, 进而可以实现电机的调速。
2 仿真
本电路中, 电流调节器和转速调节器的仿真模型分别采有Ⅰ型和Ⅱ型系统, 都采用PI型, 其传递函数分别如下:
在SMULNK中建立的系统动态仿真结构图。
3 结论
在此单片机控制的直流调速电路中, 速度给定、速度反馈和电流反馈信号是通过单片机键盘、中断、内部A/D转换器送入单片机内, 单片机按照已定的PI控制算法计算产生脉冲, 经PWM信号发生器, 改变PWM的占空比, 从而改变输出电压的大小, 以平稳的调节电动机的速度。测速采用了霍尔元件, 这是一种工业上的常用方法, 不仅精度高, 而且安全稳定、维护方便, 各项性能指标都能够满足实际生产的要求。
摘要:随着单片机技术的日新月异, 使得许多控制功能及算法可以采用软件技术来完成, 为直流电动机的控制提供了更大的灵活性, 并使系统能达到更高的性能, 节约人力资源和降低系统成本, 从而有效的提高工作效率。
关键词:单片机,PWM,双闭环控制,仿真
参考文献
[1]王晓明.电动机的单片机控制 (第2版) [M].北京:北京航空航天出版社, 2007.
[2]徐英凤, 龚民, 陈白宁, 赵碧.一种基于AT89C51单片机的直流调速控制装置[J].沈阳理工大学学报, 2007.
2《数字电路与单片机课程设计》管理规定 篇8
题:
基于51单片机数字温度计设计
专
业:
电子信息工程
班
级:
班
学
号:
姓
名:
指导教师:
设计日期:
成绩:
XX大学XX学院电气学院
基于51单片机数字温度计设计
一、设计目的1、掌握单片机电路的设计原理、组装与调试方法。
2、掌握LED数码显示电路的设计和使用方法。
3、掌握DS18B20温度传感器的工作原理及使用方法。
二、设计要求
1、本次单片机课程设计要求以51系列单片机为核心,以开发板为平台。
2、设计一个数字式温度计,要求使用DS18B20温度传感器测量温度。
3、经单片机处理后,要求用4位一体共阴LED数码管来设计显示电路,以显示测量的温度值。
4、另外还要求在设计中加入报警系统,如果我们所设计的系统用来监控某一设备,当设备的温度超过或低于我们所设定的温度值时,系统会产生报警。
5、要求在设计中加入上下限警报温度设置电路。
三、设计的具体实现
1数字温度计设计的方案
在做数字温度计的单片机电路中,对信号的采集电路大多都是使用传感器,这是非常容易实现的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。采集之后,通过使用51系列的单片机,可以对数据进行相应的处理,再由LED显示电路对其数据进行显示。
2系统设计框图
温度计电路设计总体设计方框图如下图所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用4位一体共阴LED数码管以串口传送数据实现温度显示。此外,还添加了报警系统,对温度实施监控。
3主控器AT89C51芯片
对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89C51
以低价位单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS—51的CMOS产品。
AT8951的管脚如下图所示:
AT89C51芯片管脚图
4时钟电路
80C51时钟有两种方式产生,即内部方式和外部方式。80C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。本次采用内部震荡电路,瓷片电容采用22PF,晶振为12MHZ。
晶体震荡电路图
复位电路
单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用10KΩ的阻值,电容采用10μF的电容值。
复位电路
温度传感电路
DALLAS
最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS
半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55~+125
摄氏度,可编程为9位~12
位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM
中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式,DQ
为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地,如下图所示。
DS18B20管脚图
显示电路
对于数字温度的显示,我们采用4位一体共阴LED数码管。足够显示0~100中各位数,并且还能显示一位小数部分。
4位LED数码显示管
温度报警电路
对于数字温度计的设计,除了温度的数字显示功能外还加入了报警系统,当测量的温度超过或低于我们所设定的温度值时,系统会产生报警并亮红灯报警。
其电路图如下所示。
蜂鸣器红灯报警系统电路图
源程序:
/********************************************************************
*
程序名;
基于51单片机的温度计
*
功
能:
实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来
*
进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限
*
调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动
*
退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除
*
按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能,*
K1是实现减1功能,K3是用来设定上下限温度正负的。
*********************************************************************/
#include
#include
#define
uint
unsigned
int
#define
uchar
unsigned
char
uchar
max=0x00,min=0x00;
//max是上限报警温度,min是下限报警温度
bit
s=0;
//s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右
bit
s1=0;
//s1标志位用于上下限查看时的显示
void
display1(uint
z);
#include“ds18b20.h“
#include“keyscan.h“
#include“display.h“
/******************************************************/
/*
主函数
/
/*****************************************************/
void
main()
{
beer=1;
//关闭蜂鸣器
led=1;
//关闭LED灯
timer1_init(0);
//初始化定时器1(未启动定时器1)
get_temperature(1);
//首次启动DS18B20获取温度(DS18B20上电后自动将EEPROM中的上下限温度复制到TH和TL寄存器)
while(1)
{
keyscan();
get_temperature(0);
display(temp,temp_d*0.625);
alarm();
}
}
/**********************************************************************
*
程序名;
ds18b20数码管动态显示头文件
*
功
能:
通过定时器0延时是数码管动态显示
**********************************************************************/
#ifndef
__ds18b20_display_H__
#define
__ds18b20_display_H__
#define
uint
unsigned
int
//变量类型宏定义,用uint表示无符号整形(16位)
#define
uchar
unsigned
char
//变量类型宏定义,用uchar表示无符号字符型(8位)
sbit
wei1=P2^4;
//可位寻址变量定义,用wei1表示P2.4口
sbit
wei2=P2^5;
//用wei2表示P2.5口
sbit
wei3=P2^6;
//用wei3表示P2.6口
sbit
wei4=P2^7;
//用wei4表示P2.7口
uchar
num=0;
//定义num为全局无符号字符型变量,赋初值为‘0’
uchar
code
temperature1[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//定义显示码表0~9
uchar
code
temperature2[]={
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
//带小数点的0~9.uchar
code
temperature3[]={
0x00,0x80,0x40,0x76,0x38};//依次是‘不显示’‘.’‘-’‘H’‘L’
/******************************************************/
/
延时子函数
/
/*****************************************************/
void
display_delay(uint
t)
//延时1ms左右
{
uint
i,j;
for(i=t;i>0;i--)
for(j=120;j>0;j--);
}
/******************************************************/
/*
定时器1初始化函数
/
/*****************************************************/
void
timer1_init(bit
t)
{
TMOD=0x10;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET1=1;
TR1=t;
//
局部变量t为1启动定时器1,为0关闭定时器1
}
/******************************************************/
/*
定时器1中断函数
/
/*****************************************************/
void
timer1()
interrupt
{
TH0=0x3c;
//重新赋初值,定时50ms
TL0=0xb0;
num++;
//每进入一次定时器中断num加1(每50ms加1一次)
if(num<5)
{s=1;if(w==1){beer=1;led=1;}else{beer=1;led=1;}}
else
//进入4次中断,定时200ms时若报警标志位w为‘1’则启动报警,不为‘1’不启动
//实现间歇性报警功能
{s=0;if(w==1){beer=0;led=0;}else{beer=1;led=1;}}
if(num>20)
//进入20次中断,定时1s
{
num=0;
//num归0,重新定开始定时1s
s1=0;
//定时1s时间到时自动关闭报警上下限显示功能
v1=1;
//定时1s时间到时自动关闭报警上下限查看功能
}
}
/******************************************************/
/*
调整报警上下限选择函数
/
/*****************************************************/
void
selsct_1(uchar
f,uchar
k)
//消除百位的0显示,及正负温度的显示选择
{
if(f==0)
//若为正温度,百位为0则不显示百位,不为0则显示
{
if(k/100==0)
P0=temperature3[0];
else
P0=temperature1[k/100];
}
if(f==1)
//若为负温度,若十位为0,百位不显示,否则百位显示‘-’
{
if(k%100/10==0)
P0=temperature3[0];
else
P0=temperature3[2];
}
}
void
selsct_2(bit
f,uchar
k)
//消除十位的0显示,及正负温度的显示选择
{
if(f==0)
//若为正温度,百位十位均为0则不显示十位,否则显示十位
{
if((k/100==0)&&(k%100/10==0))
P0=temperature3[0];
else
P0=temperature1[k%100/10];
}
if(f==1)
//若为负温度,若十位为0,十位不显示,否则十位显示‘-’
{
if(k%100/10==0)
P0=temperature3[2];
else
P0=temperature1[k%100/10];
}
}
/******************************************************/
/*
主函数显示
/
/*****************************************************/
void
display(uchar
t,uchar
t_d)
//用于实测温度、上限温度的显示
{
uchar
i;
for(i=0;i<4;i++)
//依次从左至右选通数码管显示,实现动态显示
{
switch(i)
{
case
0:
//选通第一个数码管
wei2=1;
//关第二个数码管
wei3=1;
//关第三个数码管
wei4=1;
//关第四个数码管
wei1=0;
//开第一个数码管
if(a==0){selsct_1(f,t);}
//若a=0则在第一个数码管上显示测量温度的百位或‘-’
if(a==1)
{
P0=temperature3[3];
//若a=1则在第一个数码管上显示‘H’
}
if(a==2)
{
P0=temperature3[4];
//若a=2则在第一个数码管上显示‘L’
}
break;
case
1:
//选通第二个数码管
wei1=1;
wei3=1;
wei4=1;
wei2=0;
if(a==0){selsct_2(f,t);}
//若a=0则在第二个数码管上显示测量温度的十位或‘-’
if(a==1)
//若a=1则在第二个数码管上显示上限报警温度的百位或‘-’
{
if(s==0)
selsct_1(f_max,max);//若s=0则显示第二个数码管,否则不显示
else
P0=temperature3[0];
//通过s标志位的变化实现调节上下限报警温度时数码管的闪烁
if(s1==1)
selsct_1(f_max,max);//若s1=1则显示第二个数码管(s1标志位用于上下限查看时的显示)
}
if(a==2)
//若a=2则在第二个数码管上显示下限报警温度的百位或‘-’
{
if(s==0)
selsct_1(f_min,min);
else
P0=temperature3[0];
if(s1==1)
selsct_1(f_min,min);
}
break;
case
2:
//选通第三个数码管
wei1=1;
wei2=1;
wei4=1;
wei3=0;
if(a==0){P0=temperature2[t%10];}//若a=0则在第三个数码管上显示测量温度的个位
if(a==1)
//若a=1则在第三个数码管上显示上限报警温度的十位或‘-’
{
if(s==0)
selsct_2(f_max,max);//若s=0则显示第三个数码管,否则不显示
else
P0=temperature3[0];
if(s1==1)
selsct_2(f_max,max);//若s1=1则显示第三个数码管
}
if(a==2)
//若a=2则在第三个数码管上显示下限报警温度的十位或‘-’
{
if(s==0)
selsct_2(f_min,min);
else
P0=temperature3[0];
if(s1==1)
selsct_2(f_min,min);
}
break;
case
3:
//选通第四个数码管
wei1=1;
wei2=1;
wei3=1;
wei4=0;
if(a==0){P0=temperature1[t_d];}//若a=0则在第四个数码管上显示测量温度的小数位
if(a==1)
//若a=1则在第四个数码管上显示上限报警温度的个位
{
if(s==0)
P0=temperature1[max%10];//若s=0则显示第四个数码管,否则不显示
else
P0=temperature3[0];
if(s1==1)
P0=temperature1[max%10];//若s1=1则显示第四个数码管
}
if(a==2)
//若a=2则在第四个数码管上显示下限报警温度的个位
{
if(s==0)
P0=temperature1[min%10];
else
P0=temperature3[0];
if(s1==1)
P0=temperature1[min%10];
}
break;
}
display_delay(10);
//每个数码管显示3ms左右
}
}
/******************************************************/
/*
开机显示函数
/
/*****************************************************/
void
display1(uint
z)
//用于开机动画的显示
{
uchar
i,j;
bit
f=0;
for(i=0;i //‘z’是显示遍数的设定 { for(j=0;j<4;j++) //依次从左至右显示‘-’ { switch(j) { case 0: wei2=1; wei3=1; wei4=1; wei1=0; break; P0=temperature3[2];//第一个数码管显示 case 1: wei1=1; wei3=1; wei4=1; wei2=0;break; P0=temperature3[2];//第二个数码管显示 case 2: wei1=1; wei2=1; wei4=1; wei3=0;break; P0=temperature3[2];//第三个数码管显示 case 3: wei1=1; wei2=1; wei3=1; wei4=0;break; P0=temperature3[2];//第四个数码管显示 } display_delay(400); //每个数码管显示200ms左右 } } } #endif /******************************************************************** * 程序名; DS18B20头文件 * 说 明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d * (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表 * 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表 * 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表 * 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。 *********************************************************************/ #ifndef __ds18b20_h__ //定义头文件 #define __ds18b20_h__ #define uint unsigned int #define uchar unsigned char sbit DQ= P2^3; //DS18B20接口 sbit beer=P1^0; //用beer表示P1.0 sbit led=P1^1; //用led表示P1.1 uchar temp=0; //测量温度的整数部分 uchar temp_d=0; //测量温度的小数部分 bit f=0; //测量温度的标志位,0’表示“正温度” ‘1’表示“负温度”) bit f_max=0; //上限温度的标志位‘0’表示“正温度” ‘1’表示“负温度”) bit f_min=0; //下限温度的标志位‘0’表示“正温度”、‘1’表示“负温度”) bit w=0; //报警标志位‘1’启动报警‘0’关闭报警 /******************************************************/ /* 延时子函数 / /*****************************************************/ void ds18b20_delayus(uint t) //延时几μs { while(t--); } void ds18b20_delayms(uint t) //延时1ms左右 { uint i,j; for(i=t;i>0;i--) for(j=120;j>0;j--); } /******************************************************/ /* DS18B20初始化函数 / /*****************************************************/ void ds18b20_init() { uchar c=0; DQ=1; DQ=0; //控制器向DS18B20发低电平脉冲 ds18b20_delayus(80); //延时15-80μs DQ=1; //控制器拉高总线,while(DQ); //等待DS18B20拉低总线,在60-240μs之间 ds18b20_delayus(150); //延时,等待上拉电阻拉高总线 DQ=1; //拉高数据线,准备数据传输; } /******************************************************/ /* DS18B20字节读函数 / /*****************************************************/ uchar ds18b20_read() { uchar i; uchar d=0; DQ = 1; //准备读; for(i=8;i>0;i--) { d >>= 1; //低位先发; DQ = 0; _nop_(); _nop_(); DQ = 1; //必须写1,否则读出来的将是不预期的数据; if(DQ) //在12us处读取数据; d |= 0x80; ds18b20_delayus(10); } return d; //返回读取的值 } /******************************************************/ /* DS18B20字节写函数 / /*****************************************************/ void ds18b20_write(uchar d) { uchar i; for(i=8;i>0;i--) { DQ=0; DQ=d&0x01; ds18b20_delayus(5); DQ=1; d >>= 1; } } /******************************************************/ /* 获取温度函数 / /*****************************************************/ void get_temperature(bit flag) { uchar a=0,b=0,c=0,d=0; uint i; ds18b20_init(); ds18b20_write(0xcc); //向DS18B20发跳过读ROM命令 ds18b20_write(0x44); //写启动DS18B20进行温度转换命令,转换结果存入内部RAM if(flag==1) { display1(1); //用开机动画耗时 } else ds18b20_delayms(1); ds18b20_init(); ds18b20_write(0xcc); ds18b20_write(0xbe); a=ds18b20_read(); //读内部RAM (LSB) b=ds18b20_read(); //读内部RAM (MSB) if(flag==1) //局部位变量f=1时读上下线报警温度 { max=ds18b20_read(); //读内部RAM (TH) min=ds18b20_read(); //读内部RAM (Tl) } if((max&0x80)==0x80) //若读取的上限温度的最高位(符号位)为‘1’表明是负温度 {f_max=1;max=(max-0x80);} //将上限温度符号标志位置‘1’表示负温度,将上限温度装换成无符号数。 if((min&0x80)==0x80)//若读取的下限温度的最高位(符号位)为‘1’表明是负温度 {f_min=1;min=(min-0x80);} //将下限温度符号标志位置‘1’表示负温度,将下限温度装换成无符号数。 i=b; i>>=4; if (i==0) { f=0; //i为0,正温度,设立正温度标记 temp=((a>>4)|(b<<4)); //整数部分 a=(a&0x0f); temp_d=a; //小数部分 } else { f=1; //i为1,负温度,设立负温度标记 a=~a+1; b=~b; temp=((a>>4)|(b<<4)); //整数部分 a=(a&0x0f); //小数部分 temp_d=a; } } /******************************************************/ /* 存储极限温度函数 / /*****************************************************/ void store_t() { if(f_max==1) //若上限温度为负,将上限温度转换成有符号数 max=max+0x80; if(f_min==1) //若下限温度为负,将上限温度转换成有符号数 min=min+0x80; ds18b20_init(); ds18b20_write(0xcc); ds18b20_write(0x4e); //向DS18B20发写字节至暂存器2和3(TH和TL)命令 ds18b20_write(max); //向暂存器TH(上限温度暂存器)写温度 ds18b20_write(min); //向暂存器TL(下限温度暂存器)写温度 ds18b20_write(0xff); //向配置寄存器写命令,进行温度值分辨率设置 ds18b20_init(); ds18b20_write(0xcc); ds18b20_write(0x48); //向DS18B20发将RAM中2、3字节的内容写入EEPROM } //DS18B20上电后会自动将EEPROM中的上下限温度拷贝到TH、TL暂存器 /******************************************************/ /* 温度超限报警函数 / /*****************************************************/ void alarm() { //若上限值是正值 if(f_max==0) { if(f_min==0) //若下限值是正值 { if(f==0) //若测量值是正值 { if(temp<=min||temp>=max) {w=1;TR1=1;} //当测量值小于最小值或大于最大值时报警 if((temp {w=0;} //当测量值大于最小值且小于最大值时不报警 } if(f==1){w=1;TR1=1;} //若测量值是负值时报警 } if(f_min==1) //若下限值是负值 { if(f==0) //若测量值是正值 { if(temp>=max)//当测量值大于最大值时报警 {w=1;TR1=1;} if(temp {w=0;} } if(f==1) //若测量值是负值 { if(temp>=min)//当测量值大于最小值时报警 {w=1;TR1=1;} if(temp {w=0;} } } } if(f_max==1) //若下限值是负值 { if(f_min==1) //若下限值是负值 { if(f==1) //若测量值是负值 { if((temp<=max)||(temp>=min)) {w=1;TR1=1;} //当测量值小于最大值或大于最小值时报警 if((temp {w=0;} //当测量值小于最小值且大于最大值时不报警 } if(f==0){w=1;TR1=1;} //若测量值是正值时报警 } } } #endif /******************************************************************** * 程序名; 基于51单片机的温度计 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能,* K1是实现减1功能,K3是用来设定上下限温度正负的。 *********************************************************************/ #include #include //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时) #define uint unsigned int #define uchar unsigned char uchar max=0x00,min=0x00; //max是上限报警温度,min是下限报警温度 bit s=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右 bit s1=0; //s1标志位用于上下限查看时的显示 void display1(uint z); //声明display1()函数(display.h头文件中的函数,ds18b20.h要用应先声明) #include“ds18b20.h“ #include“keyscan.h“ #include“display.h“ /******************************************************/ /* 主函数 / /*****************************************************/ void main() { beer=1; //关闭蜂鸣器 led=1; //关闭LED灯 timer1_init(0); //初始化定时器1(未启动定时器1) get_temperature(1); //首次启动DS18B20获取温度(DS18B20上电后自动将EEPROM中的上下限温度复制到TH和TL寄存器) while(1) { keyscan(); get_temperature(0); display(temp,temp_d*0.625); alarm(); } } /********************************************************************** * 程序名; ds18b20keyscan函数 * 功 能: 通过键盘设定设定上下限报警温度 **********************************************************************/ #ifndef __keyscan_H__ //定义头文件 #define __keyscan_H__ sbit key1=P2^2; sbit key2=P2^1; sbit key3=P2^0; sbit key4=P3^3; uchar i=0; //定义全局变量i用于不同功能模式的选择,‘0’正常模式,‘1’上限调节模式,‘2’下限调节模式 uchar a=0; //定义全局变量a用于不同模式下数码管显示的选择 bit k4=0; //K4按键双功能选择位,k4=0时K4按键选择消按键音的功能,k4=1时K4按键选择正负温度设定功能 bit v=0; //K2、K3按键双功能选择位,v=0时选择上下限查看功能,v=1时选择上下限温度加减功能 bit v1=0; //v1=1时定时1250ms时间到自动关闭报警上下限查看功能 bit v2=0; /消按键音功能调整位,为‘0’时开按键音,为‘1’时关按键音 /******************************************************/ /* 读键盘延时子函数 / /*****************************************************/ void keyscan_delay(uint z) //延时1ms左右 { uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--); } /******************************************************/ /* 温度调节函数 / /*****************************************************/ int temp_change(int count,bit f) //上下限温度调整 { if(key2==0) //判断K2是否按下 { if(v2==0)beer=0; //v2=0开按键音,否则消按键音 keyscan_delay(10); //延时10ms if(key2==0) //再次判断K2是否按下(实现按按键时消抖) { beer=1; //K2按下关按键音 if(f==0) //若温度为正 { count++; //每按一下K2温度上调1 if(a==1){if(count>125) count=125;}//当温度值大于125时不上调 if(a==2){if(count>125) count=125;} } if(f!=0) //若温度为负 { count++; //每按一下K2温度下调1 if(a==1){if(count>55) count=55;}//当温度值小于-55时不再下调 if(a==2){if(count>55) count=55;} } } while(key2==0); //K2松开按键时消抖 keyscan_delay(10); } if(key3==0) { if(v2==0)beer=0; keyscan_delay(10); if(key3==0) //K3按按键时消抖 { beer=1; count--; //每按一下K3温度为正时下调1,为负时上调1 if(a==1){if(count<0) count=0;}//当温度值达到0时不再调 if(a==2){if(count<0) count=0;} } while(key3==0); keyscan_delay(10); //K3松开按键时消抖 } return count; } /******************************************************/ /* 读键盘函数 / /*****************************************************/ void keyscan() { if(key1==0) { if(v2==0)beer=0; keyscan_delay(10); if(key1==0) //K1按按键时消抖 { beer=1; TR1=1; //开定时器1,通过s标志位的变化,实现在上下限温度调整时温度显示时闪烁的功能 k4=1; //在上下温度调节功能模式下选择K4的调整上下限温度正负的功能 v=1; //在上下温度调节功能模式下选择K2、K3的温度加减功能 i++; //K1按一下i加1,i=‘0’进入正常模式,i=‘1’进入调上限模式,i=‘2’进入调下限模式 if(i>2) //K1按下三次后退出调节模式 { i=0; //进入正常模式 TR1=0; //关定时器1 k4=0; //在正常模式下选择K4的消按键音功能 v=0; //在正常模式下选择K2、K3的查看上下限报警温度功能 store_t(); //存储调整后的上下限报警温度 } switch(i) //显示选择 { case 0:a=0;break; //a=0选择显示测得的温度 case 1:a=1;break; //a=1选择显示上限温度 case 2:a=2;break; //a=2选择显示下限温度 default:break; } } while(key1==0); //K1松按键时消抖 keyscan_delay(10); } if(a==1&&v==1) //a=1选择显示上限温度且v=1时选择上下限温度加功能 {led=0;max=temp_change(max,f_max);}//显示上限温度 else if(a==2&&v==1) //a=2选择显示下限温度且v=1时选择上下限温度减功能 {led=1;min=temp_change(min,f_min);} else; if(k4==1) //k4=1时K4按键选择正负温度设定功能 { if(key4==0) { if(v2==0)beer=0; keyscan_delay(5); if(key4==0) { beer=1; if(a==1) {if(max>55) f_max=0;else f_max=~f_max;}//当温度大于55度时,只能设定为正温度 if(a==2) {if(min>55) f_max=0;else f_min=~f_min;}//当温度大于55度时,只能设定为正温度 } while(key4==0); keyscan_delay(10); } } if(v==0) //v=0时选择上下限查看功能 { if(key2==0) { if(v2==0)beer=0; keyscan_delay(10); if(key2==0) { beer=1; a=1; //选择上限显示 TR1=1; //开定时器1开始定时一分钟左右 s1=1; //上限显示不闪烁,显示一分钟左右自动退出 } while(key2==0); keyscan_delay(10); } if(key3==0) { if(v2==0)beer=0; keyscan_delay(10); if(key3==0) { beer=1; a=2; //选择下限显示 TR1=1; //开定时器1开始定时1s s1=1; //下限显示不闪烁,显示1s自动退出 } while(key3==0); keyscan_delay(10); } if(v1==1) //v1=1时定时1s时间到自动关闭报警上下限查看功能 {a=0;v1=0;TR1=0;} //a=0显示实测温度,v1清零,关定时器1 if(k4==0) //k4=0时K4按键选择消按键音的功能 { if(key4==0) { if(v2==0)beer=0; keyscan_delay(10); if(key4==0) { beer=1; v2=~v2; //为‘0’时开按键音,为‘1’时关按键音 } while(key4==0); keyscan_delay(10); } } } } #endif 四、总结 单片机的学习与应用相关的总结与体会。在课设过程中,我们不仅巩固了平时所学习的单片机知识,而且通过不断查阅相关资料,学习新的知识,可以说,通过这次单片机的实践学习,我们学到了很多,而且对单片机的有关知识以及其在现实生活中的多方面应用有了更深层次的认识,这对于我们以后的学习和步入社会后参加工作都有很大的帮助。 在此次课程设计的进程中,我们遇到了很多问题,例如,一开始我们在确定课设题目后,在编写程序时,由于思路不太清晰,而且设计要求中需要使用新器件DS18B20智能测温,而其相关知识我们很模糊甚至可以说一无所知,不过后来,我们通过查找一些相关的资料书以及寻求辅导老师的帮助,又经过我们的主动思考,理清思路,终于将程序修改正确。在仿真时,由于我们有了之前的数模电课设仿真经验,所以此时我们课设进行的很顺利,并没有受到什么大的阻碍。 通过此次单片机课程设计,我们明白了很多,理论指导实践,但是理论也需要实践给予证明,不能盲目的相信书本,凡事都要通过自己的思考推敲,否则自己不会取的大的进步。而且在平时的学习生活中应该多和周围的同学相互学习,交流经验,遇到不会的东西时,切忌焦躁,首先要经过自己的独立思考,有了一定想法后,可以去查找相关的资料书刊或者找同学讨论,如果实在解释不了,再去找辅导老师,在这个遇到问题解决问题的过程中,不断加强自我的动脑能力,进而去指导动手能力,也只有这样,在思路清晰,条理顺畅的时候,再去进行软件编写和硬件操作工作,才有可能起到事半功倍的效果。 五、附录 系统硬件原理电路图 数字温度计设计器材表 单片机STC89C52 DS18B20 晶振12M 三极管8850 电容30PF 电解电容10UF/25V 小蜂鸣器 LED ø5红 电阻10k,3k,2k,1k,510,330 各5 4位一体共阴数码管 AC/DC(5V/1A)电源 IC插座40 9X15cm万用板 六、参考文献 【2《数字电路与单片机课程设计》管理规定】推荐阅读: 数字日历电路课程设计01-16 数字电路课程设计——电子钟05-22 数字电路 课程设计 心得体会08-25 数字电路与逻辑设计05-15 数字电路与逻辑设计教学大纲06-26 《数字电路与逻辑设计》考试大纲11-06 北邮数字电路与逻辑设计实验报告01-16 数字电路课程教学09-02 数字电路课程改革05-25 数字电路与仿真05-20