文档库 最新最全的文档下载
当前位置:文档库 › 基于SMS(手机短信)和单片机AT89C51的无线家电控制系统

基于SMS(手机短信)和单片机AT89C51的无线家电控制系统

基于SMS(手机短信)和单片机AT89C51的无线家电控制系统
基于SMS(手机短信)和单片机AT89C51的无线家电控制系统

基于SMS(手机短信)和单片机AT89C51的无线家电控制系统

摘要:本文介绍了一种使用SMS(手机短信)的无线家电控制系统,其主要思路是GSM MODEM和红外线遥控的结合应用。GSM MODEM收到短信后,通过SRWF-1无线模块,发送控制数据给单片机控制器,由单片机控制器发射红外线控制信号,完成对家电的控制。当需要控制家庭中的多个电器,可建立一个控制网络。由于本系统采用无线方式,不会破坏家庭已有的装修,有一定的实用性。

关键词:SMS GSM MODEM 红外线遥控单片机SRWF-1无线模块

1 概述

GSM系统是目前移动通信体制中比较成熟完善且应用广泛的一种系统。红外线遥控是目前使用最广泛的一种遥控手段,而且可通过学习各种红外遥控器的码形,实现对家电的遥控。因此,可以将GSM MODEM和红外线遥控结合起来,实现对家电的远程遥控。例如在办公室里发一条短信就可以控制家里的情况,不用为家里的门窗、电器、煤气担心。

因GSM MODEM价格较贵,不可能为每一个家电遥控器安装一台GSM MODEM,因此只能把GSM MODEM模块安装在一台主控机上(在本设计中使用PC机),然后建立一个控制网络,通过网络传输控制指令,如图1所示。但是网络需要通信介质,若使用有线网络,布线非常不方便,特别是在已装修的家庭。因此本设计采用无线方式建立控制网络,数据安全问题则用软件解决。

本系统由GSM手机模块、无线数据传输模块和单片机控制模块三部分组成。GSM手机模块包含GSM MODEM和PC控制程序两部分。GSM MODEM主要用来建立无线GSM 网络信道,PC控制程序接收串口发来的数据,检验手机号码的权限,根据短信的内容生成控制机地址以及控制指令,并通过无线数传模块发送给单片机控制系统。无线传输模块负责无线网络建立和数据传输。假设共有4个电器需要控制,则建立一个一点对多点的通信网络。单片机控制系统收到无线模块传来的数据后,根据收到的数据,找到受控电器的红外发射码形(此码形为预先存入单片机中),发出红外光信号,实现电器的控制;或者打开继电器,驱动机械装置,完成操作。

2 单片机控制器的设计

单片机使用常见的A T89C51。遥控器发射的信号由一串0和1的二进制代码组成,用38KHz的载频进行二次调制,以提高发射效率,降低电源功耗。然后再通过红外发射二极管产生红外线向空间发射。

当按下遥控器按键时,遥控器发出一串二进制代码,通常分为引导码、地址码、地址码、数据码和数据反码。地址码连发两遍,以提高遥控器的可靠性。如果两次地址码不同,则说明本帧数据有误,应丢弃。

红外遥控接收使用一体化红外接收头0038K,它将红外接收、放大、解调,整形电路做在一起,可以将接收到红外线信号转化为TTL电平信号。0038K引出三个引脚,分别为地、+5V电源和信号输出。将0038K输出的信号输入PC的音频输入端(LINE IN)。在PC上使用COOL EDIT(音频处理软件),将波形录入,显示在屏幕上。将波形进行3dB衰减,再将波形展宽后,即可读出遥控器的红外码形。红外发射使用单片机P2口的P2.5、P2.6位来控制,其中,P2.5输出频率为38KHz的载频信号,P2.6输出红外脉宽信号,P2.5和P2.6通过或门输出调制后的信号。P2.6输出低电平时,或门允许38KHz载波信号通过,P2.6输出高电平时,或门禁止38KHz载波信号通过。从而产生38KHz的电信号,该信号通过ULN2003芯片放大,经电阻限流后至红外发射管,发出红外光信号,控制电器动作。

