今天是寒假的第二天,之前通过某宝买了51单片机板想学学单片机但是在校没时间现在放寒假了终于可以尽情的学习单片机了虽然大二才有单片机课程,但是我想提前学习,昨天边看教程边耍,感觉还不错。由于没有数电模电基础所以电路看不懂视频的人说不会影响只要有C语言基础就能,等以后学了数电模电再看前面的电路视频不迟。
记录一下昨天学过的东西:
点亮LED还是挺简单的,因为是正极流进来所以要给P20低电平就行了
#include "reg52.h"
sbit LED1=P2^0;
void main()
{
LED1=0;
while(1);
}
然后是流水灯:
#include "reg52.h"
typedef unsigned int u16;
#define LED_PORT P2
void delay_10us(u16 ten_us)
{
while(ten_us--);
}
void main()
{
int i=0;
while(1)
{
for(i=0;i<8;i++)
{
LED_PORT=~(0x01<<i);//流水灯
delay_10us(50000);
}
}
while(1);
}
还有一种流水灯的做法是用库函数:#include "intrins.h"
#include "reg52.h"
#include "intrins.h"
typedef unsigned int u16;
#define LED_PORT P2
void delay_10us(u16 ten_us)
{
while(ten_us--);
}
void main()
{
int i=0;
LED_PORT=~0x01;//首先第一个LED亮
delay_10us(50000);//延时480毫秒左右
while(1)
{
for(i=0;i<7;i++)
{
LED_PORT=_crol_(LED_PORT,1);//LED左边开始每次移动1位
delay_10us(50000);
}
for(i=0;i<7;i++)
{
LED_PORT=_cror_(LED_PORT,1);
delay_10us(50000);
}
}
while(1);
}
_crol_和_cror_都是库函数,每次移动后不会自动补0而是把前面移出去的补到后面去
视频实验: