用 C学习51单片机——记录 1、LED

C 学习51单片机过程与自我拓展——记录(STC89C52芯片)

前言——其实51并不太难,多看 多写代码,多调试,就一定会有所感悟。
所以我在此留下一些代码以供自己重复记忆,也希望能够帮到你!

一、LED

——其实LED可以 X 很多东西,例如:闪烁、流水灯、X蜂鸣器 的边闪边鸣、X按键 的选择灯色、X点阵屏定时器 的提醒功能等

老多了!嘿嘿, 🤭

(1)LED闪烁(初学可看)

 #include<reg52.h>

  void main ()
  {  
	 int i;
	i=65535;
	while(i--);//延时(占用CPU时间)
	P1 = 0;  
	while(i--);
	P1 = 1;
	while(1);//  用于锁定程序于这里,不再让程序重复运行	  	
  }

(2)LED流水灯 X 独立按键(需学到按键)

小总结:1、按键要消抖,要做松手检测;
消抖时长可能与代码长度有关,代长延长;
2、写完程序后多用硬件调试,总能学到许多其他东西

#include<reg52.h>
#include<intrins.h>
sbit s2 = P3^0;
sbit s3 = P3^1;
sbit s4 = P3^2;
void delay(unsigned int i)//毫秒级延时函数
 {
	unsigned int x,y;
	for(x=i;x>0;x--)
		for(y=114;y>0;y--);
 } 	
void main ()
{
	unsigned char i1 = 0xfe;
	while (1)
	{	
		if( s2 == 0 )
		{
			delay(20);//消抖
			if( s2 == 0 )
		   {
		   		while(s2 != 0);//松手检测
		   		while(1)
		   		{
					i1 = _crol_(i1,1);	//第一种花样
					P1 = i1;
					delay(100);
					if( s4 == 0 )
					{
						delay(60);
						if( s4 == 0 )
					   	{
							while(s4 != 0);
							P1 = 0xff;//清屏
							delay(2);
							break;
						}
					 }					
				 }
			}
		  }
		  if( s3 ==0 )		   //第二种花样
		{
			delay(20);
			if( s3 == 0 )
		   {
		   		while(s3 != 0);
		   		while(1)
		   		{
				   	P1 = 0xff-16;
					delay(190);
					P1 = 0xff-8;
					delay(190);
					P1 = 0xff-32;
					delay(190);
					P1 = 0xff-4;
					delay(190);
					P1 = 0xff-64;
					delay(190);
					P1 = 0xff-2;
					delay(200);
					P1 = 0xff128;
					delay(200);
					P1 = 0xff-1;
					delay(200);
					P1 = 0xff;
					delay(200);
					if( s4 == 0 )
					{						
						delay(80); //循环中代码越长,延时越长
						if( s4 == 0 )
					   	{
							while(s4 != 0);
							P1 = 0xff;
							delay(2);
							break;
						}
					 }					
				 }
			}
		 }
	 }
}

(3)LED X 蜂鸣器(初学可看)

小总结:蜂鸣器和LED的使用类似

 #include<reg52.h>
 #include<intrins.h>//库函数头文件
 #define uint unsigned int
 sbit beep =P2^3;
 
 void delay(uint i)//毫秒级延时函数
 {
	uint x,y;
	for(x=i;x>0;x--)
		for(y=114;y>0;y--);
 } 	
 void main()
 {  uint temp;
 	temp = 0xfe;
	delay(100);
	while(1)
	{
		temp = _crol_(temp,1);//调用库函数,循环左移,记忆看最后字母
		P1 = temp;
		beep = ~beep;
 		delay(100);//延时实现闪烁
	}
 }

## 还有很多的学习记录等后续更新,希望既能帮到自己,又能帮到别人🙂

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值