求一个STC89C52单片机控制直流电机微电机驱动电路程序

STC89C52单片机直流电机调试
10:10:11来源: eefocus
/////////////////////////////////////////////////////////////////////////
实现功能: 配置定时器1,让其每隔1毫秒产生一次中断,通过对中断的次数的统计,
&&&& 让定义的P2口的第0个引脚产生占空比为70%的PWM,通过它来驱动直流
实验板型号:BS-XYD-C52
实验名称:&直流电机测试实验
编写人:& 谢应东
编写日期:& &&&&&
/////////////////////////////////////////////////////////////////////////
#define uchar unsigned char
#define uint unsigned int
#define FOSC L
#define TIMS& (65535-FOSC/12/1000)&& //在12T模式下1秒的计算方法
uchar cC&&&& //定义定时器中断的次数,依次为根据产生PWM
sbit PWM=P2^0;&&& //定义直流电机相连的引脚为PWM
/////////////////////////////////////////////////////////////////////////
函数名称:毫秒延时函数
函数功能:实现毫秒级的延时
参数介绍:Delay_MS: 定义需要延时的毫秒的数值
&&&&&&&&& iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时
&&& iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
返回值:& 无
注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形
&&&&&&&&& 式完成,所以如果改变了晶振的频率,请做相应的改变
/////////////////////////////////////////////////////////////////////////
void DelayMs(uint Delay_MS)
&uint iNumber,iV
&for(iNumber=0;iNumber<Delay_MS;iNumber++)
&&&& iValue=107;
&&&& while(iValue--);
/////////////////////////////////////////////////////////////////////////
函数名称:Init_System
函数功能:配置定时器,让其产生每1毫秒产生一次中断,以此为根据生成相应的PWM
参数介绍:无
返回值:& 无
注意事项:无
/////////////////////////////////////////////////////////////////////////
void Init_System()
&DelayMs(50);& //稳定系统
&TMOD|= 0x10;& //设置定时器1为模式1(16bit)
&TL1 = TIMS;&& //给定时器1低字节寄存器赋初值
&TH1 = TIMS>>8; & //给定时器1高字节寄存器赋初值
&TR1& = 1; && //让定时器1开始工作
&ET1=1;&&& //打开定时器1的中断允许位
&EA=1;&&&&&&&&&&& //允许全局中断
&cCount=0;&&&&&&& //给赋初值
/////////////////////////////////////////////////////////////////////////
函数名称:main
函数功能:让定义的P2口的第0个引脚产生PWM,产生占空比为70%的PWM
参数介绍:无
返回值:& 无
注意事项:无
/////////////////////////////////////////////////////////////////////////
void main()
&Init_System();& //系统初始化函数
&&if(cCount>100)&& //定义cCount的上限
&&&cCount=0;
&&if(cCount<30)&& //定义占空比
&&else PWM=1;
/////////////////////////////////////////////////////////////////////////
函数名称:Timer1_Routine
函数功能:定时器1中断服务函数,实现重新给定时器赋值,改变计数变量的值
参数介绍:无
返回值:& 无
注意事项:无
/////////////////////////////////////////////////////////////////////////
void Timer1_Routine(void)
&TL1 = TIMS;&&& //重新给定时器1的低字节寄存器赋值
&TH1 = TIMS>>8; && //重新给定时器1的高字节寄存器赋值
&cCount++;&& && //
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。求一光敏电阻控制led的程序,单片机用的stc89c52,江湖救急啊 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
求一光敏电阻控制led的程序,单片机用的stc89c52,江湖救急啊
14:58:24  
求一光敏电阻控制led的程序,单片机用的stc89c52,江湖救急啊
高级工程师
17:18:06  
光敏电阻控制LED,要什么单片机控制做什么。
18:02:23  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
就是希望单片机控制小led的开关,没有光的时候小led会亮,有光小led就毁灭,我这里有个参考程序,可是我烧进去之后,却不好使,不知道问题出在了哪里。希望您能帮我看看,谢谢
#include&reg52.h&
sbit RL1=p0^5;
sbit led=p2^0;
sbit sb1=p0^6;
void Delay()
unsigned int DelayTime=20000;
while(DelayTime--);
void main()
if(1==RL1)
18:05:52  
lovezjf234 发表于
光敏电阻控制LED,要什么单片机控制做什么。
就是希望有光敏电阻来控制led的开关,无光时led亮,有光时就灭了,我这里有个参考程序可是烧进去后,led没有反应,希望您看看问题出在哪里,谢谢,麻烦了
#include&reg52.h&
sbit RL1=p0^5;
sbit led=p2^0;
sbit sb1=p0^6;
void Delay()
unsigned int DelayTime=20000;
while(DelayTime--);
void main()
if(1==RL1)
高级工程师
20:55:09  
你的电路呢,先测一下sb1信号对不?
10:36:31  
发一个电路图就好了。很快就能解决。
14:28:01  
hnjsty 发表于
发一个电路图就好了。很快就能解决。
这是电路图
(147.91 KB, 下载次数: 115)
14:27 上传
14:29:22  
lstcspring 发表于
你的电路呢,先测一下sb1信号对不?
sb1信号,应该怎么测啊,麻烦了
14:32:03  
你要的就是0和1。
光敏电阻,有光无光---&光敏电阻阻值变化---&转化成电压变化---& 直接控制LED了。
这个时候MCU是多余的。
14:57:17  
同学,你发光二极管没接电源。
15:12:19  
<font color="#htech 发表于
你要的就是0和1。
光敏电阻,有光无光---&光敏电阻阻值变化---&转化成电压变化---& 直接控制LED了。
这个我知道,不用单片机也可以完成这个,光控的led,可是我现在主要是为了做一个追光车,所以先用led做一个研究一下它的程序执行过程,所以先从简单的开始吗
15:14:27  
<font color="#htech 发表于
同学,你发光二极管没接电源。
这个我输入程序后不知道为什么灯一直是亮的,
助理工程师
13:28:04  
{:24:}{:24:}{:24:}
21个问题&&&&&&&&14609个浏览
21个问题&&&&&&&&24685个浏览
71个问题&&&&&&&&10783个浏览
Powered by& & 下面是一个stc89c52下的矩阵键盘程序,P0口接键盘,显示在P2口.
& & &#include&reg52.h& &#define uchar unsigned char &#define uint unsigned int &sbit key1=P3^2; &sbit key2=P3^3; uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};& //定义八个灯的工作状态。 uchar code wep[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; &void yanshi(uint t) & { & while(--t); &}
& & & &void main() &{ &
& & uchar han,lei, &while(1) &{ & P0=0xf0;& & //初始化为开关状态。 & han=P0;& & //han变量读取P0口的值。第一次扫描键盘。 & han=han&0xf0; //对han变量与0xf0与. & & & & & & & & //如果结果等于P0口初值(0xf0)说明没有键被按下. & & & & & & & & //如果结果不等于P0(0xf0)口初值,说明有键按下. & if(han!=0xf0) & & yanshi(125*5); //延时消抖. & & if(han!=0xf0)& //语句执行到这里说明真的有键按下. & &
{& & & & //例如按下S1键.则P0= & lei=P0&0xf0;& //lei读取P0口的值. & lei=lei|0x0f; //lei= & P0=& & //P0= & han=P0;& & //han= 第二次扫描键盘, & & & & &
//因为这里按键S1还是闭合的状态。 & han=han&0x0f; //han= & lei=lei&0xf0; //lei= & key=han+&
& } & switch(key)&
& { & case 0xee: P2=tab[0]; & case 0xde: P2=tab[1]; & case 0xbe: P2=tab[2]; & case 0x7e: P2=tab[3]; & case 0xed: P2=tab[4]; & case 0xdd: P2=tab[5]; & case 0xbd: P2=tab[6]; & case 0x7d: P2=tab[7]; & case 0xeb: P2=tab[8]; & case 0xdb: P2=tab[9]; & case 0xbb: P2=tab[10]; & case 0x7b: P2=tab[11]; & case 0xe7: P2=tab[12]; & case 0xd7: P2=tab[13]; & case 0xb7: P2=tab[14]; & case 0x77: P2=tab[15]; & } & } &
往下看有更多相关资料
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670& & &&)基于STC89C52单片机红外遥控步进电机_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于STC89C52单片机红外遥控步进电机
上传于|0|0|文档简介
&&基于STC89C52单片机红外遥控步进电机――毕业设计论文
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩17页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 单片机控制步进电机 的文章

 

随机推荐