找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2690|回复: 0
收起左侧

单片机学习笔记(二)驱动蜂鸣器

[复制链接]
ID:108531 发表于 2016-3-12 16:49 | 显示全部楼层 |阅读模式
利用单片机驱动蜂鸣器发声:
C语言源程序:
#include<reg52.h> //包含52单片机的头文件
#inlcude<intrins.h> //该头文件包含了各种移位函数
//_crol_ 字符循环左移
//_cror_ 字符循环右移
//_irol_ 整数循环左移
//_iror_ 整数循环右移
//_lrol_ 长整数循环左移
//_lror_ 长整数循环右移
//_nop_ 空操作8051 NOP 指令
//_testbit_ 测试并清零位8051 JBC 指令
#define uint unsigned int   //定义uint为无符号整型
#define uchar unsigned char   //定义uchar为无符号字符型
uchar temp,num,num1; //定义temp,num,num1为三个无符号字符变量
sbit beep=P3^4; //定义蜂鸣器所在的端口位
void delay(uint); //延时函数原型声明
void main() //主函数
{
  temp=0xfe;  //对应二进制11111110 赋值给P1可点亮第一个发光二极管
  while(1)  //主循环
  {
    for(num1=0;num1<3;num1++)  //子循环循环三次
    {
      for(num=0;num<8;num++)  //子循环循环8次
      {
        P1=temp; //将temp赋值给P1点亮发光二极管
        beep=0;  //蜂鸣器发声
        delay(100); //延时
        temp=_crol_(temp,1);//将temp字符变量中的值左移一位
        P1=0xff; //熄灭所有发光二级管
        beep=1; //蜂鸣器停止发声
        delay(100);延时
      }
    }
    for(num1=0;num1<3;num1++)  //子循环循环三次
    {
      for(num=0;num<8;num++)  //子循环循环8次
      {
        P1=temp; //将temp赋值给P1点亮发光二极管
        beep=0;  //蜂鸣器发声
        delay(100); //延时
        temp=_cror_(temp,1);//将temp字符变量中的值右移一位
        P1=0xff; //熄灭所有发光二级管
        beep=1; //蜂鸣器停止发声
        delay(100);延时
      }
    }
  }
}
void delay(uint a)  //延时函数
{
  uint x,y;    //定义无符号变量X,Y
  for(x=a;x>0;x--)  //外循环将x的值循环减1 直到小于0
    for(y=100;y>0;y--);  //内循环将y的值循环减1 直到小于0
}
//程序效果 发光二极管依次从左到右闪亮 每闪亮一次 蜂鸣器发声 循环3次 然后倒过来再次循环闪亮 每闪亮一次 蜂鸣器发声

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表