1.流水灯
自定义函数:延时函数delay(毫秒级)
Void delay(unsigned int z)
{
Unsigned int x,y;
For(x=z;x>0;x--)
For(y=114;y>0;y--);
}
给形参z赋值,如延时100毫秒:delay(100);
循环移位函数
标准库函数:intrins.h
内部函数
字符型循环左移:_crol_
字符型循环右移:_cror_
#include<intrins.h>
Void test_crol(void)
{unsigned char a;
Unsigned char b;
a=0xfe;//1111 1110
b=_crol_(a,1);// b 现在是0xfd 二进制为1111 1101
使用左移运算符
A=0xfe;
B=A<<1;//B现在是1111 1100
区别:循环左移是把最高位移到最低位上,左移运算符是把最高位移出最低位补0。
程序实现:
#include<reg52.h>
#include<intrins.h>
#define unchar unsigned char
#define unint unsigned int
unchar z;
void delay(unint z)
{
unint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void main()
{
unint c;
c=0xfe;
P2=c;
delay(100);
while(1)
{
c=_crol_(c,1);
P2=c;
delay(100);
}
}
2.蜂鸣器
有源蜂鸣器与无源蜂鸣器
区别:
这里“源”指震荡源。
有缘蜂鸣器内部带震荡源,一通电就会叫
无缘蜂鸣器内部不带震荡源,故如果用直流信号无法使其鸣叫。必须用2k~5k的方波去驱动。
有源蜂鸣器往往比无源蜂鸣器贵,就因为里面多个震荡电路。
三极管工作原理:
PNP:当B极流过大于1mA或E极比B极大0.7V时,EC导通。当B极与E极直接没有电流通过,EC断开。
NPN:当B极流过大于1mA或B极比E极大0.7V时,EC导通。
蜂鸣器工作原理:
程序实现:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit deep=P2^5;
uint temp;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void main()
{
temp=0xf0;
P2=temp;
delay(100);
while(1)
{
temp=_crol_(temp,1);
P2=temp;
deep=~deep;
delay(50);
}
}
3.数码管
3.1数码管静态显示
AT24C02(I2C总线)
RAM:存储速度快,但掉电快 ROM:掉电不丢失,但速度慢。