久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7202|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)pwm電風(fēng)扇DC設(shè)計(jì)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這是本人的單片機(jī)接口技術(shù)課程設(shè)計(jì)
題目如下:
通過(guò)89C51單片機(jī)控制家用電風(fēng)扇的運(yùn)行。
1)電風(fēng)扇有三種風(fēng)速選擇:高、中、低;
2)運(yùn)轉(zhuǎn)時(shí)間設(shè)定;
3)三種運(yùn)行形式:
  (1)正常:電扇連續(xù)運(yùn)轉(zhuǎn);
  (2)自然:電扇以運(yùn)轉(zhuǎn)4秒、間斷4秒的方式工作,模擬產(chǎn)生自然風(fēng);
  (3)睡眠:指風(fēng)扇運(yùn)轉(zhuǎn)斷8秒,間斷8秒,產(chǎn)生輕柔的微風(fēng)。
匯編語(yǔ)言和C語(yǔ)言代碼實(shí)現(xiàn)功能相同
以下是C語(yǔ)言代碼:
PROTEUS 仿真圖如圖所示:
完整工程在附件里面:
  1. #include<reg51.h>

  2. #define uint unsigned int

  3. #define uchar unsigned char


  4. sbit Motor=P2^0;// P2.0輸出pwm控制電機(jī)


  5. uchar time; // 定義占空比的變量
  6. uint time1;

  7. uchar speed;//定義速度變量
  8. uint worktime;//定義持續(xù)時(shí)間變量

  9. bit flag;


  10. void Delay_ms(unsigned int k)                         
  11. {
  12.         uchar i;
  13.         while(k--)
  14.         {
  15.                 for(i=0;i<125;i++);       
  16.         }                                                                                             
  17. }


  18. void key() //獨(dú)立按鍵程序
  19. {
  20.         static uchar key_new;
  21.         P1 |= 0xff;                     //對(duì)應(yīng)的按鍵IO口輸出為1
  22.         if((P1 & 0x3f) != 0x3f)                //按鍵按下
  23.         {
  24.                 Delay_ms(5);                    //按鍵消抖動(dòng)

  25.                 if(((P1 & 0xff) != 0xff) && (key_new == 1))
  26.                 {                                                //確認(rèn)是按鍵按下
  27.                         key_new = 0;                                                        //防止重復(fù)讀取按鍵

  28.                                                 if((~P1)&0x01){//速度調(diào)節(jié)
  29.                                                         speed=100;
  30.                                                         P0=~0x07;//全亮
  31.                                                         }                               
  32.                                                 if((~P1)&0x02){
  33.                                                         speed=50;
  34.                                                         P0=~0x03;//亮兩個(gè)
  35.                                                        
  36.                                                 }
  37.                                                 if((~P1)&0x04){
  38.                                                         speed=30;
  39.                                                         P0=~0x01;//亮一個(gè)
  40.                                                         }
  41.                                                
  42.                                                 if((~P1)&0x08){
  43.                                                         flag=1;
  44.                                                         ET0=0;//關(guān)閉定時(shí)器0中斷         
  45.                                                         TR0=0;//關(guān)閉定時(shí)器0
  46.                                                         P3=0x88;
  47.                                                         }

  48.                                                 if((~P1)&0x10){
  49.                                                         worktime=4000;//it means 4 sec

  50.                                                         ET0=1;//開(kāi)定時(shí)器0中斷         
  51.                                                         TR0=1;//啟動(dòng)定時(shí)器0
  52.                                                         P3=0x83;
  53.                                                        
  54.                                                         }


  55.                                                 if((~P1)&0x20){
  56.                                                         worktime=8000;//2 sec
  57.                                                         ET0=1;//開(kāi)定時(shí)器0中斷         
  58.                                                         TR0=1;//啟動(dòng)定時(shí)器0
  59.                                                         P3=0xc6;
  60.                                                         }


  61.                 }                       
  62.         }
  63.         else
  64.                 key_new = 1;      
  65. }



  66. void main(){



  67.                         TMOD=0x11;//定時(shí)器0工作方式1,定時(shí)器1工作方式1
  68.          
  69.                         TH1=0xff;//(65536-10)/256;//賦初值定時(shí)
  70.                          
  71.                         TL1=0xf6;//(65536-10)%256;//0.01ms

  72.                         TH0=0xfc;//(65536-1000)/256;//賦初值定時(shí)/用于定工作時(shí)間
  73.                          
  74.                         TL0=0x18;//(65536-1000)%256;//1ms
  75.                          
  76.                         EA=1;//開(kāi)總中斷
  77.                          
  78.                         ET1=1;//開(kāi)定時(shí)器1中斷         
  79.                         TR1=1;//啟動(dòng)定時(shí)器1
  80.                        
  81.                         P0=0xff;//初始化按鍵
  82.                        
  83.                         speed=50;
  84.                         P0=0xa4;
  85.                         flag=1;
  86.                         P3=0x88;
  87.                
  88.                          
  89.                         while(1){
  90.                                 key();               
  91.                         }       
  92. }


  93. void tim1() interrupt 3

  94. {

  95.         TR1=0;//賦初值時(shí),關(guān)閉定時(shí)器
  96.          
  97.         TH1=0xff;//(65536-10)/256;//賦初值定時(shí)
  98.          
  99.         TL1=0xf6;//(65536-10)%256;//0.01ms
  100.          
  101.         TR1=1;//打開(kāi)定時(shí)器
  102.          
  103.          
  104.        
  105.          
  106.         if(time>=100) //1khz,方波頻率
  107.          
  108.         time=0;

  109.          
  110.                 if((time<=speed)&&flag) //占空比%30,可改
  111.                  
  112.                 Motor=1;
  113.                  
  114.                 else
  115.        
  116.                 Motor=0;
  117.                 time++;
  118. }


  119. void tim0() interrupt 1
  120. {
  121.                 TR0=0;//關(guān)閉定時(shí)器0

  122.                 TH0=0xfc;//(65536-1000)/256;//賦初值定時(shí)/用于定工作時(shí)間                 

  123.                 TL0=0x18;//(65536-1000)%256;//1ms

  124.                 TR0=1;//啟動(dòng)定時(shí)器1
  125.                
  126.                 if(time1>=worktime) {
  127.                 time1=0;
  128.                 flag=~flag;

  129.                                                 }

  130.                 time1++;
  131. }

