微控制器學習 1月7日
阿新 • • 發佈:2021-01-08
技術標籤:微控制器
微控制器學習 1月7日
一、點亮發光二極體
基礎知識
十六進位制:
0-9對應 0-9; A-F對應 10-15
C,C++規定,16進位制數必須以 0x開頭。
兩種實現方式:
1、通過十六進位制
#include<reg52.h>
void main() //()
{
P1 = 0xf3; //1111 1100 低電平觸發第1,2個燈
}
2、通過定義管腳,但只適用點亮少數燈
#include<reg52.h>
sbit LED0=P1^1;
void main() //()
{
LED0=0; //低電平點亮發光管
while(1); //
}
//低電平點亮第一個發光二極體
二、流水燈
1、閃爍燈
#include<reg52.h>
#define uint unsigned int
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--) //i = x 即延時約x毫秒
for(j=110;j>0;j--);
}
void main()
{
P1 = 0xf3; //0101 0101
delay(500); //延時500毫秒閃爍1,2燈
P1 = 0xff;
delay(500);
}
2、流水燈
#include<reg52.h>
#define uint unsigned int
sbit LED0=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit LED4=P1^4;
sbit LED5=P1^5;
sbit LED6=P1^6;
sbit LED7=P1^7;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--) //i = x 即延時約x毫秒
for(j=110;j>0;j--);
}
void main()
{
LED0 = 0;
delay(500);
LED0 = 1;
delay(500);
LED1 = 0;
delay(500);
LED1 = 1;
delay(500);
LED2 = 0;
delay(500);
LED2 = 1;
delay(500);
LED3 = 0;
delay(500);
LED3 = 1;
delay(500);
LED6 = 0;
delay(500);
LED6 = 1;
delay(500);
LED7 = 0;
delay(500);
LED7 = 1;
delay(500);
}
3、蜂鳴器
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit FM = P2^3;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--) //i = x 即延時約x毫秒
for(j=110;j>0;j--);
}
void main()
{
P1 = 0xf3; //0101 0101
FM = 1;
delay(500); //延時500毫秒閃爍1,2燈
P1 = 0xff;
FM = 0;
delay(500);
}