单片机

51单片机+ESP8266无线通讯点亮LED灯

匿名 (未验证) 提交于 2019-12-03 00:25:02
ESP8266与51单片机无线通信控制LED灯实现思路其实很简单.串口通信中我们很容易就可以实现发送字符控制LED的反转,其实要实现无线通信,无非就是要用无线的ESP8266WiFi模块去代替有线的串口通信收发数据,以下案例中发的相关数据进入串口中断服务程序中,串口中断收到数据,进行条件判断,从而去执行中断服务程序中的指示,进而控制LED灯的反转. 实战经验分享 硬件 : 51单片机 ESP8266-01模块 USB转TTL DCDC降压器 干电池 面包板 杜邦线若干 编程软件 :keil 1.ESP8266的三种工作模式 (1)AP模式(模块作为热点,可以发散出wifi信号,实现手机或电脑直接与模块通讯,实现局域网无线控制) (2)STA模式(模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制) (3)STA+AP模式(两种模式的共存即可通过互联网控制可实现无缝对接切换) 注:AT指令网上有,这里不做过多介绍,下面调试用到的都做了详细介绍. 2.ESP8266可以实现的主要功能 (1)串口透传(数据传输可靠性好,Max为46088bps) (2)PWM调控(灯光调节,三色LED调节,电机调速) (3)GPIO控制(控制开关,继电器等) 3.ESP8266与USB转TTL的连接 图一为ESP8266的接线方法用于图二中的2,图二中的1可以直接与电脑的USB接口相连

51单片机对SAA7113初始化和控制的程序代码

匿名 (未验证) 提交于 2019-12-03 00:22:01
用51单片机对7113初始化和控制   SAA7113的初始化就是对寄存器配置合适的参数,使其能够有符合要求的输出。寄存器配置通过I2C总线来进行,很多可以控制I2C总线的器件都可以作为主器件对7113进行初始化,这里介绍用51单片机初始化7113的例子。   51单片机和7113的硬件连接非常简单,只要把单片机的两个I/O口(如P1.0、P1.0)直接和7113的SCL、SDA管脚相连,再加上上拉电阻即可。   用单片机初始化7113的主要任务是程序的编写,首先要熟悉I2C总线协议,根据I2C总线的原理写出启动、停止、应答信号等的子程序,由子程序再写出发送、接收1个字节的程序,然后根据7113的寄存器操作格式写出读写寄存器的程序,最后根据以上的子程序写出初始化7113的程序段。   对7113的控制一般是改变色度、亮度等指标以及输出管脚的输出信号,这可以通过修改相应寄存器的值来完成,程序上写出“读写命令”即可。   下面以程序段的形式给出初始化SAA7113以及读写寄存器的具体例子,以供参考。   SDA BIT P1.0   SCL BIT P1.1   I2C_ERROR BIT 00H ;I2C总线数据传输出错标志   DeviceaddressW EQU 4AH ;7113器件地址+写   DeviceaddressR EQU 4BH ;7113器件地址+读  

串口通信实现两个单片机之间简单数据数据收发

匿名 (未验证) 提交于 2019-12-03 00:22:01
使用两个单片机开发版,串口3.0与3.1交叉互接,两个开发版分别烧写串口接收,串口发送的单片机程序观察P0端口输出值的变化 ============接收串口的单片机程序=========== #include <reg52.h> #define uchar unsigned char uchar recieve; //接收到的数据存放在该变量中 void delay(uint z) { uint x,y; for(x = z; x > 0; x--) for(y = 114; y > 0 ; y--); } void UART_init() { TH1 = 0xfd; TL1 = 0xfd; //比特率9600 TR1 = 1; //启动T1定时器 SM0 = 0; SM1 = 1; //串口工作方式1,10位异步,一位起始位,一位停止位,8位数据位 REN = 1; //串口允许接收 //开总中断 //串口中断打开 } /*至此串口配置完成*/ void main() { { recieve=SBUF; //将接收的数据传递给recieve } } ==================发送串口=================== #include <reg52.h> #define uchar unsigned char uchar num=1; //存放要发送的数据 /

