| C51单片机在继电控制应用中的经验总结 (责任编辑:admin)单片机在工业控制中应用非常的广泛,如单片机化的电气传动及控制系统中,单片机相当于系统中的一个零部件,系统不需要额外增加体积、质量及能耗,为系统向小型化、智能化、节能化方向发展打下基础。这些控制系统中对于按键输入的的使用是最为频繁的,按键的使用看似简单,但是有些事项如果你稍不注意,就会造成很大的损失。以下是本人在按键的实际应用中碰到的问题及解决希望能对单片机初学者有所帮助。
 以简单的单机单转为例
 1、电路图如下:
 
   1、 程序如下:
 #include
 #define uint unsigned int
 #define uchar unsigned char
 sbit key_1=P0^4;
 sbit key_2=P0^5;
 sbit jidianqi=P1^0;
 void delay(unsigned int k)
 {
 unsigned int i,j;
 for(i=0;i
 {
 for(j=0;j
 
 }
 }
 /******主函数**********/
 void main()
 {
 P0=0XFF;
 while(1)
 {
 if(!key_1)
 {
 delay(10);
 if(!key_1)
 {
 jidianqi=0;
 }
 }
 if(!key_2)
 {
 delay(10);
 if(!key_2)
 {
 jidianqi=1;
 }
 }
 }
 }
 2、 由于P1至P3端口都被占用只能用P0端口作为按键的输入,有程序可知P0^4、P0^5分别作为继电器的吸合及断开按钮,P0.X端口的内部结构如下:
 
   如果单片机的P1至P3端口都被占用,只能用P0端口作为按键的输入,从上图知道P0端口与其他三个端口不同,其内部没有上拉电阻的,其他三个内部都有上拉电阻【提升电阻】,从P0端口的原理可以知道,当P0端口作为I/O端口时,CPU 内部发出控制电平“0”,封锁“与”门则场效应管VT0截止,所以如果不接上拉电阻R则P0口的处于悬浮状态,使程序不能正常执行,实际引用中会出现继电器一会吸合一会断开反复如此,造成继电器的误动作。如果加上上拉电阻,在按键没有按下的情况下,则相应的P0端口为高电平,就不会执行相应的程序,继电器不会动作,当有按键按下时相应的端口为低电平,执行相应的程序从而使继电器动作,这样就避免了继电器的误动作。所以我们在实际应用中在P0端口作为输入端口是也应加上提升电阻,而不是书上说的再只有作为输出时才加上拉电阻。
 |