3 SRWF-1无线网络的设计

针对本系统数据流量较小,通信距离较近,且强调性价比的特点,选用SRWF-1型微功率无线数传模块。

3.1 SRWF-1型微功率无线数传模块的数据传输

SRWF-1模块收到单片机发来的第一个数据后自动进行无线网络连接、数据同步等工作,因此第一个数据将在5个字节时间延迟后从接收方串口输出。如要传送1个数据帧,此时间延迟将逐渐减少。当最后一个数据被发送后,模块将处于等待状态直到模块所设置的接收等待时间延迟之后,模块将自动通知所有接收设备断开无线网络连接、转入空闲状态。

当发送方最后一个数据被发送后需延迟6-8个字节才能接收空中其他模块的数据。其他模块在此时间内也不能向空中发射数据,即使有用户数据输入也是被缓冲在模块中,而没有发送到无线链路中,以避免引起数据通讯混乱。

3.2 SRWF-1家庭无线网络的总体规划

图1所示系统中,服务器、GSM MODEM放置在书房,书房中安装SRWF-1无线模块主站,其它各房间中安装SRWF-1无线模块从站。

每个SRWF-1模块都在网络中拥有唯一的地址。通信的协调完全由主站控制。主站采用带地址码的数据帧发送数据。主站发出的数据,所有从站都接收。从站再将接收到的数据包中的地址码与本地地址码相比较,若不同则将数据全部丢掉,不做任何响应;若地址码相同,则证明数据是给本站的。从站根据传过来的数据进行响应,并将响应的数据发送回去,进行数据校验。这些工作都由SRWF-1模块完成,可保证在任何一个瞬间,通信网中只有一个模块处于发送状态,避免相互干扰。

将各房间中的单片机控制器连接在SRWF-1模块上。单片机控制机收到SRWF-1模块传来的数据后,根据收到的数据,找到受控电器的红外发射码形(此码形为预先存入单片机中),发出红外光信号,实现电器的控制;或者打开继电器,驱动机械装置,完成操作。

3.3 SRWF-1无线数传模块与A T89C51的连接

SRWF-1模块提供标准RS-232,RS-485和UART(TTL电平)3种接口方式,在本设计中使用TTL的UART方式与AT89C51的串口直接连接。SRWF-1使用+3.6~5.0V直流电源。工作时发射电流≤40mA,接收电流≤20mA,休眠电流≤20uA。可和单片机共用+5V直流电源。电路如图2所示。

4 GSM模块的设计

4.1 GSM模块设计简介

GSM模块包含GSM MODEM和PC两部分。GSM MODEM主要负责建立无线GSM网络信道,通过GSM网络接收和发送短消息,它通过串口与PC通信。PC从串口接收GSM MODEM发来的数据,检验手机号码的权限,根据短信的内容生成受控机地址以及控制指令,并通过无线数传模块发送给单片机控制系统。GSM MODEM选用WMOi3双频集成GSM 调制解调器。

4.2 WMOi3的AT短信指令调试

WMOi3支持标准AT指令,调试时可使用Windows自带的“超级终端”工具。

将WMOi3连接到PC的串口上。硬件连接好以后启动超级终端。建立串口连接,设置串口(波特率9600,8位数据位,1位停止位,无奇偶校验,流控制使用Xon /Xoff)。发送AT指令测试设备是否正确连接,能否正常通讯。

4.3 应用短信开发控件SMSControl开发PC端程序

为提高开发速度,本设计中使用了短信开发控件SMSControl。SMSControl以OCX

控件的形式提供,支持VB。该控件具有短信发送、短信自动接收、从SIM卡中读取短信、从SIM卡中删除短信等功能。PC端程序开发应用VB和SMSControl控件,程序界面如图3所示。

4.4 程序应用说明

用手机向WMOi3发送一条内容为“打开”的短消息,便可以打开受控电器;如果想关掉受控电器,只要发送“关闭”即可。GSM模块收到短信后,先检测发送短信的手机号,若是在程序中设置的手机号码,则发送控制指令给单片机控制器,若是其他号码则拒之门外,增强了系统的安全性。

