锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

关于8051对LED控制的各种程序

时间:2024-04-30 09:37:09

本*也是前几天开始接触单片机,从最经典也是最实用的8051开始入手。看了几天书和资料,发现以前一直看的微机还有大一上时候在计算机学的一些东西还是挺有用的。大家都是看郭天祥的吧=。= 本*不是。我是在x宝上买的讲课都是x宝店家独家镜头,可谓是高端大气上档次,低调奢华有内涵,简约时尚国际范,低端粗俗甩节操,土憋矫情无下限,狂拽酷帅吊炸天,冷艳高贵接地气,时尚动感小清新,可爱乡村非主流好吧,废话不多,其实我也是看郭天祥的,哈工大毕竟不是盖的。ps:x宝老板是南邮的高材生。
本*老老实实地把PPT最后的课后练习都做了遍,完全没有什么百度,那些弱爆了换句话说。
下面,本*就郭天祥课件里面课后练习的题目做出自己的独家见解-。-

题一:第一个发光管以间隔200ms闪烁。
卧槽-,- 这种题目小儿科。本*表示,写这类程序有两种方法,我还是喜欢直接对IO口总线定义。
#include #include //就 接的IO口不同的开发板设计电路时候可能会有所不同,本*x宝买的这块接的是P3.4. sbit buzz=P3^4; void delay() { unsigned int t=30000; while (t--); } void main() { unsigned char temp; temp=0xfe; while(1) { P1=temp; temp=_crol_(temp,1); buzz=~buzz; delay(); } }
题三:
用8个发光管演示出8位二进制数累加过程。
#include //表示这样题目还是比较有意思的 ps:要学单片机首先我觉得这些进制的问题要搞清楚,二进制 十六进制和我们用的十进制的转换关系。 #include void delay() { unsigned int a=30000; while(a--); } void main() //灯亮为0,灭为1; { P1=0x00; for(;P1<=0xfe;P1++) delay(); }
题四:8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程。
#include #include unsigned int temp; void delay(unsigned int z) { unsigned int x; unsigned char y; for(x=z;x>0;x--) for(y=100;y>0;y--); } void main() { unsigned int a,b,c; while(1) { for(a=0;a<2;a++) { temp=0xfe; b=0; while(b<=6) { P1=temp; temp=_crol_(temp,1); b++; delay(500); } c=0; while(c<=6) { P1=temp; temp=_cror_(temp,1); c++; delay(500); } } P1=0xff; for(a=0;a<5;a++) { P1=~P1; delay(1000); } } }
题五:间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
#include #include unsigned int temp; void delay(unsigned int z) { unsigned char x; unsigned char y; for(x=z;x>0;x++) for(y=100;y>0;y++); } void main() { unsigned int a; while(1) { a=0; temp=0xfe; while(a<=6) { P1=temp; temp=_crol_(temp,1); delay(30000); a++; } a=0; temp=0xfc; while(a<=5)

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章