超声波驱鼠器设计原理和C程序源码参考

2018-10-25 16:59

超声波驱鼠器设计原理和C程序源码参考

用的物料:STC单片机一个,蜂鸣器一个,LED一个,稳压器一个.

参考程序:

#include

/************* 功能说明 **************

本程序使用定时器做软件PWM。

定时器0做16位自动重装,中断,从T0CLKO高速输出PWM。

本例程是使用STC15F/L系列MCU的定时器T0做模拟PWM的例程。

PWM可以是任意的量程。但是由于软件重装需要一点时间,所以PWM占空比最小为32T/周期,最大为(周期-32T)/周期, T为时钟周期。

PWM频率为周期的倒数。假如周期为6000, 使用24MHZ的主频,则PWM频率为4000HZ。

******************************************/ typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32;

#define MAIN_Fosc 24000000UL //定义主时钟

//#define PWM_DUTY 1200 //定义PWM的周期,数值为时钟周期数,假如使用24.576MHZ的主频,则PWM频率为6000HZ。 u16 PWM_DUTY=1200;

#define PWM_HIGH_MIN 32 //限制PWM输出的最小占空比。用户请勿修改。

#define PWM_HIGH_MAX (PWM_DUTY-PWM_HIGH_MIN) //限制PWM输出的最大占空比。用户请勿修改。

sfr P1M1 = 0x91; //P1M1.n,P1M0.n =00--->Standard, 01--->push-pull sfr P1M0 = 0x92; // =10--->pure input, 11--->open drain sfr AUXR = 0x8E; sfr INT_CLKO = 0x8F;

//sbit P_PWM = P3^5; //定义PWM输出引脚。

sbit P_PWM = P1^2; //定义PWM输出引脚。STC15W204S sbit led = P1^1;

u16 pwm; //定义PWM输出高电平的时间的变量。用户操作PWM的变量。

u16 PWM_high,PWM_low; //中间变量,用户请勿修改。

void delay_ms(unsigned char ms); void LoadPWM(u16 i); void pwmflash();

/******************** 主函数**************************/ void main(void) {

P_PWM = 0;

//P3M1 &= ~(1 << 5); //P3.5 设置为推挽输出 //P3M0 |= (1 << 5);

P1M1 &= ~(1 << 4); //P1.4 设置为推挽输出 STC15W204S P1M0 |= (1 << 4);

TR0 = 0; //停止计数 ET0 = 1; //允许中断 PT0 = 1; //高优先级中断

TMOD &= ~0x03; //工作模式,0: 16位自动重装 AUXR |= 0x80; //1T TMOD &= ~0x04; //定时

INT_CLKO |= 0x01; //输出时钟

TH0 = 0; TL0 = 0;

TR0 = 1; //开始运行

EA = 1;

pwm = PWM_DUTY / 10; //给PWM一个初值,这里为10%占空比 LoadPWM(pwm); //计算PWM重装值

while (1) { // pwmflash();

while(PWM_DUTY>400) { PWM_DUTY-=100; pwmflash(); led=0; delay_ms(10); led=1; delay_ms(10); }

while(PWM_DUTY<1200) { PWM_DUTY+=100; pwmflash(); led=0; delay_ms(10); led=1; delay_ms(10); } /**/ } }

//========================================================================

// 函数: void delay_ms(unsigned char ms) // 描述: 延时函数。

// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟. // 返回: none. // 版本: VER1.0 // 日期: 2013-4-1 // 备注:

//========================================================================

void delay_ms(unsigned char ms) {

unsigned int i; do{

i = MAIN_Fosc / 13000; while(--i) ; }while(--ms);


超声波驱鼠器设计原理和C程序源码参考.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011秋《邓小平理论和三个代表重要思想概论》形成性考核册答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: