单片机实验程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一LED流水灯

一、实验目的

制作一个流水灯,编写程序来控制发光二极管由上至下的反复循环流水点亮,每次点亮一个发光二极管。

二、程序设计

#include

#include

sbit LED = P1^0;

void delay()

{

unsigned int i,j;

for(i=120;i>0;i++)

for(j=120;j>0;j++);

}

void main()

{

unsigned char i;

LED = 0;

while(1)

{

for(i=0;i<8;i++)

{

LED=0xfe;

delay( );

LED = _crol_(LED,1);

P1 = LED;

}

LED=0X01;

for(i=0;i<8;i++)

{

delay( );

LED = _cror_(LED,1);

P1 = LED;

}

}

}

实验二按键扫描

一、实验目的

使用单片机片内的I/O口来进行开关状态的检测。当开关打开时,I/O引脚为高电平,当开关闭合时,I/O引脚为低电平。编写一个程序,控制流水灯,开关闭合,对应的发光二极管点亮。

二、程序设计

#include

#include

#define GPIO_LED P1

sbit K1=P3^5;

sbit K2=P3^4;

void Delay10ms( );

void main(void)

{

unsigned int i,j,l;

j=0xfe;

while(1)

{

GPIO_LED=j;

if (K1==0)

{

Delay10ms( );

if (K1==0)

{

j=_cror_(j,1);

while((i<50)&&(K1==0))

{

Delay10ms( );

i++;

}

i=0;

}

}

if (K2==0)

{

Delay10ms( );

if (K2==0)

{

l=0xff;

GPIO_LED=~l;

while((i<500)&&(K2==0))

{

Delay10ms( );

i++;

}

}

}

}

}

void Delay10ms(void)

{

unsigned char a,b,c;

for(c=1;c>0;c--)

{

for(b=38;b>0;b--)

{

for(a=130;a>0;a--);

}

}

}

实验三数码管数码管动态计数

一、实验目的

单片机控制数码管,程序运行时,让数码管进行动态计数0~99。

二、程序设计

#include

#define GPIO_DIG P0

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

unsigned char code DIG_CODE[7]={0x66,0x06,0x4f,0x06,0X3f,0x5b,0x6d};//{0x06,,0x7d,0x07,0x7f,0x 6f};

unsigned char DisplayDate[7];

void DigDisplay();

void main(void)

{

unsigned char i;

for(i=0;i<7;i++)

{

DisplayDate[i]=DIG_CODE[i];

}

while(1)

{

DigDisplay();

}

}

void DigDisplay()

{

unsigned char i;

unsigned int j;

for(i=0;i<7;i++)

{

switch(i)

{

case(0):

LSA=0;LSB=0;LSC=0; break;

case(1):

LSA=1;LSB=0;LSC=0; break;

case(2):

LSA=0;LSB=1;LSC=0; break;

case(3):

LSA=1;LSB=1;LSC=0; break;

case(4):

LSA=0;LSB=0;LSC=1; break;

case(5):

LSA=1;LSB=0;LSC=1; break;

case(6):

LSA=0;LSB=1;LSC=1; break;

}

GPIO_DIG=DisplayDate[i];

j=10;

while(j--);

GPIO_DIG=0x00;

}

}

相关文档
最新文档