基于51单片机直流电机PWM调速液晶1602显示设计

一、系统方案

本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的阐述。另外,本系统中使用了霍尔元件对直流电机的转速进行测量,经过处理后,将测量值送到液晶显示出来。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

void init()//初始化

{

en=0;

rw=0;

write_com(0x01); //lcd初始化

write_com(0x38); //5X7显示

write_com(0x0c); //关闭光标

TMOD=0x01; //定时器方式1

TH0=0xdc;

TL0=0x00; //定时器初值

EA=1; //开中断

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

TR0=1;

EX1=1;

IT1=1; //定时器启动

TH1=0xfc;

TL1=0x66;//定时100us

ET1=1; //定时器1开中断

TR1=1;

write_com(0x80);

write_data('V');

write_data(':');

write_com(0x87); //第一行显示转数

write_data('r');

write_data('p');

write_data('m');

write_com(0xc0);

write_data('z');

write_data('h');

write_data('a');

write_data('n');

write_data('k');

write_data('o');

write_data('n');

write_data('g');

write_data('b');

write_data('i'); //第二行显示占空比:

write_data(':');

displaym();

}

2、液晶显示程序

void write_com(uchar com)//1602控制指令

{

rs=0;

P0=com;

delay(5);

en=0;

delay(10);

en=1;

}

void write_data(uchar date)//1602数据指令

{

rs=1;

P0=date;

delay(5);

en=0;

delay(5);

en=1;

}

3、按键检测程序

void keyscan() //键盘扫描函数

{

if(num10)
{
delay(5); //消除抖动
if(num10)

{

if(m<=199)

m++;

displaym(); //占空比加一

}

}

if(num20)
{
delay(5);
if(num20)

{

if(m>=1)

m--;

displaym(); //占空比技跻?

复制代码
 }

}

if(num30)
{
delay(5);
if(num30)

{

zheng=1; //开始正转

fan=0; // 反转停止

复制代码
 }

}

if(num40)
{
delay(5);
if(num40)

{

zheng=0; //正转停止

fan=1; // 反转开始

复制代码
 }

}

if(num50)
{
delay(5);
if(num50)

{

while(num5==0) ;

kai=1-kai;

}

}

}

4、核心算法程序

void display()

{

write_com(0x82);

zhuansu=zhuansu*30; //每分钟转速

if(zhuansu/10000!=0)

write_data(zhuansu/10000+0x30);

else

write_data(' ');

if(zhuansu/10000)
write_data(' ');
else
write_data(zhuansu%10000/1000+0x30);
if(zhuansu/1000)

write_data(' ');

else

write_data(zhuansu%10000%1000/100+0x30);

if(zhuansu/10==0)

write_data(' ');

else

write_data(zhuansu%10000%1000%100/10+0x30);

write_data(zhuansu%10000%1000%100%10+0x30);

write_com(0xd0);

}

void displaym()

{

write_com(0xcb);

if(m/200%10!=0)

write_data(m/200%10+0x30);

else

write_data(' ');

if(m/200%100&&m/20%100)

write_data(' ');

else

write_data(m/20%10+0x30);

write_data(m/2%10+0x30);

}

四、proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
尼喃4 小时前
OVP/OCP过压过流保护芯片选型表:2A、3A、5A与10A方案怎么选
嵌入式硬件
无敌贵点大王10 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
NYFEA10 小时前
NF532重磅上新:高集成度13.56MHz非接触式控制器
嵌入式硬件
创界工坊工作室11 小时前
29-基于单片机的万年历设计
stm32·单片机·嵌入式硬件·proteus
国科安芯12 小时前
在轨服务与空间机器人任务中跨飞行器CANFD互连的共模与单粒子问题综述
嵌入式硬件·机器人·canfd·低轨卫星·商业航天·抗辐射
沐欣工作室_lvyiyi12 小时前
基于STM32的社区养老控制系统设计(论文+源码)
stm32·单片机·嵌入式硬件·社区养老控制系统·保定理工学院·华德学院·淮南师范学院
chengpei14713 小时前
硬改斐讯K2路由器32M Flash编译适配immortalwrt固件
嵌入式硬件·智能路由器
snow@li13 小时前
单片机:全景梳理核心原理与体系深度分析
单片机·嵌入式硬件
创界工坊工作室13 小时前
26-基于51单片机的智能热水器控制系统设计
stm32·单片机·嵌入式硬件·毕业设计·51单片机·proteus
安妮细水长流13 小时前
【无标题】
数据库·mongodb