基于51单片机汇编写的校园作息控制系统

发布者:TranquilDreams最新更新时间:2020-12-23 来源: 51hei关键字:51单片机  汇编 手机看文章 扫描二维码
随时随地手机看文章

单片机作息时间控制实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的教学设备。针对单片机课程的学习与熟练运用,本设计预计完成一套完整的校园作息时间控制系统,锻炼学生的独立思考能力与学习能力,在学生本人积极实践、查阅资料的基础上完成设计。


1.2设计任务要求

能按照作息时间发出铃声提示信息,以蜂鸣器模拟,响铃15秒;能按照需要调整作息时间(夏季和冬季),并能调整当前系统的时间;用数码管显示当前时间。



2. 系统硬件电路的设计
2.1 51单片机时钟电路

时钟电路就是一个振荡器,给单片机提供一个节拍,单片机执行各种操作必须在这个节拍的控制下才能进行。因此单片机没有时钟电路是不会正常工作的。在MCS-51单片机内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。


在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2一般取30pF,晶振的频率取值在1.2MHz~12MHz之间。晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频, 产生个两相时钟信号P1和P2供单片机使用。时钟信号的周期称为状态时间S,它是振荡周期的2倍,P1信号在每个状态的前半周期有效,在每个状态的后半周期P2信号有效。CPU就是以两时钟P1和P2为基本节拍协调单片机各部分有效工作的。


复位信号RST高电平有效,在输入端保持两个机器周期的高电平后,就可以完成复位操作。此外,该引脚还有掉电保护功能,若在该端接+5V备用电源,在使用中若掉电,可保护片内RAM中信息不丢失。


时钟及复位电路如图1所示。


图1 时钟及复位电路

2.2 74LS164寄存器

74LS164 简述:串行输入带锁存、时钟输入、串行输入带缓冲、异步清除、最高时钟频率可高达36Mhz。当清除端(CLEAR)为低电平时,输出端()均为低电平。串行数据输入端(A,B)可控制数据。当 A、B 任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下为低电平。当 A、B 有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定的状态。


74LS164真值表如表1所示。

表1  74LS164真值表

输入

输出

同步清除输入端

时钟输入端

串行数据输入端(A,B)

……

×

×

×

……

×

×

……

……

×

……

×

……


74LS164 逻辑符号及其引脚图如图2所示。

 

图2 逻辑符号(左)及引脚图(右)


2.3 总体方案设计

根据系统的要求,确定系统的总体方案如图3所示。

图3 系统总体设计方案

本系统设计的原理是利用单片机 AT89S51 的定时器/计数器定时和计数的原

理。通过四联共阴极数码显示管接收由 74LS164 传来的数据并将其转换为十进制BCD 码显示,该设计将软、硬件有机地结合起来,使得系统能够正确地进行计时,


数码管能够正确地显示时间。

按键模块中的按钮 SW1、SW2、SW3 、SW4、SW5与 AT89S51 的 P3 口相连,对单片机起到控制作用,通过按键控制模块把外界响应送到单片机最小系统(AT89S51)中,然后通过接口电路把要显示的时间送到四联 LED 数码管中,四联 LED 数码管的字段由串入并出的移位寄存器74LS164 控制,74LS164 的串行数据输入端由 P1.7控制,移位脉冲由 P1.6 提供,字位由 P1.0至P1.5 控制,P1.0至P1.5 对应控制 L6至L1。SW1至SW5 用来进行时间校准及控制时间点的设定。


2.4 具体电路设计

2.4.1 按键控制模块的设计

本模块的控制电路主要由(冬季、夏季)指示灯、蜂鸣器与接于P3口的五个开关组成。SW1控制作息时间(闭合冬季、断开夏季);SW2调节小时,每次加1;SW3调节分钟,每次加1;SW4为手动定时开关,储存数码管当前显示的时间,下次再到这一时间时响铃亮灯;SW5为清除手动定时开关,将所有手动定时数据清除。

按键设计模块的设计图如图4所示

 

图4 功能按键及指示灯(左)


2.4.2  输入电路的设计

