*实例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) } } } |
|