5. 结束语

基于GSM网络的SMS服务是一种信息在移动网络上储存和转寄的过程,可跨市、跨省、甚至跨国传送,灵活方便,廉价可靠。本文的创新点就是利用SMS来实现超远程遥控以及传输数据。用户只要用随身携带的手机向家里的GSM MODEM模块发一条短消息,即可对家里的电器或防盗报警器进行全球范围的遥控。由于本系统采用无线方式,不会破坏家庭已有的装修,有一定的实用性。而且GSM MODEM和红外线遥控技术成熟完善,因此这是一种可行方案。且本方案成本低、性能高,具有可靠灵活的特点,对家电的控制变得更容易、更快捷、更方便、更安全。

用51系列单片机内置比较器实现高精度

用51系列单片机内置比较器实现高精度A/D转换 1.图是一个可直接使用的、性价比极高的A/D转换方案。它是一个高精度的积分型A /D转换,类似于∑—⊿技术。其基本原理是用单一的I/O端口,执行1位的数/模转换(DAC),以比较器的输出作反馈,来维持Vout与Vin相等。 如图所示,产生1位DAC的电路为一路通用UO口,一个串联的电阻和电容。在电容上产生Vout,要维持Vout=Vin,必须通过I/O口对电容进行充放电,而确定为充电还是放电(即I/O口输出高低电子)由比较器的输出来决定。这样A/D形成了一个类似带负反馈的闭环系统。拿图中的电路为例,当比较器输出为高电平时,说明Vout>Vin,此时应对电容放电,则I/0口输出低电平;当比较器输出为低电平时,说明Vout

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.wendangku.net/doc/ef15366907.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

51单片机实例程100讲全集

目录 目录 (1) 函数的使用和熟悉 (4) 实例3:用单片机控制第一个灯亮 (4) 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (4) 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (5) 实例6:使用P3口流水点亮8位LED (5) 实例7:通过对P3口地址的操作流水点亮8位LED (6) 实例8:用不同数据类型控制灯闪烁时间 (7) 实例9:用P0口、P1 口分别显示加法和减法运算结果 (8) 实例10:用P0、P1口显示乘法运算结果 (9) 实例11:用P1、P0口显示除法运算结果 (9) 实例12:用自增运算控制P0口8位LED流水花样 (10) 实例13:用P0口显示逻辑"与"运算结果 (10) 实例14:用P0口显示条件运算结果 (11) 实例15:用P0口显示按位"异或"运算结果 (11) 实例16:用P0显示左移运算结果 (11) 实例17:"万能逻辑电路"实验 (11) 实例18:用右移运算流水点亮P1口8位LED (12) 实例19:用if语句控制P0口8位LED的流水方向 (13) 实例20:用swtich语句的控制P0口8位LED的点亮状态 (13) 实例21:用for语句控制蜂鸣器鸣笛次数 (14) 实例22:用while语句控制LED (15) 实例23:用do-while语句控制P0口8位LED流水点亮 (16) 实例24:用字符型数组控制P0口8位LED流水点亮 (17) 实例25:用P0口显示字符串常量 (18) 实例26:用P0 口显示指针运算结果 (19) 实例27:用指针数组控制P0口8位LED流水点亮 (19) 实例28:用数组的指针控制P0 口8 位LED流水点亮 (20) 实例29:用P0 、P1口显示整型函数返回值 (21) 实例30:用有参函数控制P0口8位LED流水速度 (22) 实例31:用数组作函数参数控制流水花样 (22) 实例32:用指针作函数参数控制P0口8位LED流水点亮 (23) 实例33:用函数型指针控制P1口灯花样 (25) 实例34:用指针数组作为函数的参数显示多个字符串 (26) 实例35:字符函数ctype.h应用举例 (27) 实例36:内部函数intrins.h应用举例 (27) 实例37:标准函数stdlib.h应用举例 (28) 实例38:字符串函数string.h应用举例 (29) 实例39:宏定义应用举例2 (29) 实例40:宏定义应用举例2 (29) 实例41:宏定义应用举例3 (30)

