如何用C语言编程使单片机产生方波信号?

我是新手,还没入门,想有个示例,带解释的,方便的话感激不尽。... 我是新手,还没入门,想有个示例,带解释的,方便的话感激不尽。 展开
 我来答
意法半导体(中国)投资有限公司 2020-01-15
展开全部
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
bbsniua
2012-02-05 · TA获得超过307个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:205万
展开全部

普通51的话需要模拟PWM,如果是加强版51有内置PWM模块,

PIC和AVR以及430还有STM也有集成PWM的型号!

如果是单纯输出方波的话就简单了。

程序如下:

//功能,按下P1_0的开关降低频率,按P1_1为升高频率

#include<AT89X52.H>  //引用AT89X52的库文件

#define uchar unsigned char  //替换简称

#define uint  unsigned int  //替换简称

uchar sm; //定义临时变量

void delay_ms(uint ms) //延时子函数,一个循环12uS

{

while(--ms);

}

void T0_IRQ(void) interrupt TF0_VECTOR  //定时器0中断函数

{

TH0=sm;  //将变量赋予定时器0的高位

P2_0=!P2_0;  //翻转IO

}

 //寄存器初始化子函数

void mcu_init()

{

ET0=1; //开定时器0中断

EA=1;     //开总中断

TMOD=0x01;  //设置为16位定时器0

TH0=0xFF; //填充定时器高位

TR0=1; //开定时器0

sm=0xFF; //变量初始化

}

void main() //主函数

{

mcu_init(); //调用初始化函数

while(1) //主循环

{

if((!P1_0)||(!P1_1))   //检测是否有按键按下

{

delay_ms(8333); //延时去抖

if(!P1_0) //如果是P1_0按键按下

{

while(!P1_0); //等待按键放手

if(sm) //检测变量不为0

{

  --sm; //自减1

P2_1=1; //取消边界LED

}

else P2_1=0; //到达边界点亮LED

}

else if(!P1_1) //否则如果P1_1按键按下

{

while(!P1_1); //等待按键放手

if(sm<0xFF) //检测变量小于0xFF

{

   ++sm;   //自加1

P2_1=1;

}

else P2_1=0;

}

}

}

}

意法半导体(中国)投资有限公司
2023-06-12 广告
单片机原理由运算器、控制器、存储器、输入输出设备构成,单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程;单片机的应用:节能控制;智能语音设备;报警控制;医疗设备。 单片机原理及应用 本书详细地介绍了MC... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
流浪的稻穗
推荐于2017-09-14 · TA获得超过130个赞
知道答主
回答量:42
采纳率:0%
帮助的人:33.8万
展开全部
#include<reg52.h> //51内核的单片机的头文件
#define uchar unsigned char
#define CLOCK P1.0
void delay_ms(uchar ms) //延时函数
{
uchar i,j;
for(i=ms;ms>0;i--)
for(j=0;j<110;j++)
}
void main() //主函数
{
while(1)
{
CLOCK=0; //P1.0输出低电平
delay_ms(50); //延时
CLOCK=1; //P1.0输出高电平
delay_ms(50); //延时
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
为啥要起名呢
2012-02-05 · TA获得超过391个赞
知道小有建树答主
回答量:352
采纳率:0%
帮助的人:338万
展开全部
这个简单啊,最简单的就是高电平是5V低电平是0V这也是方波啊。用单片机的定时器就可以形成方波信号。不明白1819944815可以交流,验证就输单片机
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jrzw
2012-02-07
知道答主
回答量:42
采纳率:0%
帮助的人:31.9万
展开全部
方波就是高低电平的转换啊
MOV R1,#72
MOV A,#00H
MOV DPTR,#6000H
LOOP4:MOV 20H,A
MOVC A,@A+DPTR
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#0FEFFH
MOVX @DPTR,A
MOV DPL,R2
MOV DPH,R3
MOV A,20H
INC A
DJNZ R1,LOOP4
LJMP START
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花荼蘼菲0hZc6a
2012-02-06 · 超过16用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:40.8万
展开全部
while(1) P1.0 ^= 1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式