串口控制蜂鸣器

题目:通过串口助手发送1,蜂鸣器以400ms频率发声;发送2,以200ms频率发声;发送3,以100ms频率发声;发送4,蜂鸣器不发声。

#include"reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit buzzer=P0^0;
u16 a;
u16 b;

void delay(u16 i)    //延时函数 1ms
{
	u8 j;
	while(i--)
	{
		for(j=0;j<115;j++);
	}	
}

void usart_init()   //串口初始化函数
{
	SCON=0x50;      //配置scon寄存器 sm1=1,REN=1
	EA=1;          //中断总允许位
	ES=1;          //串口中断允许位
}

void TIM_init()        //定时器初始化函数
{
	TMOD=0X20;        //配置TMOD寄存器 定时器T1 方式2
	TH1=TL1=0Xfd;     //波特率为9600
	TR1=1;            //开启定时器
}

void main()           
{
	usart_init();
	TIM_init();
	while(1);
}

void usart() interrupt  4      //中断函数
{
	RI=0;                    //RI复位
	a=SBUF;           
	SBUF=a;
	while(!TI);               //判断TI
	TI=0;
	switch(a)
	{
		case(1):b=200;break;
		case(2):b=100;break;
		case(3):b=50;break;
		case(4):b=0;break;
	}
	buzzer=0;
	delay(b);
	buzzer=1;
	delay(b);
}

在这里插入图片描述

串口助手

在这里插入图片描述

元器件

COMPIM

AT89C51(AT89C52)

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
好的,下面是一个简单的C语言程序,演示了如何使用串口控制蜂鸣器: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> #include <string.h> int main(int argc, char *argv[]) { int fd; struct termios oldtio, newtio; char buf[255] = {0}; // 打开串口 fd = open("/dev/ttySAC1", O_RDWR | O_NOCTTY); if (fd < 0) { printf("Open Serial Port Failed!\n"); return -1; } // 设置串口参数 tcgetattr(fd, &oldtio); memset(&newtio, 0, sizeof(newtio)); newtio.c_cflag = B115200 | CS8 | CLOCAL | CREAD; newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; newtio.c_lflag = 0; newtio.c_cc[VTIME] = 0; newtio.c_cc[VMIN] = 1; tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &newtio); // 控制蜂鸣器 while (1) { memset(buf, 0, sizeof(buf)); read(fd, buf, sizeof(buf)); if (buf[0] == '1') { printf("Buzzer ON!\n"); // 控制蜂鸣器开启 // TODO: 在这里添加你的代码 } else { printf("Buzzer OFF!\n"); // 控制蜂鸣器关闭 // TODO: 在这里添加你的代码 } } // 关闭串口 close(fd); tcsetattr(fd, TCSANOW, &oldtio); return 0; } ``` 这个程序的主要思路是:首先打开串口 `/dev/ttySAC1`,然后设置串口通信参数,接着进入一个 while 循环,不断读取串口数据并判断,如果收到的数据是 `'1'`,则控制蜂鸣器开启,否则控制蜂鸣器关闭。需要注意的是,在程序中的 TODO 部分,你需要添加控制蜂鸣器的具体代码。 另外,你需要根据自己的实际情况修改串口设备文件名和波特率等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值