模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

[单片机课堂] 第四课:听话的单片机

  [复制链接]
发表于 2016-9-4 11:39:08 | 显示全部楼层
坐等更新!               
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-9-4 12:32:25 | 显示全部楼层
本帖最后由 我爱萝丽爱萝丽 于 2016-10-12 10:43 编辑

1.1 引脚定义和输出

我们要想让单片机听话的为我们做事,首先要明白单片机能做什么。
很多人可能会想当然:让单片机输出不同的电压,来控制电机转的快慢。事实上单片机能直接做的事只有两件:输出高电平和低电平。


知识点(10) 高电平 低电平
在单片机术语中,只有真和假、1和0的概念,对应于引脚的输出,也只有高电平和低电平两种。
如果我们在程序中是1,单片机实际的输出就是高电平,接近单片机的电源电压5V;
如果我们在程序中是0,单片机实际的输出就是低电平,大概0V;


那可不可以用单片机输出的5V来直接驱动电机、灯泡呢?


知识点(11) 引脚驱动能力
单片机输出低电平时,能流入的电流大概20ma。
单片机在输出高电平时,输出电流就很小了,不到1ma。(也有别的模式,这个以后会讲)
(单片机在通电后,引脚的默认输出都是高电平)


也就是说,单片机直接驱动的话,20ma点亮个发光二极管还行,想驱动上百ma电流的大功率灯珠,就要加放大器了。


知识点(12) 单片机控制三极管
如果你高中的物理知识还没有全部还给体育老师,那么你应该知道,三极管可以放大电流。
看下面这个电路图,如果单片机输出低电平0V,没有电流流过,自然也不能放大,LED不发光,我们可以定义一下:低电平关闭三极管。
如果单片机输出高电平5V,经过电阻以后,会有一个很小的电流流过,三极管放大电流,LED发光,同样可以定义:高电平打开三极管。
简单的估算:假设经过电阻的电流是1ma,三极管放大150倍,大概就是150ma电流。也就是说通过调节电阻的大小,可以控制灯珠的最大亮度。

第四课:听话的单片机  作者:我爱萝丽爱萝丽 2481



知识点(13) 引脚定义    sbit LED1=P3^2;
引脚定义格式:sbit 名称=引脚标号;
想要控制一个引脚,必然要先定义一个引脚,这句话的意思就是将单片机P3.2引脚取了一个别名LED1,以后你只要在程序中写上LED1,代表的就是这个引脚。


知识点(14) 引脚控制    LED1=0;
如此只要在程序中写上LED1等于0、等于1,就能随心控制引脚输出的电压啦,快来试试吧。


  1. #include<reg51.h>

  2. sbit LED1=P3^2;//先定义,才能使用


  3. void Delay1000ms()                //@12.000MHz
  4. {
  5.         unsigned char i, j, k;

  6.         //_nop_();
  7.         //_nop_(); 这两个用不到,直接删掉
  8.         i = 46;
  9.         j = 153;
  10.         k = 245;
  11.         do
  12.         {
  13.                 do
  14.                 {
  15.                         while (--k);
  16.                 } while (--j);
  17.         } while (--i);
  18. }

  19. //此为分界线,函数的具体内容写在上面;
  20. //下面是具体的程序,写函数名字就可以调用了。

  21. main()
  22. {
  23.         
  24.         while(1)
  25.         {
  26.                 LED1=0;//低电平灭
  27.                 Delay1000ms();//每一行程序结尾要加分号
  28.                 LED1=1;//高电平亮
  29.                 Delay1000ms();//这个程序作用就是1秒亮1秒灭
  30.         }
  31.         
  32. }
复制代码




回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-4 13:28:25 | 显示全部楼层
学习了,好东西               
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-4 19:14:44 | 显示全部楼层
这样引脚不接限流电阻合适吗?
一个IO输出20mA,LED压降1.7V,电源5V,剩余3.3V都由单片机消耗
单片机光一个IO耗散功率66mW,
印象中整个单片机输出电流最大100mA,那么输出驱动数码管时,
光IO上耗散功率就有330mW,我觉得这样是不合适的。

点评

单片机远比数据手册上耐操,5V直驱数码管,工作多年也没问题  详情 回复 发表于 2016-9-4 23:03
回复 支持 0 反对 1

使用道具 举报

发表于 2016-9-4 20:49:59 | 显示全部楼层

萝莉大神,我在书上看到说11.0592MHZ执行nop需要0.0904us,而且有些延时函数里只有nop,这里为什么删掉呢
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-4 21:10:36 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 0 反对 1

使用道具 举报

发表于 2016-9-4 21:12:11 | 显示全部楼层
头文件没有声明
#include <intrins.h>
不能直接调用nop
这里的1秒只是相对的相差几个0.904us
并不影响实际控
这里只制作为演示教程
并没有运用到需要精确控制的项目中
误差是允许的、
请大家不要去钻牛角尖
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-9-4 23:03:03 | 显示全部楼层
yanjian 发表于 2016-9-4 19:14
这样引脚不接限流电阻合适吗?
一个IO输出20mA,LED压降1.7V,电源5V,剩余3.3V都由单片机消耗
单片机光一 ...

单片机远比数据手册上耐操,5V直驱数码管,工作多年也没问题
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-4 23:30:41 | 显示全部楼层
支持罗丽,继续发挥
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-5 11:13:10 | 显示全部楼层
学习学习.....   
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-5 13:47:06 | 显示全部楼层
竟然看懂了                                
回复 支持 0 反对 1

使用道具 举报

发表于 2016-9-5 19:03:10 | 显示全部楼层
先顶一个,赞赞赞
回复 支持 0 反对 1

使用道具 举报

发表于 2016-9-5 19:20:12 | 显示全部楼层
顶                                            
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-5 19:27:09 | 显示全部楼层
我也看懂了,坐等楼主更新。
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-5 21:39:10 | 显示全部楼层
跟随大神脚步,为什么帖子写了电路图的地方我都看不到电路图?
回复 支持 0 反对 1

使用道具 举报

发表于 2016-9-6 00:38:19 | 显示全部楼层
竟然看不懂    竟然看不懂
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-6 12:08:05 | 显示全部楼层
萝丽版采用NRF24L01无线模块的自制接收机,是否只要控使用24L01无线模块,就可以使用?
回复 支持 0 反对 1

使用道具 举报

发表于 2016-9-7 13:05:30 | 显示全部楼层
楼主辛苦了,等着更新。
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-7 15:11:52 | 显示全部楼层
努力的看了几遍,还是似懂非懂,要加油呀!
回复 支持 0 反对 1

使用道具 举报

发表于 2016-9-8 10:23:32 | 显示全部楼层
顶一个,学习中!
回复 支持 0 反对 1

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!