Day02 单片机

疯狂学习单片机的第二天,星期天!

回顾

可以知道,P1 前四口是控制单片机LED 电源的开关,P0 口是控制LED 的逻辑开关。(no matter)

  • 其中 P1.4 是使能引脚。
  • P1.0……3 四个引脚是开关。
  • PO的所有 八位控制着 LED 的走向

但似乎,P1 8位同时改有点问题,走先试试。

似乎对于 反码的利用,忘了,先不管他,去试下蜂鸣器(P1.6) P1.6 = 0~1

发现不响!去看看他那里是怎样的。

  • 当BUZZ 是低电位时通电,并且是持续替换 有震动才会有声音。
  • 我刚刚用的是 500ms的,现在用100ms的试试
1
2
3
4
5
	while(1){
	buzzer =0;
	Delay100ms();
	buzzer =1;
	}

!有点声音了,但是不够大,不够响;

去维基百科查查阅可知:20Hz ~ 20kHz 一秒钟震动多少下,而时间是震动一下多少时间(一般特别小) $$ f = \frac{1}{T} \
$$ 我们不管机械周期,只管怎样达到20Hz 也就是1秒20下 T = 1下0.05s

成功了!但不知道为什么 sec 是0.0014s 也可以。 也就是它有差不多 几百HZ.


通过阅读,可以知道,对P0 不应该用加法!!!而是用位运算,来走一遍。

1
2
3
4
5
6
P1 = 0x0E;
P0 = 0xFF;
while(1){
    Delay100ms();
    P0 = P0<<1  ;
}

这不就是 一个 进度条吗!!!

↓ 书中例子

1
2
3
4
5
6
7
while(1){
    Delay100ms();
    P0 = ~(0x01 << cnt);
    cnt++;
    if(cnt >=8)
        cnt =0;
}
P0 = 0xFF;
while(1){
	Delay100ms();
	P0 = P0 <<1;
	if(P0==0x00)
		Po=0xFF;
}

从书中的代码可以知道:

它假借一个常量+ 来识别控位。简单单纯的控位,会导致后面全是1或0.

好今天 共玩了鸣器和LED ,那下一步就是玩弄时钟了。

  • 还欠一个 左右移动的LED流水灯
updatedupdated2020-05-312020-05-31
加载评论