我在做一个关于单片机的毕业设计,是关于大巴通过红外线自动报站的!

具体是我弄一个红外发射模块,用4个变阻器调出4个频率来对应红外接收模块里的555!用555控制语音模块来进行相应的站!哪位大大可以帮我看看我的代码和电路图!我所有分给他!我QQ13198142!谢谢!!!!

  单片机内部结构(一)

  单片机的内部究竟有哪些部分组成的,它们都有些什么作用呢?让我们先来了解其中的ROM存储器:
  一.半导体存储器ROM
  1.几个基本概念
  上一课我们讲到了把编译后的指令下载到单片机后这条指令一定在单片机内的某个地方,那么它究竟在哪里呢?原来它就放在一个叫程序存储器的地方,英文名称ROM(全称为Read Only Memory),叫只读存储器。它是一个什么东西呢?在讨论这个问题之前,让我们先来看几个物理现象:(1)数和物理现象的关系 不知大家是否还记得,在学习数字电路时我们曾用一盏灯的亮和灭来表示电平的高和低,即用“1”来表示高电平,用“0”来表示低电平,如果现在有两盏灯那它会有几种状态呢?
  0 0 0 1 1 0 1 1 两盏灯的组合就是四种状态:00,01,10,11。如此看来灯的亮和灭这种物理现象同数字确实有着某种联系,如果我们把它们按一定的规律排列好,那么电平的高或低就可以用数字来表了,换句话说:不同的数字可以代表不同数量灯的电平高或低。比如:
  0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111这十六种组合就可以代表四盏灯的状态,能理解吗?
  (2)位及字节的含义
  在单片机中,一盏灯(实际上是一根线)我们称它为一位,它有两种状态(“0”或“1”),分别应电平的高或低,它是单片机最基本的数量单位,用BIT来表示。8盏灯(八根线)有256种状态,这8盏灯(也就是8位)我们把它称为一个字节,用BYTE表示。至于为什么要怎么规定,这就不需要你我操心了,我们只要记住就可以了。那么单片机是如何来储存这些数字所代表的字节的状态的呢?接着往下看:
  2.半导体存储器的工作原理
  存储器就是用来存放数据的地方,它其实是利用电平的高或低来存放数据的,也就是说,它实际上存放的是电平的高或低的状态,而不是我们所习惯上认为的“1234”这样的数字。那它是如何工作的呢?一个存储器就象一个小抽屉,一个小抽屉里有8个小盒子每个小盒子用来存放1位“电荷”,电荷通过与它相连的电线传进来或释放掉,至于电荷在小盒子里是怎样存放的,这就不用我们操心了,您可以把电线想象成水管,小盒子里的电荷就象是水,那就好理解了存储器中的1个小抽屉我们把它称之为1个“单元”,相当于1个字节,而1个小盒子就相当于1位。有了这么一个构造,我们就可以开始存放数据了,比如我们要放进一个数据“00011010”,我们只要把第2号、第4号和第5号小盒子里存满电荷,而其它小盒子里的电荷给放掉就行了。可是问题又出来了,一个存储器有好多相同的单元,线是并联着的(看D7-D0),在放入电荷的时候,会将电荷放入所有的字节单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个字节单元,都只能放同一个数,这当然不是我们所希望的。因此,我们要在结构上稍作变化,看上面的图,在每个单元上有根线与译码器相连,我想要把数据放进哪个单元,就通过译码器给哪个单元发一个信号,由译码器的通过这根线把相应的开关打开,这样电荷就可以自由地进出了。那么这样是不是就能随意地向存储器写入或者读出数据了呢?其实还不能,当我们向存储器写入数据时,必须先把这个开关切换到写入端;而要读出数据时,就得先把开关切换到读出端;而片选端则是为了区分不同的存储器设置的。
  3.半导体存储器的译码
  简单介绍一下:我们知道,1根线可以代表2种状态;2根线可以代表4种状态;3根线可以代表8种;256种状态又需要几根线代表?8根线,所以一片6264存储器我们只需要16根线就可以了。
  4.存储器的选片及总线的概念 至此,译码的问题解决了,让我们再来关注另外一个问题:送入每个字节的8根线又是从什么地方来的呢?它就是从单片机的外部引脚上接过来的,一般这8根线除了接一个存储器之外,还要接其它的器件,这样问题又出来了,这8根线既然不是存储器和单片机之间专用的,如果总是将某个单元接在这8根线上,就不行了,比如这个存储器单元中的数值是“FFH”,另一个存储器的单元是“00H”,那么这根线到底是处于高电平,还是低电平?岂不是要打架看谁历害了?所以我们必须让它们分离。办法当
  然也简单,当外面的线接到集成电路的引脚上来后,不直接接到各单元去,中间再加一组开关就行了。这组开关就是前面提到的控制器(看前面的图),平时我们让开关打开着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关切换到相应的位置就行了。这组开关由三根引线选择读控制端、写控制端和片选端,要将数据写入,先由控制器选中该片,然后发出相应的写信号,开关切换到相应的位置,并将传过来的数据(电荷)写入片中;如果要读信号,先选中该片,然后发出读信号,开关也切换到相应的位置上,数据就被送出去了;另外读和写信号还同时受到译码器的控制,由于选端的不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器就不会“误会”而开门,造成冲突,那么会不会同时选中两个存储器呢?只要是设计好的系统就不会,因为它是由计算机来控制的,如
  果真的出现同时选中两个存储器的话,那就是电路出故障了。

  如此看来,存储器要想写入或者读出数据还真是不简单,不过好在这些都是由计算机自动完成的,不需要我们去操心。从上面的介绍中我们已经看到,用来传递数据的8根线(51单片机是8根)并不是专用的,而是很多器件大家共用的,所以我们把它们称之为数据总线(总线英文名为BUS),即公交道,谁都可以走;而16根地址线(51单片机共有16根地址线,这些以后会讲解,这里不必死记硬背)也是连在一起的,我们把它们称之为地址总线,

  5.半导体存储器的分类
  第一课中我们提到过,89C51是一种带Flash ROM的单片机,什么是Flash ROM?它到底是一种什么东西呢?ROM我们已经知道,是只读存储器,所谓只读,从字面上理解那就是只可以从里面读出数据,而不能写进去,它类似于我们的书本,发到我们手里之后,我们只能读里面的内容,不可以随意更改书本上的内容。ROM就是单片机中用来存放程序的地方,前面我们下载到单片机的指令就放在这个地方。讲到这里大家也许会感到困惑,既然ROM是只读存储器,那么指令又是如何进入其中的呢?其实所谓的只读只是针对正常工作情况下而言,也就是在使用这块存储器的时候,而不是指制造这块芯片的时候,只要让存储器满足一定的条件就能把数据预先写进去,这个道理也很好理解,书本拿到我们手里是不能改了,但当它还是原材料--白纸的时候,我们完全可以由印刷厂把内容印上去嘛。前面的编程就是这么回事!Flash ROM是一种快速存储式只读存储器,这种程序存储器的特点就是既可以电擦写,而且掉电后程序还能保存,编程寿命可以达到几千至几万次,所以我们的实验系统是可以反复烧写的,您尽管使用。目前新型的单片机都采用这种程序存储器;当然,除了这种程序存储器外,还有两种早期的程序存储器产品,简单介绍一下:PROM EPROM和EEPROM,PROM称之为可编程只读存储器,就象我们的练习本,买来的时候是空白的,可以写东西上去,可一旦写上去,就擦不掉了,所以它只能写一次,要是写错了,就报废了,习惯上我们把带这种程序存储器的单片机称为OTP型单片机,如果您的产品批量生产,又要求价格比较低的话,带这种程序存储器的单片机是非常合适的;EPROM,称之为紫外线擦除的可编程只读存储器,它里面的内容写上去之后,如果觉得不满意,可以用一种特殊的方法去掉后重写,就是用紫外线照射,紫外线就象“消字灵”,可以把字去掉,然后再重写,当然消的次数多了,也就不灵光了,所以这种芯片可以擦除的次数也是有限的——几百次吧,电脑上的BIOS芯片采用的就是这种结构的存储器;EEPROM,前一种存储器的擦写要用紫外线,而这种存储器可以直接用电擦写,比较方便数据的改写,它有点类似于FLASH存储器,但比FLASH存储器速度要慢,现在新型的外部扩展存储器都是都是这种结构。
  了解了ROM,让我们再来简单讲讲另一种存储器,叫随机存取存储器,也叫内存,英文缩写为RAM(Random Access Memory),它是一种既可以随时改写,也可以随时读出里面数据的存储器,类似于我
  们上课用的黑板,可以随时写东西上去,也可以用黑板擦随时擦掉重写,它也是单片机中重要的组成部分,单片机中有很多的功能寄存器都与它有关。
  二.本课总结
  本课主要讲述了单片机的两种半导体存储器—只读存储器ROM和随机存储器RAM的工作原理,它们是单片机的重要组成部分,了解它的内部结构对我们学习单片机是很有帮助的。不过如果您一时对本课的内容还无法搞得很明白,也没有关系,随着学习的深入,我们还会慢慢地讲解相应的基础知识,可千万不要放弃哟?我在没有学会单片机之前也是如此囫囵吞枣的。

  单片机内部结构(二)

  一.LED灯闪烁的实验程序
  我们要让LED1不断的闪烁,就象大海中用的航标灯。怎样才能让LED1不断的闪烁呢?实际上就是让它亮几秒,再灭几秒,也就是让P1.0交替地输出高电平或低电平,按照前面所学的知识,我们写出下面的程序:CLR P1.0;
  SETB P1.0;编译后下载到单片机?

  这里有两个问题:首先计算机执行指令的速度很快,执行完第1条指令后LED1是灭了,但在极短的时间内又去执行第2条指令,LED1又亮了,我们根本无法看到灯曾经灭过;第二个问题是当执行完第2条指令后,不会再去执行第1条指令了,因为单片机执行指令的过程是一条一条地顺序执行的。
  如何解决这两个问题呢?我们可以作如下的设想:第一,执行完第1条指令后让单片机延时一段时间(几秒或零点几秒),然后再去执行第2条指令,这样就可以看到LED1曾经灭过了;第二,让单片机执行完全部指令后再返回去执行第1条指令,如此不断的循环就可以达到我们的要求了。

  实验程序如下:
  主程序
  MAIN:SETB P1.0 ;
  (1)
  LCALL DELAY ;
  (2)
  CLR P1.0 ;
  (3)
  LCALL DELAY ;
  (4)
  LJMP MAIN ;
  (5)
  子程序
  DELAY:MOV R7,#250 ;
  (6)
  D1:MOV R6,#250 ;
  (7)
  D2:DJNZ R6,D2 ;
  (8)
  DJNZ R7,D1 ;
  (9)
  RET ;
  (10)
  END .
  (11)
  还记得软件的使用方法吗?调试,写入源代码,编译,下载到单片机,看看是不是我们想要的结果??
  在分析这段程序之前,先来说明几个标点符号的意义:
  1.分号在这里起一个分隔符的作用,表示这条指令到此为止;
  2.括号内的数字在这里是为了解释程序用的,实际的编译过程中是没有意义的,也就是说没有也是一样的,只是为了程序的可读性更强,我们一般会在分号的后面加上程序的注释文字(后面我们会用到);
  3.特别?:程序中的标点符号只能在英文状态下输入,当使用中文输入时,必须切换到半角状态,不然编译软件会出错。接下来我们分析一下这段程序:按照我们的要求,第1条,让灯灭,第2条应该是延时,第3条是让灯亮,第4条和第2条一样也应该是延时,第5条应当返回去执行第1条指令。看一下上面的程序,第1条我们已经懂了,是让LED1灭,第2条和第4条我们等一下讨论,第5条是LJMP MAIN,LJMP是一条指令,意思是转移,转移到什么地方去呢?看一下LJMP后面跟着什,是MAIN,什么地方有MAIN,在第1条指令的开头就是MAIN,所以第5条指令的意思就是跳转到MAIN(即第1条指令处继续执行),如此一来,就不断地重复执行这些指令。那么MAIN又是什么意思呢?它实际上是我们为这段程序起的
  一个名称,专业术语叫标号,既然是一个名称那可不可以用mcu,CHINA等等的其他名字呢?当然可以,这完全取决于您的需要(?:不过也有一些是不能采用的,我们以后再讲)。再来分析第2条和第4条指令,看看它们是如何实现延时的?
  LCALL DELAY,LCALL也是一条指令,这条指令叫做调用子程序指令,看看LCALL后面跟着的是什么--DELAY,哪里有DELAY,在第6条指令的开头,很显然这也是一个标号,这条指令的作用就是当执行到这条指令时就转去执行LCALL后面标号所在处的程序,如果在执行程序时遇到RET指令(RET叫返回指令),就返回到LCALL指令的下面一条(即第3条指令)处继续执行,在第9条指令后确实有RET指令,那么在执完第2条指令后就应该去执行第6.7.8.9条指令,之后遇到第10条指令:RET,执行完这条指令后就回去执行第3条指令,将P1.0清零,也就是让LED1亮,然后再去执行第4条指令,执行完后又回到6.7.8.9.10
  条指令,最后执行第5条指令:LJMP MAIN,也就是我们刚才说的跳转到第1条,将P1.0置位,就是LED1
  灭掉。如此周而复始,LED1就不断的闪烁。好好理解这段文字,务必把它搞清楚!!!
  从标号DELAY处(即第6条)开始到RET的这一段指令我们称之为子程序,它是一段延时程序,至于延时多长时间,我们会在以后的课程中学习。程序的最后一条是END,它不是指令,它只是告诉编译软件整个程序到此结束了,它叫“伪指令”。在大家以后的编程中,写完程序都要加上这一条。
  在上面的程序中我们知道了从标号DELAY开始的子程序是一段延时程序,那么它又是如何工作的呢?在了解它的工作过程之前我们必须先知道其中的一些符号,就从R7开始吧,它是单片机内部的一个重要组成部分,叫工作寄存器,什么是工作寄存器?下面我们就来讲解这个问题:
  二.工作寄存器
  上一课我们已经讲过,在单片机中有许多的功能寄存器和半导体存储器RAM有关,那么工作寄存器又属于哪一部分呢?它是用来干什么的呢?要搞清楚这个问题,让我们先从日常生活中的一个例子说起,如我们要做一道数学题123+456,您会马上得出答案:579,接下来再看一道题:
  123+456+789,要你马上得出答案就不那么容易了,通常我们会怎么做呢?一般总是先把123+456的结果
  579写在一张纸上,然后再算579+789=1368,这1368就是我们想要的最终结果,而579只是为了得到最终结果而暂时记下来的中间结果,单片机中做运算和我们生活中做运算一样,也需要把中间结果放在某个地方,那么计算机把它放在哪儿呢?前面我们提到的ROM(只读存储器)中,不行!因为ROM是用来存放程序的,它只能写进去,能读出来(再次提醒一下,这只是相对而已),所以只能放在单片机的另一个区域—RAM中(即随机存取存储器)中。R7就是RAM区域中划出的一部分。知道了R7,接下来让我们来分析一下这段子程序(延时程序)。
  三.LED灯闪烁程序子程序的分析
  首先看第6条,MOV R7,#250,这也是一条指令,意思是传递数据。我们知道在日常生活中,要传递一件东西就必须要有一个传递者,一个接受者和被传递的东西,那么在单片机中是怎么区分它们的呢?在这条指令中,R7是接受者,250就是要传递的东西(单片机中要传递的东西当然是数字了),这
  里传递者被省略了(顺便提一下,并不是每条指令都能省略的,事实上大部分的指令都要有传递者)
  ,这样一来,这条指令的意思也很清楚了:就是把250这个数传递给R7这个工作寄存器(也就是把250个数送入R7中),这样执行完这条指令后R7中的值就应该是250,我们可以用DUBG8051这个软件来验证一下,看是不是符合。讲到这里,不知大家注意没有,在250这个数的前面有个#,它是什么意思呢?这个#就说明250是一个被传递的数的本身,而不是传递者。看懂了MOV R7,#250,那么MOV R6,#250也应该很清楚了。
  接着看第8条DJNZ R6,D2,这又是另一条指令,我们来看一下DJNZ后面跟着什么,一个是R6,一个是D2,R6我们已经知道了,再找一下D2,D2在本行的开头,我们已经学过,它是标号。那么这条指令是怎么执行的呢?它的执行过程是这样的:它将后面的值(即工作寄存器R6中的值)减1,然后查一下这个值是否等于“0”,如果等于“0”就往下执行,如果不等于“0”就转移,转移到什么地方去呢?大家应该明白了,实际上这条指令的执行结果就是在原地转250次;当R6中的值等于“0”之后,程序就去执行第9条指令,也就是DJNZ R7,D1,大家自行分析一下这条指令的结果(是不是转去执行MOV R6,#250,同时R7中的值减1),这段子程序的最终执行结果就是DJNZ R6,#250这条指令被 16 执行了250*250=62500次,执行这么多次干吗?就是为了延时。

  单片机内部结构(三)

  1.时序的由来

  已经知道单片机执行指令的过程就是顺序地从ROM(程序存储器)中取出指令一条一条的顺序执行,然后进行一系列的微操作控制,来完成各种指定的动作。它在协调内部的各种动作时必须要有一定的顺序,换句话说,就是这一系列微操作控制信号在时间上要有一个严格的先后次序,这种次序就是单片机的时序。就好比学校上课时用的电铃,为了保证课堂秩序,学校就必须在铃声的统一协调下安排各个课程和活动。那么单片机的时序是如何规定的呢?接着往下看:

  2.时序的周期

  计算机每访问一次存储器的时间,我们把它称为一个机器周期,它是一个时间基准,就象我们日常生活中使用的秒一样,计算机中一个机器周期包括12 个振荡周期,什么是振荡周期?一个振荡周期是多少时间?振荡周期就是振荡源的周期,也就是我们使用的晶振的时间周期,一个12M 的晶振,它的时间周期是多少,如果电子技术学得好的朋友应该不难算出(T=1/f),也就是1/12 (微秒),那么使用12M 晶振的单片机,它的一个机器周期就应该等于12*1/12(微秒),也就是1μS。

  在MCS-51 系列单片机中,有些指令只要一个机器周期,而有些指令则需要两个或三个机器周期,另外还有两条指令需要4 个机器周期,这也不难理解,你在家擦地板的话总比擦桌子的时间要长,不过我可是大男子主义,从来不做家务的。开句玩笑!!!如何衡量指令执行时间的长短?我们就要用到一个新的概念:指令周期—即执行一条指令所需的机器周期,INTEL 公司规定了每一条指令执行的机器周期,当然这不需要我们非把它记住,不过在这里DJNZ 指令我们是要记住的,它是双周期指令,执行一次需要两个机器周期,即2μS。(12M 晶振的话),回到我们上一课的实验,延时的时间就应该算出来了吧,是62500*2μS=125000μS,也就是125mS 。这么大的数字也就0.125S,怪不得LED1 闪烁的这么快。二.单片机的时钟电路,单片机是在一定的时序控制下工作的,那么时序和时钟又有什么关系呢?时钟是时序的基础,单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路就要在唯一的时钟信号控制下按时序进行工作。那么单片机内的时钟是如何产生的呢?

  1. 内部时钟电路

  在MCS-51 单片机的内部有一个高增益的反相放大器,其输入端为引脚XTL1(19),输出端为XTL2

  我们只要在外部接上两个电容和一个晶振,就能构成一个稳定的自激振荡器,它的内部电路的工作原理就不介绍了,这里主要讲一下电容和晶振的选择,看上面的图,晶振的大小与单片机的振荡频率有关,我们到串行接口时再详细讲解,电容的大小影响着振荡器振荡的稳定性和起振的快速性,通常选择10-30P 的瓷片电容或校正电容;另外在设计电路时,晶振和电容应尽可能的靠近芯片,以减少PCB 板的分布电容保证振荡器振荡工作的稳定性,提高系统的抗干扰能力

  2. 外部时钟电路

  除了内部时钟方式外,单片机还可以采用外部引入时钟的振荡方式,什么时候需要采用外部时钟方式呢?当我们的系统由多片单片机组成时,为了保证各单片机之间时钟信号的同步,就应当引入唯一的公用的外部脉冲信号作为各单片机的振荡脉冲,此时应将XTAL2 悬空不用,外部脉冲信号由XTAL1 引入,如上右图所示,外部信号的高低电平持续时间应大于20mS,
温馨提示:内容为网友见解,仅供参考
无其他回答

谁能做一个单片机的电梯控制的毕业设计,题目是可视可听智能电梯报站系统...
可听:就是每到一个需要停顿的层(不停的层不报层数)都报层数。智能:是对电梯调度的一个设计方案,比如,一共有25层,现在有人按了10层和15层,在电梯上升去第十层的时候,又有人从一层按了8层。到底电梯,是一直上升到10,到15以后,再往下去一层接人。还是,先返回一层接人,再去15层。

本人大四(面向嵌入式和单片机的),要做毕设,求建议,以下是题目,本人成 ...
如果以后想做控制,如自动化生产线,数字化设备方面的,那么单片机、传感器、仪器仪表这些是重点。学习还是靠自己以后长期的自学吧,大学学的东西很少,而一个课程设计学到的也非常有限。如果能选几个课程设计的话,可以综合一下,平常也跟同学多了解下别人的设计。3,6,15,25,43,58,65,75,85 这些...

电子信息工程毕业论文
858. 基于单片机的超声波测距系统的设计 859. 基于单片机的八路抢答器设计 860. 基于单片机的安全报警器 861. 基于SPCE061A的易燃易爆气体监测仪设计 862. 基于CPLD的LCD显示设计 863. 基于单片机的电话远程控制家用电器系统设计 864. 基于单片机的交通信号灯控制电路设计 865. 单片机的数字温度计设计 866. 基于单片...

六位数码管时钟
38.红外报警器设计与实现 39.开关稳压电源设计 40.基于MCS51单片机温度控制毕业设计论文 41.步进电动机竹竿舞健身娱乐器材 42.单片机控制步进电机 毕业设计论文 43.单片机汽车倒车测距仪 44.基于单片机的自行车测速系统设计 45.水电站电气一次及发电机保护 46.基于单片机的数字显示温度系统毕业设计论文 47....

求大专机电专业毕业论文的题目,谢谢
51. 用IC卡实现门禁管理系统 52. 变电站综合自动化系统研究 53. 单片机步进电机转速控制器的设计 54. 无刷直流电机数字控制系统的研究与设计 55. 液位控制系统研究与设计 56. 智能红外遥控暖风机设计 57. 基于单片机的多点无线温度监控系统 58. 蔬菜公司恒温库微机监控系统 59. 数字触发提升机控制系统 60. 仓储...

...的《基于单片机的鱼用投饵机自动控制系统的设计 》论文编号:jd564...
展开1全部 基于单片机的鱼用投饵机自动控制系统的设计摘要:为提高水产养殖投饵的自动化和精细化水平,满足现代水产养殖精确投饵的需要,研发了一种采用搅龙作为强制式排料机构的全自动饵料精量投喂装置.同时,介绍了装置的工作原理、结构特点、主要技术参数以及精量投喂控制方法.性能试验表明,该精量投喂装置各项性能均...

相似回答