一.简单的点灯程序需要记住的
1.单片机控制开发板的二极管亮灭:
由单片机的P1口控制,注意开发板的原理图,分清楚到底是给低电平亮还是高电平亮,一般都给低电平亮。
控制灯分为总线法和位选法,总线法是用十六进制数控制P1口的高低电平,1为高,0为低,位选是选出P1口的任意一位操作。
流水灯是通过延时函数或定时器延时,依次控制不同的灯亮来完成流水灯
2.数码管的静态显示和动态扫描:
Lab-MCS51开发板通过单片机的P^0~P^3口分别控制四个数码管的亮灭,每个数码管显示的内容由P0口控制,
控制线路图如上,通过P0使a,b,c,d,e,f,g,dp亮,显示不同的数字或符号。
动态扫描是减少数码管间亮的间隙,使人的视觉感觉不出,造成数码管同时亮的假象。
#include<reg52.h> //52单片机头文件
void main() //主函数
{
unsigned int i; //定义一个int型变量
while(1)
{
i=50000; //变量赋初值为50000
P1=0xfe; //点亮第一个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xfd; //点亮第二个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xfb; //点亮第三个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xf7; //点亮第四个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xef; //点亮第五个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xdf; //点亮第六个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xbf; //点亮第七个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0x7f; //点亮第八个灯
while(i--); //延时
}
}
流水灯;
#include <reg52.h>
#include<intrins.h>
void main ()
{ int i, j ,k ;
// for(i=0;i<8;i++)
P1=0xfe;
for(j=0;j<50000000;j++)
P1= _crol_(P1,1);
// for(k=0;k<50000000;k++) ;
}
数码管显示
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
//sbit wela=P2^7;
// sbit dula=P2^6;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10};
uchar num;
void delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
void main()
{
// wela=1;
P2=0xf0;
// wela=0;
while(1)
{
for(num=0;num<10;num++)
{
// dula=1;
P0=table[num];
// dula=0;
delay(500 );
}
}
}