52单片机输出方波

作者&投稿:诗戴 (若有异议请与网页底部的电邮联系)
求高手 用51单片机输出产生方波的程序~

#include"reg52.h"
sbit PWM=P1^0;//定义输出脚
void main()
{
TMOD=0x01; //定时器0工作方式1
TH0=(65536-10000)/256; //12M晶振10MS计时常数
TL0=(65536-10000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1);

}
//中断函数,启动后每10MS进入一次中断
void T0_time(void) interrupt 1
{
TH0=(65536-10000)/256; //12M晶振10MS计时常数
TL0=(65536-10000)%256;
if(PWM)PWM=0; //输出脚取反
else PWM=1;
}

#include
#define uchar unsigned char
#define uint unsigned int
sbit p0=P1^0; // 方波 在 P1.0 输出
uchar tt;
void main()
{
tt=0;
TMOD=0x01;
TH0=(65535-300)/256; // 12 M 晶振 1T 模式1
TL0=(65535-300)%256; // 25 uS
EA=1;
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
while(1)
{
}
}
void timer0() interrupt 1
{
TH0=(65535-300)/256; // 12 M 晶振 1T 模式1
TL0=(65535-300)%256; // 300*0.08333 --- uS = 25 uS
p0 = ~p0;
}

#include <reg52.h>
#define uint usnigned int
#define uchar unsigned char
sbit p15=P1^5;
uint fru_num=20;
uint t=0;
void key()
{

}
void main()
{
TMOD=0x01;
TH0=(65526-50000)/256;//这是50ms的
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
key();//改变fru_num并将t=0
}
}
void timer_t0 interrupt 1
{
TH0=(65526-50000)/256;//这是50ms的
TL0=(65536-50000)%256;
t++;
if(t>fru_num)//设置为20,就是1s为高1s为低
{
t=0;
P15^=P15;
}

}

差不多这样吧

输入的频率计算为周期,再转换为定时器初值,在定时器中作输出处理。

先说一下,你现在可以实现哪些功能了?


单片机如何产生方波脉冲信号?
(1)设置定时器的计数器初值和重装载值,以确定定时器的计数范围和计时周期。 (2)设置定时器的工作模式,例如模式1或模式2。 (3)开启定时器中断和计数器。定时器中断触发时,产生一次方波脉冲信号。使用GPIO口:单片机的通用输入输出口(GPIO)也可以通过设置输出高低电平的方式产生方波脉冲信号。具体...

如何在单片机中输出38K方波(使用定时器方式2)的初值计算
1、周期时间T=1\/38K=26.3 us,半周期13us(电平翻转,占空比50%)2、使用定时公式计算或者定时器软件工具计算初值(TLx=0xF3,THx=0xF3,晶振12Mhz)

