實驗目的: 理解並掌握 led 燈的點亮原理;
理解並掌握單片機的 C 語言編程方法;
理解並掌握單片機位操作與端口操作的方法;
實驗模塊:核心板+8 位流水燈與獨立按鍵模塊
模塊連接圖:
電路原理圖:
電路原理:將8位流水燈LED1——LED8的陰極與單片機的I/O口P1端口相連,當單片機P1端口相應的位賦低電平時,LED燈被點亮
實驗源碼:使用單片機的P1口做輸出口,依次全部點亮8位發光二極管。
#include "reg51.h" //包含頭文件
sbit led=P1^5; //表示用led等效於P1^5, P1^0就是指頭文件里定義的P1寄存器的第5BIT
sbit led=P1^5; //表示用led等效於P1^5, P1^0就是指頭文件里定義的P1寄存器的第5BIT
#define uchar unsigned char
#define uint unsigned int
#define uint unsigned int
//延時函數
//**************************************************************************************************
//**************************************************************************************************
delay(uint time) //int型數據為16位,所以最大值為65535
{
uint i,j; //定義變量i,j,用於循環語句
for(i=0;i<time;i++) //for循環,循環50*time次
for(j=0;j<50;j++); //for循環,循環50次
}
{
uint i,j; //定義變量i,j,用於循環語句
for(i=0;i<time;i++) //for循環,循環50*time次
for(j=0;j<50;j++); //for循環,循環50次
}
//**************************************************************************************************
//主函數
//**************************************************************************************************
void main() //主函數
{
uchar i,j; //定義變量i,j;
while(1) //進入while死循環
{
j=0xfe; //0xfe即為二進制1111 1110,即最低位為0,其他位為1
for(i=0;i<8;i++) //進入for循環,循環8次
{
P1=j; //依次點亮8位LED
delay(5000); //延時,修改延時即可修改時間間隔
j<<=1; //j左移1位,j<<=1等效於j=j<<1
}
}
}
//主函數
//**************************************************************************************************
void main() //主函數
{
uchar i,j; //定義變量i,j;
while(1) //進入while死循環
{
j=0xfe; //0xfe即為二進制1111 1110,即最低位為0,其他位為1
for(i=0;i<8;i++) //進入for循環,循環8次
{
P1=j; //依次點亮8位LED
delay(5000); //延時,修改延時即可修改時間間隔
j<<=1; //j左移1位,j<<=1等效於j=j<<1
}
}
}