首页

> 学术论文知识库

首页 学术论文知识库 问题

单片机课程设计毕业论文

发布时间:

单片机课程设计毕业论文

随着人们自身素质提升,报告的用途越来越大,我们在写报告的时候要注意逻辑的合理性。那么报告应该怎么写才合适呢?以下是我为大家整理的电子信息工程毕业论文开题报告,希望能够帮助到大家。

毕业设计的内容和意义

毕业设计内容:

1.熟悉单片机系统设计方法,独立完成电路和程序设计。

2.用PROTEUS进行系统调试和仿真。

3.设计、制作并调试硬件系统。

4.完成相关软件文档资料。

毕业设计应完成的技术文件:

字以上毕业设计开题报告,2000字以上英文参考文献的中文译文。

2.毕业设计论文(15000字以上)。

3.提供设计原理图和相应程序。

毕业设计意义:

随着时代的发展,现代化建设步伐不断加快,对道路照明及道路亮化工程需求也更大,而能源的供需矛盾也越来越突出,节电节能、绿色照明的要求越来越迫切,越来越高。现在再采用那些传统的手控、钟控照明系统的方法已不能满足要求。如何充分利用高科技手段解决上述矛盾也就成为当前照明控制领域一个新的和紧要的课题。路灯照明是日常生活中必不可少的公共设施。路灯照明耗电量约占总耗电量的15%,全国各地无不面对电力紧张带来的各种问题。面对供电紧张形势,路灯巡查对于国家来讲是一项需要耗费大量人力的工作,各种临时应急节电措施被广泛采用:夜晚间隔关灯、调整路灯开关的时间、在用电紧张的日子里关闭景观照明等等,当用电高峰过后,这些措施可能就被束之高阁,明年的用电高峰来临,一切又会重新开始。这样的节电措施,在缓解用电紧张的同时,却带来资源的浪费和对人们日常生活的负面影响。缓解用电紧张的最佳和有效的办法是对用电实施智能化管理,减少浪费,使我们的每一度电都能物尽其用!启用先进路灯监控系统,可以对路灯实施统一启闭,对夜间照明系统和路灯的实时监控和管理,确保高效稳定,全天候运行,控制不必要的“全夜灯照明”,有效节约电能消耗。对于学校公共照明系统来说,采用智能化的管理系统是实现能源节约、减少资源浪费、满足人们生活要求、显示现代化校园的科学解决方案。

目前已有一小部分校园参考了公路路灯的节能措施,到了后半夜将电灯亮度调低,或采取等间隔亮灯的方式来节约用电,但是这样一个方法却带来路灯过亮或过暗的问题:

1.控制落后

开关灯方式落后:当前路灯控制,还停留在手动、光控、钟控方式。受季节、天气和人为因素影响,自动化管理水平低,经常该亮时不亮,该灭时不灭,极易造成极大的能源浪费,增加了财政负担。

2.操控不便

调节操控能力不足,无法远程修改开关灯时间,不能根据实际情况(天气突变,重大事件,节日)及时校时和修改开关灯时间。

3.灯况不明

不具备路灯状况监测,现有的照明设施管理工作主要采用人工巡查模式,不仅工作量大,还浪费人力、物力、财力。故障依据主要来源于巡视人员上报和市民投诉缺乏主动性、及时性和可靠性,不能实时、准确、全面地监控全城的路灯运行状况缺乏有效的故障预警机制。

4.不能很好的应用在前半夜

因为其前半夜6个小时以上全部采取正常亮度,这样就会出现在没有行人、车辆经过校园道路时的电力资源浪费这一现象,而除了晚上6点-9点人车流高峰期以外其余时间人车流量确实相对较少,所以我们认为校园照明有更大的节能潜力。

针对以上现有节能情况分析,我们设计了一种高效率的智能节能路灯,路灯控制器内应同时设有光控和时控模块,该模块先服从光度控制,再服从时间控制,能满足达到一定光度开关路灯和达到特定时间开关路灯的要求。同时,我们认为路灯应改进为为红外感测路灯。针对校园人、车流量的高低峰时段对路灯分为节能状态和标准状态。在人车流量的高峰期如清晨上班时间和傍晚18点—21点,路灯要保持持续标准亮度,而在深夜路灯将转为节能状态,通过红外感测,只在有人、车通过时才变亮。使用红外感测,与声控相比,感应精度更高,避免了一些噪音而使灯无效闪烁。将所有的路灯连接到单片机上,单片机和计算机通信,用计算机控制路灯工作状态。可设定自动控制方式和人工控制方式。自动控制方式可根据地太阳活动规律,并结合实际情况控制路灯的工作方式。当夜幕降临,或光线已经较暗时,虽然未达到设定时间,也能自动开启。交通高峰期,应达到持续满额亮度;高峰期后,进入红外感应,实现智能和节能的控制。人工控制方式可随时设定开关时间、路灯开启比例或单独控制路灯的开与关。另外通过路灯的工作状态可对路灯损坏实现实时报警,并可显示具体的位置,提醒维修人员及时维修,中心控制器带有时钟芯片,该时钟芯片带有EEPROM,可以保持单片机工作参数,即使通信发生错误,路灯也能按照最后的程序进行工作。

文献综述

一、设计方案

本设计选用STC89C52单片机作为系统的核心部件,实现系统的控制和处理的功能。各模块所包含的功能如下:(1)红外模块:夜晚进行检测是否有行人。(2)显示模块12864:显示相应的时间和日期信息。(3)时钟模块:手动切换时间,自己设定开灯时间。(4)光敏电阻传感器模块:用于检测周围环境光强度,若光强低于标准值则开启路灯。

二、硬件电路设计

1.主控制器STC89C52

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

STC89C52具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

2.红外模块

本设计采用HC-SR501红外模块,它是基于红外线技术的'自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。该模块用于检测夜晚是否有行人路过,因此产生高地电平,并通过软件的方法来处理电平信号。

3.光敏电阻传感器模块

本设计采用3线制光敏电阻传感器模块,是一款灵敏型光敏电阻传感器,用比较器输出,信号干净,波形好,驱动能力强,超过15mA。同时配有可调电位器可调节检测光线亮度,用于检测周围环境光强度,若光强低于标准值则开启路灯。

4.显示模块

本设计采用液晶显示器12864显示时间和日期。液晶显示屏的第一行显示年月日,第二行显示的实时时钟,硬件电路中的12864的数据端口接到单片机P1口,数码管的4,5,6管脚分别与单片机的相连,通过单片机的信息处理,从而在液晶显示屏上显示各段信息。

四、软件设计

主程序主要设计各个部分子程序的调用,子程序有时钟程序和显示子程序两部分。程序初始化后,红外模块子程序判断有没有行人,输出一个信号,经软件处理。12864液晶显示子程序主要通过接收主程序发出的信号,将其设置输入为模式子函数形成,并初始化LCD子函数,显示日期子函数,显示时间子函数。

五、仿真实现

该系统的软件仿真采用Proteus软件,当系统开机时,系统进入初始化界面,液晶显示第一行为时间信息,第二行为日期信息,当白天的时候,打开光强和红外判断,同时成立才开启路灯。设定按钮可手动改变时间信息。

参考文献:

1.胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社.

2.周润景等.Proteus在MCS-51&ARM7系统中的应用[M].北京:电子工业出版社.

3.侯玉宝等.基于Proteus的51系列单片机设计与仿真[M].北京:电子工业出版社.

4.张靖武等.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社.

5.楼然苗等.单片机课程设计指导[M].北京:北京航空航天大学出版社.

6.周向红等.51系列单片机应用与实践教程[M].北京:北京航空航天大学出版社.

7.李林功.单片机原理与应用—基于实例驱动和Proteus仿真[M].北京:科学出版社.

8.薛钧义,张彦斌.MCS-系列单片微机计算机及其应用[M].西安:西安交通大学出版社.1997

9.何利民.单片机应用系统设计.[M]北京航空航天大学出版社.1995

研究内容

红外模块的使用

单片机读取时钟芯片

用液晶显示相关数据

绘出逻辑图

研究计划

第一周——第二周:下毕业设计任务书,明确设计要求。查阅、搜集毕业设计相关资料。着手翻译相关英文资料,并熟悉PROTEUS软件和单片机的相关开发知识。

第三周——第四周:对查阅的文献资料归纳综述撰写开题报告。完成毕业设计需求分析,确定系统框图。

第五周——第六周:方案论证,设计硬件电路。分析设计的电路,提出软件设计思路;毕业设计初期检查。

第七周——第八周:在PROTEUS中实现软、硬件设计与调试。分析调试中的问题,改进并重新调试达到技术要求。

第九周——第十周:软、硬件电路进行整体测试,修改并完善程序;毕业设计中期检查。

第十一周——第十二周:设计并制作印制电路板;完成硬件的安装和调试。完成整个系统的软件、硬件的调试。

第十三周——第十四周:研究工作总结,撰写毕业论文。

第十五周——第十六周:论文修改及评阅,论文答辩。

特色与创新

路灯控制器内应同时设有光控和时控模块,该模块先服从光度控制,再服从时间控制,能满足达到一定光度开关路灯和达到特定时间开关路灯的要求。同时,路灯为红外感测路灯。针对校园人、车流量的高低峰时段对路灯分为节能状态和标准状态。在人车流量的高峰期如清晨上班时间和傍晚18点—23点,路灯要保持持续标准亮度,而在深夜路灯将转为节能状态,通过红外感测,只在有人、车通过时才变亮。

不知道楼主解决了问题没,我这有一些这方面的论文,给你参考一下吧..单片机应用系统中掉电保护电路的设计研究中文摘要:本文介绍了单片机应用系统中掉电保护的基本原理与设计方法,给出了几种掉电保护电路的设计实例。摘自墨客论文网:基于单片机控制的数字脉冲电火花电源设计中文摘要:根据电火花沉积工艺的特点,设计了基于16位单片机80C196KC控制的脉冲电火花电源。主电路中,采用了半桥逆变电路实现功率的变送。控制电路中,通过PWM脉宽调制实现电压调节。设计采用了多种抗干扰措施,提高了电源系统工作的稳定性。摘自墨客论文网:基于单片机的液晶触摸屏控制系统中文摘要:以触摸屏控制芯片ADS7843和液晶显示控制器SED1335为例,介绍了触摸屏的结构及工作原理,并以实例说明单片机控制触摸屏的典型应用电路和软件。摘自墨客论文网:单片机技术在智能交流接触器实时调控中的应用研究中文摘要:通过对智能交流接触器零电流分断控制原理的分析,发现其零电流分断失败的原因,并在此基础上提出将单片机实时控制系统嵌入传统接触器中,实现零电流分断的智能“无弧”接触器。摘自墨客论文网:于PIC单片机的电动自行车控制系统设计中文摘要:介绍以单片机PIC16F72为核心的电动自行车用无刷直流电动机控制系统的设计。该系统采用电流与速度双闭环控制的结构,其中电流调节器用传统的PI调节器,速度调节器为改进的PI调节器。实验验证了此设计方案的可行性和优越性,即控制电路简洁,器件少,成本低,保护措施可靠,提高了系统的控制精度。该设计对无刷直流电机在其他领域的应用有一定的帮助和借鉴,具有广泛的现实意义。该系统速度环采用改进型的PI调节器控制,且通过软件运用算法测速,实现转速反馈,既简化电路又节省成本。摘自墨客论文网:

程序设计内容

(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。

(2). 密码的输入问题:  由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。

(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。

C语言源程序

#include unsigned char code ps[]={1,2,3,4,5};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,                               

0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

unsigned char pslen=9; unsigned char templen;

unsigned char digit; unsigned char funcount;

unsigned char digitcount;

unsigned char psbuf[9];

bit cmpflag;

bit hibitflag;

bit errorflag;

bit rightflag;

unsigned int second3;

unsigned int aa;

unsigned int bb;

bit alarmflag;

bit exchangeflag;

unsigned int cc;

unsigned int dd;

bit okflag;

unsigned char oka;

unsigned char okb;

void main(void)

{  

unsigned char i,j;  

P2=dispcode[digitcount];  

TMOD=0x01;  

TH0=(65536-500)/256;  

TL0=(65536-500)%6;  

TR0=1;  

ET0=1;  

EA=1;  

while(1)   

  {      

if(cmpflag==0)        

{          

if(P3_6==0) //function key           

  {              

for(i=10;i>0;i--)              

for(j=248;j>0;j--);      

         if(P3_6==0)                

{                

   if(hibitflag==0)       

              {     

                  funcount++;  

                     if(funcount==pslen+2)

                        {  

                         funcount=0;

                          cmpflag=1;

                         }

                       P1=dispcode[funcount];

                    }

                    else

                      {

                         second3=0;

                      }  

                 while(P3_6==0);

                }

            }

          if(P3_7==0) //digit key

            {

              for(i=10;i>0;i--)

              for(j=248;j>0;j--);

              if(P3_7==0)

                {

                  if(hibitflag==0)

                    {

                      digitcount++; 

                  if(digitcount==10)

                        {

                          digitcount=0;

                        }

                      P2=dispcode[digitcount];

                      if(funcount==1)

                        {

                          pslen=digitcount;                          

templen=pslen;

                        }

                        else if(funcount>1)

                          {  

                           psbuf[funcount-2]=digitcount;

                          }

                    }

                    else

                      {

                        second3=0;

                      }

                  while(P3_7==0);

                }

            }

        }  

       else

          {

            cmpflag=0;

            for(i=0;i

              {  

               if(ps[i]!=psbuf[i])

                  {

                    hibitflag=1;

                    i=pslen;

                    errorflag=1;

                    rightflag=0;

                    cmpflag=0;

                    second3=0;

                    goto a;  

                 }

              }   

          cc=0;  

           errorflag=0;  

           rightflag=1;

            hibitflag=0;

a:   cmpflag=0;

          }

}

}

void t0(void)

interrupt 1 using 0 {   TH0=(65536-500)/256;  

TL0=(65536-500)%6;  

if((errorflag==1) && (rightflag==0))  

{

      bb++;

      if(bb==800)

        {

          bb=0;

          alarmflag=~alarmflag;

        }

      if(alarmflag==1)

        {

          P0_0=~P0_0;

        }

      aa++;

      if(aa==800)

        {

          aa=0;

          P0_1=~P0_1;

        }

      second3++;

      if(second3==6400)

        {

          second3=0;

          hibitflag=0;

          errorflag=0;

          rightflag=0;

          cmpflag=0;

          P0_1=1;  

         alarmflag=0;

          bb=0;  

         aa=0;  

       }

    }

  if((errorflag==0) && (rightflag==1))

    {

      P0_1=0;

      cc++;

      if(cc<1000)

        {

          okflag=1;

        }

        else if(cc<2000)

          {

            okflag=0;

          }

          else

            {

              errorflag=0;

              rightflag=0;

              hibitflag=0;

              cmpflag=0;

              P0_1=1;

              cc=0;  

             oka=0;

              okb=0;

              okflag=0;  

             P0_0=1;  

           }

      if(okflag==1)

        {  

         oka++;  

         if(oka==2)

            {

              oka=0;

              P0_0=~P0_0;

            }

        }

        else

          {

            okb++;

            if(okb==3)

              {

                okb=0;

                P0_0=~P0_0;

              }  

         }

    }

}

一般课题设计,毕业设计做到温度的都使用到DS18B20传感器。我的blog,欢迎学习交流!

单片机课程设计论文格式

基于单片机的交通灯控制器1 引言当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。2 单片机概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。3 芯片简介 MSC-51芯片简介MCS-51单片机内部结构8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:•中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。•数据存储器(RAM)8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。图1•程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。•定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。•并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。•全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。•中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。•时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。下图是MCS-51系列单片机的内部结构示意图2。MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如图3Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。•Pin30:ALE/ 当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间, 将用于输入编程脉冲。•Pin29: 当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。•Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。在编程时,EA/Vpp脚还需加上21V的编程电压。 8255芯片简介8255可编程并行接口芯片简介:8255可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。C口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A/B配合使用,可以用作控制信号输出或作为状态信号输入。8255可编程并行接口芯片方式控制字格式说明:8255有两种控制命令字;一个是方式选择控制字;另一个是C口按位置位/复位控制字。其中C口按位置位/复位控制字方式使用较为繁难,说明也较冗长,故在此不作叙述,需要时用户可自行查找有关资料。方式控制字格式说明如表1:表1D7 D6 D5 D4 D3 D2 D1 D0D7:设定工作方式标志,1有效。D6、D5:A口方式选择0 0 —方式00 1 —方式11 ×—方式2D4:A口功能 (1=输入,0=输出)D3:C口高4位功能 (1=输入,0=输出)D2:B口方式选择 (0=方式0,1=方式1)D1:B口功能 (1=输入,0=输出)D0:C口低4位功能 (1=输入,0=输出)8255可编程并行接口芯片工作方式说明:方式0:基本输入/输出方式。适用于三个端口中的任何一个。每一个端口都可以用作输入或输出。输出可被锁存,输入不能锁存。方式1:选通输入/输出方式。这时A口或B口的8位外设线用作输入或输出,C口的4条线中三条用作数据传输的联络信号和中断请求信号。方式2 :双向总线方式。只有A口具备双向总线方式,8位外设线用作输入或输出,此时C口的5条线用作通讯联络信号和中断请求信号。 74LS373简介74LS373 是一种带三态门的8D锁存器,其管脚示意图如下示:其中:1D-8D为8个输入端。1Q-8Q为8个输出端。LE为数据打入端:当LE为“1”时,锁存器输出状态同输入状态;当LE由“1”变“0”时,数据打入锁存器OE为输出允许端:当OE=0时,三态门打开;当OE=1时,三态门关闭,输出高阻。4 系统硬件设计交通管理的方案论证东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。设东西道比南北道的车流量大,指示灯燃亮的方案如表2。60S 5S 80S 5S ……东西道 红灯亮 黄灯亮 绿灯亮 黄灯亮 ……南北道 绿灯亮 黄灯亮 红灯亮 黄灯亮 ……表2说明:(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。时间为60秒。(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为80秒。 东西方向车流大 通行时间长。(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。(5)此表可根据车流量动态设定红绿灯初始值。系统硬件设计选用设备8031单片机一片选用设备:8031弹片机一片,8255并行通用接口芯片一片,74LS07两片,MAX692‘看门狗’一片,共阴极的七段数码管两个双向晶闸管若干,7805三端稳压电源一个,红、黄、绿交通灯各两个,开关键盘、连线若干。4.2.1 系统总框图如下:4.2.2 交通灯硬件线路图4.2.3 系统工作原理(1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统(2) 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。(3)8051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒循环由8051的 P0口向8255的数据口输出。(4) 通过8051单片机的位来控制系统是工作或设置初值,当.牌位0就对系统进行初始化,为1系统就开始工作。(5)红灯倒计时时间,当有车辆闯红灯时,启动蜂鸣器进行报警,3S后然后恢复正常。(6)增加每次绿灯时间车流量检测的功能,并且通过查询端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。(7)绿灯时间倒计时完毕,重新循环。5.控制器的软件设计每秒钟的设定延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。计数器硬件延时 计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式:TC=M-C式中,M为计数器摸值,该值和计数器工作方式有关。在方式0时M为213 ;在方式1时M的值为216;在方式2和3为 计算公式T=(M-TC)T计数或TC=M-T/T计数T计数是单片机时钟周期TCLK的12倍;TC为定时初值如单片机的主脉冲频率为TCLK12MHZ ,经过12分频方式0 TMAX=213 *1微秒=8.192毫秒方式1 TMAX=216 *1微秒=65.536毫秒显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题. 1秒的方法我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。相应程序代码(1)主程序定时器需定时50毫秒,故T0工作于方式1。 初值:TC=M-T/ T计数 =216 -50ms/1us=15536=3CBOHORG 1000HSTART: MOV TMOD, #01H ; 令TO为定时器方式1MOV TH0, #3CH ;装入定时器初值MOV TL0, #BOH ;MOV IE, #82H ;开T0中断SEBT TRO ;启动T0计数器MOV RO, #14H ;软件计数器赋初值LOOP: SJMP $ ;等待中断(2)中断服务子程序ORG 000BHAJMP BRT0ORG 00BHBRTO:DJNZ R0,NEXTAJMP TIME ; 跳转到时间及信号灯显示子程序DJNZ:MOV RO,#14H ;恢复R0值MOV TH0, #3CH ;重装入定时器初值MOV TL0, #BOH ;MOV IE, # 软件延时MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。具体的延时程序分析:DELAY:MOV R4,#08H 延时1秒子程序DE2:LCALL DELAY1DJNZ R4,DE2RETDELAY1:MOV R6,#0 延时125ms 子程序MOV R5,#0DE1: DJNZ R5,$DJNZ R6,DE1RETMOV RN,#DATA 字节数数为2 机器周期数为1所以此指令的执行时间为2msDELAY1 为一个双重循坏 循环次数为256*256=65536 所以延时时间=65536*2=131072us 约为125usDELAY R4设置的初值为8 主延时程序循环8次,所以125us*8= 1秒由于单片机的运行速度很快其他的指令执行时间可以忽略不计。 时间及信号灯的显示 8051并行口的扩展8051虽然有4个8位I/O端口,但真正能提供借用的只有P1口,因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8031通常需要扩展。由于我们用外部输入设定红绿灯倒计时初值、数码管的输出显示、红绿黄信号灯的显示都要用到一个I/O端口,显然8031的端口是不够,需要扩展。扩展的方法有两种:(1)借用外部RAM地址来扩展I/O端口;(2)采用I/O接口新片来扩充。我们用8255并行接口信片来扩展I/O端口。显示原理:当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。 8255PA口输出信号接信号灯:由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红,绿,黄发光二极管。 8255输出信号与数码管的连接:LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上7FH所以 SP上为0伏,不亮其余为TTL高电平,全亮则显示为8采用共阴级连接:其中 PC0\PB0-a,PC1\PB1-b,PC2\PB2-c,PC3\PB3-d,PC4\PB4-e,PC5\PB5-f,PC6\PB6-gPC7\PB7 -SP接地显示数值 dop g f e d c b a 驱动代码(16进制)0 0 0 1 1 1 1 1 1 3FH1 0 0 0 0 0 1 1 0 06H2 0 1 0 1 1 0 1 1 5BH3 0 1 0 0 1 1 1 1 4FH4 0 1 1 0 0 1 1 0 66H5 0 1 1 0 1 1 0 0 6DH6 0 1 1 1 1 1 0 0 7DH7 0 0 0 0 0 1 1 1 07H8 0 1 1 1 1 1 1 1 7FH表 3 驱动代码表 8255与8051的连接:用8051的P0 口的 连接8255的片选信号cs 我们用8031的地址采用全译码方式,当 =0 时片选有效, 其他无效, 用于选择8255端口 A6 A5 A4 A3 A2 A1 A01 X X X X X 0 0 00H为8255 的PA口1 X X X X X 0 1 01H 为8255的PB口1 X X X X X 1 0 02H 为8255的PC口1 X X X X X 1 1 03H 为8255的控制口由于8051是分时对8255和储存器进行访问所以8051的P0口不会发生冲突 程序设计流程图如图所示图8图9 程序流程图 程序源代码ORG 0000H ;主程序的入口地址LJMP MAIN ;跳转到主程序的开始处ORG 0003H ;外部中断0的中断程序入口地址ORG 000BH ;定时器0的中断程序入口地址LJMP T0_INT ;跳转到中断服务程序处ORG 0013H ;外部中断1的中断程序入口地址MAIN : MOV SP,#50HMOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1MOV TH1,#00H ;T1计数器清零MOV TL1,#00HSETB TR1 ;启动T1计时器SETB EX1 ;允许INT1中断SETB IT1 ;选择边沿触发方式MOV DPTR ,#0003HMOV A, #80H ;给8255赋初值,8255工作于方式0MOVX @DPTR, AAGAIN: JB ;判断是否要设定东西方向红绿灯时间的初值,若为1 则跳转MOV A,P1JB ;判断是否为1,若为1则设定红灯时间,否则设定绿灯时间MOV R0,#00H ;R0清零MOV R0,A ;存入东西方向绿灯初始时间MOV R3,ALCALL DISP1LCALL DELAYAJMP AGAINRED: MOV A,P1ANL A,#7FH ;置0MOV R7,#00H ;R7清零MOV R7,A ;存入东西方向红灯初始时间MOV R3,ALCALL DISP1LCALL DELAYAJMP AGAIN;-------------------------------------------N0: SETB TR0 ;启动T0计时器MOV 76H,R7 ;红灯时间存入76HN00: MOV A,76H ;东西方向禁止,南北方向通行MOV R3,AMOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮MOV A,#0DDHMOVX @DPTR, AN01: JB : SETB R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行;------黄灯闪烁5秒程序------N1: SETB R3,#05HMOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮MOV A,#0D4HMOVX @DPTR,AN11: MOV R4,#00HN12: CJNE R4,#7DH,$ ;黄灯持续亮秒N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭MOV A,#0DDHMOVX @DPTR,AN14: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续灭秒CJNE R3,#00H,N1 ;闪烁时间达5秒则退出;------------------------------------------------------------N2: MOV R7,#00HMOV A,R0 ;东西通行,南北禁止MOV R3,AMOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮MOV A,#0EBHMOVX @DPTR,AN21: JB : CJNE R3,#00H,N21;------黄灯闪烁5秒程序------N3: MOV R3,#05HMOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮MOV A,#0E2HMOVX @DPTR,AN31: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续亮秒N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭MOV A,#0EBHMOVX @DPTR,AN33: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续灭秒CJNE R3,#00H,N3 ;闪烁时间达5秒则退出SJMP N00;------闯红灯报警程序------B0: MOV R2,#03H ;报警持续时间3秒B01: MOV A,R3JZ N1 ;若倒计时完毕,不再报警CLR ;报警CJNE R2,#00H,B01 ;判断3秒是否结束SJMP N02;------1秒延时子程序-------N7: RETIT0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值MOV TH0,#0F1HINC R4INC R5CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序MOV R5,#00H ;R5清零DEC R3 ;倒计时初值减一DEC R2 ;报警初值减一T01: ACALL DISP ;调用显示子程序RETI ;中断返回;------显示子程序------DISP: JNB : MOV B,#0AHMOV A,R3 ;R3中值二转十显示转换DIV ABMOV 79H,AMOV 7AH,BDIS: MOV A,79H ;显示十位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0F7HMOVX @DPTR,ALCALL DELAYDS2: MOV A,7AH ;显示个位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0FBHMOVX @DPTR,ARET;------东西方向车流量检测程序------T03: MOV A,R3SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量JZ N3JB R7CJNE R7,#64H,E1MOV R7,#00H ;中断到100次则清零E1: SJMP N22;------东西方向车流量显示程序------T02: MOV B,#0AHMOV A,R7 ;R7中值二转十显示转换DIV ABMOV 79H,AMOV 7AH,BDIS3: MOV A,79H ;显示十位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0F7HMOVX @DPTR,ALCALL DELAYDS4: MOV A,7AH ;显示个位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0FBHMOVX @DPTR,ALJMP N7;------延时4MS子程序----------DELAY: MOV R1,#0AHLOOP: MOV R6,#64HNOPLOOP1: DJNZ R6,LOOP1DJNZ R1,LOOPRET;------字符表------TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND6 结论本系统就是充分利用了8051和8255芯片的I/O引脚。系统统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。。系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现 。

单片机论文

在平时的学习、工作中,大家都经常接触到论文吧,论文是指进行各个学术领域的研究和描述学术研究成果的文章。怎么写论文才能避免踩雷呢?以下是我为大家收集的单片机论文,仅供参考,欢迎大家阅读。

摘要:

本文针对工科院校单片机课程中存在的问题进行探究,提出了以项目化教学作为主导的改革方案,以学生为本,充分调动学生的主观能动性和学习兴趣。

关键词:

项目;单片机教学;改革探索

单片机课程将程序设计、通信技术、微机接口等多种专业知识综合在一起,是一门工程性、实践性以及技术性很强的课程。单片机课程是电子信息和自动化等专业的核心课程。

1、单片机课程教学现状

教师教学手段较为单一

单片机是大规模集成电路的发展产物,内部结构较为复杂。各大工科类院校对于单片机教学,仍旧采用教师在课堂上面讲述相关的理论知识、单片机内部结构,然后讲解单片机的程序设计以及汇编语言,教学方式较为单一,使学生没能抓住学习的重点,丧失对单片机学习的热情和兴趣,导致教学质量越来越差[1]。

学生没有明确的学习目标

单片机课程的实践性和应用性较强,在学习时要以应用为主要目标,然而有许多教师在教学的过程中忽略了这一点,导致学生没有明确的学习目标,单纯地跟着教师的思路,缺乏学习自主性和探究意识,学习目标不明确,影响教学效率。

学生缺乏实践机会

学生在做实验时,主要的器材就是一本实验指导书、一个集成实验箱,学生按照指导书上面的流程机械式的进行实验,盲目的观察实验结果,对于实验中所应用到的一些原理模糊不清,导致学生在实验结束后仍旧对所学的内容有疑惑,没能掌握相关器材基本使用的方式,更没有将之运用到实际工程中的能力。

考核方式有着一定的局限性

各种工科类院校对于学生单片机课程考试仍旧采用笔试的方式,这种考试形式具有一定的局限性,不能真实客观的反映出学生的学习水平,更不能考察出学生的实践能力和动手能力,这种考试方式没能很好的与实践相结合,导致考核结果不具有客观性。

2、应用项目教学方法

项目教学方法能够很好的适用于技术教育,可以将学科体系的内容转化成若干教学项目,然后围绕着这些项目进行教学,教师要引导学生直接参与到项目教学整个过程中[2]。设计教学项目,着重强调让学生参与其中,在模拟的生产场景中,完成规定的项目,这是理论与实践的完美结合。

在项目教学整个过程中,学生要在规定的时间内,可以自由的进行讨论,安排整个过程的进度,如此有助于激发学生的创新能力和积极性,培养了学生分析、解决问题的能力和团队的协作能力。

3、项目教学法的实施步骤

如今许多单片机教科书中知识结构都是从简单的数制到较为复杂的单机硬件,最后再到复杂的系统接口技术。但项目教学法改变了传统的教学模式,教师能够灵活掌握课程的教学顺序,合理的安排教学任务,并结合自身多年教学经验,总结出几个步骤帮助学生对单片机进行有效的学习。首先应该对单片机有所感知,自己查找一些有关资料,进一步了解对单片机学习的必要性和应用性;其次教师要给学生布置一些项目具体的任务,例如制作秒表、电子万年历等,给每个学生分配具体的任务,让他们由浅及深的了解单片机课程;再次教师要对一些小模块进行具体的讲解和分析;最后以期末的实训内容作为引导,将之贯穿于整个理论教学的过程中,模拟出一些生产场景,增强学生实际动手能力,完成最终的项目教学目标。

4、项目的选择

项目化教学主要是以项目为主要载体,以任务作为动力,将实践和理论紧密的结合起来,使学生在完成任务过程中就能够充分掌握相关的技能和知识,进而不断提高学生的实践能力和学习效果。在设计教学时,要挑选合适的项目来保证改革效果。所选的项目既能包含单片机相关的知识,又不会过大的增加学生的学习负担,给学生造成一定的心理压力。

5、基于项目的单片机改革策略

以项目为主要导向

传统的教学方法主要是以教师讲授知识为主,重视教师、教材以及课堂教学,这种传统的教学模式主要强调理论知识的连续性和基础知识的运用,但却忽略了对学生兴趣以及创造能力的培养。现阶段,在课堂教学中要改变这种教学模式,变换传统的教学结构,打破原有的教学框架,将教材中原有的知识顺序分散成诸多小的知识点,运用一些经典的项目案例将这些小的知识点融入整个课堂教学,从而能够实现以项目为导向教学模式。

项目设置的方法

教师要对项目的实例进行选择,认真撰写项目的内容。所选的基础项目能够与学生自身的兴趣相符合,给学生布置一些功能简单易于实现的项目任务。选择技能项目,鼓励学生通过多种形式来实现项目的具体要求,对于学生独立思考的能力有着较高的要求,在教学过程中教师可以指导学生进行分组讨论,主要以学生互相讨论以及师生互动的形式进行。综合项目则是侧重学生知识的提高,对于一些能力较强的学生应该充分发挥出他们的钻研精神,能够在钻研的过程中提升自身专业技能。例如教师给学生布置一些制作秒表的项目任务,让学生自己动手,在制作的过程中将所学的知识运用到操作之中,使得学生们的理论知识与实践能力有效的.结合在一起。

测评环节

以项目为主要导向的教学过程中,考核的方式与传承考试也有所不同,考量学生的学习效果主要是通过综合评价实现的,主要评价有自我评价、教师评价、学生互评以及项目组长的评价等。

从项目框架的设计、需求的分析以及详细的方案等各个环节对学生进行点评打分。教师在评价的过程中,主要以支持和鼓励学生为主,可以增加学生自信心;在小组评价的过程中,应该着重了解学生在整个项目中所起到的作用,观察学生是否属于设计的主要人员,在设计的过程中是否配合等;在自我评价的过程中,要反映出自身在学习过程中所遇到的困难,在面对困难时是否能及时寻找到解决问题的方法,自我测评在今后的学习中有利于提升学生的学习效率。学生应该虚心接受别人的评价,在评价中才能够更快、更好地改善自己的不足之处,不断地完善自己。

6、结束语

项目教学法能够充分调动学生学习的积极性,在整个教学过程中,既提升了学生的实践能力,又促进了师生之间的情感交流。本文着重探讨了工科类院校单片机课程教学的现状,如教师教学手段较为单一、学生没有明确的学习目标、学生缺乏实践机会、考核方式具有一定的局限性。

本文也研究了应用项目教学方法、项目教学法的实施步骤、基于项目的改革策略等,主要是以项目为导向,设置项目方法优化测评环节。如此才能大幅度的提升学生们的实践能力、创新能力以及思维能力。

参考文献:

[1]李冰.单片机课程的项目化教学改革与实践[J].实验室科学.2014(1).

[2]郭毅飞,王华.项目教学法在单片机教学改革中的应用[J].湖南农机.2013(1).

摘要:

单片机是当前被运用到各个领域的一个技术产品,随着当前社会生产活动的增多,单片机被运用到众多的生产领域中,在一定程度上提升了人们的生活水平和质量。就当前单片机的使用情况看,单片机更多地被运用到电子技术领域中,提升电子领域的发展程度,例如在仪表仪器中使用单片机可以提升其智能程度;单片机在工业控制中通过自身功能的发挥,可使工业控制更加先进化。该文从单片机的概述入手,研究在电子技术发展中单片机运用的程度。

关键词:

单片机;电子技术;应用研究

20个世纪70年代,单片机得到快速的发展,形成一个品种较为全面,功能更加强大的技术产品,开始在各生产领域中运用。随着近半个世纪的发展,单片机取得更优质的成果,科技水平更加先进,在众多领域中实现高效运用,提升这些领域的发展程度。单片机现在在电子技术领域中得到广泛的使用,如在通信功能、仪表仪器等方面实现高效的运用,促进这些企业实现优质的发展。同时,随着单片机运用程度的增加,应用领域的扩展,其技术呈现创新发展趋势。

1、单片机的科学分析

概述

单片机是嵌入式系统的一个组成部分,它采用规模较大的电路技术将CPU、RAM、ROM以及定时器等众多功能集成在一个硅片上,继而形成一个具有完善功能的,微型的计算机系统。单片式是1970年左右开始在生产中运用,随着多年技术的革新和使用程度的加深,当前它在汽车电子,医疗器械,工业控制以及仪表仪器中得到运用。单片式发展速度较快,由最开始的4位单片机发展成8位单片机,到目前300M具有高速运转和处理能力的单片机。

主要特点

单片机是当前计算机发展的一个重要组成部分,随着计算机水平的增长,单片机也呈现高效革新的态势,且呈现不同用途的,不同型号的单片机产品。以AT89S52型号单片机为例,单片机目前重要的发展特点有6个方面。

第一,单片机具有使用方便的特点,单片机整体体积较小,系统构成较为简单,整体呈现模块化;

第二,对环境的要求较低,单片机具有较强的环境适应能力,可以在不同的环境得到运用;

第三,控制能力较强大,单片机有着较强的科技力量,通过众多功能的集成,其具有很强的控制功能;

第四,功能消耗较低,单片机在运行的时候只需要较低的电压,整体对功能的消耗低;

第五,速度快,单片机具有极强的处理功能,对各项数据和信息有着极快的处理速度;

第六,可靠性高,单片机可以实现长时间的工作,提升整体系统的运转能力。

2、电子技术中单片机的应用情况分析

手机通信中的运用

单片机在电子通讯中得到运用,主要体现在手机语音功能的建设中,单片机对手机语音信息进行识别,并开展相关操作。在手机的音频入口安置单片机可以使其收集众多的音频信息,系统分辨工作开展之后,向各个部件下具体的指令和信息,实现语音信息中的手机操作。

单片机提升医疗器械诊断正确性

人们在实现温饱之后,更加关注自身的健康,对医疗水平有着越来越高的需求。但是,在医疗建设的过程中总会出现一些问题,检测手段以及消毒水平存在一定的不足,影响整体医疗建设的质量。单片机在医疗器械中得到运用之后,大大减少了医疗问题的出现,使医疗工作得到一定程度的提升。单片机的使用增加了医疗设备的诊疗准确性,提升了诊断的精准性。同时,随着单片机在医疗器械中的运用,整体医疗设备朝着更加智能化、自动化的发展方向前进,使医疗诊断的结果更加精准,更好地为人们的健康提供医疗保障。

单片机使仪表仪器的使用更加智能化

单片机因其集成度高等特点被用于仪表仪器的生产,随着单片机科研水平的不断革新,仪表仪器的发展更加智能化,更加符合当前人们的使用需求。同时,随着单片机使用程度的增加,仪表仪器设备朝着数字化方向发展,整体测试水平较高,仪表仪器控制和处理的功能建设更加优质。例如,在航天仪器制造的时候,使用单片机这种先进的技术可以使仪器的精准性和集成性更强,提升航天电子系统的数字化程度,大大降低航天事故发生的几率。

家电中普遍使用单片机

单片机不仅在高科技的领域中实现运用,如医疗器械、仪表仪器等领域,同时也在日常生活中得到运用,例如在家电行业中。随着科研水平的发展,单片机越来越多地在生活中得到运用,提升人们生活的质量和幸福感。当前人们家庭生活中使用的洗衣机、微波炉以及电视机等家电都运用了单片机这项技术。在电视机的运用中,通过使用单片机使其系统控制技术更加先进,功能操作更加便捷。

例如,人们可以通过遥控器自由切换不同的电视频道,选择自己想看的电视节目。单片机在微波炉建造中,通过系统信息的处理,可以根据食材的不同进行科学的、自动的选择工作,主要是选择加热时所需要的温度和具体时间。单片机在洗衣机的系统控制中,可以根据衣物的材质以及脏污程度进行自动洗涤,对洗衣液的使用量、洗涤的强度控制以及详细的洗涤时间有着科学的控制和选择。

3、单片机在未来电子技术领域中开发趋势分析

随着社会生产实力的增强,科研技术程度更加深入,单片机型号和技能革新的速度会越来越快,其在电子领域的应用开发主要从以下3个方面进行。

对单片机程序开发

随着单片机自身开发程度的加深,其在嵌入式系统的建设中得到越来越全面的运用,目前已经不在裸机的环境中实现开发和使用。单片机已经实现一定程度的自动执行,可以对数据进行较强的储存,科学处理和传输数据。单片机具有较强的环境使用能力,可以保障计算机在不同的环境中实现正常的运转和数据的处理,对外界的物理参数实现高质量的采集,并对其进行逻辑分析和正确的处理。

优化C语言系统程序

C语言有着强大的数据处理能力,可以以简易的方式对编程语言开展编译、处理等工作,有着强大的编程能力。为了使单片机在复杂的计算数据和控制数据的环境中实现正常的使用,提升系统的集成和控制能力,一定要加强C语言在单片机中的运用程度。通过对C语言更深度的开发,可以加大单片机的开发程度和力度,进而拓展单片机使用和运用的范围和领域。

加强对计算机的研发

目前,单片机的制作中使用众多的通信接口,通过接口的连接可以和计算机进行数据的交流和沟通。可以说,单片机通过通信接口可以让通信设备和计算机形成一定的联系,可以使双方进行精准的数据支持,提升设备对数据的使用程度和运用程度。为此,要想对单片机进行深度的开发,应该对计算机进行系统的分析和运用,提升数据连接和传输的质量。

4、结语

单片机是当前计算机发展的一个重要组成部分,随着计算机水平的增长,单片机也呈现高效革新的态势,在电子领域实现高效的运用。突出表现在手机通信中和家庭电器的使用中,提升人们的生活建设质量。同时,单片机使仪表仪器的使用更加智能化,提升医疗器械的诊断正确性。在未来的发展中,可以通过对单片机程序进行开发、优化C语言系统程序以及加强对计算机的研发这3个方面提升单片机在电子领域的运用程度。

参考文献

[1]郑泽宏.单片机在电子技术中的应用和开发技术研究[J].科技信息,2013(25):140,221.

[2]王红纪,徐小亚.单片机在电子技术中的应用和开发[J].电子测试,2014(13):44-46.

[3]王德权.研究单片机在电子技术中的应用[J].科技与企业,2013(3):113.

[4]张力.单片机在电子技术中的应用和开发[J].电子技术与软件工程,2016(5):259.

[5]许文涛.单片机在电子技术中的应用[J].黑龙江科技信息,2016(19):15.

摘要: 随着电子科技的飞速发展,尤其是超大规模集成电路的出现,给我国的经济带来了实质性的改变。其中,对于单片机的使用已经在很多领域都有出现,比如说在工业自动化控制房间、在智能仪器仪表方面以及各种家用电器方面,单片机都起到了很大的作用。由于其极高的性能价格比,使其在电子时钟方面的应用也是很常见的。本文通过对普通单片机电子时钟的设计分析,从而达到对单片机进行更深入的学习与设计。

关键词: 单片机;电子时钟;设计分析

时钟就是一个最典型的例子,由于人们的生活速度越来越快,人们的时间观念也在不断增强,生活中处处离不开时钟,时钟对人们可以说是不可或缺的东西。现如今,时钟的样式很功能也越来越多,人们对时钟的精准度要求也越来越高。本文就是针对时钟的精准度来设计一个普通单片机电子时钟。

一、单片机的简单介绍

(一)单片机的定义与分类

单片机是一种集成电路芯片,采用超大规模集成电路技术把具有数据处理能力的中央处理器、随即存储器、只读存储器等集成到一块硅片上构成的一个小而完善的微型计算机系统。主要分类包括:STC系列单片机、AVR单片机、AT系列单片机等等 。

(二)单片机的应用与发展

目前,随着电子自动化的广泛应用,单片机以其自身的诸多优势已经应用到了各个领域之中,这些领域主要包括智能仪器仪表、计算机网络、机器人控制、工业控制、家电管理等等。由于单片机的优势很有多,在未来的生活中一定会被更多的领域所应用,有很好的发展趋势。

二、单片机电子时钟的设计方案

单片机电子时钟的构成主要由:一个8位CPU;一个片内振荡器及时钟电路;4K字节ROM程序存储器;256字节RAM数据存储器;两个16位定时器/计数器;可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;32条可编程的I/O线(四个8位并行I/O端口)和一个可编程全双工串行口组成。

单片机电子时钟的设计主要是对时钟的内部工作和外部显示进行设计,主要的设计方案则分为数字时钟方案和数码管显示方案。通过数字时钟和数码管显示的完美结合使电子时钟的质量得到完善和保证。

(一)数字时钟方案

这部分是单片机电子时钟最主要的设计,也是时钟内部工作部分。在单片机的内部存储器中设置三个分别代表时、分、秒信息的字节。在对内部的存储器进行设置的时候,要根据时钟的运作规律设定,时钟的工作是由内部的定时器和软件结合来实现的。对此设定1秒中断,以此来推动秒针的运动,而当秒针中断的次数达到60次的时候,则将其清零,同时分针的字节开始运行,以此类推,当分钟的中断次数达到60次的时候,时钟的字节开始运行。当时钟的字节达到24的时候,便将时钟的字节清零,以上的操作反复进行,这就是单片机电子时钟关于数字时钟的设计方案。这部分的设计起来比较繁琐,每个步骤都要做到很好的处理,设置时、分、秒的顺序也不能打乱。

(二)数码管显示方案

数码管显示方案主要是对时钟的外部显示进行设计,主要分为静态显示和动态显示两个部分,在电子时钟外部显示中占主导地位的就是动态显示。所谓动态显示就是根据内部设计中的秒针的运行情况,在出现的显示器数字的轮流点亮,每隔一段时间都要点亮一次,这部分要求显示器的扫描必须要有足够快的速度,只有这样,显示出来的字符才不会出现闪烁的效果。同时,秒钟和显示器的运作应该是保持一致的,否则在电子时钟运行的时候,就很容易出现时间上的误差,这种动态显示节省了I/O口,也会降低耗能。

(三)电子时钟的硬件选择

1、单片机的选择,在单片机电子时钟的设计中,通常都会选用AT89c52单片机,配备12MHz晶振,采用上电复位来对电路进行系统复位。

2、显示电路选择,在显示电路的选择上,采用软件译码动态显示。

3、电源选择,采用直流电源供电,电源基本选择在左右。

4、选择器的选择,通常采用741s04.

三、系统软件设计

对系统软件的设计主要包括软件的设计思想、总体设计以及按键扫描子程序。

(一)软件设计思想

根据人们对电子时钟功能的需求,需要设计出来的电子时钟程序必须具备动态扫描、时钟信号产生以及按键扫描处理等功能。利用单片机来实现电子时钟的这些功能,主要利用的方法就是分时复用,要协调好各个器件的占用时间,这样才能实现单片机电子时钟以上的功能,使电子时钟对人们的需求造成满足。

(二)总体设计

1、系统说明及设计框图

利用普通单片机制作的简易时钟,其主要的工作原理就是运用6个PNP管来分别控制6个LED数码管来完成时钟的运行工作。这里出现的6个数码管主要负责显示小时、分钟以及秒针的十位位置和个位位置,还会设定一个按键用于对时间的调整。

2、模块设计

普通单片机电子时钟的设计主要包括电源部分、复位电路、显示部分、控制部分、位选部分等几个模块。对于电源部分的技术,要从外部引入直流电,电流应该选择,这样就可谓电子时钟提供电源,使其能够正常运行。

位选电路、复位电路二极管、电解电容部位,在其运行的时候,相应的引脚也会出现不同。在开关按下时引脚RST为高电平1,断开时引脚为低电平0。

(三)按键扫描子程序

普通单片机电子时钟的运行,最好选用按键来切换各种不同的状态,这样不仅简单,容易操作,而且在电子时钟出现状况而需要查询按键信息的时候,电子时钟所具有的按键扫描功能就可以提供以往的按键情况,这种按键程序中还嵌套了按键扫描程序用来处理在不同情况下的电子时钟状态切换。

四、对整体系统进行调试

在单片机电子时钟设计完成之后,要对电子时钟所应用的系统进行简单的测试,仔细分析在测试的过程中所出现的问题,进行问题的统计与分析,从而找到合理、科学的解决方法。使单片机电子时钟更加完善。

(一)系统调试方法

对于单片机电子时钟各个系统的调试,首先要对每个单独的程序进行调试,将出现的问题归纳整理,找到合理的解决方法后,针对出现问题的程序进行系统的调试。确保每个程序都没有问题之后,再进行整体的调试工作。只有这样,才调试的过程中才会使调试工作有理有序的进行。

(二)系统时钟误差分析

时间准确,长时间不容易出现误差是一个时钟被认可的标准之一。对于系统误差,设计者应该及时进行误差的分析和调试工作。

在单片机电子时钟系统中,能够出现误差的地方有很多,比如说晶体频率的误差,定时器溢出误差以及延迟误差等等,设计者要结合不同的误差进行不同的分析,找出其内在的原因,从而拟定出解决的方案,使电子时钟的精准度提高。

(三)软件调试问题及解决

在软件调试的过程中,应该将调试的重点分别放在各个模块上,对这些模块的调试可以采取在线调试和离线调试两种方法,在调试过程中出现的问题要及时分析及时解决。

结语:

随着我国电子技术的迅速发展,单片机的应用也会越来越广泛,对于电子时钟系统的设计一定也会日趋完善,功能也会越来越全面,性能会更加稳定,可以预见,在未来的几年里,单片机的应用也会越来越广泛。更好的造福人们。

参考文献:

[1]何立民.MCS251单片机应用系统设计技术[M].北京:北京航天航空大学.1999

[2]程光璇.普通单片机电子时钟的设计[J].电子世界.2011(8)

[3]华贵山.基于单片机微机测控系统中的数字滤波技术研究[J].安徽电子信息职业技术学院学报.2006(5)

手边有一些你需要的关于单片机的论文设计资料 需要的话加QQ 晚上7点以后隐身在线,直接加就行,说明要的资料名字就好。嘿嘿 楼主 要是觉的好的话 可别忘了给分哦。

单片机课程设计论文参考文献

[1]陈堂敏.刘焕平主编.单片机原理与应用.北京:北京理工大学出版社,2007.[2]沈美明.温动蝉编著.IBM-PC汇编语言程序设计.北京:清华大学出版社,1994.[3]张仰森等编.微型计算机常用软硬件技术速查手册.北京:北京希望电脑公司,1994.[4]江修汗等编.计算机控制原理与应用.西安:西安电子科技大学出版社,1999.

[1] 李东升等.protel 99SE电路设计教程.电子工业出版社,[2] 藏春华等.电子线路设计与应用.高等教育出版社,[3] 李学海.16位单片机SPCE061A使用教程——基础篇.人民邮电出版社,2007[4] 张琳娜,刘武发.传感检测技术及应用.中国计量出版社,1999[5] 邵敏权,刘刚.单片机原理实验及应用.吉林科学技术出版社,[6] 杨振江等.智能仪器与数据采集系统中的新器件及应用.西安电子科技大学出版 社,[7] 罗亚非等.凌阳16位单片机应用基础.北京航空航天大学出版社,[8] 刘笃仁,韩保君.传感器原理及应用技术。机械工业出版社,[9] 薛筠义,张彦斌.凌阳16位单片机原理及应用,[10] 徐爱卿.Intel 16位单片机,[11] 霍孟友等,单片机原理与应用机械工业出版社, [12] 霍孟友等,单片机原理与应用学习概要及题解,机械工业出版社,[13] 许泳龙等,单片机原理及应用,机械工业出版社, [14] 马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社,2003修订版 [15] 薛均义 张彦斌 虞鹤松 樊波,凌阳十六位单片机原理及应用,2003年,北京航空航天大学出版社.

[1]李广弟等.单片机基础[M].北京航空航天出版社,2001. [2]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009. [3]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010. [4]刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007. [5]钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社,2007. [6]李平等.单片机入门与开发[M].机械工业出版社,2008.

楼上的,人家说要外文、

单片机类毕业论文设计

会单片机的,比如参加过竞赛的,一个星期就可以完成毕业设计什么都不会的,除了抄,就是买,要不就来蒙混过关按您的说法,估计你不太会单片机,这个真的自己做,多向老师同学请教,也至少需要数月吧。否则作出“实物”,不太现实。这个过程下来,你也可以了解下单片机是什么东西,看你自己愿意在实验室呆几个月,还是出去找一个适合自己的工作....买一个是有钱人的上策!

单片机类毕业设计 ·基于单片机的变频恒压供水控制系统的设计·基于单片机的恒压供水系统的设计·基于AT89S51单片机的数字温度计设计·基于单片机的温室大棚测控系统研究·基于单片机的温度测量系统设计·基于单片机温湿度控制系统·基于单片机的自动化点焊控制系统·红外声控报警系统的设计·红外防盗报警器的设计·基于AT89S51单片机的出租车计价器·煤气报警器的设计·单片机交通灯控制系统设计--带仿真的

这个课题不难,可以说是单片机的基本知识。单片机可以采用51系列的单片机就足够了,温度测量的终端采用数字温度头,几块钱一个不贵,语音播报系统建议采用个蜂鸣器就可以了,要是要播放录制的WAV格式的语音可能就稍微麻烦点。

单片机的毕业设计,不同的设计要求,难度不一样。你的课题是温度测量与语音播报系统。这个课题的设计思路:(1)温度测量与语音播报系统的电路设计———— 主要需要完成单片机最小系统电路+LCD液晶显示电路+温度传感器采集电路+语音播报电路+报警电路(2)温度测量与语音播报系统的软件程序:———— 主要需要完成LCD液晶显示电路的驱动程序+温度传感器采集电路的驱动程序+语音播报电路的驱动程序+报警电路的驱动程序(3)温度测量与语音播报系统的实物调试———— 购买有关温度测量与语音播报系统的电路设计所需要的电子器件,结合软件程序来调试有关的功能。头像账号也是腾讯账号。有问题可以添加@生活不止有眼前的苟且,还有诗和远方

单片机温度计毕业论文设计

这是我自己用DS18B20做的温度检测程序,复制给你看看,我这是通过串口可以在电脑上的串口助手上显示出实时的温度:#include<>#include<>#define uint unsigned int#define uchar unsigned charsbit ds=P1^0;bit flag;uchar count_t0;float f_temp;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=122;y>0;y--);}void init() // 串口初始化{TMOD=0x21;SCON=0x50;TH0=0x4c;TL0=0x00;TH1=0xf3;TL1=0xf3;EA=1;ET0=1;TR0=1;TR1=1;}void timer0() interrupt 1{TH0=0x4c;TL0=0x00;if(++count_t0>=20){count_t0=0;flag=1;}}void dsreset(){uint i;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bit read_bit(){uint i;bit dat;ds=0;i++;ds=1;i++;i++;dat=ds;i=8;while(i>0)i--;return dat;}uchar read_byte(){uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=read_bit();dat=(j<<7)|(dat>>1);}return dat;}void write_byte(uchar dat){uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){ds=0;i++;i++;ds=1;i=8;while(i>0)i--;}else{ds=0;i=8;while(i>0)i--;ds=1;i++;i++;}}}void begin_change(){dsreset();delay(1);write_byte(0xcc);write_byte(0x44);}float get_temp(){uchar a,b;uint temp;float f_temp;dsreset();delay(1);write_byte(0xcc);write_byte(0xbe);a=read_byte();b=read_byte();temp=b;temp<<=8;temp=temp|a;f_temp=temp*;temp=f_temp*10+;f_temp=f_temp+;return f_temp;}void main(){init();while(1){if(flag==1){flag=0;begin_change();TI=1;printf("The tempeature is %f\n",get_temp());while(!TI);TI=0;}}}

我做的课程设计,用的数码管,也做了protues仿真,你有需要的话,我邮箱是。希望对你有帮助,#include<>sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit P14=P1^4;/////数码管1断码控制///////////////sbit P15=P1^5;sbit P16=P1^6;sbit P17=P1^7;sbit P32=P3^2;/////数码管2段码控制////////////////sbit up=P3^7;sbit down=P3^6; ////按键操作端口//////////////////sbit P35=P3^5; ////////控制晶闸管端口/////////sbit DQ =P3^3; ///////温度传感器端口///////// #define THCO 0xee#define THLO 0x00unsigned char code duan[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,}; //////////////////////////////////////////int b=0;char pwm=0;int k;char r=0,q=0;static char wendu_1;char hao=20;//////////////////////////////////////////////void delay(unsigned int i){while(i--);}//////////////////////////////////////////Init_DS18B20(void){unsigned char x=0;DQ = 1; //DQ复位delay(8); //稍做延时DQ = 0; //单片机将DQ拉低delay(80); //精确延时 大于 480usDQ = 1; //拉高总线delay(14);x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(20);}////////////////////////////////////////////ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;delay(4);}return(dat);}////////////////////////////////////////////////WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;}//delay(4);}/////////////////////////////////////////////////DS18B20程序读取温度ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*;return(t);}xianshi(){/////////////////当前温度显示///////////////////////////// P11=1; P0=duan[wendu_1/1000]; for(k=0;k<1000;k++); P1=0;P12=1; P0=duan[wendu_1/100%10]; for(k=0;k<1000;k++); P1=0;P13=1; P0=duan[wendu_1%100/10]; for(k=0;k<1000;k++); P1=0;P14=1; P0=duan[wendu_1%10]; for(k=0;k<1000;k++); P1=0; ///////////////////////////目标电压显示/////////////// P15=1; P2=duan[hao/1000]; for(k=0;k<1000;k++); P1=0;P16=1; P2=duan[hao/100%10]; for(k=0;k<1000;k++); P1=0;P17=1; P2=duan[hao%100/10]; for(k=0;k<1000;k++); P1=0;P32=1; P2=duan[hao%10]; for(k=0;k<1000;k++); P32=0;////////////////////////////////////////////////////////// }/////////////////////////////////////////////////////////// main(void){ P11=0; P12=0; P13=0; P14=0; P15=0; P16=0; P17=0; P32=0; P35=0; /////////////////////////////////////////////////////////// while(1){ wendu_1=ReadTemperature()/16;//读温度 xianshi(); ///显示系统数据/////////////////////////////////////操作函数//////////////////////////////////// if(down==0) {hao--;} if(up==0){hao++;} ///////////////////////////////////////////////////////////////////hao为理想温度/////wendu_1为实际环境温度/////////////////////////////////////////////////////////////////P35为高时 led灯工作///////////////////////////////////// P35=0; pwm=hao-wendu_1; if(pwm>0) {P35=1;} if(pwm<0) {P35=0;} if(pwm==0) {P35=0;}///////////////////////////////////////////////////////////////// }}

AT89C51单片机那可以的要求的撒

#include <>#define uchar unsigned char#define uint unsigned intsbit DS=P2^2; //define interfaceuint temp; // variable of temperatureuchar flag1; // sign of the result positive or negativesbit dula=P2^6;sbit wela=P2^7;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef};void delay(uint count) //delay{ uint i; while(count) { i=200; while(i>0) i--; count--; }}void dsreset(void) //send reset and initialization command{ uint i; DS=0; i=103; while(i>0)i--; DS=1; i=4; while(i>0)i--;}bit tmpreadbit(void) //read a bit{ uint i; bit dat; DS=0;i++; //i++ for delay DS=1;i++;i++; dat=DS; i=8;while(i>0)i--; return (dat);}uchar tmpread(void) //read a byte date{ uchar i,j,dat; dat=0; for(i=1;i<=8;i++) { j=tmpreadbit(); dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里 } return(dat);}void tmpwritebyte(uchar dat) //write a byte to ds18b20{ uint i; uchar j; bit testb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) //write 1 { DS=0; i++;i++; DS=1; i=8;while(i>0)i--; } else { DS=0; //write 0 i=8;while(i>0)i--; DS=1; i++;i++; } }}void tmpchange(void) //DS18B20 begin change{ dsreset(); delay(1); tmpwritebyte(0xcc); // address all drivers on bus tmpwritebyte(0x44); // initiates a single temperature conversion}uint tmp() //get the temperature{ float tt; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b; temp<<=8; //two byte compose a int variable temp=temp|a; tt=temp*; temp=tt*10+; return temp;}void display(uint temp) //显示程序{ uchar A1,A2,A2t,A3; A1=temp/100; A2t=temp%100; A2=A2t/10; A3=A2t%10; dula=0; P0=table[A1]; //显示百位 dula=1; dula=0; wela=0; P0=0x7e; wela=1; wela=0; delay(1); dula=0; P0=table1[A2]; //显示十位 dula=1; dula=0; wela=0; P0=0x7d; wela=1; wela=0; delay(1); P0=table[A3]; //显示个位 dula=1; dula=0; P0=0x7b; wela=1; wela=0; delay(1);}void main(){ uchar a; do { tmpchange(); for(a=10;a>0;a--) { display(tmp()); } } while(1);}

相关百科

热门百科

首页
发表服务