本模块的输入电路主要由单片机的P1管脚及74LS164移位寄存器的输出管口组成。P1.1、P1.2、P1.3、P1.4、P1.5、P1.6分别接数码管的L6、L5、L4、L3、L2、L1管脚,寄存器的3至12管脚分别接数码管的A至G管脚。P1.7管脚接寄存器的1、2管脚,作为串行数据输入端;P1.6管脚接寄存器的8管脚,作为移位脉冲。

本模块的设计电路如图5所示。

图5 输入电路模块


2.4.3  LCD显示模块设计

本模块主要由一个6位共阴极数码管和一个三输入一输出的或非门组成。数码管依次显示L1至L6管脚对应的位数,L6控制第1位及秒个位(从右向左),L5控制第2位及秒十位,L4控制第3位及分个位,L3控制第4位及分十位,L2控制第5位及时个位,L1控制第6位及时分位,高电平有效。或非门的输入端分别连接L2、L4、L6,输出端连接DP,循环点亮L2、L4、L6所对应的数码管的园点,用以区分时、分、秒。

本模块的电路设计如图6所示。

图6 LCD显示模块


2.5  系统总体电路

在此给出整个系统的完整的电路图,如图7所示。

图7 整体电路图


2.6  系统所用元器件

本系统所用的元器件清单如表2所示。

表2  本系统所用的元器件

元器件名称

数量

指示灯

2

按钮开关

5

5V电源

3

移位寄存器74LS164

1

七段译码显示器7SEG-MAX6-CCBLUE

2

晶振12MHz

1

电容30pF

2

电解电容10uF

1

电阻10K

1

蜂鸣器

1

导线

若干

或非门74LS10

1


3. 系统软件设计
3.1 软件设计思路

对于时钟功能,需要在数码管上显示当前的时间的小时、分钟及秒,因此,可以在内部存储空间分别定义它们的显示缓存空间,来存放小时、分钟、秒的 BCD 码,各2个字节。


由于时钟是不能停止的,因此需要采用内部定时器自动计时,并使用定时器中断处理程序来定时进行时间数值的刷新。51 单片机的2个定时器都具有 16 位时器的工作模式。当晶振为12MHz 时,16 位定时器的最大定时值为 65.536ms,要达到 1 秒钟,采用一个定时器定时与软件计数相结合的方法。例如使用 T0,为了达到较为准确的计时,使 T0 的溢出时间为 50ms,使用一个字节作为软件计数器 MS,计数值为 20。定时器的中断处理程序对 MS 进行减 1 操作,当MS 为 0 时,1 秒到达,此时更新存放小时、分钟、秒的显示缓存区。


3.2 程序设计

3.2.1  主程序设计

本次设计程序代码通过汇编语言编写。首先定义各脚口和变量名称,其次编写各个子程序,最后编写主程序与中断程序实现功能。


主程序开始,设置栈区为70H至7FH,运用T0工作方式1进行中断,定义循环初始值为20,定义分秒时初始值为0(及开机显示00:00);根据50ms中断设置TL0与TH0的参数;设置手动定时初始存储单元为62H;输入分钟值,依次调用拆分子程序、显示子程序、数据存储子程序、读及校时子程序、清除手动定时子程序、比较亮灯子程序,手动定时子程序;循环运行。


主程序流程图如图8所示。

图8 主程序流程图


3.2.2  拆分子程序设计

拆分子程序开始,取秒个位,指向秒个位显示缓冲单元;取秒十位,指向秒十位显示缓冲单元;取分个位,指向分个位显示缓冲单元;取分十位,指向分十位显示缓冲单元;取时个位,指向时个位显示缓冲单元;取时十位,指向时十位显示缓冲单元;最后将秒、分钟、小时数据依次存入6AH至6FH单元中。

拆分子程序流程图如图9所示。


图9 拆分子程序流程图


3.2.3  显示子程序设计

显示子程序开始,送显示缓冲首地址(R0)及字位码(R2),送字形表首地址,关显示器,查字形表取待显示字,传送分个位字形到74LS164,R0加1并显示区下一位,点亮对应码的显示管,修改字位码,修改字位码送到A,判断ACC.6是否为1(是:转到查字形表操作;否:结束该程序)。

显示子程序流程图如图10所示。


