网站建设资讯

NEWS

网站建设资讯

c语言中表示方波的函数 什么是波形函数

C语言编写输出方波

以12M晶振,50ms为例

创新互联建站专业IDC数据服务器托管提供商,专业提供成都服务器托管,服务器租用,绵阳服务器托管绵阳服务器托管,成都多线服务器托管等服务器托管服务。

用定时器写

以下是中断程序

void pwm_1() interrupt 1

{

th0=(65536-50000)/256;

tl0=(65536-50000)%256;

P1^0=~P1^0;

}

用c语言编程实现C8051F300单片机1s定时,50Hz的方波输出

#include

sbit wave=P1^0;

void SetupTimer0()

{

TMOD = 0XF0; //仅保留T1信息

TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器

TH0 = 256-250;//定时每0.25ms中断一次

TL0 = 256-250;

TR0 = 1; //开启定时器

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

}

data unsigned char us250;

data unsigned int ms;

bit WAVE; //用以记住当前wave的状态

void Timer0_ISR() interrupt 1 //定时中断服务程序,为按键消抖服务

{

if (++us2504) return;

us250=0; ++ms;

if (ms10) return;

//每10ms波形变化一次,20ms完成一个波形,所以波形是50Hz的

ms=0;

WAVE=~WAVE; wave=WAVE; //方波输出

}

void main()

{

us250=ms=0;

wave=WAVE=0;

SetupTimer0();

EA = 1; //全局中断打开

while(1); //在中断函数中实现方波输出

}

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

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

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

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

程序如下:

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

#includeAT89X52.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(sm0xFF) //检测变量小于0xFF

{

   ++sm;   //自加1

P2_1=1;

}

else P2_1=0;

}

}

}

}

如何用c语言编写一段方波

最好还是不要用延时函数

比较准确的方法是利用定时器

以c51为例:

/*********定时器方波************/

/*********16位定时器************/

/************机器周期1us********/

/*********占空比50%*************/

/*********方波周期1s*************/

int a; // 定义全局整形变量

void int() interrupt 1

{

设置定时器初值为500;

a++;

if(a == 1000)

{

"输出取反"

}

}

用C语言中的数组编写出正弦波、方波和三角波,写一种就可以了

本程序加了一个LCD1602,,,,你自己选择使用哈

#includereg52.h //包含头文件

#includeintrins.h

#define uchar unsigned char //宏定义

#define uint unsigned int

uchar i , j ,n,z; //定义全局变量

sbit RS=P2^0; //定义端口

sbit RW=P2^1;

sbit E =P2^2;

sbit k=P2^7;

sbit k1=P2^6;

uchar code str0[]={"Sine Wave "}; //定义LCD1602显示字符数组

uchar code str1[]={"Triangle Wave"};

uchar code str2[]={"Square Wave "};

uchar code table[3][40]= //定义显示波形的二维数组

{

0x80,0x94,0xa7,0xb9,0xca,0xd9,0xe7,0xf1,0xf8,0xfd,

0xff,0xfd,0xf8,0xf1,0xe7,0xd9,0xca,0xb9,0xa7,0x94,

0x80,0x6c,0x55,0x46,0x35,0x25,0x18,0x0e,0x06,0x02,

0x00,0x02,0x06,0x0e,0x18,0x25,0x35,0x46,0x55,0x6c,

0x80,0x8c,0x99,0xa6,0xb3,0xc0,0xcc,0xd9,0xe6,0xf2,

0xff,0xf2,0xe6,0xd9,0xcc,0xc0,0xb3,0xa6,0x99,0x8c,

0x80,0x73,0x66,0x5a,0x4d,0x40,0x33,0x26,0x1a,0x0d,

0x00,0x0d,0x1a,0x26,0x33,0x40,0x4d,0x5a,0x66,0x73,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

void delay(uint z) //延时程序

{

for(z;z0;z--)

{

}

}

void Write_command(uchar cmd) //LCD1602写入命令程序

{

RS=0; //选择指令寄存器

RW=0; //写操作

E =1; //使能端

P1=cmd;

delay(1);

E =0;

delay(10); //延时 使LCD1602处于不忙状态

}

void Write_data(uchar cmd) //LCD1602写入数据命令

{

RS=1; //选择数据寄存器

RW=0; //写操作

E =1; //时能端

P1=cmd;

delay(1);

E=0;

delay(10); //延时 使LCD1602处于不忙状态

}

void Lcd_init() //LCD1602初始化程序

{

Write_command(0x38); //设置16*2显示 5*7点阵 8位数据接口

Write_command(0x0c); //LCD1602开显示 ,不显示光标

Write_command(0x06); //读或写一字符后指针加一 ,显示不移动

Write_command(0x80+0x00); //数据指针地址设置

}

void Display() //LCD1602显示英文程序

{

Lcd_init();

if (i==0)

{

for (n=0;n13;n++)

{

Write_data(str0[n]);

}

}

else if(i==1)

{

for(n=0;n13;n++)

{

Write_data(str1[n]);

}

}

else

{

for(n=0;n13;n++)

{

Write_data(str2[n]);

}

}

}

void main() //主函数

{

Display();

while(1)

{

for(j=0;j40;j++)

{

P0=table[i][j];

}

if(k==0) //开关程序

{

delay(1);

if(k==0);

{

if(k==0)

{

i++;

if (i==3) i=0;

Display();

}

}

while(k==0);

}

}

}

怎样用C语言编写一个方波函数?

附上代码,讲解在后面:

public class Program

{

static void Main(string[] args)

{

ListPoint range = new ListPoint(5 * 5);

for (int i = 0; i 5; i++)

{

for (int j = 0; j 5; j++)

{

range.Add(new Point { X = j, Y = i });

}

}

//移动方向的顺序

MoveDirection[] md = new[]


分享标题:c语言中表示方波的函数 什么是波形函数
转载来于:http://cdweb.net/article/hpcjie.html