STC 89C51,单片机C语言程序,P10输出PWM方波

STC 89C51,单片机C语言程序,P10输出PWM方波,第1张

串口还是P10?我下面贴出P10输出PWM的产生代码,希望对你能有帮助。

#include <reg51h>

# t  10000/100   //修改10000更改周期 单位us  T(us)=10^6/f(hz) 至少10000us

# Duty_cycle 10 ///更改此更改占空比  0-100

unsigned char percent=0;

sbit work_pin P1^0;

void Timer0Init()  //定时器0初始化

{

TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0xff;

TL0=0x9c;

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

EA=1;//打开总中断

TR0=1;//打开定时器

}

void  PWM_work()   interrupt 1   

{

TH0=0xff;

TL0=0c9c;  

percent++;

if(percent<=Duty_cyclet/100)

{

work_pin=1;

if(percent>t)   percent=0;

}

else work_pin=0;

      

}

void main()

{

Timer0Init();

while(1);

}

超声波的话我用的是X宝上的潮汕波模块,这里我写了一个超声波的头文件 我传给你好了,还有头文件上说明,应该能看懂的

传不来 文件 直接发给你好了。

/

头文件说明:

本头文件有三个可以调用的函数

1串口的初始化函数 UESC_UART_Init(uint band)

1)参数是设定的波特率,晶振是12MHz,建议设置为2400

2)注意初始化后要简短延时。

2 UESC_UART_Putchar(char kkk)

该函数可以向上位机发送一个字节的数据,参数就是要发送的数据。

本函数是用到了中断,这样程序在接收数据的时候可以运行其他程序。

单片机通过串口接收到数据之后将8位的数据放在 date 的外部变量中,所以在主函数里可以直接 *** 作接收来的变量;

接收到数据后同时会将外部变量flag置位,以适应不同的应用场合。

注意: 使用到串口是 定时器1不能使用。

发送单个字符的时候记得加 ‘’ 将字符括起来。

记得将flag置一;

第二次修改的内容:

给初始化函数加了晶振的选择,传递的参数就是晶振的频率 12M的晶振就传递12

注意:该函数在12M 24M 24576M测试搜通过。 但是110592死活不成功,不要问为什么,搞得好像我知道似的!

建议在调用之前建议先测试一下该晶振频率能否通过。

第二次修改的内容:

解决了部分晶振频率串口通信失败的问题,现在所有的晶振均测试通过。

同时加了字符串输出函数:UART_PutString(char s) 参数就是要显示的字符串,记得用“”。

作者@Jack_kk

完成日期:2014_4_14

第一次修改时间:2014_5_13

第二次修改时间:2014_5_18

第三次修改时间:2014_5_19

/

#include<reg51h>

#include<stdioh>

#include"UARTh"

char get_char;

bit flag;

unsigned char date;

void UESC_UART_Init(uint band,double MHz)

{

TMOD|=0x20;

TH1=256-(double)(MHz2604)/band;

TL1=TH1;

SM0=0; //和下面的一条语句同时设定串口工作方式

SM1=1;

REN=1; //允许串口接收

EA=1; //总中断

TR1=1; //定时器开始

ES=1; //开串口中断

}

void UESC_UART_Putchar(char kkk)

{

ES=0;

SBUF=kkk;

while(!TI);

TI=0;

ES=1;

}

void UART_PutString(char s)

{

while(s)

{

UESC_UART_Putchar(s++);

}

}

/

void UESC_UART_Getchar(void) //这个部分注释掉是因为 没有用到中断。

{

ES=0; //发送数据之前把串口关闭

// TI=1; //这里是发送一个字符串printf的用法,先关闭窗口中断,然后TI 好就是这样、

// puts(" Please input a letter");

// TI=0;

while(!RI);

RI=0;

get_char=SBUF;

// TI=1;

// printf("The letter you just input is ");

// TI=0;

SBUF=get_char;

while(!TI);

TI=0;

ES=1;

}

/

错了,那是串口头文件 sorry

/

头文件说明

