首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
[51单片机]18B20驱动函数
】的更多相关文章
[51单片机]18B20驱动函数
/**********DS18B20.h**********/ #include "REG52.H" #include "INTRINS.H" sbit DQ = P3^3; //DS18B20的数据口位P3.3 extern unsigned char TPH;// 温度高位 extern unsigned char TPL;// 温度低位 extern unsigned char * DS18B20_GetTP();// 刷新温度值(2xx为-xx) /****…
keil对51单片机变量和函数的编译处理
(1)初始值不是0的全局变量 在程序调到main()函数执行前,除了要进行内存清零.初始化堆栈外,还需要将全局变量的初始值加载到RAM的指定区域(编译过程中为全局变量分配的空间). (2)未初始化的局部变量 实际的编译后的反汇编程序也看不到这些局部变量的初始化.这些局部变量占据哪些还未被使用的内存或者其他函数中局部变量释放的空间.倘若是后者,其他函数局部变量释放的空间并没有清零,所以使用这些释放空间的局部变量就一开始被赋值了,这是需要程序员小心的. void function() { unsig…
关于51单片机IO引脚的驱动能力与上拉电阻
单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. 单片机的输出电流,很大程度上是取决于引脚上的外接器件. 单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”:单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”. 这些电流一般是多少?最大限度是多少? 这就是常见的单片机输出驱动能力的问题. 早期的 51 系列单…
关于51单片机IO引脚的驱动能力与上拉电阻设计方案
转载自:http://bbs.dianyuan.com/article/20312-2 单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. 单片机的输出电流,很大程度上是取决于引脚上的外接器件.单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”;单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”.这些电流一般是…
MOS管、PCB、H桥、步进电机驱动电路、51单片机的IO口驱动能力、灌电流、拉电流、上拉电阻的选择
嵌入式开发PCB设计几点体会(转载):http://bbs.ednchina.com/BLOG_ARTICLE_3021801.HTMCollector-Emitter Saturation Voltage:集电极-发射极饱和电压 PCB常见封装(转载):http://blog.163.com/w_m314@126/blog/static/67849299201092211745865/?latestBlog 51单片机的IO口驱动能力.灌电流.拉电流.上拉电阻的选择:http://bbs.el…
51单片机 Keil C 延时程序的简单研究
应用单片机的时候,经常会遇到需要短时间延时的情况.需要的延时时间很短,一般都是几十到几百微妙(us).有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错.这种情况下,用计时器往往有点小题大做.而在极端的情况下,计时器甚至已经全部派上了别的用途.这时就需要我们另想别的办法了. 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的.比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: …
C/51单片机
1. 串口也可以有多根线的,但是各线之间没有协调同步发送,而是各自是独自发送的.并口是同步发送,同步一次8位同时成功同时失败,类比事务. 2. ASCII码的前32位是通讯预留的编码即使现在也用途广泛,但是在高级语言里,因为不直接和二进制打交道往往都是从新定义了一个新的通讯方式,而在单片机领域则是用ascii码方便大家通讯. 3. 单片机有很多的引脚,同样笔记本的主板也有很多的插槽,这点和笔记本的主板是相同的. 4. ===================51单片机部分=…
关于51单片机P0口的结构及上拉问题
1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构.高电平时,V1打开,V2截止:低电平时,V1截止,V2打开.这种情况下不用外接上拉电阻.而且,当V1打开,V2截止,输出高电平的时候,因为内部电源直接通过V1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以"驱动8个TTL负载"的原因. 2.P0作为一般端口时,V1就永远的截止,V2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平:截止时,P0口就没有输出了,(注意,这种情况就是所谓的高…
C8051F学习笔记:单片机的驱动能力
学习51单片机的时候我们就知道51单片机的I/O口的特点:P0口没有弱上拉,所以做地址线时不用上拉,但输出“1”时就要加上拉电阻,不然输出电平到不了高电平,P1~P3则不存在这个问题,每个输出管脚都有弱上拉电阻(也就是电阻很大的上拉电阻),造成的结果是输出高电平电流很小,为uA量级,驱动不了LED.数码管之类的,所以要么在外加一个NPN的三极管增强驱动,要么LED.数码管用共阳极接法(也就是LED正接VCC,负接MCU的I/O:数码管用共阳数码管,COM口接VCC). 虽然道理懂得,但很多时候脑…
51单片机实现对24C02进行页写、顺序读取并显示验证
//************************************************************************************* //**程序名称:51单片机实现对24C02进行页写.顺序读取并显示验证 //**编写人:**** //**修改人:**** //**程序目的:熟悉I2C总线协议,实现51模拟I2C时序和24C02通信 //**功能描述:51单片机将8个字节数据写入24C02的一页中,然后顺序读出,每隔1秒送P0口LED显示 //**其他…
STM32GPIO口8种模式细致分析(类比51单片机)
关于STM32GPIO口的8种工作模式,我们先引出一些问题? STM32GPIO口如果既要输入又要输出怎么办? 1.浮空输入模式 上图红色的表示便是浮空输入的过程,外部输入时0读出的就是0,外部输入时1读出的就是1,外部没有输入IO处于阻塞读不出电平状态. 用处:感觉在信号处理方面用的比较好,比如在读取一段一段的波形,可以清晰的知道什么时候是0信号,什么时候是1信号,什么时候是没有信号的. 类比:51单片机找不到类似的输入模式 2.上拉输入 上拉输入和浮空输入的区别是,上拉电阻的开关关闭了,…
基于51单片机IIC通信的PCF8591学习笔记
引言 PCF8591 是单电源,低功耗8 位CMOS 数据采集器件,具有4 个模拟输入.一个输出和一个串行I2C 总线接口.3 个地址引脚A0.A1 和A2 用于编程硬件地址,允许将最多8 个器件连接至I2C总线而不需要额外硬件.PCF8591由于其使用的简单方便和集成度高,在单片机应用系统中得到了广泛的应用,这篇文章是介绍IIC通信在ADDA转换芯片PCF8591中的应用. 关于IIC IIC总线通信协议的介绍在"基于51单片机IIC通信的AT24C02学习笔记"有详细的介绍. 关于…
51单片机I/O口直接输入输出实例(附调试及分析过程)
51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能作为I/O口(P1.0.P1.1以外): P2口除了作为普通I/O口之外,在扩展外围设备时,要用作高8位地址线: P3口除了作为普通I/O口之外,其每个引脚都有第二功能. I/O端口具有以下特性: ① 端口自动识别:无论是P0 P2口的总线复用还是P3口的功能复用,内部资源会自动选择,不需要通过指令…
[学习笔记]15个QA让你快速入门51单片机开发
一.C语言相关 Q1:sbit与sfr代表是什么?有什么作用? Q2:#define OSC_FREQ 22118400L这句宏命令里的“L”是什么意思? Q3:我粘贴了别人的代码,怎么发现没有unit这个类型? Q4:为什么好多变量都是char类型?它不是字符类型吗?怎么可以用来计数? Q4.1:51单片机中的char,int,long,float,double各占多少个字节,取值范围多大? Q5:unsigned char data是什么数据类型? Q6:void timer() inte…
51单片机---点亮一个LED灯
1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; } return 0; } 1.1 C语言常用的预处理命令 typedef的使用 typedef unsigned int u16; typedef unsigned char u8;`后面需要加上分号` 重新定义一些常用的关键词,可以增强程序的可移植性,因为在不同的编译软件上面,C语言的数据类型的关键词的…
51单片机学习笔记(清翔版)(13)——LED点阵、74HC595
如图3,点阵屏分单色和彩色,点阵屏是由许多点组成的,在一个点上,只有一颗一种颜色的灯珠,这就是单色点阵屏,彩色的在一个点上有三颗灯珠,分别是RGB三原色. 图4你可能没看出来,那么大块黄色的就是点阵屏,下面那个粉色的长条也是. 大的点阵屏实际上是由许多一小块一小块点阵屏拼接在一块的,最终形成一个大的,在做移动舞台时,它拆装方便,例如演唱会时,液晶的就不方便,运输也不方便,也容易损坏,而点阵屏就一快一块运输就可以,然后拼在一起. 单色点阵屏成本低,就不能像图4一样显示视频了,只能显示文字. 这是我…
51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯
关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储空间的大小,2*4K=8K 40:晶振最高频率40MHZ,单片机工作的速度 C(commercial):商业级.(还有I(industry):工业级)区别在于温度可用范围,商业级:0~85℃,工业级:-40~125℃,还有军品级:-55~160℃(这个不确定). PDIP:封装形式,双列直插式 07…
51单片机 | I/O口直接输入输出实例
51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能作为I/O口(P1.0.P1.1以外): P2口除了作为普通I/O口之外,在扩展外围设备时,要用作高8位地址线: P3口除了作为普通I/O口之外,其每个引脚都有第二功能. I/O端口具有以下特性: ① 端口自动识别:无论是P0 P2口的总线复用还是P3口的功能复用,内部资源会自动选择,不需要通过指令…
单片机中printf函数的重映射
单片机中printf函数的重映射 一.源自于:大侠有话说 1.如果你在学习单片机之前学过C语言,那么一定知道printf这个函数.它最最好用的功能 除了打印你想要的字符到屏幕上外,还能把数字进行格式化.例如十进制的33,用十进制 方式输出就是33,用十六进制的形式就输出成21,如果用字符形式输出,那就是ASCII码 表对应的’!’. 2. 51年代,一些人软件仿真的时候也很喜欢使用printf,但实际代码运行中,用的人则不多,因 为别说51年代,就是用AVR的,也会觉得printf这个函数耗费的…
51单片机和Arduino—闪烁灯实现
技术:51单片机学习.Keil4环境安装.Arduino环境安装.闪烁灯教程 概述 本文提供51单片机.Arduino单片机入门软件安装和一些需要使用的软件介绍,为后续单片机.嵌入式开发做准备.本文还对LED闪烁代码进行讲解,让初学者更好的理解51单片机和Arduino单片机,后续也会发布单片机对传感器的使用文章 详细 代码下载:http://www.demodashi.com/demo/14663.html 一.C51环境安装和点灯测试 1.keil4软件安装 步骤1: 到百度云盘…
【转载】51单片机data,bdata,idata,xdata使用注意事项
"51单片机编程在不同内存空间data xdata bdata定义变量的注意事项": 关键词:51 单片机 编程 不同 内存空间 data xdatabdata 定义 变量 注意事项 1.data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值. 2.data区内最好放局部变量. 因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率.当然静态局部变量除外,其内存使用方式…
#51单片机#蓝牙模块(ATK-SPP-HC06从机串口)的使用方法
#include <AT89X51.H> #include <intrins.h> // 函数原形定义 #define uchar unsigned char #define uint unsigned int void main (void); // 主函数 void LED_OUT(uchar X); // LED单字节串行移位函数 void LED_print (uchar p, uchar x) ; unsigned char code LED_0F[]; // LED字模…
c语言编写51单片机中断程序,执行过程是怎样的?
Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h> void main(void) { EA=1; //开放总中断 EX0=1; //允许使用外中断 IT0=1; //选择负跳变来触发外中断 P0=0xff; //关闭所有P0口的LED灯 while(1); //无限循环,}void it0(void) interrupt 0 using 0 //外中断0的中断编号为0{…
基于51单片机的CAN通讯协议C语言程序
//-----------------------函数声明,变量定义-------------------------------------------------------- #include <reg52.h> sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x0…
ESP8266 AT指令开发(基于STC89C52单片机): 测试下诱人的程序(51单片机,8266,MQTT远程通信控制)
前言 实现的功能,APP通过SmartConfig给Wi-Fi模块配网并绑定设备,然后通过MQTT远程控制开发板的继电器, 简而言之: 51单片机+ESP8266用AT指令实现实现MQTT,(连接的本人云服务器上的MQTT服务器软件) 订阅的主题:user/Wi-Fi的MAC地址 发布的主题:device/Wi-Fi的MAC地址 下载单片机程序 安装APP 调整拨动开关-51单片机和ESP8266通信 跳线帽 打开APP 选择添加设备 手机连接自家的路由器,输入路由器密码 长按开发板 "输入P0…
51单片机局部变量占用ram的问题
51单片机局部变量占用ram的问题 一.问题 自从工作以来基本不使用51或者增强型51之类的单片机.最近调试芯圣HC89S003F4增强型51,移植了32的实用代码,结果发现RAM爆了!!! 二.实践 为了看出问题,我又重新建立了一个简单工程. #include <reg52.h> int test(void) { char a[20]; return 1; } void main(void) { test(); while(1); } 结果a改多大,RAM就加多少. 再看STARTUP.A5…
使用内存地址点亮LED—跟51单片机一样写代码教学(初步入门)
51单片机点亮一个小灯 #include <rge52.h> sbit LED = P0^ void main(void) { P0 = 0XFE; // 总线操作 sfr P0 0X80 LED = ; // 位操作 } STM32中 STM32通过一个寄存器控制电平的输出ODR :CRL CRH实现在端口的配置(用绝地地址,目前我们没有寄存器映射,上篇文章有写.) 配置PC2使LED点亮 下图为GPIOX_CRL的配置说明 (四位控制一个GPIOx的端口我们要控制PC…
51单片机通过ESP8266模块与手机进行通讯(单片机)
相关连接和资料下载: 个人博客 资料下载 Step1:配置ESP8266 通过USB转TTL模块把ESP8266模块和电脑连接起来,如图: 把ESP8266模块的VCC,GND,CH_PD,UTXD,URXD口分别接USB转TTL模块的3.3v,地,3.3v,RXD,TXD 连接好后,就准备用电脑用串口调试助手向ESP8266发送AT指令. 串口调试助手下载地址:百度云盘 设置好串口调试助手的串口和波特率,ESP8266默认波特率为115200,把串口调试助手的波特率调为115200,勾选左下角…
51单片机—使用PWM对直流电机调速
文章目录 - 什么是PWM - PWM是怎么对直流电机进行调速的 - 通过定时器中断实现PWM调速 - 上代码 - 什么是PWM PWM(脉宽调制),是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率. (脉冲可以理解为是IO口的一次高低电平改变) - PWM是怎么对直流电机进行调速的 使用PWM对电极调速时,是靠改变占空比(改变脉冲宽度)来控制输出电压的,电压较小电机转速就会下降:再通过改变周期(脉冲的周期)来控制其输出频率,脉冲频率对电机的转速有着决定性作用,脉冲频率越高连续性就越…
51单片机I/O引脚IO口工作原理
51单片机I/O引脚IO口工作原理 一.51单片机管脚p0.p1.p2.p3口区别如下: 1.意思不同P0口作输出口用时,需加上拉电阻.P0口有复用功能.当对外部存储器进行读写操作时,P0口先是提供外部存储器的低8位地址,供外部存储器地址锁存器锁存,然后充当数据线,用于写出或读入数据.P1口.P2口…