基于51系列单片机的多功能波形发生器及特定波形幅值调节 精品

创新性实验研究报告 课程名称:基于51系列单片机的波形发生器研究实验项目名称多功能波形发生器及特定波形幅值调节 姓名XXX_学号_XXXXXX 手机XXXXXXXXX Email XXXXXXXXXXXX 专业自动化_班级_XXXXXXX _ 指导教师及职称___XXX__ 开课学期2011 至2012 学年第一学期 提交时间2011 年12 月29 日

一、实验摘要 波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。例如在通信、广播、电视系统中都需要射频发射,这就需要信号发生器,在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振图像等,都需要功率或大或小、频率或高过低的信号。在现代社会中,自动化技术早已渗透到社会生产的各个领域中,高精度、宽频率、高稳定性的信号发生器对于所属整体系统的性能改善和提高起着至关重要的作用。多波形的函数信号发生器是电子实验室的基础设备之一,目前各类学校广泛使用的是标准产品,虽然功能齐全,性能指标高,但是价格昂贵,本文所研究的信号发生器采用单片机和DAC0832结合起来,通过数字电子电路向模拟电路转化,该系统虽然性能指标不如标准产品,但是它体积小,成本低,便于携带等特点,亦可作为电子随身设备之一。本次创新性实验将由AT89C51单片机和DAC0832数模转换器构成波形发生器,此波形发生器可产生方波、三角波、锯齿波、梯形波、阶梯波等多种波形,波形的幅值可以用程序进行改变,并可根据需要选择单极性输出,具有线路简单、结构紧凑、价格低廉、性能优越等优点。在本设计的基础上,加上按键用来更改不同波形之间的切换,实现不同波形的输出。 二、实验目的 在电子设备中,经常需要产生各种波形,本设计要求利用单片机和模数转换芯片组成波形发生器硬件系统,需要完成下列任务: (1)能够通过按键控制,产生方波、三角波、锯齿波、梯形波、阶梯波五种波形。(2)能够通过原理图调试进行改变各个波形的幅度。 三、实验场地及仪器、设备和材料: (1)AT89C51芯片1个 (2)DAC0832芯片1个 (3)OPAMP放大器芯片1个 (4)电阻2个电容3个可调电阻1个排阻1个 (5)开关6个 (6)Protues软件 (7)晶振1个 (8)示波器1台 四、实验内容 1、实验原理 波形的产生是通过AT89C51单片机执行某一波形发生程序,向DAC0832转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。 AT89C51单片机的最小系统有三种联接方式。一种是两级缓冲器型,即输入数据经过两级

51单片机与PC串口通讯

目录 第1章需求分析 ............................................................................................................................ - 1 - 1.1课题名称 (1) 1.2任务 (1) 1.3要求 (1) 1.4设计思想 (1) 1.5课程设计环境 (1) 1.6设备运行环境 (2) 1.7我在本实验中完成的任务 (2) 第2章概要设计 ............................................................................................................................ - 2 - 2.1程序流程图 (2) 2.2设计方法及原理 (3) 第3章详细设计 ............................................................................................................................ - 3 - 3.1电路原理 (3) 3.1.1STC89C52芯片 ............................................................................................................. - 3 -3.2串口通信协议 (4) 3.3程序设计 (5) 3.3.1主程序模块 .................................................................................................................... - 5 - 3.3.2串口通讯模块 ................................................................................................................ - 6 - 3.3.3控制部分文件 ................................................................................................................ - 8 - 3.3.4公共部分模块 .............................................................................................................. - 11 -3.4电路搭建 (12) 3.4.1电路原理图 .................................................................................................................. - 12 -第4章上位机关键代码分析 ...................................................................................................... - 12 - 4.1打开串口操作 (12) 4.2后台线程处理串口程序 (15) 4.3程序运行界面 (18) 第5章课程设计总结与体会 ...................................................................................................... - 19 -第6章致谢 .................................................................................................................................. - 19 -参考文献........................................................................................................................................... - 19 -

