一、系統方案
1、本設計采用這51單片機作為主控器。
2、轉速值送到液晶1602顯示。
3、按鍵設加減速,開始暫停、正反轉。
二、硬件設計
原理圖如下:
三、單片機軟件設計
1、首先是系統初始化
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;
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仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。