图10 显示子程序流程图


3.2.4  数据存储子程序设计

数据存储子程序开始,因为西农上午作息时间夏季与冬季相同,所以直接将上午的十个时间值分别存入20H到3DH;然后判断SW1是否闭合,若闭合将冬季作息时间值存入到3EH到61H,若断开将夏季作息时间值存入到3EH到61H,结束子程序。

数据存储子程序流程图如图11所示。

图11 数据存储子程序流程图


3.2.5  读及校时子程序设计

本子程序设计对分钟和小时进行校时。在设计中用按钮SW3控制分;用按钮SW2控制时。按一下按钮,数值加1;若按钮闭合,则一直加1。分钟每60循环,小时每24循环。本子程序流程图如图12所示。

图12 读及校时子程序流程图


3.2.6  比较子程序设计

本子程序设计主要运用了判断选择结构,定位初始数据时间存储单元20H,将当前时间依次与它们比较。先比较小时,若相等再比较分钟,若分钟相等,接着判断SW1是否闭合,若闭合冬季指示灯亮,否则夏季指示灯亮,最后使蜂鸣器响;

若小时不相等,跳转到下个数据存储单元,判断该存储单元是否为空(若为空,结束比较;不为空,继续执行),判断当前数据的地址是否大于6FH,若大于,结束比较;若小于,继续进行比较。

若分钟不相等,跳转到下个数据存储单元,判断该存储单元是否为空(若为空,结束比较;不为空,继续执行),判断当前数据的地址是否大于6FH,若大于,结束比较;若小于,继续进行比较。本子程序流程图如图13所示。

图13 比较亮灯子程序流程图


3.2.7  手动定时子程序设计

本设计手动定时值为当前时间,按下按钮SW4,存下当前时间并报警,当下一次达到该时间时,会再度报警。因为内存单元的局限性,手动定时最多可存储3个时间,当存储第4个时间时,则会覆盖第1个时间。程序代码如下:

MANUAL:JB SW4,ZZ  ;判断开关是否闭合

MOV R1, B               

CJNE  R1, #69H, $+3              ;判断存储单元小于69H

JC ZY

MOV R1, #62H     ;手动存储单元首地址

MOV B, R1

ZY: MOV @R1,Hour   ;存小时

INC R1

MOV @R1, Minute   ;存分钟

INC R1

MOV @R1, Secs   ;存秒

INC R1

MOV B, R1

ZZ: RET

3.2.8  清除手动定时子程序设计

本子程序目的是清除手动定时的数据,当按下按钮SW5时,将清除之前存储的所有手动定时数据。程序代码如下:

Clear: JB SW5,XX  ;判断按钮SW5是否闭合

MOV  R1, #62H   ;定位手动定时数据初始单元地址

CLRP1: CLR A

MOV @R1, A     ;清除

INC R1

CJNE  R1, #6AH, CLRP1

XX: RET


4. 系统调试与仿真4.1  作息时间切换功能的调试

当按下按钮SW1时,切换为冬季作息时间;当按钮弹开时,切换为夏季作息时间。仿真过程中比较顺利,没有出现问题。仿真结果如图14、15所示。

图14 冬季作息时间亮灯

图15 夏季作息时间亮灯

4.2  调时调分功能的调试

按一下SW2、SW3分别对小时、分钟进行调时,若按钮不弹开,则一直处于调时状态。在本功能的仿真调试过程中,发现按钮有一些抖动,及按一下按钮跳动2个或2个以上的数字,后改动相关参数增加延时时间,基本解决抖动问题。

将分钟、小时调节时间加1,仿真结果如图16所示。

 

图16 调时(左:调时前,右:调时后)

4.3  手动定时功能的调试

按一下SW4进行手动定时,将数码管当前显示的时间保存(当前秒的数据不进行保存),同时进行报警并在下一次到达该时间时再次报警(报警定时不分冬季夏季)。在仿真过程中,发现00:00:00~00:59:00无法进行手动定时,分析问题后,认为在比较模块的判断结构上有一些问题,只进行了时判断,没有进行分判断,从而导致在该段时间无法定时。但更改程序后,仍无法在该段时间进行手动定时,需要继续进行调试改进。

