|
|
楼主 |
发表于 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电流。也就是说通过调节电阻的大小,可以控制灯珠的最大亮度。
知识点(13) 引脚定义 sbit LED1=P3^2;
引脚定义格式:sbit 名称=引脚标号;
想要控制一个引脚,必然要先定义一个引脚,这句话的意思就是将单片机P3.2引脚取了一个别名LED1,以后你只要在程序中写上LED1,代表的就是这个引脚。
知识点(14) 引脚控制 LED1=0;
如此只要在程序中写上LED1等于0、等于1,就能随心控制引脚输出的电压啦,快来试试吧。
- #include<reg51.h>
- sbit LED1=P3^2;//先定义,才能使用
- void Delay1000ms() //@12.000MHz
- {
- unsigned char i, j, k;
- //_nop_();
- //_nop_(); 这两个用不到,直接删掉
- i = 46;
- j = 153;
- k = 245;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- //此为分界线,函数的具体内容写在上面;
- //下面是具体的程序,写函数名字就可以调用了。
- main()
- {
-
- while(1)
- {
- LED1=0;//低电平灭
- Delay1000ms();//每一行程序结尾要加分号
- LED1=1;//高电平亮
- Delay1000ms();//这个程序作用就是1秒亮1秒灭
- }
-
- }
复制代码
|
| |