復(fù)制代碼
以下是匯編語(yǔ)言代碼:


  1.         ORG  0000H

  2.         lJMP MAIN

  3.         ORG  000BH

  4.         AJMP tim0

  5.         ORG  0001BH

  6.         AJMP tim1

  7.         ORG  0030H

  8.         Motor  bit  P2.0

  9.         HighSpeed bit P1.0
  10.         MediumSpeed bit P1.1
  11.         LowSpeed bit P1.2

  12.         NormalMode bit P1.3
  13.         NatureMode bit P1.4
  14.         SleepMode bit P1.5
  15.        
  16.        

  17.         speed EQU 31H

  18.         worktime EQU  32h

  19.         flag EQU  33h

  20. MAIN:                       
  21.                 MOV   SP,#60H;

  22.                 MOV   TMOD,#11H
  23.                
  24.                 MOV   TH1,#0FFH;time for frequency
  25.                 MOV   TL1,#0F6H
  26.                        
  27.                 MOV   TH0,#3CH;time for work basic 50ms(65536-50000)
  28.                 MOV   TL0,#0B0H


  29.                 MOV   P1,#0FFH; set io in mode
  30.                
  31.                 SETB  EA;
  32.                 SETB  ET1;
  33.                 SETB  TR1;
  34.                
  35.                 MOV  speed,#50;preset the mode
  36.                 MOV  flag,#0FFH

  37.                 mov  R0,#0
  38.                 mov  R1,#0

  39.                
  40.                 MOV P0,#04H;display the mode
  41.                 MOV P3,#088H

  42. LOOP0:
  43.             
  44.                 MOV R2,P1

  45.                 CJNE R2,#0FFH,processkey

  46.                 SJMP LOOP0       


  47. processkey:;read the key
  48.                 call DELAY

  49.                 MOV R2,P1
  50.                 CJNE R2,#0FFH,PROCESS;judge again

  51.                 SJMP LOOP0;if not go back to the main programm

  52. PROCESS:
  53.                 JB HighSpeed,K0

  54.                 MOV speed,#100
  55.                 MOV P0,#0H;all the led light up
  56.                
  57.         K0:        JB MediumSpeed,K1

  58.                 MOV speed,#50
  59.                 MOV P0,#04H;light up two lights
  60.        
  61.                
  62.         K1:       
  63.                 JB LowSpeed,K2;

  64.                 MOV speed,#20
  65.                 MOV P0,#06H;light up one light
  66.                
  67.         K2:       
  68.                 JB  NormalMode,K3
  69.                 MOV flag,#0ffH
  70.                 CLR ET0
  71.                 CLR TR0
  72.                 MOV P3,#88H
  73.                
  74.         K3:       
  75.                 JB  NatureMode,K4
  76.                 MOV worktime,#20;two seconds
  77.                 SETB ET0
  78.                 SETB TR0
  79.                 MOV P3,#83H

  80.                
  81.         K4:        JB SleepMode,LOOP0
  82.                 MOV worktime,#40;fout seconds
  83.                 SETB ET0
  84.                 SETB TR0
  85.                 MOV P3,#0C6H
  86.                
  87.                 SJMP LOOP0



  88. tim0:   ;generate the work time  
  89.         clr   tr0
  90.         MOV   TH0,#3CH;time for work basic 50ms(65536-50000)
  91.     MOV   TL0,#0B0H
  92.         setb  tr0
  93.        
  94.         PUSH ACC
  95.         MOV A, worktime
  96.        
  97.         SUBB A,R0
  98.                 jnc loop1
  99.                 mov R0,#0       
  100.        
  101.                 mov A,flag;
  102.                 cpl A
  103.                 mov flag,A
  104.                
  105.         loop1:
  106.                 inc R0;
  107.         POP ACC
  108.                 RETI
  109.                
  110.                
  111.                
  112. tim1:
  113.         clr   tr1
  114.         MOV   TH1,#0xff;time for pwm basic 0.01ms(65536-10)
  115.     MOV   TL1,#0xf6
  116.         setb  tr1
  117.        
  118.         PUSH ACC       
  119.         mov A,#100
  120.         subb A,R1
  121.         jnc loop2
  122.         mov R1,#0;       
  123. loop2:
  124.         mov A,flag;
  125.         jz loop3
  126.                 mov A,speed;
  127.                 subb A,R1;
  128.                 jnc loop4
  129. loop3:
  130.         clr Motor
  131.         SJMP OUT1       
  132. loop4:
  133.         setb Motor;
  134. OUT1:

  135.         POP ACC
  136.         inc R1
  137.         RETI

  138. DELAY:
  139.     MOV  R7,#10
  140. DE: MOV  R6,#10
  141.     DJNZ R6,$
  142.         DJNZ R7,DE
  143.         RET
  144.                
  145.         END