增设01:00手动定时,仿真如图17所示。

图17 手动定时

4.4  清除手动定时功能的调试

按下按键SW5清除之前设置的所有手动定时数据。在该功能调试过程中没有出现问题。

清除01:00手动定时,仿真如图18所示。

 

图18 清除手动定时(左:定时灯亮,右:清除定时灯灭)

4.5  蜂鸣器定时报警15s功能的调试

在到达程序设定时间或手动设置时间时,指示灯亮并且蜂鸣器开始报警,报警时长15s。仿真如图19所示。

 

图19 定时报警15s(左:开始报警,右:结束报警)


5. 总结5.1 本系统的优缺点

本系统优点:本设计可以方便快捷的按照作息时间进行响铃报警提示,可以调节当前系统时间,可以手动增加或删除定时时间,操作简单容易推广。

本系统不足:在手动定时方面有一些问题,无法在00:00:00~0:59:00进行手动定时;定时精度尚要进行调整;可以在程序代码和仿真电路上进一步优化。


本设计的第一步是确定电路的整体框架,包括调节时间模块、数据存储模块、手动定时模块、清除模块等,然后是开始各个子程序的编写与逐步调试。在这一过程中我遇到了许多问题,比如转移指令的使用,堆栈的创建。我积极的询问老师、查阅书籍,最后解决了问题。
本设计的第二部是仿真电路的设计,首先确定各个模块所需的元器件,然后分布空间进行总的电路图的搭建。在这一过程中,老师也提出了有针对性的建议,比如我一开始设计了8个指示灯进行报警提示,但由于指示灯亮灭较为无序,改为只有冬季与夏季两个指示灯;然后进行按钮功能的明确化与简洁化,使操作者能比较容易的使用该套系统。


单片机源程序如下:

;作息时间控制系统

OUT BIT P3.7

F1 BIT 1BH                            ;T1的位置

SDATA BIT P1.7  ;定义74LS164串行移位数据端

SCLK BIT P1.6  ;定义74LS164串行移位时钟端

DIS EQU P1 ;定义字形口

CWINTER EQU P0.7 ;冬季灯输出

CSUMMER              EQU P0.6 ;夏季灯输出

SW1 EQU P3.2    ;控制切换季节

SW2 EQU P3.3              ;控制调时

SW3 EQU P3.4              ;控制调分

SW4 EQU P3.1

SW5 EQU P3.5

MS EQU 10H ;定义50ms计数器

Secs  EQU 11H ;定义秒计数器

Minute EQU 12H ;定义分钟计数器

Hour  EQU 13H ;定义时计数器

;---------------------------------

ORG 0000H

LJMP  Main                              ;长转移指令

;---------------------------------------------------------------------

ORG 000BH

LJMP  T0INT                           

;---------------------------------------------------------------------

Main: MOV SP, #70H ;将栈区设置在70H,7FH

MOV IE, #10000010B  ;允许T0中断

MOV TMOD, #01H ;T0定时方式1

MOV MS, #20  ;50ms单元初值?使20×50ms=1s

MOV Secs, #0

MOV Minute, #0

MOV Hour, #0 ;开机显示00:00:00

CLR F0

CLR F1

MOV R7, #80

MOV TL0, #00H ; 50ms定时参数

MOV TH0, #4CH  ;此参数小于实际参数,为仿真调试所调整获得

SETB  TR0 ;启动定时器

MOV B, #62H

LOOP: MOV R1, #Secs

LCALL Split ;调用拆分子程序NOP                实际就是分钟小时数据输入

LCALL DISP  ;调用显示子程序NOP                实际就是分钟小时数据显示

LCALL STORE  ;存储的数据

LCALL Verify              ;读,校时

NOP

LCALL MANUAL  ;手动定时

NOP

LCALL Clear   ;清除手动定时

NOP

MOV A, Secs

CJNE   A, #5, $+3 ;定时精度控制在5秒以内

JNC LOOP

LCALL Compare                            ;比较,响铃亮灯

SJMP  LOOP

;----------------------------------------------------------------------------------------

T0INT: MOV TL0, #00H

