STC单片机IO方波脉冲输出
来源:互联网 发布:windows phone 知乎 编辑:程序博客网 时间:2024/05/22 17:41
有时候我们工作中要组建的系统结构简单,只用到了简单的stc51系列的单片机,但是考虑到驱动一些1-Wire控制的芯片,需要用到一定形式的方波信号,可以的是我们的stc内部没有PWM调制输出IO,只有用一些其他的办法来模仿。
一般我个人使用下面两个方法,各有自己的方便之处:
方法一:
用T0定时器完成PWM输出,脉宽固定,T1来决定高平的宽带来进行PWM调制
代码如下:
#include < reg51.h >#include < intrins.h >sbit K1 =P1^4 ; //增加键sbit K2 =P1^5 ; //减少键sbit P00 =P0^1;unsigned char PWM=0xe7; //赋初值void delayms(unsigned char ms);void delay(unsigned char t);/*********************************************************/void main(){ P1=0xff; TMOD=0x21 ; TH0=0xff ; //50us延时常数 TL0=0xce ; //频率调节 TH1=PWM ; //脉宽调节 TL1=0 ; EA=1; ET0=1; ET1=1; TR0=1 ; while(1) { do{ if(PWM!=0xff) {PWM++ ;delayms(10);} else Beep() ; } while(K1==0); do{ if(PWM!=0xce) {PWM-- ;delayms(10);} else Beep() ; } while(K2==0); }}void timer0() interrupt 1{ TR1=0 ; TH0=0xff ; TL0=0xce ; TH1=PWM ; TR1=1 ; P00=0 ; //启动输出}void timer1() interrupt 3{ TR1=0 ; P00=1 ; //结束输出}/*********************************************************/// 延时子程序/*********************************************************/ void delay(unsigned char t) { while(t--) ; }/*********************************************************/// 延时子程序/*********************************************************/void delayms(unsigned char ms){ unsigned char i ; while(ms--) { for(i = 0 ; i < 120 ; i++) ; }}/*********************************************************/
如果不需要连续的脉冲,就像我这次一样,只需要确定低电平的时间以及几个上升沿,可以直接用IO口来模仿出方波即可。下面贴出代码:
#include <reg51.h>#include <intrins.h>typedef unsigned int uint;typedef unsigned char uchar;sbit bo=P2^2;sbit key2=P3^0;sbit key3=P3^1;sbit key4=P3^2;static int Cout;void delay_ms(uint mt){uint x,y;for(x=mt;x>0;x--){for(y=114;y>0;y--);}}void delay_10us(){_nop_();}void boproduce(Cout){for(;Cout>=1;Cout--){bo=0;delay_10us();bo=1;}}void main(){while(1){if(~key2){delay_ms(10);if(~key2){boproduce(3);}}if(~key3){delay_ms(10);if(~key3){boproduce(2);}}if(~key4){delay_ms(10);if(~key4){boproduce(1);}}}}
2 0
- STC单片机IO方波脉冲输出
- STC单片机IO口状态。
- stc单片机如何用C程序将IO口设为强推挽输出!!!
- 编写51单片机程序,输出方波,at89s52的单片机
- 增强型单片机STC12C5A60S2输出各种频率方波信号
- STC单片机之我见(一)-----IO口
- 利用51单片机统计脉冲个数,即时输出显示
- matlab产生方波脉冲和周期性方波信号
- 输出 方波 D/A
- 单片机编程,输出周期为2S和0.5S的方波
- 用51单片机做信号发生器,同时输出四种频率的方波
- STC单片机的延时
- STC单片机波特率计算
- STC单片机遭遇
- STC单片机EEPROM读写
- STC单片机 DS1302
- STC单片机程序-按键
- STC单片机编程知识点
- 【算法】程序猿不写代码是不对的52
- 2017-05-04-Facebook出品的Android声明式开源新框架Litho文档翻译-总览和导航
- 数位DP-UESTC
- 一个图片压缩工具
- throw on catch
- STC单片机IO方波脉冲输出
- JS 图片转Base64编码
- LMAX架构
- 蓝桥杯之反幻方
- egret 必须先添加监听再设置skin
- BZOJ 4399: 魔法少女LJJ
- Android中的dex、apk、ClassLoader详解
- multiselect选项框
- 软考知识点