8051单片机的LCD1602使用

匿名 (未验证) 提交于 2019-12-03 00:19:01
LCD1602简介 LCD:液晶显示器。 1602:16个字符×2行。 首先来看一下LCD1602在proteus8中的模型,在proteus8中,它叫做LM016L。我们从仿真元器件上可以看到它和实物图的区别, 带有背光的LCD实物图上有16个引脚,分别是15号引脚BLA(正),16号引脚BLK(负),仿真元件省去了15,16引脚。 仿真电路图如下: 需要说明的是,3好引脚被称作是液晶驱动电压,作用是调整对比度,可以通过电位器改变阻值的大小来改变对比度。在此处,我将对比度设置为不可以调节的。(直接接一个5KΩ的不可变电阻)我使用了P3.4,P3.5,P3.6作为控制信号来操作1602。 对外部硬件的操作需要知道外部设备的时序图才能操作。1602的速度对于8051而言是较慢的(12MHZ)。属于慢速设备,因此对于它的读写需要等待一会时间才可以进行。(其实从上面的指令表可以看出LCD1602提供了读操作的,但是我去读1602的忙信号总是没作用。由于我使用了P1口,所以读之前需要给P1口写高电平,即使这么做了,还是读不到1602)所以我选择等待一会儿再去给1602写。具体代码如下: #include<reg52.h> #include<string.h> #include<intrins.h> #define uchar unsigned char #define uint

AVR单片机教程――按键状态

匿名 (未验证) 提交于 2019-12-03 00:08:02
好久没更新了,今天开始继续,争取日更。 今天我们来讲按键。开发板的右下角有4个按键,按下会有明显的“咔嗒”声。如何检测按键是否被按下呢?首先要把按键或直接或间接地连接到单片机上。与之前使用的4个LED不同,4个按键没有全部连接到单片机上――左边2个是连接的,右边2个通过按键上方标有B2、B3的接口引出(从左到右分别为B0、B1、B2和B3)。如果要使用B2、B3,要用杜邦线连接到16个单片机引出针脚上。 <ee1/button.h> 这里 是库函数手册。值得一提的是1.1版本的库中,换用枚举类型表示按键等设备,不再使用整数与宏定义(但用整数也是兼容的)。在Atmel Studio 7.0中写代码时,编辑器会提示函数接口,可以根据参数类型知道应该写什么。 对于单片机而言,按键是一种输入设备。程序都有零个或若干个输入,一个或多个输出,而我们学过的唯一一种输出设备就是LED。所以理所当然地,今天我们要用按键来控制LED:按键按下,LED亮起;按键抬起,LED关闭;4个按键分别对应4个LED。 我们先来实现一个简单的版本――只考虑一个按键和一个LED。 button_down button_down 1 #include <ee1/led.h> 2 #include <ee1/button.h> 3 4 int main(void) 5 { 6 led_init(); 7 button

IIC时序详解