51单片机用t2定时器输出10k方波
void Timer0(void) interrupt 2 { TH0=(65536-50)\/256; \/\/指令周期1uS,TL0=(65536-50)%256; \/\/1mS方波半个周期50uS,即定时50次 OUT=~OUT; 定时器模式设定2

单片机输出多个方波,可以用哪几个芯片实现?
可以使用多个定时器,每个定时器输出不同的方波频率。每个定时器的计数器应配置为对应的频率,并使用每个定时器的比较寄存器生成方波。可以使用引脚分配多个方波,也可以使用外部设备(例如,模拟输出)。请确保编写程序以使用多个定时器,并且不会对其他功能造成影响。下面是一个使用51单片机同时输出不同频率方...

如何用STC12C5A60S2单片机直接发生SPWM波的程序,最好能调输出方波的频率...
我可以提供编程方法,1、计算好输出的SPWM的频率和周期。2、依据SPWM周期使用sin函数计算若干点的宽度值;3、输出信号不断更新计算好的脉冲宽度值输出不同宽度实现SPWM信号输出。

单片机输出方波,观测到方波有抖动,C程序很简单,求分析
你是打算让T0在36个机器周期(大概是36us)中断一次,输出反相的波形。但是,中断,并不是严格按照机器周期的个数来发生的。当主程序执行的时候,是一条一条的汇编语言指令,有些的指令是两个机器周期的。如果在执行“两个机器周期的指令”期间,中间发生了定时器溢出,中断并不会立即发生。要等到“两...

求教高手如何让单片机输出方波
include<reg51.h>\/\/如果是循环输出的话,我建议你做一个数组,如:unsigned char code Wafer_Level_Table[10] = { 0x01,0x01,0x00,0x01,0x00, 0x01,0x01,0x00,0x00,0x01,};static unsigned char i = 0;sbit Wafer_Output_IO = P0 ^ 1;\/\/ 初始化定时器void Timer0_Init( v...

如何用单片机产生方波
0.2秒方波,未说明是脉宽还是周期,只能认为是周期。则脉宽为0.2s÷2=100ms;define T100msAt20msCount 5 sbit WaveOut=P1^7;void Timer1()interrupt 3 { static unsigned char t20ms=0;TL1=tl1;\/\/ TH1=th1;\/\/按前面说的宏定义 if(++t20ms>=T100msAt20msCount){ t20ms-=T100msAt20ms...

关于单片机实现方波信号的输出,求大神解惑!
方波信号通常是固定高低电平宽度的,比如2毫秒的高电平+2毫秒的低电平 而PWM信号是可变的,周期同样是4毫秒,在T时刻,高电平脉宽为1毫秒,低电平脉宽为3毫秒,在T+1时刻,高电平脉宽为1.5毫秒,低电平脉宽为2.5毫秒等等,(因为它的占空比是可变的)占空比变化是根据你单片机程序写的 比如:setb p1.0 ...

基于单片机设计一个波形发生器,可产生方波、三角波、正弦波,且波形幅度...
3、建议不用数模转换,方波直接由定时器产生,三角波由方波经积分器产生,正弦波采用PWM输出加低通滤波器实现。4、方波调幅通过调节其后放大器增益实现,采用数字电位计或模拟电位计,三角波幅值调节通过调节方波幅值实现。正弦波调幅通过改变PWM调制比实现。5、建议采用双电源(运放比较好用,也好选型),单片机输出波形经低通...

富顺县13892892786: 52单片机输出方波 -
纪竖妇炎: #include #define uint usnigned int#define uchar unsigned char sbit p15=P1^5; uint fru_num=20; uint t=0; void key() { } void main() { TMOD=0x01; TH0=(65526-50000)/256;//这是50ms的 TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) { key...

富顺县13892892786: 怎么52单片机用计时器模式输出38k的方波? -
纪竖妇炎: 先根据你的单片机时钟,指令周期,计算出38KHZ对应的定时器初始值,使用2个计时器,1个控制总周期,1个控制占空比.例如T0控制总周期,T1控制占空比.1、同时启动T0和T1,输出脚置位为1;2、T1中断时,输出脚清位为0,并停T1;3、在T0中断时,完成了1个周期,重新开始第一步.也可以只使用1个计时器,不过麻烦一些.先装占空比的初始值,输出脚置位,带定时器中断时,输出脚清位为0,定时器再装入(总周期初始值-占空比的初始值)初始值,定时器再中断时,重复循环.

富顺县13892892786: 急!!!关于52单片机定时器产生方波的一段程序 -
纪竖妇炎: 你好像还差一条语句,启动定时器 TR0=1,定时器的中断比其他中断多几条语句 有的蜂鸣器输入直流电就能响,你别的方法看看p2.0口是否有变化,如示波器

富顺县13892892786: 求一个STC89C52单片机在P2.0引脚输出方波的C语言程序 -
纪竖妇炎: sbit P20=P2^0; void delay() //延时 {for循环语句程序,根据时间定 } main() { while(1) { P20=0; delay(); P20=1; delay(); } } 最好是用定时器做,那样会更精确,不会影响到mcu执行其他程序.

富顺县13892892786: 请教如何用单片机实现输出一定频率的方波 -
纪竖妇炎: 可以用单片机的定时器功能啊,你分别算出这两个方波的半周期,然后设置定时初值,到时就产生中断,然后进入中断程序,在中断程序中队输出口取反(开始的时候一定要置高或置低),总之要在1/2T内有电平的高低变换

富顺县13892892786: 52单片机定时中断方式2,产生方波问题? -
纪竖妇炎: #include<reg52.h> sbit PWM=P1^1; int t=0; void Init_Timer1(void) { TMOD |= 0x10;TH1=0xD8;//@12M 10ms 16bit 自动重载; Init value TL1=0xF0; EA=1; /* interupt enable */ ET1=1; /* enable timer1 interrupt */ TR1=1; } main() { Init_Timer1(); while(...

富顺县13892892786: 单片机产生方波程序 -
纪竖妇炎: #include "reg52.h" sbit PWM_OUT_BIT = P1^0; void Timer0_Init(void) { TMOD = 0x01; //工作在方式1,16位定时器 TH0 = 0xD8; //10us TL0 = 0xF0; ET0 = 1; //定时器0中断允许 } void Timer0_Int_Routine(void) interrupt 1 using 1 { static ...

富顺县13892892786: 求教高手如何让单片机输出方波 -
纪竖妇炎: #include<reg51.h> //如果是循环输出的话,我建议你做一个数组,如: unsigned char code Wafer_Level_Table[10] = {0x01,0x01,0x00,0x01,0x00,0x01,0x01,0x00,0x00,0x01, }; static unsigned char i = 0; sbit Wafer_Output_IO = P0 ^ 1;// 初始化...

富顺县13892892786: 怎么让单片机一个端口输出,50Hz的方波呀?谢谢 -
纪竖妇炎: 50Hz的周期T=1/F=0.02s.即20ms.周期由重复性的 正脉冲+负脉冲 构成,方波 的正脉冲宽度=负脉冲宽度.所以:方波的脉冲宽度=T/2=10ms,即 每10ms 取反一次 IO口,即可输出 50Hz方波.

富顺县13892892786: 单片机产生方波 -
纪竖妇炎: 快速10位pwm模式:#include void main() { DDRD|=0X30; //也许没必要.自己试试 TCCR1A=0XA3; //设置工作模式 TCCR1B=0X0B; //设置工作模式 OCR1A=800; //设置第1路占空比 OCR1B=500; //设置第2路占空比 }10位模式下 最高值是1023 调整OCR1A或OCR1B为511,即可产生占空比为50%的方波.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网