MOV TH0, #4CH

PUSH  ACC

DJNZ  MS, T0Exit

MOV MS, #20

MOV A, Secs

ADD A,#1

DA A

MOV Secs, A

CJNE  A, #60H, $+3  ;

JC T0Exit ;若秒小于60,则直接返回

MOV Secs, #0 ;若秒大于或等于60,则回零

MOV A, Minute

ADD A, #1

DA A ;对分进行十进制调整,以便送显示器显示

MOV Minute, A

CJNE  A, #60H, $+3 ;60后一定要加H?表示该数为BCD码

JC T0Exit ;若分小于60,则直接返回

MOV Minute, #0 ;若分大于或等于60,则回零

MOV A, Hour

ADD A, #1

DA A

MOV Hour, A

CJNE  A, #24H, $+3

JC T0Exit

MOV Hour, #0

T0Exit:  POP ACC

RETI

;---------------------------------------------------------------------


Compare: MOV R0, #20H ;定位数据存储区,见下方store

NextTime: LCALL DISP

MOV A, @R0

CJNE  A, Hour, CLP1

INC R0

MOV A, @R0

CJNE  A, Minute, CLP2

INC R0

SWITCH:JB SW1,SWITCH1  ;判断按键1,如果闭合,顺序执行;断开,跳转

CPL CWINTER

JNB SW1,SWITCH2

SWITCH1:CPL CSUMMER

SWITCH2:lcall SONGER

INC R0

RET

;---------------------------------------------------------------------

CLP1: INC R0 ;指向分

INC R0                            ;              指向秒

INC R0

MOV A, @R0

JNZ CLP3              ;A=0,顺序执行;A不等于0,跳转

INC R0                   ;指向下个报警计时点的分钟位

MOV A, @R0

JNZ CLP3              ;当分钟也为0时才终止程序

RET

;---------------------------------------------------------------------

CLP2:INC R0

INC R0

MOV A, @R0

JNZ CLP3              ;A=0,顺序执行;A不等于0,跳转

INC R0                   ;指向下个报警计时点的分钟位

MOV A, @R0

JNZ CLP3      ;当分钟也为0时才终止程序   

RET

;---------------------------------------------------------------------

CLP3: CJNE R0, #69H, $+3 ;因为时间数据存在6AH~6FH,所以不能大于69H

JC NextTime

RET

;---------------------------------------------------------------------

SONGER:                                                                                    ;声音报警 ,控制时间结束后停止

[1] [2]
关键字:51单片机  汇编 引用地址:基于51单片机汇编写的校园作息控制系统

上一篇:51单片机超声波测距报警系统
下一篇:基于STC89C51的时钟电路PCB程序 DS1302+LCD1602

推荐阅读最新更新时间:2024-11-17 02:26

