串行口的4种工作方式中的方式0是移位寄存器工作方式,主要用于扩展并行I/O用,并不用于串行通信。串行口的方式1~3是用于串行通信的,下面介绍串行口的方式1~3的双机串行通信软件编程。应当说明的是,下面介绍的双机串行通信的编程实际上与各种串行标准的硬件接口电路无关,因为采用不同的标准串行通信接口仅仅是由双机串行通信距离、传输速率以及抗干扰性能来决定的。
下图所示为AT89S51单片机扩展一片82C55的电路图。图中,74LS373是地址锁存器,P0.1、P0.0经74LS373与82C55的地址线A1、A0连接;P0.7经74LS373与片选端CS相连,其他地址线悬空;82C55的控制线RD(的反)、WR(的反)直接与AT89S51单片机的RD(的反)和WR(的反)端相连;AT89S51单片机的数据总线P0.0~P0.7与82C55的数据线D0~D7连接。
实现中断允许控制和中断优先级控制分别由特殊功能寄存器区中的中断允许寄存器IE和中断优先级寄存器IP来实现的。下面介绍这两个特殊功能寄存器。
读并行I/O口有“读引脚”和“读锁存器”之分。以Pl口为例,当P1口的P1.0引脚外接一个发光二极管LED的阳极,LED的阴极接地。若想查看一下单片机刚才向P1.0脚输出的信息是0还是1,这时不能直接从P1.0读取,因为单片机刚才向P1.0输出的信息如果是1的话,则LED导通点亮,此时P1.0引脚就为0电平,如果直接读引脚,结果显然是错误的。正确的做法是读D锁存器的Q端状态,那里储存的才是前一时刻送给Pl.0的真实值。也就是说,凡遇“读取P1口前一状态以便修改后再送出”的情形,都应当“读锁存器”的Q端信息,而不是读取引脚的信息。
在实际的程序设计中,常常将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,需要时通过子程序调用指令进行调用。这样的程序段称为子程序。
程序框图 程序ORG 05E0H05E0 758153 SE13: MOV SP,#53H05E3 757E00 MOV 7EH,#00H05E6 757D08 MOV 7DH,#08H05E9 757C03 MOV 7CH,#03H05EC 757B02 MOV 7BH,#02H ;显示缓冲区初值05EF 7E00 LO20: MOV R6,#00H05F1 90FF
程序框图 电路 0BB6 7488 MOV A,#88H0BB8 F0 MOVX @DPTR,A ;82C55初始化0BB9 90FFD8 MOV DPTR,#0FFD8HOBBC 74B6 MOV A,#0B6H0BBE F0 MOVX @DPTR,A0BBF A3 INC DPTR0BC0 740D MOV A,#0DH0BC2 F0 MOVX @DPTR,A ;点亮4个
程序框图 电路 程序ORG 05A0H05A0 758153 SE11: MOV SP,#53H05A3 757E00 MOV 7EH,#00H05A6 757D08 MOV 7DH,#08H05A9 757C00 MOV 7CH,#00H05AC 757B09 MOV 7BH,#09H05AF 757A10 MOV 7AH,#10H05B2 757910 MOV 79H,#10H
当按下SB1键时,电机进入预启动状态,经30s短延时后进入正式启动,且不管电路工作在何种状态,只要按下SB2电机就停止,再按SB1电机又重新启动,并要求具有30s倒计时显示及电路状态显示。
在隧道窑温度控制系统、自助式寄存柜等多个实际应用中,我们利用单片机高级C语言编制应用程序,满足了用户对各项性能参数的不同要求。下面以一实例,介绍C语言在应用程序设计上的优点。
在以单片机为核心的嵌入式应用中,友好的人机交互界面起着十分重要的作用。典型的显示器件是LED数码管,其亮度高,适应于大多数应用场合。缺点是接口电路复杂,功耗高。液晶显示器件是利用液晶的电光效应制作的,具有功耗低、接口控制方便等优点,而且模块的接口信号和操作指令具有广泛的兼容性,并能直接与单片机接口,它还具有专用指令,可方便地实现各种不同的操作,同样的显示面积LCD其功耗为LED显示器的几百之一,所以它特别适宜与COMS电路直接相配。随着液晶显示技术的进步,高质量的液晶显示模块被日趋广泛地应用于各种嵌入式系统中。
当前开发单片机应用系统程序主要应用汇编语言和C51语言,采用汇编语言编写可直接操纵系统的硬件资源,能编写出高效运行的程序代码,程序运行速度快。而采用C51语言编写可改善程序的可读性和可移植性,利于产品的更新换代,大大加快了单片机应用程序的开发速度。下面通过一个简单的实验--跑马灯实验来分析一下这两种语言的差别。
X5045是一种集看门狗、电压监控和串行EEPROM 三种功能于一身的可编程控制电路.特别适合应用在需要少量存储器,并对电路板空间需求较高场合,
在 单片机 系统中动态扫描显示 接口 是单片机中应用最为广泛的一种显示方式之一。其接口 电路 是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
ADVFC32与51系列单片机的硬件接口电路如图1所示。图中是输入电压信号为正时的情况。在输入信号为负时,只要把电阻R1、R3接地,从第14脚直接输入即可。AD650的电路与ADVFC32的外电路相似。关于这两种芯片的引脚排列及内部结构等请参考有关手册。