基于51系列单片机控制步进电机调速实验 (自动保存的)

基于51系列单片机控制步进电机调速实验 实验指导书 仇国庆编写 重庆邮电大学自动化学院 自动化专业实验中心 2009年2月

基于51系列单片机控制步进电机调速实验 实验目的及要求: 1、熟悉步进电机的工作原理 2、熟悉51系列单片机的工作原理及调试方法 3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量) 4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。速度设定由键盘设定,步进电机的反馈速度由LED 数码管显示。 实验原理: 步进电机控制原理 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所 以又称为脉冲电动机。随着数字控制系统的发展,步进电动机的应用将 逐渐扩大。 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来 进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由 脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号 可以由单片机产生。 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几 何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻 两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐, B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)

51单片机实用汇编程序库(word)

51 单片机实用程序库 4.1 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。 程序实例(LAMP.ASM) ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A ;灭所有的灯 MOV A,#11111110B MAIN1: MOV P1,A ;开最左边的灯 ACALL DELAY ;延时 RL A ;将开的灯向右边移 AJMP MAIN ;循环 DELAY: MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ 30H,D1 RET END 4.2 方波输出 程序介绍:P1.0 口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。 程序实例(FAN.ASM): ORG 0000H MAIN: ;直接利用P1.0 口产生高低电平地形成方波////////////// ACALL DELAY SETB P1.0 ACALL DELAY 10 CLR P1.0 AJMP MAIN ;////////////////////////////////////////////////// DELAY: MOV R1,#0FFH DJNZ R1,$ RET

五、定时器功能实例 5.1 定时1 秒报警 程序介绍:定时器1 每隔1 秒钟将p1.o 的输出状态改变1 次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN1.ASM): ORG 0000H AJMP MAIN ORG 000BH AJMP DIN0 ;定时器0 入口 MAIN: TFLA G EQU 34H ;时间秒标志,判是否到50 个 0.2 秒,即50*0.2=1 秒 MOV TMOD,#00000001B;定时器0 工作于方式 1 MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 11 SETB EA ;开总中断 SETB ET0 ;开定时器0 中断允许 SETB TR0 ;开定时0 运行 SETB P1.0 LOOP: AJMP LOOP DIN0: ;是否到一秒//////////////////////////////////////// INCC: INC TFLAG MOV A,TFLAG CJNE A,#20,RE MOV TFLAG,#00H CPL P1.0 ;////////////////////////////////////////////////// RE: MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 RETI END 5.2 频率输出公式 介绍:f=1/t s51 使用12M 晶振,一个周期是1 微秒使用定时器1 工作于方式0,最大值为65535,以产生200HZ 的频率为例: 200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电

基于51单片机

目录 1 引言 (1) 1.1设计要求 (1) 1.2方案论证 (2) 2 单片机和D/A转换器 (3) 2.1AT89C51单片机 (3) 2.2D/AC0808 (5) 2.3LED数码 (7) 3 电路原理与硬件实现 (9) 3.1单片机最小系统及端口连接 (9) 3.2原理介绍 (10) 3.3硬件调试 (13) 4 软件程序设计 (14) 4.1开发工具介绍 (14) 4.2软件流程图 (17) 4.3软件调试 (17) 结束语 (18) 致谢 (18) 参考文献 (18) 附录 (18)