51单片机中断主要关于计时--定时--计算定时器初值--的简介
看到的关于中断 计时器定时器的介绍,个人看明白了。 目录: 1、单片机中断简介 2、中断允许寄存器IE 3、中断优先级寄存器IP 4、定时器中断 TMOD:定时器/计数器的工作方式寄存器,确定工作方式和功能。 TCON:控制寄存器,控制T0,T1的启动和停止及设置溢出标志。 工作方式 5、如何计算定时器的初值 6、中断服务程序的写法 7、代码示例 单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0 - 定时器/计数器0中断, 由
[单片机]
<font color='red'>51单片机</font>中断主要关于计时--定时--计算定时器初值--的简介
STM8与汇编语言(15)--AD转换
现在大部分的单片机也都具备了A/D转换器,有8位的,也有10位的,当然性能好的具备了12位的A/D。在STM8单片机中,提供的是10位的A/D,通道数随芯片不同而不同,少的有4个通道,多的则有16个通道。 下面的实验程序首先对A/D输入进行采样,然后将采样结果的高8位(丢弃最低的2位),作为延时参数去调用延时子程序,然后再去驱动LED控制信号。因此不同的采样值,决定了LED的闪烁频率。当旋转ST三合一开发板上的电位器时,可以看到LED的闪烁频率发生变化。 同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。 stm8/ #include mapping.inc
[单片机]
keil5编译开发51单片机操作步骤
安装好keil 5 mdk 之后,从keil官网下载 c51v960.exe, 具体操作步骤 1.进入官网 2 3.点击C51之后,会让填写一个个人信息,没啥障碍,正常填写就好了,填写好之后就会出现下面的界面,点击下载就好了 4. 下载之后,运行,安装路径选择原来 keil5 MDK的安装路径 安装完毕之后就大功告成了
[单片机]
keil5编译开发<font color='red'>51单片机</font>操作步骤
基于51单片机的液晶显示屏LCD1602简单计算器程序
/* S16 S12 S8 S4分别是123+ S15 S11 S7 S3分别是456- S14 S10 S6 S2分别是789* S13 S9 S5 S1分别是0 CE =/ */ /* 实现两个数的运算,每个数的位数至少可以八位 (在液晶显示屏LCD1602上显示) */ #include reg52.h typedef unsigned char uint8; typedef unsigned int uint16; sbit rw=P2^5; sbit rs=P2^6; sbit e=P2^7; uint8 key=0,num=0; uint8 fuhao=0; //定义具体的那个符号,是加减
[单片机]
51单片机教程 第一个51程序 :点亮一个发光二极管
单片机就是一个小型CPU,在电子领域应用广泛,电视、冰箱、洗衣机、空调等产品中都能见到他们的身影。它是一个可编程的mcu,根据代码的不同可实现非常多功能 首先介绍两个软件 1、keil uvision4:这是一个单片机开发软件,用于调试,生成可执行文件HEX文件 2、proteus7.8:电路仿真软件 一、首先,到网上下载一个keil uVision4开发环境(用来编写C语言程序)或者下载我的软件,keil下载链接://download.csdn.net/download/mbs520/12191016 二、下载好之后百度keil4的安装教程,开始按百度步骤安装 一定要严格按照百度教程安装 安装成功后打开软件,
[单片机]
<font color='red'>51单片机</font>教程 第一个51程序 :点亮一个发光二极管
一个51单片机的键盘扫描程序,算法简单有效
/**************************************** 键盘_不采用定时器_不延时 特点: 按键在松手后有效,灵敏度高,消耗资源少,运行效率高 独立键盘为:K01=P2^4;K02=P2^5;K03=P2^6;K04=P2^7; 矩阵键盘为:行(上到下)_P2.3_P2.2_P2.1_P2.0 列(左到右)_P2.7_P2.6_P2.5_P2.4 提供的操作函数: //独立键盘.无按键动作时其返回值num_key=0,否则返回按键号num_key extern unsigned char keyboard_self(); //矩阵键盘.无按键动作时其返回值num_key=0,否则
[单片机]
C51单片机看门狗电路
采用89C51单片机和X25045组成的看门狗电路,X25045硬件连接图如图1所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路C2、R3输出一个正脉冲,使CPU复位。图1电路中,CPU的复位信号共有3个:上电复位(C1、R2),人工复位(S、R1、R2)和Watchdog复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒即可,因为这时CPU的振荡器已经在工作。 看门狗定时器的预置时间是通过X25045的状态寄存器的相应位来设定的。如表1所示,X25
[单片机]
C<font color='red'>51单片机</font>看门狗电路
基于51单片机实现短距离无线通信
1 引言 短距离无线传输具有抗干扰性能强、可靠性高、安全性好、受地理条件限制少、安装灵活等优点,在许多领域有着广泛的应用前景。低功耗、微型化是用户对当前无线通信产品尤其是便携产品的实际需求,短距离无线通信逐渐引起广泛关注。常见的短距离无线通信有基于802.11的无线局域网WLAN、蓝牙 (blueTooth)、HomeRF及欧洲的HiperLAN(高性能无线局域网),但其硬件设计、接口方式、通信协议及软件堆栈复杂,需专门的开发系统,开发成本高、周期长,最终产品成本也高。因此这些技术在嵌入式系统中并未得到广泛应用。普通RF产品不存在这些问题,且短距离无线数据传输技术成熟,功能简单、携带方便,使其在嵌入式短程无线产品中得到了
[单片机]
基于<font color='red'>51单片机</font>实现短距离无线通信
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved