关键词不能为空

当前您在: 主页 > 英语 >

郭天祥51单片机笔记

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 15:52
tags:

-

2021年2月1日发(作者:播弄)


1




二极管



导通电流

I



3mA-10mA



导通压降


v



1.7V





排阻计算公式:


R = VCC(5V)-v(1.7V)/I(3mA)





2




电源指示灯



开关电源:


内部有开关控制电流大小,不稳定。



去耦电容:


稳压,去波。



3




锁存器 (


74HC573




OE



OutEnable


, 低电平有效(必须为低电平)




输入 端:


OE



1




LE(11


锁存端


diola)



D



D0(2)-D7(9)


,一般接


P1^0-P 1^7





输出端:


Q



1Q-8Q





Z

< br>:


高阻状态,非高非低电瓶。



LE



为高时,


Q

端与


D


同变换;为低电平时,


Q< /p>


端保持上次状态。
















sbit


LED00 = 0x80;

//


位指针;指针大小占一个字节;指针控制一个位的值;



sfr


LED0 = 0x80;





//


字节 指针;指针大小占一个字节;指针控制一个字节的值;









4



51< /p>


库函数



头文件:



#include



函数:






unsigned char _crol_(unsigned char c,








unsigned char b);



描述:


The _crol_ routine rotates the bit pattern for the character c left b bits. This






routine is implemented as an intrinsic function. The _crol_ routine returns the






rotated value of


c.





5)


蜂鸣器



名称:


b:


基极;


C:


集电极;

< p>
e:


发射集;


原理:


e< /p>


极发射电子;



b


极接低电平时,


ce


导通,


并且放大 电流;



b


接高电平时,


ce


截止。



JPFMQ< /p>



P3.6


管脚。



分类:有源蜂鸣器;无缘蜂鸣器。


(源:

< br>震荡源)



Proteus


:< /p>


buzzer-


有源;


sounder< /p>



speaker-



无源。



端口电压:

< br>0.02v




6)


数码管



P0


管脚:


没有上拉电阻,所有有三态。



P1



P2



P3


管脚:


有上拉电阻,没有


三态。< /p>



分类:


共阴极;共阳极。



显示方法:


静态,动态。


< p>
段选:


P0.0-P0.7


位选:


P2.0-P2.7














7)


继电器



接口:


P3.7



< br>D4:


引流二极管,防止断电烧坏电炉


原件。

< p>











8


)独立键盘



K1-K4



P3.2-P3.5




K5-K8



P1.4-P1.7




独立键盘检测程序:



#include



void


main


()



{





while


(


1


)




{






if


(


K1


==



0


)






{






delay


(


20


);


//


大约延时


10-20 ms






if


(


K1


==



0


)







{







< br>//


确独立按键


K1


按下







}






}





while


(!


K1


);


//


确认为一次动作




}



}



9



4*4


矩阵键 盘



行线:


P1.0-P1.3




竖线:


P1.4 -P1.7




优点:


占用端口少,硬件电


路简单。



缺点:


编程较复杂。



矩阵键盘的检测方法:


扫描


法和线反转法。

< p>



程序实例:




1)



扫描法



#include



#define uchar unsigned char


#define uint unsigned int



uchar i


,

< br>j


,


temp_num


,


num


=



16


;


uchar code scan


[]



=



{


0xf e


,


0xfd


,


0xfb


,


0xf7


};

< p>
//1111 1110 - 1111 0111


uchar code coding


[][


4


]< /p>



=



{








//


扫描码








0xee

,


0xde


,


0xbe

< p>
,


0x7e


,



0xed


,


0xdd


,


0xbd


,


0x7d

< br>,








0xeb


,


0xdb


,


0xbb


,


0x7b


,



0xe7


,


0x d7


,


0xb7


,

0x77



};



uchar code num_code


[]



=



{


0x c0


,


0xf9


,

0xa4


,


0xb0


,

< p>
//


数码管


0-16


编码



0x99


,


0x92


,


0x82


,


0xf8


,



0x80


,


0x90


,


0x8 8


,


0x83


,



0xc6


,


0xa1


,


0x86


,


0x8e


,



0xfe


};









void


delay


(


uint k


)




//


延迟函数




{









uint data i


,


j


;






for


(


i


=


0


;


i


<


k


;


i


++)






{


for


(


j


=


0


;


j


<


180


;


j


++)





{;}}










}




void


main


()



{




P1


=



0xff


;




while


(


1


)




{





P1


=



0xf0


;






if


(


0xf0



!=


P1


)


//


第一次检测






{







// delay(20);


//


消抖







// P1 = 0xf0;


//


第二次检测







// if(0xf0 != P1)//


实践证明不必消抖也是可以的







// {






temp_num


=


num


;








for


(


i


=


0


;


i


<


4


;


i


++)








{









P1


=


scan


[


i


];










for


(


j


=


0


;


j


<


4


;


j


++)










{









< br>if


(


coding


[


i


][


j


]

< p>


==


P1


)










{










num


=



4


*


i


+


j


;











break


;










}










if


(


num


!=


temp_num


)











break


;










}








}







//}





P1


=



0xf0


;






while


(


0xf0



!=


P1


);


//


防止多次检测






}










P0


=


num_code


[


num


];






P2


=



0x7F


;






}



}




2)



线反转法



#include



#define uchar unsigned char


#define uint unsigned int



sbit P37


=


P3


^


7


;





//


继电器接口




uchar code coding


[]



=



{








0xee

,


0xde


,


0xbe

< p>
,


0x7e


,








0xed

,


0xdd


,


0xbd

< p>
,


0x7d


,









0xeb


,


0xdb


,


0xbb


,


0x7b


,








0xe7

,


0xd7


,


0xb7

< p>
,


0x77



};




uchar code num_code


[]



=



{


0xc 0


,


0xf9


,


0xa4


,


0xb0


,











0x99


,


0x92


,


0x82


,


0xf8


,











0x80


,


0x90


,


0x88


,


0x83


,











0xc6


,


0xa1


,


0x86


,


0x8e


,











0xfe


};




uchar Key


=



16


;



//


表示按键编号




void


delay


(


uint m


)



{



uint k


;




while


(--

< p>
m


)




{






for


(


k


=


0


;


k


<


180


;


k


++);




}



}


-


-


-


-


-


-


-


-



本文更新与2021-02-01 15:52,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/593503.html

郭天祥51单片机笔记的相关文章