分享

单片机编程大全(三)

 Ycp2016 2017-10-19

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

#include //包含单片机寄存器的头文件

sbit sound=P3^7; //将sound位定义为P3.7

/

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

/

void delay1600(void)

{

unsigned char n;

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

;

}

/

函数功能:延时形成800Hz音频

/

void delay800(void)

{

unsigned char n;

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

;

}

/

函数功能:主函数

/

void main(void)

{

unsigned int i;

while(1)

{

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

{

sound=0; //P3.7输出低电平

delay1600();

sound=1; //P3.7输出高电平

delay1600();

}

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

{

sound=0; //P3.7输出低电平

delay800();

sound=1; //P3.7输出高电平

delay800();

}

}

}

*实例22:用while语句控制LED

#include //包含单片机寄存器的头文件

/

函数功能:延时约60ms (3 100 200=60000μs)

/

void delay60ms(void)

{

unsigned char m,n;

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

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

/

函数功能:主函数

/

void main(void)

{

unsigned char i;

while(1) //无限循环

{

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

while(i<0xff) //当i小于0xff(255)时执行循环体

{

P0=i; //将i送P0口显示

delay60ms(); //延时

i++; //i自增1

}

}

}

*实例23:用do-while语句控制P0口8位LED流水点亮

#include //包含单片机寄存器的头文件

/

函数功能:延时约60ms (3 100 200=60000μs)

/

void delay60ms(void)

{

unsigned char m,n;

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

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

;

}

/

函数功能:主函数

/

void main(void)

{

do

{

P0=0xfe; //第一个LED亮

delay60ms();

P0=0xfd; //第二个LED亮

delay60ms();

P0=0xfb; //第三个LED亮

delay60ms();

P0=0xf7; //第四个LED亮

delay60ms();

P0=0xef; //第五个LED亮

delay60ms();

P0=0xdf; //第六个LED亮

delay60ms();

delay60ms();

P0=0xbf; //第七个LED亮

delay60ms();

P0=0x7f; //第八个LED亮

delay60ms();

}while(1); //无限循环,使8位LED循环流水点亮

}

*实例24:用字符型数组控制P0口8位LED流水点亮

#include //包含单片机寄存器的头文件

/

函数功能:延时约60ms (3 100 200=60000μs)

/

void delay60ms(void)

{

unsigned char m,n;

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

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

;

}

/

函数功能:主函数

/

void main(void)

{

unsigned char i;

unsigned char code Tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义无符号字符型数组

while(1)

{

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

P0=Tab[i];//依次引用数组元素,并将其送P0口显示

delay60ms();//调用延时函数

}

}

}

*实例25: 用P0口显示字符串常量

#include //包含单片机寄存器的头文件

/

函数功能:延时约150ms (3 200 250=150 000μs=150ms

/

void delay150ms(void)

{

unsigned char m,n;

for(m=0;m<200;m++)

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

;

}

/

函数功能:主函数

/

void main(void)

{

unsigned char str[]={'Now,Temperature is :'}; //将字符串赋给字符型全部元素赋值

unsigned char i;

while(1)

{

i=0; //将i初始化为0,从第一个元素开始显示

while(str[i]!='\0') //只要没有显示到结束标志'\0'

{

P0=str[i]; //将第i个字符送到P0口显示

delay150ms(); //调用150ms延时函数

i++; //指向下一个待显字符

}

}

}

*实例26:用P0 口显示指针运算结果

#include

void main(void)

{

unsigned char p1, p2; //定义无符号字符型指针变量p1,p2

unsigned char i,j; //定义无符号字符型数据

i=25; //给i赋初值25

j=15;

p1=&i; //使指针变量指向i ,对指针初始化

p2=&j; //使指针变量指向j ,对指针初始化

P0= p1+ p2; // p1+ p2相当于i+j,所以P0=25+15=40=0x28

//则P0=0010 1000B,结果P0.3、P0.5引脚LED熄灭,其余点亮

while(1)

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

}

*实例27:用指针数组控制P0口8位LED流水点亮

#include

/

函数功能:延时约150ms (3 200 250=150 000μs=150ms

/

void delay150ms(void)

{

unsigned char m,n;

for(m=0;m<200;m++)

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

;

}

/

函数功能:主函数

/

void main(void)

{

unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char p[ ]={&Tab[0],&Tab[1],&Tab[2],&Tab[3],&Tab[4],&Tab[5],

&Tab[6],&Tab[7]};

unsigned char i; //定义无符号字符型数据

while(1)

{

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

{

P0= p[i];

delay150ms();

}

}

}

*实例28:用数组的指针控制P0 口8 位LED流水点亮

#include

/

函数功能:延时约150ms (3 200 250=150 000μs=150ms

/

void delay150ms(void)

{

unsigned char m,n;

for(m=0;m<200;m++)

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

;

}

/

函数功能:主函数

/

void main(void)

{

unsigned char i;

unsigned char Tab[ ]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,

0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,

0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80,0x00,

0xE7,0xDB,0xBD,0x7E,0x3C,0x18,0x00,0x81,

0xC3,0xE7,0x7E,0xBD,0xDB,0xE7,0xBD,0xDB};

//流水灯控制码

unsigned char p; //定义无符号字符型指针

p=Tab; //将数组首地址存入指针p

while(1)

{

for(i=0;i<32;i++) //共32个流水灯控制码

{

P0= (p+i); // (p+i)的值等于a[i]

delay150ms(); //调用150ms延时函数

}

}

}

*实例29:用P0 、P1口显示整型函数返回值

#include

/

函数功能:计算两个无符号整数的和

/

unsigned int sum(int a,int b)

{

unsigned int s;

s=a+b;

return (s);

}

/

函数功能:主函数

/

void main(void)

{

unsigned z;

z=sum(2008,2009);

P1=z/256; //取得z的高8位

P0=z%256; //取得z的低8位

while(1)

;

}

*实例30:用有参函数控制P0口8位LED流水速度

#include

/

函数功能:延时一段时间

/

void delay(unsigned char x)

{

unsigned char m,n;

for(m=0;m

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

;

}

/

函数功能:主函数

/

void main(void)

{

unsigned char i;

unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

//流水灯控制码

while(1)

{

//快速流水点亮LED

for(i=0;i<8;i++) //共8个流水灯控制码

{

P0=Tab[i];

delay(100); //延时约60ms, (3 100 200=60 000μs)

}

//慢速流水点亮LED

for(i=0;i<8;i++) //共8个流水灯控制码

{

P0=Tab[i];

delay(250); //延时约150ms, (3 250 200=150 000μs)

}

}

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多