一、系統(tǒng)方案
本文主要研究了利用MCS-51系列單片機(jī)控制PWM信號(hào)從而實(shí)現(xiàn)對(duì)直流電機(jī)轉(zhuǎn)速進(jìn)行控制的方法。本文中采用了三極管組成了PWM信號(hào)的驅(qū)動(dòng)系統(tǒng),并且對(duì)PWM信號(hào)的原理、產(chǎn)生方法以及如何通過(guò)軟件編程對(duì)PWM信號(hào)占空比進(jìn)行調(diào)節(jié),從而控制其輸入信號(hào)波形等均作了詳細(xì)的闡述。另外,本系統(tǒng)中使用了霍爾元件對(duì)直流電機(jī)的轉(zhuǎn)速進(jìn)行測(cè)量,經(jīng)過(guò)處理后,將測(cè)量值送到液晶顯示出來(lái)。
二、硬件設(shè)計(jì)
原理圖如下:
三、單片機(jī)軟件設(shè)計(jì)
1、首先是系統(tǒng)初始化
void init()//初始化
{
en=0;
rw=0;
write_com(0x01); //lcd初始化
write_com(0x38); //5X7顯示
write_com(0x0c); //關(guān)閉光標(biāo)
TMOD=0x01; //定時(shí)器方式1
TH0=0xdc;
TL0=0x00; //定時(shí)器初值
EA=1; //開中斷
ET0=1; //定時(shí)器0開中斷
TR0=1;
EX1=1;
IT1=1; //定時(shí)器啟動(dòng)
TH1=0xfc;
TL1=0x66;//定時(shí)100us
ET1=1; //定時(shí)器1開中斷
TR1=1;
write_com(0x80);
write_data(‘V’);
write_data(‘:’);
write_com(0x87); //第一行顯示轉(zhuǎn)數(shù)
write_data(‘r’);
write_data(‘p’);
write_data(‘m’);
write_com(0xc0);
write_data(‘z’);
write_data(‘h’);
write_data(‘a(chǎn)’);
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數(shù)據(jù)指令
{
rs=1;
P0=date;
delay(5);
en=0;
delay(5);
en=1;
}
3、按鍵檢測(cè)程序
void keyscan() //鍵盤掃描函數(shù)
{
if(num10)
{
delay(5); //消除抖動(dòng)
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; //開始正轉(zhuǎn)
fan=0; // 反轉(zhuǎn)停止
}
}
if(num40)
{
delay(5);
if(num40)
{
zheng=0; //正轉(zhuǎn)停止
fan=1; // 反轉(zhuǎn)開始
}
}
if(num50)
{
delay(5);
if(num50)
{
while(num5==0) ;
kai=1-kai;
}
}
}
4、核心算法程序
void display()
{
write_com(0x82);
zhuansu=zhuansu*30; //每分鐘轉(zhuǎn)速
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(’ ');文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-667052.html
if(m/200%100&&m/20%100)
write_data(’ ');
else
write_data(m/20%10+0x30);
write_data(m/2%10+0x30);
}
四、proteus仿真設(shè)計(jì)
Proteus軟件是一款應(yīng)用比較廣泛的工具,它可以在沒(méi)有硬件平臺(tái)的基礎(chǔ)上通過(guò)自身的軟件仿真出硬件平臺(tái)的運(yùn)行情況,這樣就可以通過(guò)軟件仿真來(lái)驗(yàn)證我們?cè)O(shè)計(jì)的方案有沒(méi)有問(wèn)題,如果有問(wèn)題,可以重新選擇器件,連接器件,直到達(dá)到我們?cè)O(shè)定的目的,避免我們搭建實(shí)物的時(shí)候,如果當(dāng)初選擇的方案有問(wèn)題,我們器件都已經(jīng)焊接好了,再去卸載下去,再去焊接新的方案的器件,測(cè)試,這樣會(huì)浪費(fèi)人力和物力,也給開發(fā)者帶來(lái)一定困惑,Proteus仿真軟件就很好的解決這個(gè)問(wèn)題,我們?cè)谠O(shè)計(jì)之初,就使用該軟件進(jìn)行模擬仿真,測(cè)試,選擇滿足我們?cè)O(shè)計(jì)的最優(yōu)方案。最后根據(jù)測(cè)試沒(méi)問(wèn)題的仿真圖紙,焊接實(shí)物,調(diào)試,最終完成本設(shè)計(jì)的作品。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-667052.html
到了這里,關(guān)于基于51單片機(jī)直流電機(jī)PWM調(diào)速液晶1602顯示設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!