復(fù)制代碼



15家用電風(fēng)扇.zip

105.76 KB, 下載次數(shù): 155, 下載積分: 黑幣 -5

完整工程

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:403791 發(fā)表于 2020-1-13 11:15 | 只看該作者
仿真圖如下

1.png (81.76 KB, 下載次數(shù): 140)

1.png
回復(fù)

使用道具 舉報(bào)

板凳
ID:684871 發(fā)表于 2020-1-14 13:51 來(lái)自手機(jī) | 只看該作者
請(qǐng)問(wèn)一定要用l298n嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:783281 發(fā)表于 2020-6-23 08:45 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

5#
ID:635522 發(fā)表于 2020-6-25 23:03 | 只看該作者
感覺(jué)有點(diǎn)摸不到頭緒,里面程序邏輯有點(diǎn)問(wèn)題嗷
回復(fù)

使用道具 舉報(bào)

6#
ID:495287 發(fā)表于 2020-6-26 15:15 | 只看該作者
路過(guò)幫頂,分享精神無(wú)限。
回復(fù)

使用道具 舉報(bào)

7#
ID:768612 發(fā)表于 2020-6-26 20:51 | 只看該作者
emmmmm這個(gè)里面沒(méi)啥,太失望了
回復(fù)

使用道具 舉報(bào)

8#
ID:1075366 發(fā)表于 2023-5-4 22:16 | 只看該作者
想知道如果使用單片機(jī)匯編語(yǔ)言,使用Keil uVision2軟件和protues一起使用該怎么做這個(gè)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久国产精品免费免费 | 亚洲逼院 | 狠狠ri| 色欧美综合 | 亚洲www | 久草青青 | 九色视频网站 | 欧美一级片在线看 | 91久久精品一区二区二区 | 亚洲一区二区中文字幕在线观看 | 日韩一区二区三区四区五区六区 | 成人在线视频一区 | а天堂中文最新一区二区三区 | 亚洲国产成人在线视频 | 91精品国产91 | 日韩在线视频网址 | 中文字幕在线看 | 亚洲精品电影网在线观看 | 成人毛片在线视频 | 成人免费视频观看 | 成人在线免费视频 | 欧美激情综合 | 成人九色| 99久久中文字幕三级久久日本 | 久久国产精品色av免费观看 | 999久久久久久久久6666 | 在线观看视频一区 | 国产精品久久免费观看 | 色五月激情五月 | 久久精品国产99国产精品亚洲 | 欧美 日韩 视频 | 老司机精品福利视频 | 欧美精品日韩精品 | 免费亚洲视频 | 久久精品二区亚洲w码 | 一级片片 | 色香婷婷 | 99久久99热这里只有精品 | 日韩中文字幕在线免费 | 影音先锋中文字幕在线观看 | 黑人巨大精品欧美一区二区免费 |