久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機全自動洗衣機控制程序及原理圖等制作資料
[打印本頁]
作者:
Mr_zhang
時間:
2017-7-30 16:40
標題:
單片機全自動洗衣機控制程序及原理圖等制作資料
1、利用MCS-51內部定時器定時,實現倒計時的時間控和顯示;
2、能按鍵調整洗衣機洗滌類型;
3、正反轉控制,到時間蜂鳴器報警;
制作成功的全自動洗衣機實物圖:
實物圖.jpg
(302.94 KB, 下載次數: 79)
下載附件
實物圖
2017-7-30 16:36 上傳
單片機原理圖:
原理圖.png
(77.46 KB, 下載次數: 90)
下載附件
原理圖
2017-7-30 16:36 上傳
系統C語言程序:
#include <REG51.H>
#define uchar unsigned char //類型定義,方便書寫
#define uint unsigned int
uchar code roundz[] ={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; //步進電機正轉控制數組
uchar code roundf[] ={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; //步進電機反轉控制數組
uchar code disptab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極LED顯示器顯示碼
sbit beep=P2^7;
sbit baiwei=P2^0;
sbit shiwei=P2^1;
sbit gewei=P2^2; //數碼管位選
uint num,sec;
#define K1 0x06
#define K20x5
#define K3 0x3 //按鍵碼,分別檢測三個按鍵是否有按下
sbit in_water=P3^3;
sbit out_water=P3^4;
sbit LED_bz=P3^5;
sbit LED_qr=P3^6;
sbit LED_sg=P3^7; //5個LED燈,分別為進水,出水,標準,輕柔和甩干
//**************基本延遲函數************************************************
void delay(uint dcnt) // 延遲時間為dcntms
{
uint i,j;
for(i=dcnt;i>0;i--)
for(j=120;j>0;j--);
}
//************定時器0控制倒計時*****************************************
void count_down() interrupt 1
{
int count ;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //定時器0每50ms產生一次中斷;
count ++;
if(count == 20) //每50*20=1s sec的值減1
{
count =0;
sec--;
if(sec==0) //計時結束時,關閉總中斷,電機停止轉動。
{
EA=0;
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
while(1);
}
}
}
//***************倒計時的數碼管顯示程序*******************************
void display() interrupt 3 //利用定時器1來進行數碼管顯示
{
TH1=(65536-5000)/256; //每5ms掃描一次
TL1=(65536-5000)%256;
num=(num%3);
P0=0xff; //消影
switch(num)
{
case 0:
P0=disptab[sec/100];
baiwei=1; shiwei=0;gewei=0;
break;
case 1:
P0=disptab[(sec/10)%10];
baiwei=0; shiwei=1; gewei=0;
break;
case 2:
P0=disptab[sec%10];
baiwei=0; shiwei=0; gewei=1;
break;
default:break;
}
num++;
}
//************************步進電機正轉控制函數******************************
void RotateWise(uinttime,uchar stepcnt) //time為轉一步時間,stepcnt為圈數
{
uchar i ,j;
for(i=0;i<stepcnt;i++)
{
for(j=0;j<8;j++)
{
P1= roundz[j] ;
delay (time); //更改delay里數值可改變轉速,轉一圈時間為time*8 ms
}
}
}
//***********************步進電機反轉控制函數****************************
void ContraRotate(uinttime,uchar stepcnt) //time為轉一步時間,stepcnt為圈數
{
uchar i ,j;
for(i=0;i<stepcnt;i++)
{
for(j=0;j<8;j++)
{
P1= roundf[j] ; //更改delay里數值可改變轉速,轉一圈時間為time*8 ms
delay (time);
}
}
}
//**************************洗滌子程序****************************************
void xidi()
{
uint i;
in_water = 0;
delay(9000); //開水閥,進水9s
in_water = 1; //關水閥
delay(1000);
for(i=10;i>0;i--) //轉動十次
{
RotateWise(50,10) ; //正轉10圈,轉速為50ms*8
delay(1000); //停止一秒
ContraRotate(50,10) ; //反轉10圈,轉速為50ms*8
delay(1000);
}
}
//**************************漂洗子程序****************************************
void piaoxi()
{
uint i;
in_water = 0;
delay(9000); //開水閥,進水9s
in_water = 1; //關水閥
delay(1000);
for(i=5;i>0;i--) //轉動五次
{
RotateWise(100,10) ; //正轉10圈,轉速為100ms*8
delay(1000); //停止一秒
ContraRotate(100,10) ; //反轉10圈,轉速為100ms*8
delay(1000);
}
}
//*********************脫水子程序*******************************************
void tuoshui()
{
uint i;
out_water = 0; //打開排水閥
delay(9000); //排水9s
for(i=10;i>0;i--) //轉動十次
{
RotateWise(50,10) ; //正轉10圈,轉速為50ms*8
}
beep=0;
delay(1000); //蜂鳴器警報
beep=1;
out_water =1 ; //甩干完畢,關閉水閥
}
//********************標準模式************************************************
void biaozhun()
{ sec=360; //設定倒計時數目
LED_bz = 0; //點亮“標準”LED燈
xidi(); //洗滌
piaoxi();
piaoxi(); //2次漂洗
tuoshui(); //脫水
LED_bz=1; //熄滅LED燈
}
//*********************輕揉模式********************************************
void qingrou()
{ sec=250; //設定倒計時數目
LED_qr = 0; //點亮“輕揉”LED燈
piaoxi();
piaoxi(); //2次漂洗
tuoshui(); //脫水
LED_qr = 1; //熄滅LED燈
}
//**********************甩干模式********************************************
void shuaigan()
{
sec=50; //設定倒計時數目
LED_sg = 0; //點亮“甩干”LED燈
tuoshui(); //脫水
LED_sg = 1; //熄滅LED燈
}
//********************鍵盤掃描程序****************************************
uchar scankey()
{
int key;
if((P3&0x07)== 0x07)
return(0xff); //消抖
delay(30);
if((P3&0x07)== 0x07)
return(0xff);
key = P3&0x07;
while ((P3&0x07)!=0x07); //當有按鍵按下的時候,返回key值,判斷哪個按鍵被按下
return key;
}
//******************主函數************************************************
void main()
{
TMOD|=0x11; //定時器0和定時器1模式 工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //定時0器寄存器裝初值,每50ms產生一次中斷
EA=0; //關總中斷
ET0=1; //開定時器0中斷
TH1=(65536-5000)/256; //定時器1寄存器裝初值,沒5ms產生一次中斷
TL1=(65536-5000)%256;
ET1=1; //打開定時器1中斷
TR0=1;
TR1=1; //打開定時器0和定時器1
while(1)
{
uchar key = scankey();
if (key == K1)
{
EA=1; //開總中斷[em12]
biaozhun();
}
if (key == K2)
{
EA=1;
qingrou();
}
if (key == K3)
{
EA=1;
shuaigan();
} } }
復制代碼
全部資料下載地址:
main.doc
(5.74 KB, 下載次數: 74)
2017-7-30 16:39 上傳
點擊文件名下載附件
程序
下載積分: 黑幣 -5
作者:
jiangjiaming
時間:
2017-8-1 00:05
謝謝分享!
作者:
faridzled
時間:
2017-8-1 04:38
thanks for sharing
作者:
danpianji80c51
時間:
2017-8-1 09:27
贊個。!
作者:
gujp312365
時間:
2017-8-1 14:46
項目是好,但你定時器里面用while死循環,我是第一次看到,而且程序中的時間用了大量的DELAY來實現,非常不合理的設計
作者:
持勤補拙
時間:
2017-8-3 17:51
謝謝樓主
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
粉嫩粉嫩芽的虎白女18在线视频
|
国产不卡视频
|
欧美在线一区视频
|
久久久一二三
|
完全免费在线视频
|
a黄视频
|
久久蜜桃av一区二区天堂
|
色综合天天天天做夜夜夜夜做
|
一本一道久久a久久精品蜜桃
|
久久成
|
在线观看欧美一区
|
欧美一级免费看
|
精品一区二区三区四区外站
|
欧美日韩高清一区二区三区
|
九九九视频在线
|
色欧美综合
|
av一二三区
|
综合另类
|
久久狠狠
|
狠狠爱网址
|
久久久久国产一区二区三区
|
欧美亚洲国产日韩
|
国产免费一区二区
|
伊大人久久
|
欧美二区三区
|
日韩视频一区二区三区
|
日韩中文字幕一区二区
|
99热在线播放
|
在线观看免费黄色片
|
欧美激情va永久在线播放
|
亚洲一区国产精品
|
精品日韩一区二区
|
免费三级网
|
久热久热
|
亚洲精品视频在线播放
|
a级黄色片在线观看
|
免费网站国产
|
中文在线视频观看
|
成人久久久
|
www.中文字幕.com
|
亚洲一区精品视频
|