ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

51单片机+L293D控制直流电机起保停+数码管PWM调速显示

2021-06-26 22:34:26  阅读:166  来源: 互联网

标签:P0 u8 L293D void 51 数码管 1000 PWM define


51单片机+L293D控制直流电机起保停+数码管PWM调速显示
  • PWM速度10级可调

  • 采用L293D驱动

  • 数码管显示PWM当前占空比

  • 可优化的地方是数码管可以采用其他驱动芯片来驱动,提高驱动能力和减少单片机的IO口占用,例如74LS138译码器来驱动,前面几篇文章有写到采用数码管驱动芯片来做示例的可以参照。

  • 仿真演示
    在这里插入图片描述

  • 程序代码

#include <STC89C5xRC.H>
typedef unsigned char u8;
typedef unsigned int u16;
#define EN1 P22
#define D1 P20
#define D2 P21
#define button_Z P10
#define buttun_R P11
#define button_T P12
#define PWM_add P13
//#define PWM_sub P14
u8 flag=0;
u8 flag1=0;
static u8 b =5;
u8 code table[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

void init();
void zhengzhuan();
void fanzhuang();
void ting();
void buttonscan();
void delayms(u8 rms);
void display(u16 num);

void main (){

	init();
	EA=1;
	while(1)
	{
		 buttonscan();	
			
	}
}

void zhengzhuan(){
	//EN1=1;
	ET0=1;
	D1=1;
	D2=0;
}
void fanzhuang(){
	//EN1=1;
	ET0=1;
	D1=0;
	D2=1;
}
void ting(){
//	EN1=0;
	ET0=0;
	D1=1;
	D2=1;
}
void buttonscan(){
	if(button_T==0){
		ting();	
	}
	if(button_Z==0){
		zhengzhuan();
	}
	if(buttun_R==0){
		fanzhuang();
	}	
		if(PWM_add==0&&flag==0){
			flag=1;
		}
		if(PWM_add==1&&flag==1)
		{
			b++;
			if(b>10)b=0;
		flag=0;
		}
	display(b);		

}
void init()
{  	
	TMOD=0X01;
	TH0 = (65536-1000)/256;
	TL0 = (65536-1000)%256;
	TR0 =1;
	ET0=1;
	EA=1;
	ET0=1;
}
void time0 ()interrupt 1
{//中断处理函数
	static u16 a;
	TH0 = (65536-1000)/256;
	TL0 = (65536-1000)%256;
a++;
if(a>9) //1khz 
a=0;
if(a<b) //占空比可改 
EN1=1; 
else EN1=0;
 
}
void display(u16 num)
{
P27=0;
P0=table[(num/1000)];
delayms(2);
P0=0X00;//消隐
P27=1;

P26=0;
P0=table[(num/1000)];
delayms(2);
P0=0X00;
P26=1;

P25=0;
P0=table[(num/10)];
delayms(2);
P0=0X00;
P25=1;

P24=0;
P0=table[(num%10)];
delayms(2);
P0=0X00;

P24=1;
 }

void delayms(u8 rms)
{
	u8 i,j;
	for(i=0;i<rms;i++)
		for(j=0;j<110;j++);
}

标签:P0,u8,L293D,void,51,数码管,1000,PWM,define
来源: https://blog.csdn.net/weixin_42880082/article/details/118255428

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有