匿名 (未验证) 提交于 2019-12-03 00:03:02
AT24C02是由ATMEL公司提供的,IIC总线串行EEPROM(electronic eraser programmer read only memory),其容量为2kbit(256B),工作电压在2.7v"5.5v之间,生产工艺是CMOS。 一般数字芯片都在左下角和右上角为GND,VCC。容量的计算方法:AT24Cxx :01"1024 容量 = xx * 1kbit。 写入过程: AT24C系列EEPROM芯片的固定部分为1010,A2,A1,A0引脚接高低电平后得到确定的3位编码,形成7位编码即为该器件的地址码。 单片机进行写操作时,首先发送该器件的7位地址码和写方向位”0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。传送数据时,单片机首先发送一个字节的被写入存储器的首地址,收到存储器器件的应答后,单片机就逐个发送数据字节,但每发送一个字节后都要等待应答。AT24C系列片内地址在接收到每一个数据字节地址后自动加1,在芯片的“一次装载字节数”限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。 字节写: 页写: 读入过程: 单片机先发送该器件的7位地址码和写方向位“0”(

单片机知识点

匿名 (未验证) 提交于 2019-12-02 23:47:01
1. 在单片机应用系统中,为节省 I/O 引脚,多个 LED 数码管显示电路常采用 动态 显示方式。动态显示方式涉及段选和位选,共阴极位选是低电平选通,段选是高电平选  通;共阳极位选是高电平选通,段选是低电平选通。 2. 中断的处理过程按顺序包括:中断请求,中断响应,中断处理,中断返回。 4. IT=0 是脉冲触发方式,IT=1 是低电平触发方式。 5. P0,P2,P3口有第二功能,P1口只作为输入输出口。 6. 以 MCS-51 单片机为例,说明 CPU 相应中断的顺序怎样?   a. 当处于同一优先级时:按照外部中断0,定时/计时器0,外部中断1,定时/计时器1,串行口中断的顺序   b. 当处于不同优先级时:按照从高优先级到低优先级执行。   c. 当处于中断嵌套时:当一个中断正在执行的时候,如果事先设置了中断优先级寄存器 IP ,那么当一个高优先级的中断到来的时候会发生中断嵌套。 7. 与 :同时为1,结果才是1。 或:只要有一个1,结果就是1。 异或:相同是0,不同是1。 8. 定时/计数器模式1,响应中断后,需要重载计数初值。 定时1 s ,采用模式一以50 ms 为定时基准,计数20次。 9. 机器周期 = 12 个振荡周期。振荡周期 = 1 / 晶振频率 。由此可求出机器周期 T 。  定时器计数初值 X 公式:t = (2^N - X)*T 。 t

课设 - 基于单片机的简易数字电压表设计(电路+程序)

匿名 (未验证) 提交于 2019-12-02 23:40:02
点击链接,下载海量电子设计学习资料! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect 以单片机为核心器件,组成一个简单的直流数字电压表。 (1)采用1路模拟量输入,能够测量0-5V之间的直流电压值。 (2)电压显示可采用4位LED数码管显示,至少能够显示两位小数。 简易数字电压表的制作,主要涉及数据(电压)测量、A/D转换及控制显示方面的知识。 (1)A/D转换采用ADC0808、0809实现。 (2)电压显示采用4位的LED数码管。 (3)单片机选用AT89C51 系统初步方案设计 A/D转换器是实现模拟量向数字量转换的器件,按转换原理可分为四种:计数式A/D转换器、双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。 目前最常用的A/D转换器是双积分式A/D转换器和逐次逼近式A/D转换器。前者的主要优点是转换精度高,抗干扰性能好,价格便宜,但转换速度较慢,一般用于速度要求不高的场合。后者是一种速度较快、精度较高的转换器,其转换时间大约在几微秒到几百微秒之间。 ADC0809是一个8位8通道的逐次逼近式AD转换器。 仿真图如下: 代码的具体实现,如下:

单片机学习

匿名 (未验证) 提交于 2019-12-02 23:40:02
版权声明:这里将不定期发布一些技术上分享,如对文章有任何意见或者建议,欢迎评论,转载请注明出处。 https://blog.csdn.net/goal_ff/article/details/91413653 https://blog.csdn.net/liuxizhen2009/article/details/22802507 https://blog.csdn.net/hkh5730/article/details/25145651 https://blog.csdn.net/lijing198997/article/details/29839505 文章来源: https://blog.csdn.net/goal_ff/article/details/91413653

基于RDA5820,51单片机制作的收发一体收音机,附完整c程序

匿名 (未验证) 提交于 2019-12-02 23:38:02
大学学过简单的51单片机,广播行业工作7年一直没机会用,前段时间突然想起还有这个,就整了个收音机。 电源方案使用的IP5306,最大输出2.1A。功放使用的是PAM8403,5v,4Ω3Wx2。板子画的不好见谅! 完整程序下载地址: https://download.csdn.net/download/u014040765/11231301 文章来源: https://blog.csdn.net/u014040765/article/details/91345099