如何用单片机控制数码管(带原理图程序注释)
说起数码管这个器件时,你可能会对它产生好奇,是怎样控制它显示数字字母的,也许正是因为这个好奇心驱使我们总想去了解它使用它。
数码管:由多个发光二极管封装在一起组成8字结构,引线已在内部完成,我们只需引出他们的各个笔画,公共电极。数码管实际上由七个发光二极管组成“8”字型结构,加上小数点就是8个,这些段位分别由a,b,c,d,e,f,g,dp来表示。
数码管(图片来源于网络)
数码管(图片来源于网络)
数码管(图片来源于网络)
在市场上可以分为两种数码管,分别为共阳极,共阴极,共阳极顾名思义就是把LED的正极端连在一块,在点亮的时候只需要把另一端通过单片机的指令让其接地即可,共阳极也是如此(本篇中为共阴极)。
原理图如下:
原理图
原理图
在单片系统中扩展LED数码管多用共阳极数码管,原因就是选用共阴极数码管在用单片机驱动时,所用的驱动功率较大,共阳极就避免了这个问题,在使用的时候为了避免电流过大,还需在每个字段要串联一个电阻。
但是在使用的时候由于数码管端口较多,想要控制多个数码管的话,还需加74H573锁存器,在本篇讲解中使用该锁存器,数码管采用共阴极。
74H573
原理图
如果想让上图中第一个数码管显示字母'b',则只需要控制相应的位拉高(既c,d,e,f,g),其余为低电平即可,转化成二进制就是0111 1100。
控制代码如下
#include <reg52.h>
sbit duan=P2^6;//定义段选
sbit wei=P2^7;//定义位选
main()
{
P0=0x07;//0111 1100--b
duan=1;//锁存IC失能
duan=0;
P0=0xfe;//1111 1110
wei=1;//锁存IC使能
wei=0;
while(1);
}
在程序中出现断选和位选,所谓断选就是控制数码管显示什么,位选是控制哪一个数码管亮,文章中是想让第一个数码管点亮,在程序中只需让第一个数码管是低电平,其余是高电平即可,转化为二进制就是1111 1110,另外程序中还有让断选或位选等于0和等于1的那句话,这可以理解为锁存器的启动,这样可以把数据写进去而且后期不能随便修改。
小伙伴们你们学会了吗?敢不敢来试试,点亮第三个数码管,显示数字9,把你的答案写在评论区,分享一下吧!
单片机学习:教你如何使用单片机控制手机通信
今天突然有个同学问我单片机如何和手机通信,我们在用单片机做产品的时候,难免会用到单片机和手机通信,所以今天我们就来学习下如何用单片机控制手机通信。
中国联通数字移动电话(GSM)网是向社会公众提供通信服务的公用通信网,它是目前基于时多址技术的移动通信体制中,比较成熟完善,且应用最广泛的一种系统,是我国公众移动通信网的主要方式,基于GSM的短信信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上存储和转寄的过程,由于公众GSM网络在全球范围内实现了联网和漫游,上述系统不需在组建专用通信网络,所以具有实时传输数据功能呢的短信应用将得到迅速普及。
这个系统由数据采集部分、数据接收和发送部分、终端处理部分三个模组组成。
系统中,三个模块相互独立,彼此又相互依赖,共同完成数据的传输。数据收发模块在系统中起着承上启下的作用,是系统的核心模块。该模块以双单片机为核心,以RS232通信接口,在物理层上实现与GSM模块的连接。
【工作原理】
一、串口控制SMS的工作原理
单片机与GSM模块一般采用串行异步通信接口,通信速度可设定,通常为19200bps。采用这种RSM232电缆方式进行连接时,数据传输的可靠性较好。RS232接口方式连接,通过串行接口集成电路和电平转换电路与GSM模块连接,电路比较简单,所涉及的芯片包括单片机89C51和电平转换芯片MAX232,是非常常见的接口电路。需要说明的是,该接口通过IIC总线(之前的文章中提到,不明白的朋友可自行翻阅)扩展了一个EEPROM存储器,主要作用是存储数据,而且断电信息也不会丢失,这些特性正式存储数据所必须的。
GSM的短信息业务SMS利用信令信道传输,这是GSM通信网所特定的。它不用拨号建立连接,把要发的信息加上目的数据发送到短信息服务中心,经短信息服务中心完成存储后在发送给最终的信诉。所以当目的GSM终端没开机时信息不会丢失,每个短信的信息量限制为160字节。
现在市场上大多说手机均支持GSM7.05规定的AT指令集。该指令集是ETSI(欧洲通信技术委员会)发布的,其中包含了对SMS的控制。利用GSM手机的串行接口,单片机向手机收发一系列的AT命令,就能达到控制GSM模块收发SMS的目的。必须注意的是,用单片机实现时,编程必须注意它发送指令与接收到的响应都是字符的ASCII码,用单片机控制GSM模块收发短信息所涉及的AT指令如图。
二、软件实现
【上位机模块和下位机模块半双工通信协议的实现】
【应答和重发】
上位机模块和下位机模块的通信双方遵照半双工通信方式进行,即数据传送是双向的,但是,任何时刻只能由其中一方发送数据,另一方接收数据,因为EEPROM的读出和写入不能同时进行。为了避免一方在发送信息帧时(这里的信息帧指的是下位机模块发送的数据帧和下位机模块发送的命令帧,下同),另一方也会发送数据,必须把信道变成半双工方式。虽然这样效率可能不如全双工方式,但是可以稳定模块工作性能。双方采取的顺序是:发——收到应答后——再发。
按照整个系统的设计思路,上位机模块发送的帧包括命令帧、确认帧和非确认帧;下位机模块发送的帧包括数据帧、确认帧和非确认帧。其中确认帧和非确认帧是发送数据后等待对方发送的应答帧,一次作为继续发送下一帧和重新发送上一帧的依据。命令帧和数据帧时信息帧,当一方先发送完信息帧,如果收方接收到对方的信息帧,而又没有信息帧需要发送,那么情况就比较简单,收方将根据信息帧的正确与否决定发送确认帧还是非确认帧,以使对方决定是继续发送还是重新发送;如果此刻收方也有信息帧的应答帧,那么收方将不立即发送应答帧,而是立即发送本方的信息帧给对方,在收到对方的应答帧后,收方将依据应答帧的内容(即确认帧或非确认帧)决定是继续发送下一信息帧,还是重新发送原来的信息帧。
【延时重发】
在双方通信过程中,有两个时间T1和T2,分别表示重新发送信息帧的最大延时。T2表示一方发送信息帧收到对方应答帧的时间,如果等待应答帧的时间超过了T1,则发方会重新发送原来的信息帧,当收方接收到对方发送的信息帧,如果对方此时有需要发送的信息帧,则收方此时不发送应答帧,而是发送信息帧给对方。也就是说,利用对方等待收方应答帧的时间在T1内,收方插入发送本文的信息帧,同样本方的发送也存在一个延时重发的问题。在规定的时间内,如果没有收到对方应答帧,收方也同样需要重发原来的信息帧,这个规定的时间就是T2。显然由于收方是利用间隙时间发送本方信息帧,所以T1>T2。
【帧格式】
GSM模块通过异步通信接口实现SMS的控制共有三种接入协议:BLOCK MODE、基于AT指令的TEXT MODE、基于AT指令PDU MODE。本系统发送和接收数据都是基于数字的温度数据和命令字,为了保证系统的适用性,SMS的手法采用TEXT模式。TEXT模式是基于字符的,更具体的说是基于ASCII码的一种结构模式。在该结构模式下,模块发送和接受的信息帧格式如下:
信息帧包括数据帧和命令帧。
帧头表示数据帧的标记由固定的字符“WQ”构成。
帧序号表示数据帧的序号,由两个字节组成,帧序号表示下位机模块发送的递增数据帧序号和上位机模块发送的命令帧序号。为了简化帧结构,命令帧的序号统一为OOH。
数据字段的长度为154字节,最多发送77个字符(采用TEXT模式,不能发送汉字)。
检验子为数据字段所有字节累加和的初码(原码取反加1),由一个字节组成。、
除了信息帧外,双向传递的还有应答帧,它包括确认帧和非确认帧。确认帧是双方反馈给发方的应答帧,表示双方已经正确接收到了发方发送的信息帧。确认帧格式仅包括两个字段,且两个字段的内容都是固定的,即帧头“WQ”和数据字段“ACK”,确认帧格式如下。
非确认帧时收方给发方的应答帧,表示收方收到的是无效的信息帧,其格式与确认帧格式类似,帧格式如下:
【EEPROM空间的分配】
采用8KB的EEPROM,按照每77个字节为一个块进行划分,工106块,如图所示。
第00、01块留作系统使用,第02~第105块是数据块,用作存放数据。
【程序设计】
【主函数的设计思路】
开机上电后,程序在主函数中运行,单片机和GSM模块分别进行初始化。单片机的初始化包括设置串口工作方式、波特率,并初始化变量和标志位,GSM模块初始化包括重新启动、关闭回显、设置在TXET模式下的返回值中不显示详细的头信息、选择短息格式为TEXT模式、开发串口中断准备接受数据。
【GSM返回函数的处理——SHELL函数】
SHELL是进入时钟中断程序时被调用时,该函数是对GSM模块返回参数进行处理的函数,根据系统设计的要求,需要对GSM模块进行下列操作:呼叫对方模块号码、发送数据、阅读短信、删除短信。基于以上操作指令,如果操作成功GSM模块会分别返回不同的参数:>、+CMGS、+CMGR、OK。根据收到的不用参数,下位机模块将转向不同的操作步骤,判断并改变标志位的值。
【短信数据的处理——EXECDATA函数】
进入时钟中断调用SHELL函数时,如果接收到了返回的参数+CMTI,表明上位机模块向下位机模块发送了短信数据,可能是命令帧,也可能是确认帧或者非确认帧。在这种情况下,SHELL函数需要对短信内容进行分析,并根据短信的内容进行不同的处理,负责完成以上功能的就是EXECDATA函数,它是被SHELL函数调用的,用来分析并处理短信数据。
鼎酷IOT部落(dkiot888)是由鼎易鸿基&万酷电子联合出品,专注于为大家提供物联网精髓的新媒体平台。我们关注物联网行业最新动态,专注做您的物联网口袋知识库,旨在搭建共同学习的知识平台,让您学得方便,聊得畅快;鼎酷IOT部落用心做大家的“良仆”。各项内容鼎酷IOT 部落微信公众号同步。物联网行业顶尖产品咨询也欢迎留言。
相关问答
单片机 与手机如何实现远距离通信?单片机与手机实现远距离通信,有很多种可实施的方案。例举其中两个方案进行讲解:一:2G/4G移动通信方案器件选型1,单片机选用Cortex-M3内核,国产兆易创新...单...
什么是 单片机 应用系统?1单片机:单片机就是将CPU、存储器、定时计数器、I/O接口电路等集成在一个芯片。也叫单片微型计算机。2单片机系统:以单片机为核心的控制系统。3单片机应...
单片机 如何实现自动 控制 ?单片机实现自动控制的关键是通过编程控制输入输出端口,根据预设的条件和算法进行逻辑判断和控制操作。通过传感器采集环境信息,单片机根据这些信息进行处理,...
如何用ESP8266 控制单片机 ?ESP8266_wifi模块,单片机串口与模块串口连接,可以利用网络用电脑或者手机与单片机进行数据交换和控制。ESP8266_wifi模块,单片机串口与模块串口连接...
什么是 单片机 ?它由哪几部分组成?什么是 单片机 应用系统?二者...单片机是一种路芯片,模集成电路技术把具有数处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱...
我用 单片机控制 数字电位器AD5206,使用光耦..._ 网络 编辑_帮考网以避免干扰和电气隔离。具体操作步骤如下:1.将单片机的输出引脚连接到光耦的输入端,通过光耦隔离器将信号传递到数字电位器AD5206的控制引脚。2.将...
51 单片机 ,按键 控制 流水灯程序,懂的进!八个LED灯与 单片机 P1口...[最佳回答]假如,你的程序在执行key_scan();是触发了两次中断导致num>20,你的显示函数将永远被跳过,你应该写成if(num>20)��{���num=0;���display();�.....
如何设计一个以 单片机 为核心的继电器 控制 电路?根据提问者的意思以单片机为核心控制继电器,不知提问者提出这个问题的真正目的是什么,若只是为了想要一块继电器板实现相应的功能,可以直接购买一块单片机继电...
c51 单片机 中如何使用多线 控制 ds18b20?18B20的电源和电源连在一起,地和地连一起。18B20数据线和数据线连一起,最后数据线连接到单片机上一个IO口就可以了。通过程序来区分每个18B20.每个18B20有...
单片机 、光耦[回答]由上位管理主机(HOST)、USB/CAN转换器和多个智能节点组成。节点的数量由大型仓库里的粮库数量决定,一般在采用标准帧进行CAN通信时,节点...节点的...