基于51单片机的程控直流电压源 XXX XXXX物理与电子信息工程系,XXX 摘要:本设计是以ATM89C51单片机为控制核心的开关电源,具有输出电压可调,电压数字显示的功能。具体阐述了开关电源的基本原理及工作过程,电源各硬件模块的设计及软件设计。该电源硬件模块包括输入整流和滤波模块、单片机供电电源模块、D/A转换模块及LED显示模块。 关键词:稳压电源;单片机89C51;D/A转换 1 引言 随着电力电子技术的迅速发展,直流电源应用非常广泛,其好坏直接影响着电气设备或控制系统的工作性能。直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领域。传统的多功能直流稳压电源功能简单、难控制、可靠性低、干扰大、精度低且体积大、复杂度高。而基于单片机控制的直流稳压电源能较好地解决以上传统稳压电源的不足。其良好的性价比更能为人们所接受,因此,具有一定的设计价值。从上世纪九十年代末起,随着对系统更高效率和更低功耗的需求,电信与数据通讯设备的技术更新推动电源行业中直流|直流电源转换器向更高灵活性和智能化方向发展。设计的直流稳压电源主要有单片机系统、键盘、数码管显示器、D/A转换电路、直流稳压电路部分组成,数控电源采用按键盘输入数据,单片机通过D/A,控制驱动模块输出一个稳定电压。工作过程中,稳压电源的电压值由单片机输出,驱动LED显示,由键盘控制进行动态逻辑切换。以单片机为核心的智能化高精度简易直流电源的设计,电源采用数字调节、输出精度高,特别适用于各种有较高精度要求的场合。目前所使用的直流可调电源中,大多为旋钮开关调节电压,调节精度不高,而且经常跳变,使用麻烦。利用本数控电源,可以达到每步0.1V 的精度,输出电压范围0~9.9V ,电流可以达到500mA ,且数码显示直观。 电源采用数字控制,具有以下明显优点: (1)易于采用先进的控制方法和智能控制策略,使电源模块的智能化程度更高,性能更完美。 (2)控制灵活,系统升级方便,甚至可以在线修改控制算法,而不必改动硬件线路。 (3)控制系统的可靠性提高,易于标准化,可以针对不同的系统(或不同型号的产品),采用统一的控制板,而只是对控制软件一些调整即可。 1.1 设计要求 基本要求: (1)输出电压:范围0~9.9V步进0.1V纹波不大于10mv (2)输出电流:500mA (3)输出电压由数码显示

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; }

51单片机实例(含详细代码说明)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248=498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时, 延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平, 即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5.程序框图 如图4.1.2所示

51单片机与蓝牙串口通信程序

#include #include #include #include "LCD1602.h" #include "matrix_key.h" #define uint unsigned int #define uchar unsigned char #define Nop() _nop_() sbit P10 = P1^0; /*定义独立对地按键端口*/ sbit P11 = P1^1; /*定义独立对地按键端口*/ sbit P12 = P1^2; /*定义独立对地按键端口*/ sbit P13 = P1^3; /*定义独立对地按键端口*/ //shift键 bit shift_flag; bit call_flag ; bit CallIn_flag=0; bit reci_flag; bit reci_flag1; sbit sled_en_port = P3^6; /*定义数码管数据锁存器控制端口*/ sbit led_en_port = P2^5; /*定义发光二极管数据锁存器控制端口*/ sbit ds1302_en_port = P2^2; /*定义时钟的选片脚*/ uchar CallIn_Num[15];//={"00000000000"}; uchar CallOut_Num[15]={" "}; uchar m=0; //拨号指针 uchar temp='?'; uchar code clr[16]={" "}; uchar code lcd_table[16] = {"Ky: Cm: Re: "}; //uchar send_buff[15]; uchar reci_buff[15]={" "}; uchar z; //接收缓冲区指针 uchar time;//定时器中断次数 uchar code mun_to_char[]={"0123456789ABCDEF"}; /*1MS为单位的延时程序*/ void init(); void send(uchar cc); void send_f(uchar ccc); void interrupt_pro(); void key_pro(); void call_out();

基于51系列单片机的自动喷水系统

项目摘要 摘要 本系统由主要由四大部分组成:数据输入部分,数据显示部分,数据输出部分,数据处理部分。数据输入部分的功能是把要采集的数据转化成数字信号传入数据处理部分。数据显示部分的功能是把采集的数据显示出来。数据输出部分的功能是控制电磁阀来进行外部温湿度的调节。数据处理部分的功能是把采集进来的数据进行分析,输出要输出的信号控制数据的输出。 本系统的功能是采集温湿度并显示,从而控制电磁阀的输出,进而控制外面的温湿度使得外面的温湿度适合植物的生长。 关键词:单片机,自动灌溉,温湿度,LED English Abstract ABSTRACT This system mainly consists of four parts: data input, data display, data output, data processing. The data input portion of the function is to collect data into digital signal into the data processing section. Data display function is to collect data display. Data output portion of the function is to control the electromagnetic valve to external temperature and humidity regulator. The data processing part of the function is to collect in the data analysis, the output to output signals to control the output of the data. The function of this system is the collection of temperature and humidity and display, so as to control the electromagnetic valve to control the output, the outside temperature and humidity makes the outside temperature and humidity suitable for the growth of plants. KEY WORDS:Microcontroller, Automatic irrigation, Temperature and humidity

基于51单片机的双机串行通信

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级:xxxxxx 学号:13xxxxxxxxx 姓名:xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计

1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下: 图1.AT89C51(52) (1)数据缓冲器(SBUF) 接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,

基于51系列单片机最小系统的液晶显示

《创新设计报告》 基于51系列单片机最小系统的液晶显示 学院:机电与自动化学院 专业班级:电气自动化技术0802 学生姓名:刘刚 学生学号: 20082822077 指导教师:姚裕安 同组设计者:吴勇 (课程设计时间:2011年03月03日——2011年03月13日) 华中科技大学武昌分校

目录 1.设计题目 (02) 2.设计任务及要求 (02) 3.系统硬件电路设计 (02) 3.1设计电路原理图 (02) 3.2主要元器件清单 (03) 3.3 OMC12864-4(T6963c)的简介 (03) 4.系统软件设计 (05) 4.1程序流程图 (05) 4.2子程序功能介绍 (06) 4.3完整程序及其功能注释 (06) 5.系统调试故障分析 (12) 6.调试结果与设计任务分析 (13) 7.课设收获与建议 (13) 参考文献 (13)

1.设计题目 基于51单片机最小系统板实现“液晶显示汉字、数字、英文” 2.设计任务及要求 任务:最小系统板实现“液晶显示汉字、数字、英文”; 要求:错误!未找到引用源。对液晶显示操作技能训练;学会运用Protell 软件;错误!未找到引用源。绘制软件流程图、编写并调试程序、详细注释软件功能;错误!未找到引用源。对系统性能指标进行分析并提出改进方案;错误!未找到引用源。作品演示与讲解(硬件、软件、调试、改进、) 3系统硬件电路设计(含文字介绍、电路原理图) 3.1用Protell软件绘制电路原理图采用的是直接访问方式。如图(1) 直接访问方式是把内置T6963C控制器的液晶显示模块作为存储器或I/O设备直接挂在计算机的总线上。模块的数据线接计算机的数据总线上,片选及寄存器选择信号线由算机的地址总线提供,读和写操作由计算机的读写操作信号控制。 图(1) 图(1)中的引脚说明OCM12864-4与STC89C52RC接口: P0.0-0.7 <==========> D0-7 GND <==========> /CE P3.7 <==========> /RD VCC <==========> /RESET P3.6 <==========> /WR GND <==========> FG

51单片机与串口通信代码

51单片机与串口通信代码 2011年04月22日 17:18 本站整理作者:佚名用户评论(0) 关键字:串口通信(35) 串口调试 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。 程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #i nclude #i nclude #i nclude #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3 , flag,temp,ch; bit read_flag=0; sbit cp=P1^1; sbit DIR=P1^2; int i; unsigned int xdata *RAMDATA; /*定义RAM地址指针*/ unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ; void init_serialcomm(void) { SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收

PCON=0x00; ES=1; TMOD=0x21; //定时器工作于方式2,自动装载方式 TH0=(65536-1000)%256; TL0=(65536-1000)/256; TL1=0xfd; TH1=0xfd; ET0=1; TR0=1; TR1=1; // TI=0; EA=1; // TI=1; RAMDATA=0x1F45; } void serial () interrupt 4 using 3 { if(RI) { RI=0; ch=SBUF; TI=1; //置SBUF空 switch(ch) { case 0x01 :printf("A"); TI=0;break; case 0x02 :printf("B"); TI=0;break; case 0x03 :printf("C"); TI=0;break;

