单片机学习知识点全攻略(完结篇)(一)

最新更新时间:2012-11-14来源: 互联网关键字:单片机  学习知识 手机看文章 扫描二维码
随时随地手机看文章

导语:本期是本次单片机学习知识点的最终回,我们会列出前三回一起方便读者回顾学习。本次主要知识点为单片机串口通信、接口和实际案例实践——单片机音乐程序设计的学习。单片机对于初学者来说确实很难理解,不少学过单片机的同学或电子爱好者,甚至在毕业时仍旧是一无所获。基于此,电子发烧友网将整合《单片机学习知识点全攻略》,共分为四个系列,以飨读者,敬请期待!此系列对于业内电子工程师也有收藏和参考价值。

单片机学习知识点全攻略(完结篇)
 

  参阅相关系列

  单片机学习知识点全攻略(一)

  单片机学习知识点全攻略(二)

    单片机学习知识点全攻略(三)
 

  系列四

  点击浏览下一页22:单片机串行口通信程序设计

  点击浏览下一页23:LED数码管静态显示接口与编

  点击浏览下一页24:动态扫描显示接口电路及程序

  点击浏览下一页25:单片机键盘接口程序设计

  点击浏览下一页26:单片机矩阵式键盘接口技术及

  点击浏览下一页27:关于单片机的一些基本概念

  点击浏览下一页28:实际案例实践——单片机音乐程序设计

  22、单片机串行口通信程序设计

  1.串行口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。

  点击浏览下一页

  《单片机串行口通信程序设计硬件连接图》

  例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,能靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通信之前,都要先对控制寄存器SCON进行初始化。在方式0中将,将00H送SCON就能了。

  -----------------单片机串行口通信程序设计列子--------------------------

  ORG 2000H

  START: MOV SCON,#00H ;置串行口工作方式0

  MOV A,#80H ;最高位灯先亮

  CLR P1.0 ;关闭并行输出(避象传输过程中,各LED的“暗红”现象)

  OUT0: MOV SBUF,A ;开始串行输出

  OUT1: JNB TI,OUT1 ;输出完否

  CLR TI ;完了,清TI标志,以备下次发送

  SETB P1.0 ;打开并行口输出

  ACALL DELAY ;延时一段时间

  RR A ;循环右移

  CLR P1.0 ;关闭并行输出

  JMP OUT0 ;循环

  说明:DELAY延时子程序能用前面我们讲P1口流水灯时用的延时子程序,这里就不给出了。

  二、串行口异步通信

  org 0000H

  AJMP START

  ORG 30H

  START:

  mov SP,#5fh ;

  mov TMOD,#20h ;T1: 工作模式2

  mov PCON,#80h ;SMOD=1

  mov TH1,#0FDH ;初始化波特率(参见表)

  mov SCON,#50h ;Standard UART settings

  MOV R0,#0AAH ;准备送出的数

  SETB REN ;允许接收

  SETB TR1 ;T1开始工作

  WAIT:

  MOV A,R0

  CPL A

  MOV R0,A

  MOV SBUF,A

  LCALL DELAY

  JBC TI,WAIT1 ;如果TI等于1,则清TI并转WAIT1

  AJMP WAIT

  WAIT1: JBC RI,READ ;如果RI等于1,则清RI并转READ

  AJMP WAIT1

  READ:

  MOV A,SBUF ;将取得的数送P1口

  MOV P1,A

  LJMP WAIT

  DELAY: ;延时子程序

  MOV R7,#0ffH

  DJNZ R7,$

  RET

  END

  将程序编译通过,写入芯片,插入实验板,用通读电缆将实验板与主机的串行口相连就能实验了。上面的程序功能很简单,就是每隔一段时间向主机轮流送数55H和AAH,并把主机送去的数送到P1口。能在PC端用串行口精灵来做实验。串行口精灵在我主页上有下载。运行串行口精灵后,按主界面上的“设置参数”按钮进入“设置参数”对话框,按下面的参数进行设置。注意,我的机器上用的是串行口2,如果你不是串行口2,请自行更改串行口的设置。

  点击浏览下一页

  设置完后,按确定返回主界面,注意右边有一个下拉列表,应当选中“按16进制”。然后按“开始发送”、“开始接收”就能了。按此设置,实验板上应当有两只灯亮,6只灯灭。大家能自行更改设置参数中的发送字符如55,00,FF等等,观察灯的亮灭,并分析原因,也能在主界面上更改下拉列表中的“按16进制”为“按10进制”或“按ASCII字符”来观察现象,并仔细分析。这对于大家理解16进制、10进制、ASCII字符也是很有好处的。程序本身很简单,又有注释,这里就不详加说明了。

  三、上述程序的中断版本

  org 0000H

  AJMP START

  org 0023h

  AJMP SERIAL ;

  ORG 30H

  START:

  mov SP,#5fh ;

  mov TMOD,#20h ;T1: 工作模式2

  mov PCON,#80h ;SMOD=1

  mov TH1,#0FDH ;初始化波特率(参见表)

  mov SCON,#50h ;Standard UART settings

  MOV R0,#0AAH ;准备送出的数

  SETB REN ;允许接收

  SETB TR1 ;T1开始工作

  SETB EA ;开总中断

  SETB ES ;开串行口中断

  SJMP $

  SERIAL:

  MOV A,SBUF

  MOV P1,A

  CLR RI

  RETI

  END

  本程序没有写入发送程序,大家能自行添加。

23、LED数码管静态显示接口与编程

  在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

  引言:还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。

  八段LED数码管显示器

  点击浏览下一页

  《单片机静态显示接口》

  八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。如下图所示。`

  共阴和共阳结构的LED数码管显示器各笔划段名和安排位置是相同的。当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就能表示欲显示字符的字形代码。例如,对于共阴LED数码管显示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,数码管显示器显示“P”字符,即对于共阴极LED数码管显示器,“P”字符的字形码是73H。如果是共阳LED数码管显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。这里必须注意的是:很多产品为方便接线,常不按规则的办法去对应字段与位的关系,这个时候字形码就必须根据接线来自行设计了,后面我们会给出一个例程。

  在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。能供给单独锁存的I/O接口电路很多,这里以常用的串并转换电路74LS164为例,介绍一种常用静态显示电路,以使大家对静态显示有一定的了解。

  MCS-51单片机串行口方式押为移们寄存器方式,外接6片74LS164作为6位LED数码管显示器的静态显示接口,把8031的RXD作为数据输出线,TXD作为移位时钟脉冲。74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个管脚按逻辑与运算规律输入信号,公一个输入信号时可并接。T(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1…Q8(第3-6和10-13管脚)并行输出端分别接LED数码管显示器的hg---a各段对应的管脚上。关于74LS164还能作如下的介绍:所谓时钟脉冲端,其实就是需要高、低、高、低的脉冲,不管这个脉冲是怎么来的,比如,我们用根电线,一端接T,一端用手拿着,分别接高电平、低电平,那也是给出时钟脉冲,在74LS164获得时钟脉冲的瞬间(再讲清楚点,是在脉冲的沿),如果数据输入端(第1,2管脚)是高电平,则就会有一个1进入到74LS164的内部,如果数据输入端是低电平,则就会有一个0进入其内部。在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,然后再来一个脉冲会有什么发生呢?再来一个脉冲,第一个脉冲就会从最高位移出,就象车站排队买票,栏杆就那么长,要从后面进去一本人,前面必须要从前面走出去一本人才行。

  搞清了这一点,下面让我们来看电路,6片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第六个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一、二、三、四、五片74LS164中。有个问题,在第一个脉冲到来时,除了第一片74LS164中接收数据外,其他各片在干吗呢?它们也在接收数据,因为它们的时钟端都是被接在一起的,可是数据还没有送到其他各片呢,它们在接收什么数据呢?。。。。。。其实所谓数据不过是一种说法而已,实际就是电平的高低,当第一个脉冲到来时,第一片164固然是从单片机接收数据了,而其它各片也接到前一片的Q8上,而Q8是一根电线,在数字电路中它只可能有两种状态:低电平或高电平,也就是“0”和“1”。所以它的下一片74LS164也相当于是在接收数据啊。只是接收的全部是0或1而已。这个问题放在这儿说明,可能有朋友不屑一顾,而有的朋友可能还是不清楚,这实际上涉及到数的本质的问题,如果不懂的,请仔细思考,并找一些数字电路的数,理解164的工作原理,再来看这个问题,或者去看看我的另一篇文章《27课:关于单片机的一些基本概念》的文章。务必搞懂,搞懂了这一点,你的级别就高过开始学习者,可谓入门者了。

  入口:把要显示的数分别放在显示缓冲区60H-65H共6个单元中,并且分别对应各个数码管LED0-LED5。

  出口:将预置在显示缓冲区中的6个数成对应的显示字形码,然后输出到数码管显示器中显示。

  单片机led显示程序如下:

  DISP: MOV SCON,#00H ;初始化串行口方式0

  MOV R1,#06H ;显示6位数

  MOV R0,#65H ;60H-65H为显示缓冲区

  MOV DPTR,#SEGTAB ;字形表的入口地址

  LOOP:

  MOV A,@R0 ;取最高位的待显示数据

  MOVC A,@A+DPTR ;查表获取字形码

  MOV SBUF,A ;送串行口显示

  DELAY: JNB TI,DELAY ;等待发送完毕

  CLR TI ;清发送标志

  DEC R0 ;指针下移一位,准备取下一个待显示数

  DJNZ R1,LOOP ;直到6个数据全显示完。

  RET

  SETTAB: ;字形表,前面有介绍,以后我们再介绍字形表的制作。

  DB 03H 9FH 27H 0DH 99H 49H 41H 1FH 01H 09H 0FFH

  ; 0 1 2 3 4 5 6 7 8 9 消隐码

  单片机显示测试用主程序

  ORG 0000H

  AJMP START

  ORG 30H

  START: MOV SP,#6FH

  MOV 65H,#0

  MOV 64H,#1

  MOV 63H,#2

  MOV 62H,#3

  MOV 61H,#4

  MOV 60H,#5

  LCALL DISP

  SJMP $

  如果按图示数码管排列,则以上主程序将显示的是543210,想想看,如果要显示012345该怎样送数?

  下面我们来分析一下字形表的制作问题。先就上述“标准”的图形来看吧。写出数据位和字形的对应关系并列一个表如下(设为共阳型,也就是对应的输出位为0时笔段亮)

  如何,字形表会做了吧,就是这样列个表格,根据要求(0亮或1亮)写出对应位的0和1,就成了。做个练习,写出A-F的字形码吧。

  如果为了接线方便而打乱了接线的次序,那么字形表又该如何接呢?也很简单,一样地列表啊。以新实验板为例,共阳型。接线如下:

  P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

  C E H D G F A B

  则字形码如下所示:

  ;0 00101000 28H

  ;1 01111110 7EH

  ;2 10100100 0A4H

  ;3 01100100 64H

  ;4 01110010 72H

  ;5 01100001 61H

  ;6 00100001 21H

  ;7 01111100 7CH

  ;8 00100000 20H

  ;9 01100000 60H

  作为练习,大家写出A-F的字形代码。

24、动态扫描显示接口电路及程序

  在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。在http://www.51hei.com还有很多关于单片机显示接口的文章,大家可以参考一下

  在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

  下图所示就是我们的单片机实验板上的动态扫描接口。由89c51的P0口能灌入较大的电流,所以我们采用共阳的数码管,并且不用限流电阻,而只是用两只1N4004进行降压后给数码管供电,这里仅用了两只,实际上还能扩充。它们的公共端则由PNP型三极管8550控制,显然,如果8550导通,则对应的数码管就能亮,而如果8550截止,则对应的数码管就不可能亮,8550是由P2.7,P2.6控制的。这样我们就能通过控制P27、P26达到控制某个数码管亮或灭的目的。

  下面的这个单片机程序,就是用实验板上的数码管显示0和1。

  FIRST EQU P2.7 ;第一位数码管的位控制

  SECOND EQU P2.6 ;第二位数码管的位控制

  DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH

  ORG 0000H

  AJMP START

  ORG 30H

  START:

  MOV SP,#5FH ;设置堆栈

  MOV P1,#0FFH

  MOV P0,#0FFH

  MOV P2,#0FFH ;初始化,所显示器,LED灭

  MOV DISPBUFF,#0 ;第一位显示0

  MOV DISPBUFF+1,#1 ;第二握显示1

  LOOP:

  LCALL DISP ;调用显示程序

  AJMP LOOP

  ;主程序到此结束

  DISP:

  PUSH ACC ;ACC入栈

  PUSH PSW ;PSW入栈

  MOV A,DISPBUFF ;取第一个待显示数

  MOV DPTR,#DISPTAB ;字形表首地址

  MOVC A,@A+DPTR ;取字形码

  MOV P0,A ;将字形码送P0位(段口)

  CLR FIRST ;开第一位显示器位口

  LCALL DELAY ;延时1毫秒

  SETB FIRST ;关闭第一位显示器(开始准备第二位的数据)

  MOV A,DISPBUFF+1 ;取显示缓冲区的第二位

  MOV DPTR,#DISPTAB

  MOVC A,@A+DPTR

  MOV P0,A ;将第二个字形码送P0口

  CLR SECOND ;开第二位显示器

  LCALL DELAY ;延时

  SETB SECOND ;关第二位显示

  POP PSW

  POP ACC

  RET

  DELAY: ;延时1毫秒

  PUSH PSW

  SETB RS0

  MOV R7,#50

  D1: MOV R6,#10

  D2: DJNZ R6,$

  DJNZ R7,D1

  POP PSW

  RET

  DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

  END

  从上面的单片机例程中能看出,动态扫描显示必须由CPU持续地调用显示程序,才能保证持续持续的显示。

  上面的这个程序能实现数字的显示,但不太实用,为什么呢?这里仅是显示两个数字,并没有做其他的工作,因此,两个数码管轮流显示1毫秒,没有问题,实际的工作中,当然不可能只显示两个数字,还是要做其他的事情的,这样在二次调用显示程序之间的时间间隔就不一不定了,如果时间间隔比较长,就会使显示不连续。而实际工作中是很难保证所有工作都能在很短时间内完成的。况且这个显示程序也有点“浪费”,每个数码管显示都要占用1个毫秒的时间,这在很多合是不允许的,怎么办呢?我们能借助于定时器,定时时间一到,产生中断,点亮一个数码管,然后马上返回,这个数码管就会一直亮到下一次定时时间到,而不用调用延时程序了,这段时间能留给主程序干其他的事。到下一次定时时间到则显示下一个数码管,这样就很少浪费了。

  Counter EQU 59H ;计数器,显示程序通过它得知现正显示哪个数码管

  FIRST EQU P2.7 ;第一位数码管的位控制

  SECOND EQU P2.6 ;第二位数码管的位控制

  DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH

  ORG 0000H

  AJMP START

  ORG 000BH ;定时器T0的入口

  AJMP DISP ;显示程序

  ORG 30H

  START:

  MOV SP,#5FH ;设置堆栈

  MOV P1,#0FFH

  MOV P0,#0FFH

  MOV P2,#0FFH ;初始化,所显示器,LED灭

  MOV TMOD,#00000001B ;定时器T0工作于模式1(16位定时/计数模式)

  MOV TH0,#HIGH(65536-2000)

  MOV TL0,#LOW(65536-2000)

  SETB TR0

  SETB EA

  SETB ET0

  MOV Counter,#0 ;计数器初始化

  MOV DISPBUFF,#0 ;第一位始终显示0

  MOV A,#0

  LOOP:

  MOV DISPBUFF+1,A ;第二位轮流显示0-9

  INC A

  LCALL DELAY

  CJNE A,#10,LOOP

  MOV A,#0

  AJMP LOOP ;在此中间能按排任意程序,这里仅作示范。

  ;主程序到此结束

  DISP: ;定时器T0的中断响应程序

  PUSH ACC ;ACC入栈

  PUSH PSW ;PSW入栈

  MOV TH0,#HIGH(65536-2000) ;定时时间为2000个周期,约2170微秒(11.0592M)

  MOV TL0,#LOW(65536-2000)

  SETB FIRST

  SETB SECOND ;关显示

  MOV A,#DISPBUFF ;显示缓冲区首地址

  ADD A,Counter

  MOV R0,A

  MOV A,@R0 ;根据计数器的值取对应的显示缓冲区的值

  MOV DPTR,#DISPTAB ;字形表首地址

  MOVC A,@A+DPTR ;取字形码

  MOV P0,A ;将字形码送P0位(段口)

  MOV A,Counter ;取计数器的值

  JZ DISPFIRST ;如果是0则显示第一位

  CLR SECOND ;不然显示第二位

  AJMP DISPNEXT

  DISPFIRST:

  CLR FIRST ;显示第一位

  DISPNEXT:

  INC Counter ;计数器加1

  MOV A,Counter

  DEC A ;如果计数器计到2,则让它回0

  DEC A

  JZ RSTCOUNT

  AJMP DISPEXIT

  RSTCOUNT:

  MOV Counter,#0 ;计数器的值只能是0或1

  DISPEXIT:

  POP PSW

  POP ACC

  RETI

  DELAY: ;延时130毫秒

  PUSH PSW

  SETB RS0

  MOV R7,#255

  D1: MOV R6,#255

  D2: NOP

  NOP

  NOP

  NOP

  DJNZ R6,D2

  DJNZ R7,D1

  POP PSW

  RET

  DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

  END

  从上面的单片机程序能看出,动态显示和静态显示相比,程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就能显示更多位数了。下面给出显示程序的流程图。点击浏览下一页

《动态扫描程序框图》

  点击浏览下一页

关键字:单片机  学习知识 编辑:神话 引用地址:单片机学习知识点全攻略(完结篇)(一)

上一篇:基于AT89C51的三相异步电动机
下一篇:单片机学习知识点全攻略(完结篇)(二)

推荐阅读最新更新时间:2023-10-12 20:43

单片机的总线
 一直以来,单片机没有自己的专门的总线标准,通常是由著名厂家推出自己产品时配套设计的。如MC S-51系列单片机就设计有完善的三总线结构(地址总线AB,数据总线DB,控制总线CB),要构成不同的单片机应用系统是方便的。虽然,单片机可以归结为工控机的一种,而工控机的成熟主流总线是STD总线,但单片机却没有完全执行STD总线标(IEEE961),而以控制总线差别较大。   这里只论及完全根据单片机的特点,按照控制系统网络及多机系统的需要而设计的串行接口总线。有了此总线,多个单片机就能以一定的拓朴结构组成多种系统,弥补了在网络控制方面的不足。   单片机应用系统涉及多种多样的外部设备或系统的互连和通信,有必要在单片机与外部芯片间插入有通
[单片机]
X25165在8051单片机系统中的应用
美国XICor公司生产的Z25165芯片是集看门狗、电压监控和串行EEPROM三项功能于一体的集成电路产品。该芯片的应用将有利于简化单片机系统的结构,降低系统的成本,减少对电路板的空间需求,增加系统的可靠性。 1 芯片简介 X25165的引脚排列如图1所示,各引脚功能说明如表1所列。 X25165使用简单的三线总线串行外设接口(SPI),对芯片进行操作的所有操作码、字节地址及写入的数据均从SI引脚输入,写入数据在串行时钟(SCK)的上升沿被锁存,从芯片读取的数据从SO引脚串行移出,并在串行时钟的下降沿输出数据。 芯片的看门狗定时器和VCC电压监视器都对微处理器提供独立的保护,当系统发生故障时,只要看门狗定时
[单片机]
X25165在8051<font color='red'>单片机</font>系统中的应用
单片机连续按键检测C51程序
这几天闲来无事,翻腾出以前的仿真器和编程器,找出几片STC12c2052。写了个修改中继功能的小程序,主要实现: 1、在5秒内连续按三下发射键才能打开中继。 2、打开中继后,中继在每一句话后延时10s,10s内没有说话的,中继关闭。 3、每一句语音后面自动加上“滴滴”,每一组语音结束自动加上“滴滴滴”。 用华为450C试了试,发现450C的静噪点不好取,明天用2K电阻连接插头第一脚试试能不能模拟出低电平静噪信号。控制的话应该是把PNP三极管的上面一脚(B)拉低即可。 单片机附带上无语音静音控制输出和“滴滴”声音输出。 不能加附件,就把源程序贴上:
[单片机]
简单的温度指示器使用基于RISC的MCU
非常简单的温度指示器可以在8位RISC微控制器周围构建(参见图)。来自温度感应器的数据由MCU处理并且用于显示温度。在本电路中使用的MAX6577温度感应器可以测量范围在-40°C至125°C之间的温度。它几乎不需要其他外部元件。 这个感应器可以将温度转换成其输出信号频率与绝对温度(K)成比例的方形波。如果这个频率已经测量出来了,计算温度就会变得相当容易。这可以通过不同的时间测量电路或者MCU中提供的定时器来实现。 这个电路使用AVR AT90S4433低成本MCU用来处理感应器数据和显示温度。在其他器件中,这个MCU配有4千字节的系统内可编程闪存、128字节的SRAM、128字节的系统可编程EEPROM、一个六
[单片机]
简单的温度指示器使用基于RISC的<font color='red'>MCU</font>
微控制器模块和DS18B20 的连接电路图
STC89C52RC 微控制器模块和DS18B20 的连接电路图如下图所示: 图 STC89C52RC 微控制器模块和DS18B20 的连接电路图
[模拟电子]
<font color='red'>微控制器</font>模块和DS18B20 的连接电路图
单片机软件系统抗干扰设计
  提高单片机应用系统的可靠性要从软硬件入手,提高系统的自身防御行为,以下所提到几种提高可靠性的方法,都不是单独使用的,只有根据实际情况将这些方法有效地结合起来,才能达到最佳抗干扰效果,使我们的单片机系统稳定可靠地工作。当然,单片机系统运行的可靠性也会受其他不确定因素的干扰。   1、指令冗余   CPU取指令过程是先取操作码,再取操作数。在程序的关键地方人为的插入一些单字节指令,或将有效单字节指令重写称为指令冗余,通常是在双字节指令和三字节指令后插入两个字节以上的NOP指令。这样即使跑飞程序飞到双字节指令和三字节指令操作数上。由于窄操作指令NOP的存在,避免了后面的指令被错误地执行,为程序纳入正轨做好准备。此外,对系
[单片机]
<font color='red'>单片机</font>软件系统抗干扰设计
基于MCU与USB设备控制器IP核的设计方案
1 引言 在传统的计算机系统上常采用串口(如RS232)和并口连接外围设备,但串口和并口都存在着通信速度 慢,接口独占不利于扩展等无法克服的缺点,而通用串行总线(Universal Serial Bus,即USB)因具有传输 速度快、支持热插拔、扩展方便、抗干扰强、成本低、数据传输质量高、节省系统资源等优点而得到了广 泛的应用,当前它已成为计算机最常用的接口之一。 现在USB控制器主要有两种:带USB接口的单片机(MCU) 和纯粹的USB接口芯片。纯粹的USB接口芯片仅处 理USB通信,必须有个外部微处理器来进行协议处理和数据交换。典型产品有Philips公司的PDIUSBD11(I2C 接口)、PDIUSBD12(并行接口);N
[电源管理]
基于<font color='red'>MCU</font>与USB设备控制器IP核的设计方案
基于STM32H7 MCU的智能家居语音接口参考设计
STEVAL语音接口可将基于云计算服务的Alexa体验带到烤箱、炉灶、温度计、百叶窗、吹风机等家电产品,减少传统按钮和旋钮的使用,而无需在电子硬件上大量投资。本方案采用集成了Alexa语音用户接口软件的STM32H7 MCU,可简化家电控制器的研发,而且软、硬件都可以轻松调整和修改。 图1. STEVAL语音接口样板 方案特点 ASTEVAL-VOICE-UI语音接口参考设计包括一个STM32H743高性能MCU、一个Wi-Fi模块,板子尺寸36mm x 65mm。与采用DSP、无闪存处理器等常用元器件的Alexa产品不同,本方案即使环境吵闹嘈杂,麦克风间隔很小,音频前端仍能提供出色的远场语音检测功能。 图2. STEVA
[单片机]
基于STM32H7 <font color='red'>MCU</font>的智能家居语音接口参考设计
小广播
最新模拟电子文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved