基于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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
Qingniu017 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
马剑威(威哥爱编程)7 小时前
MongoDB面试专题33道解析
数据库·mongodb·面试
掘金-我是哪吒7 小时前
微服务mysql,redis,elasticsearch, kibana,cassandra,mongodb, kafka
redis·mysql·mongodb·elasticsearch·微服务
深圳市青牛科技实业有限公司8 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比9 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie9 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
全能全知者10 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器
齐 飞10 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
暮毅10 小时前
10.Node.js连接MongoDb
数据库·mongodb·node.js
极客小张13 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