51单片机串口通信的原理与应用流程解析

51单片机串口通信的原理与应用流程解析 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。 串行口控制寄存器SCON(见表1)。 表1 SCON寄存器 表中各位(从左至右为从高位到低位)含义如下。 SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。 表2 串行口工作方式控制位 其中,fOSC 为单片机的时钟频率;波特率指串行口每秒钟发送(或接收)的位数。 SM2 :多机通信控制位。该仅用于方式2 和方式3 的多机通信。其中发送机SM2 = 1(需要程序控制设置)。接收机的串行口工作于方式2 或3,SM2=1 时,只有当接收到第9 位数据(RB8)为1 时,才把接收到的前8 位数据送入SBUF,且置位RI 发出中断申请引发串行接收中断,否则会将接受到的数据放弃。当SM2=0 时,就不管第位数据是0 还是1,都将数据送入SBUF,并置位RI 发出中断申请。工作于方式0 时,SM2 必须为0。

用51系列单片机实现语音输出

用51 系列单片机实现语音输出 本文是一编介绍如何通过 51 系列单片机来实现语音输出的文章,相信现在大家可以轻松地在网上,各种书本上找到如何用单片机来实现音乐及各种报警声的输出。当我在撑握了各音乐及报警声的输出技巧后,我就一直在想,是否可以用单片机实现语音的输出?且要如何才能实现语音的输出?后来在我查找和学习了各方面的资料后,终于找到了一种可以使单片机实用语音输出的方法,并且是一种很简单的方法,下面我就同大家分享我的成果。 原理在这样的,先在电脑中用COOL EDIT PRO 2.0 来记录我的语音,记录完成后再进行一定的编辑和处理,把一些多余的声音删去(因为在这里一秒的语音数据就要占去 8k 的空间)。然后再通过这个软件把我所要的语音信号输出转换为取样率为 8k 的数据(为文本格式),然后再编程使单片机每间隔 1/8k 秒输出一字节的数据。这样每一次输出的 8 位数据通过 DAC0800 数模转换,转换成相应的电流信号,然后再通过运放 LM358 转换成电压信号来驱动扬声器来发出语音信号。下面就一步一步详细教大家如何完成这些工作。 1.硬件 我们先按图(1)用面包板焊接好所需的线图(我就是用面包板做的),有条件的朋友可以自已做热转印板或请 PCB 厂家加工。只要大家的元零焊接正确且参数正确,硬件部份是没问题的。元零的参数如下: R1 R2 R4 R5 R6——1k R3———2k C1 C2———30P C3———100P C4———10uF Y1———12M U1———89C52 U2———DAC0800 U3———LM358 图(1) 2.软件 写入到单片机中的程式如下面所示。每个指令我做了注释,相信大家应都可在看得明的了。

51单片机50个实例代码

51单片机50个例程代码程序里有中断,串口等驱动,直接复制即可使用1-IO输出-点亮1个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.wendangku.net/doc/ef15366907.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit LED=P1^0;// 用sbit 关键字定义LED到P1.0端口, //LED是自己任意定义且容易记忆的符号 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 LED=1; //将P1.0口赋值1,对外输出高电平 LED=0; //将P1.0口赋值0,对外输出低电平 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 2-IO输出-点亮1个LED灯方法2 /*-----------------------------------------------

名称:IO口高低电平控制 论坛:https://www.wendangku.net/doc/ef15366907.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用1个字节对单个端口赋值 P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉, //ff换算成二进制是1111 1111 P1 = 0xfe; //P1口的最低位点亮,可以更改数值是其他的灯点亮 //0xfe是16进制,0x开头表示16进制数, //fe换算成二进制是1111 1110 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 3-IO输出-点亮多个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.wendangku.net/doc/ef15366907.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的多个LED灯

相关文档
相关文档 最新文档