51单片机(2)——从课设数字钟推到51单片机的学习

学习进度条:

点亮LED独立按键控制LED静态数码管和动态数码管定时器蜂鸣器

主要参考资料已放置链接。

数码管遇到的问题:

为什么数码管该亮的地方暗,该暗的地方亮?

首先数码管分为共阴极数码管和共阳极数码管,在编写数字的时候,是两组不同的代码,我之前做的第一版数字钟是用的共阴极数码管,到第二版的时候用的共阳极,所以出现了问题。

除此之外,数码管还分有点和没点的两种,使用的时候要甄别清楚。

亲测有效的编码组

共阴如下:

uchar s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

共阳时,我们只需要在调用时取反即可

   P1=0x7f;					 //0111 1111 只有数码管第一位选通
   P0=~s[t0];				 //显示第一位
   delay(1);				 //延时1ms
   P1=0xbf;
   P0=~s[t1];				 //p0口被用来放置数码管的数字
   delay(1);				 //p1口被用来放置数码管的选通
   P1=0xdf;
   P0=~0x40;
   delay(1);
   P1=0xef;

参考资料

51单片机(四)静态数码管和动态数码管显示_51单片机动态数码管显示代码分析-CSDN博客

蜂鸣器遇到的问题:

上拉电阻法

因为笔者用的第一版是有源蜂鸣器,第二版是无源蜂鸣器,两者的代码有细微的不同。

让蜂鸣器叫起来的方法除了三极管上拉电阻法之外,文章开头发参考资料主要讲解了集成电路驱动,但是我们先不去使用它。先来掌握三极管上拉电阻的方法。

不管是有源还是无源,我们的解法都如上,注意区分pnp和npn即可,在把P37和2接在一起之后,这很重要,因为笔者就因为以为它内部接好了,然后发现一直没有声音以为坏掉了,后来万用表检查半天才弄明白——不会看原理图的错。

无源蜂鸣器——提供一个方波信号:

	b=0;
	while(1)
	{
 	    b=b+1;
        bee=0;
		delay(10);
		bee=1;
		delay(10);  //产生震荡
		if(b==100)
		break;
	}
	 while(1)//如果不加,代码跑个不停就不会停下来
	 {
	 };

有源蜂鸣器——提供一个直流电压:

 bee=0;	  //让蜂鸣器停止发声
     
	  if(min==30&&sec<3)
	  {
	  	  bee=1;
		  delay(50);  //响50ms
	  }

参考资料

八、51单片机之蜂鸣器_单片机蜂鸣器-CSDN博客

如果有什么想要交流的评论区见!

但是笔者的能力很显而易见,希望能帮到你!

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值