51单片机c语言实例100 下载本文

#include<reg51.h> //包含单片机寄存器的头文件

void main(void)

{

P0=(8>4)?8:4;//将条件运算结果送P0口,P0=8=0000 1000B

while(1)

; //设置无限循环,防止程序“跑飞”

}

//实例15:用P0口显示按位"异或"运算结果

#include<reg51.h> //包含单片机寄存器的头文件

void main(void)

{

P0=0xa2^0x3c;//将条件运算结果送P0口,P0=8=0000 1000B

while(1)

; //设置无限循环,防止程序“跑飞”

}

//实例16:用P0显示左移运算结果

#include<reg51.h> //包含单片机寄存器的头文件

void main(void) {

P0=0x3b<<2;//将左移运算结果送P0口,P0=1110 1100B=0xec

while(1)

; //无限循环,防止程序“跑飞”

}

//实例17:"万能逻辑电路"实验

#include<reg51.h> //包含单片机寄存器的头文件

sbit F=P1^4; //将F位定义为 P1.4

sbit X=P1^5; //将X位定义为 P1.5

sbit Y=P1^6; //将Y位定义为 P1.6

sbit Z=P1^7; //将Z位定义为 P1.7

void main(void)

{

while(1)

{

F=((~X)&Y)|Z; //将逻辑运算结果赋给F

;

}

}

//实例18:用右移运算流水点亮P1口8位LED #include<reg51.h> //包含单片机寄存器的头文件

/*****************************

函数功能:延时一段时间

*****************************/

void delay(void)

{

unsigned int n;

for(n=0;n<30000;n++)

;

}

/*****************************

函数功能:主函数

*****************************/

void main(void)

{

unsigned char i;

while(1)

{

P1=0xff;

delay();

for(i=0;i<8;i++)//设置循环次数为8

{

P1=P1>>1; //每次循环P1的各二进位右移1位,高位补0 delay(); //调用延时函数

}

}

}

//实例19:用if语句控制P0口8位LED的流水方向

#include<reg51.h> //包含单片机寄存器的头文件

sbit S1=P1^4; //将S1位定义为P1.4

sbit S2=P1^5; //将S2位定义为P1.5

/*****************************

函数功能:主函数

*****************************/

void main(void)

{

while(1)

{

if(S1==0) //如果按键S1按下

P0=0x0f; //P0口高四位LED点亮

if(S2==0) //如果按键S2按下

P0=0xf0; //P0口低四位LED点亮

}

}

//实例20:用swtich语句的控制P0口8位LED的点亮状态 #include<reg51.h> //包含单片机寄存器的头文件

sbit S1=P1^4; //将S1位定义为P1.4

/*****************************

函数功能:延时一段时间

*****************************/

void delay(void)

{

unsigned int n;

for(n=0;n<10000;n++)

;

}

/*****************************

函数功能:主函数

*****************************/

void main(void)

{

unsigned char i;

i=0; //将i初始化为0

while(1)

{

if(S1==0) //如果S1键按下

{

}

delay(); //延时一段时间 if(S1==0) //如果再次检测到S1键按下 i++; //i自增1 if(i==9) //如果i=9,重新将其置为1 i=1; } switch(i) //使用多分支选择语句 { case 1: P0=0xfe; //第一个LED亮 break; case 2: P0=0xfd; //第二个LED亮 break; case 3:P0=0xfb; //第三个LED亮 break; case 4:P0=0xf7; //第四个LED亮 break; case 5:P0=0xef; //第五个LED亮 break; case 6:P0=0xdf; //第六个LED亮 break; case 7:P0=0xbf; //第七个LED亮 break; case 8:P0=0x7f; //第八个LED亮 break; default: //缺省值,关闭所有LED P0=0xff; } }

//实例21:用for语句控制蜂鸣器鸣笛次数

#include<reg51.h> //包含单片机寄存器的头文件 sbit sound=P3^7; //将sound位定义为P3.7

/**************************************** 函数功能:延时形成1600Hz音频

****************************************/ void delay1600(void)

{

unsigned char n;

for(n=0;n<100;n++)