本头文件适用于HC-HR04超声波模块

经封装本头文件可以直接调用的函数是:

1Ultrasound_Init();

初始化定时器0;

2Get_time();

取得距离函数,返回值是距离,单位厘米,声速是240m/s时的测量结果。

示例:

Ultrasound_Init();

while(1)

{

dis=Get_time();

display(dis);

}

注意:

1本头文件占用了定时器0,在主函数里面就不要在使用定时器0了;

2调用本头文件之前记得修改IO口;

3测量周期建议在60ms以上。

作者@Jack_kk

时间:2014_5_14

/

#include"Ultrasoundh"

#include<intrinsh>

#include<reg51h>

sbit Echo=P3^2;

sbit Trig=P1^0;

void Delay15us() //@12000MHz

{

unsigned char i;

i = 42;

while (--i);

}

void Ultrasound_Init()

{

TMOD|=0x09;

TH0=TL0=0;

ET0=1;

TR0=1;

EA=1;

}

unsigned int Get_dis()

{

int timeout=20000;

Trig=1;

Delay15us();

Trig=0;

while(!Echo&timeout)

timeout--;

timeout=20000;

while(Echo&timeout)

timeout--;

timeout=TH0256+TL0; //这里偷了一点懒,将变量防死机变量timeout作为了返回值

TH0=TL0=0;

return timeout0024;

}

1 特征提取:PZ使用的是滤波器组的方法,从频谱上提取特征,而STC则是从时域上提取特征;

2 特征量:PZ提取的特征量比STC少,一般是每一帧的均值、方差、峰值等,而STC提取的特征量更多,包括均值、方差、峰值、偏度、峰度等;

3 计算复杂度:PZ计算复杂度较低,而STC计算复杂度较高。

#include <reg51h>

void delayms(int xms)

{

char i=0;

for(;xms>0;xms--)

for(i=0;i<110;i++)

;

}

main(void)

{

while(1)

{

P1=0xaa;

delayms(1000);

P1=0x55;

delayms(1000);

}

}

if ($kind != 'ReplyTo') {

if (!isset($this->all_recipients[strtolower($address)])) {

array_push($this->$kind, array($address, $name));

$this->all_recipients[strtolower($address)] = true;

return true;

}

1、使用编程器将HEX文件烧录到STC12芯片中。

2、使用ISP编程工具或者仿真器连接STC12芯片与PC机,获取芯片上的程序代码。

3、使用专门的反汇编工具,将HEX文件反汇编为汇编代码或C语言代码。

4、根据反汇编结果,对程序代码进行分析和理解。

STC15是一种常用的单片机,其程序设计需要结合具体的开发板和任务需求来确定。一般来说,要快速写出STC15的程序,可以按照以下步骤进行:

1 确定任务需求。首先要明确需要实现什么功能,例如控制电机、采集温度、检测红外等。

2 编写程序框架。根据任务需求,编写程序的基本框架,包括初始化、配置、中断处理和主程序等。

3 编写功能模块。根据任务需求,编写相应的功能模块,例如驱动电机的模块、采集温度的模块、检测红外的模块等。

4 调试程序。在编写完程序后,需要进行调试,确保程序能够正常运行,并且满足任务需求。

5 优化程序。在程序调试完成后,可以进行程序的优化,包括提高程序的运行效率、减少程序的代码长度等。

需要注意的是,STC15的程序设计需要具备一定的单片机开发经验和相关知识,如果您是初学者,可能需要花费一定的时间和精力来学习和掌握相关知识。另外,STC15的程序设计也需要根据具体的实际情况来确定,不同的任务需求和开发板可能需要不同的程序设计方法。

为了保证您获得最佳体验,请前往 >

以上就是关于STC 89C51,单片机C语言程序,P10输出PWM方波全部的内容,包括:STC 89C51,单片机C语言程序,P10输出PWM方波、跪求一个 用stc12c系列 pca发送40khz 单片机 定时捕捉回波 的超声波测距 c语言程序、pz和stc的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9731564.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存