最近当了单片机课设的助教,又再次接触了51单片机。发现初学者还看不太原理图,不能理解单片机 led灯,蜂鸣器,数码管是怎么操作的。现在结合原理图讲解一下怎么操作这些外设模块!我们就以一些初始化代码进行讲解。
注:这里使用的是蓝桥杯51单片机的板子!
1.我们看一下这段关闭蜂鸣器代码:
P2=P2&0x1f|0xa0; //选择蜂鸣器模块
P0=0x00; //关闭蜂鸣器
P2&0x1f ----是P2的高三位置0,低5位保持不变(任何数&0等于0,任何数&1保存不变)--只想 控制高三位,再或上0xa0 是选择蜂鸣器 ----看图蜂鸣器是Y5(图一所示),而5对应的二进制是101从而P2^7=1, P2^6=0,P2^5=1 (图二可见) 其他没选择的都为0. 所以P2=1010 0000 =0xa0。选择蜂鸣器这个功能 后, P0=0x00(P0是数据),即关闭蜂鸣器。总结一下,先P2=P2&0x1f|0xa0选中蜂鸣器,再 P0=0x00给蜂鸣器模块赋值关闭蜂鸣器
图一
图二
2.关闭led灯代码
P2=P2&0x1f|0x80; //选择led灯模块
P0=0xff; //关闭所有led灯
和上面思路差不多,P2&0x1f是高三位,置0 ,低5位,不变。然后我们看原理图led模块是Y4,而4对应的二进制 是100 ,(图 三),所以我们对应的P2^7=1,P2^6=0,P2^5=0(图二);对应的P2=1000 0000 =0x80; 所以我们这里是或上0x80.然后我们再看led模块的原理图,是共阳极(所有led灯都一起接了VCC高电平),我们另外一端也就是P0端口,给0才能亮,给1就灭,所以我们P0=0xff就是关闭所有led灯。
图三
3.关闭所有数码管
P2=P2&0x1f|0xc0;P0=0xff; //位选,选中8跟数码管。
P2=P2&0x1f|0xe0; P0=0xff;//段选,熄灭数码管
这里有4句代码,我逐一讲解----首先第一句代码就是选中数码管位选功能---数码管位选为Y6(图四)所以P2=P2&0x1f|0xc0 选中数码管位选功能。第二句代码P0=0xff,即8位全给高电平,选中8根数码管。第三句代码P2=P2&0x1f|0xe0 选中Y7即选中数码管段选功能(图五),P0=0x00即都给高电平,因为这款单片机是共阳极数码管所以给高电平没有数据显示(都处于熄灭状态)这样数码管就初始化成功了。
图四
图五
最后给大家附一个这款单片机的原理图http://链接:https://pan.baidu.com/s/1PZ1PuM7DuiakobC7JfLGiw?pwd=6666 提取码:6666