亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4093|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機溫控風扇設計論文

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:255686 發(fā)表于 2017-11-30 14:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1  系統(tǒng)概述
1.1  STC89C52單片機簡介

STC89C52是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機,片內(nèi)4bytes的可反復擦寫的只讀程序存儲器(PEROM)和128bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內(nèi)置用8位中央處理器(CPU)和Flash存儲單元,功能強大。STC89C52單片機可靈活應用于各種控制領域。

STC89C52單片機提供以下標準功能:4K字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM32I/O口線,兩個16位定時、計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,STC89C52單片機可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時、計數(shù)器,串行通行口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。

1. 2  本設計任務和主要內(nèi)容
本文以STC89C52單片機為核心,通過數(shù)字溫度傳感器對外界環(huán)境溫度進行數(shù)據(jù)采集,從而建立一個控制系統(tǒng),使電風扇隨溫度的變化而自動調(diào)節(jié)檔位,實現(xiàn)“溫度高、風力大、溫度低、風力弱”的性能。另外,通過紅外發(fā)射和接收裝置及按鍵實現(xiàn)各種功能的啟動與關閉,并且可對各種功能實現(xiàn)遙控,用戶可以在一定范圍內(nèi)設置電風扇的最低工作溫度,當溫度低于所設置溫度時,電風扇將自動關閉,當高于此溫度時電風扇又將重新啟動。
本設計主要內(nèi)容如下:
(1)風速設為從低到高共2個檔位,可由用戶通過鍵盤設定。
(2)每當溫度低于下限值時,則電風扇風速關閉。
(3)每當溫度在下限和上限之間時,則電風扇轉(zhuǎn)速緩慢。
(4))每當溫度高于上限值時,則電風扇風速全速運轉(zhuǎn)






2 方案論證
本系統(tǒng)實現(xiàn)風扇的溫度控制,需要有較高的溫度變化分辨率和穩(wěn)定可靠的換檔停機控制部件。

2.1 溫度傳感器的選用
溫度傳感器可由以下幾種方案可供選擇:
方案一:選用熱敏電阻作為感測溫度的核心元件,通過運算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進而導至的輸出電壓變化的微弱電壓變化信號,再用AD轉(zhuǎn)換芯片ADC0809將模擬信號轉(zhuǎn)化為數(shù)字信號輸入單片機處理。
方案二:采用熱電偶作為感測溫度的核心元件,配合橋式電路,運算放大電路和AD轉(zhuǎn)換電路,將溫度變化信號送入單片機處理。
方案三:采用數(shù)字式集成溫度傳感器DS18B20作為感測溫度的核心元件,直接輸出數(shù)字溫度信號供單片機處理。
對于方案一,采用熱敏電阻有價格便宜、元件易購的優(yōu)點,但熱敏電阻對溫度的細微變化不敏感,在信號采集、放大、轉(zhuǎn)換過程中還會產(chǎn)生失真和誤差,并且由于熱敏電阻的R-T關系的非線性,其本身電阻對溫度的變化存在較大誤差,雖然可以通過一定電路予以糾正,但不僅將使電路復雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測到小的溫度變化。故該方案不適合本系統(tǒng)。
對于方案二,采用熱電偶和橋式測量電路相對于熱敏電阻其對溫度的敏感性和器件的非線性誤差都有較大提高,其測溫范圍也非常寬,從-50攝氏度到1600攝氏度均可測量。但是依然存在電路復雜,對溫度敏感性達不到本系統(tǒng)要求的標準,故不采用該方案。
對于方案三,由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉(zhuǎn)換等電路的誤差因素,溫度誤差很小,并且由于其感測溫度的原理與上述兩種方案的原理有著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件內(nèi)部轉(zhuǎn)換成數(shù)字量直接輸出,簡化了系統(tǒng)程序設計,又由于該傳感器采用先進的單總線技術(1-WRIE),與單片機的接口變的非常簡潔,抗干擾能力強。關于DS18B20的詳細參數(shù)參看下面“硬件設計”中的器件介紹。

2.2  控制核心的選擇
方案一:采用電壓比較電路作為控制部件。溫度傳感器采用熱敏電阻或熱電偶等,溫度信號轉(zhuǎn)為電信號并放大,由集成運放組成的比較電路判決控制風扇轉(zhuǎn)速,當高于或低于某值時將風扇切換到相應檔位。
方案二:采用單片機作為控制核心。以軟件編程的方法進行溫度判斷,并在端口輸出控制信號。
對于方案一,采用電壓比較電路具有電路簡單、易于實現(xiàn),以及無需編寫軟件程序的特點,但控制方式過于單一,不能自由設置上下限動作溫度,無法滿足不同用戶以及不同環(huán)境下的多種動作溫度要求,故不在本系統(tǒng)中采用。
對于方案二,以單片機作為控制器,通過編寫程序不但能將傳感器感測到的溫度通過顯示電路顯示出來,而且用戶能通過鍵盤接口,自由設置上下限動作溫度值,滿足全方位的需求。并且通過程序判斷溫度具有極高的精準度,能精確把握環(huán)境溫度的微小變化。故本系統(tǒng)采用方案二。

2.3顯示電路
方案一:采用五位共陽數(shù)碼管顯示溫度,動態(tài)掃描顯示方式。
方案二:采用液晶顯示屏LCD顯示溫度
對于方案一,該方案成本低廉,顯示溫度明確醒目,在夜間也能看見,功耗極低,顯示驅(qū)動程序的編寫也相對簡單,這種顯示方式得到廣泛應用。不足的地方是掃描顯示方式是使五個LED逐個點亮,因此會有閃爍,但是人眼的視覺暫留時間為20MS,當數(shù)碼管掃描周期小于這個時間時人眼將感覺不到閃爍,因此可以通過增大掃描頻率來消除閃爍感。
對于方案二,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點,這是LED數(shù)碼管無法比擬的。但是液晶顯示模塊價格昂貴,驅(qū)動程序復雜,從簡單實用的原則考慮,本系統(tǒng)采用方案一。

2.4調(diào)速方式
方案一:采用變壓器調(diào)節(jié)方式,運用電磁感應原理將220V電壓通過線圈降壓到不同的電壓,控制風扇電機接到不同電壓值的線圈上可控制電機的轉(zhuǎn)速,從而控制風扇風力大小。
方案二:采用晶閘管構(gòu)成無級調(diào)速電路。
對于方案一,由于采用變壓器改變電壓調(diào)節(jié),有風速級別限制,不能適應人性化要求。且在變壓過程中會有損耗發(fā)熱,效率不高,發(fā)熱有不安全因素。
對于方案二,以電位器控制晶閘管的導通角大小,可實現(xiàn)由最大風速到關閉的無級別調(diào)速,可將風力調(diào)節(jié)在關閉無風到最大風之間的任意風力,實現(xiàn)“自由風”。且在調(diào)速環(huán)節(jié)中基本無電力損耗。故本系統(tǒng)采用方案二。

2.5控制執(zhí)行部件
方案一:采用數(shù)模轉(zhuǎn)換芯片AD0832控制,由單片機根據(jù)當前溫度值送出相應數(shù)字量到AD0832,由AD0832產(chǎn)生模擬信號控制晶閘管的導通角,從而配合無級調(diào)速電路實現(xiàn)溫控時的自動無級風力調(diào)節(jié)。
方案二:采用繼電器,繼電器的接有控制晶閘管導通角的電阻的接入電路與否由單片機控制,根據(jù)當前溫度值在相應管腳送出高/低電平,決定某個繼電器的導通角控制電阻是否接入電路。(詳見4.2.4
對于方案一,該方案能夠?qū)崿F(xiàn)在風扇處于溫控狀態(tài)時也能無級調(diào)速,但是D/A轉(zhuǎn)換芯片價格較高,與其溫控狀態(tài)下無級調(diào)速功能相比性價比不高。
對于方案二,雖然在溫控狀態(tài)下只能實現(xiàn)弱/大風兩級調(diào)速,但采用繼電器價格便宜,控制可靠,且出于在溫控狀態(tài)時無級調(diào)速并不是特別需要的功能,綜合考慮采用方案二。



3 系統(tǒng)原理
3.1  系統(tǒng)總體設計


file:///C:/Users/17361/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png

n1=875r/min。則可得出五個檔位的轉(zhuǎn)速值:
n1=875r/minn2=980r/minn3=1063r/minn4=1150 r/minn5=1250r/min
又由于負載上電壓的有效值
u0=u1                                 2
式(2)中,u1為輸入交流電壓的有效值,α為控制角。解得:
                            (3)
式中:P 為負載得到的功率(kW; n 為給定時間內(nèi)可控硅導通的正弦波個數(shù);N 為給定時間內(nèi)交流正弦波的總個數(shù); U為可控硅在一個電源周期全導通時所對應的電壓有效值(V; I 為可控硅在一個電源周期全導通時所對應的電流有效值(A。由式(3) 可知,當U , I ,N 為定值時, 只要改變n 值的大小即可控制功率的輸出,從而達到調(diào)
節(jié)電機轉(zhuǎn)速的目的。圖9 電機控制模塊中斷響應流程圖







結(jié) 束 語
本系統(tǒng)以STC89C52單片機為核心,單片機主要完成對外界環(huán)境溫度信號的采集、處理、顯示等功能;用Altium Designer 6軟件繪制電路原理圖和PCB電路印刷板圖,由Protues軟件進行訪真測試,利用MCS-51 C語言編制。
運行程序該系統(tǒng)的主要特點是:
(1)適用性強,用戶只需對界面參數(shù)進行設置并啟動系統(tǒng)正常運行便可滿足不同用戶對最適合溫度的要求,實現(xiàn)對最適溫度的實時監(jiān)控。
(2)隨時可以根據(jù)軟件編寫新的功能加入產(chǎn)品。操作界面可擴展性強,只要稍加改變,即可增加其他按鍵的使用功能。
本系統(tǒng)溫度控制采用DS18B20數(shù)字溫度傳感器作為感溫元件。可控硅串接在電源與負載電風扇,借改變定周期內(nèi)可控硅的導通與截止時間之比來實現(xiàn)調(diào)速功能,其設計完使用方便就,適應人們睡辦公等不同場合的使用。
基于STC89C52單片機所設計與研制的電風扇智能調(diào)速系統(tǒng),造價低且具有穩(wěn)定性高、性能優(yōu)越、節(jié)約電能等優(yōu)點,在夜間無需定時,同樣能給人們帶來更多的方便。
本設計在模擬檢測中運行較好,但采樣據(jù)不太穩(wěn)定。功能上的缺憾是對于兩個檔之間的臨界溫度處理不好,并且檔位太少,還有待改進。


















參考文獻
[1] 曹巧媛.單片機原理及應用.北京:電子工業(yè)出版社,2002.2
[2] 王倫.電風扇原理與維修技術[M].北京:新時代出版社,1999
[3] 張毅剛.新編MCS-51單片機應用設計.哈爾濱工業(yè)大學出版社,2006,10
[4] 梁廷貴、王裕琛.可控硅觸發(fā)電路語音電路分冊[M].北京:科學技術文獻出版社,2003

































附錄一

數(shù)字溫度傳感器模塊和顯示子模塊程序:
#include <reg52.h>             //調(diào)用單片機頭文件

#define uchar unsigned char //無符號字符型 宏定義   變量范圍0~255

#define uint  unsignedint    //無符號整型 宏定義 變量范圍0~65535

#include "eeprom52.h"

//數(shù)碼管段選定義     0     1    2   3    4    5 6    7    8    9   

uchar codesmg_du[]={0x28,0xee,0x42,0x52,0xe5,0xa8,0x41,0xe7,0x20,0xa0,

                  0x60,0x25,0x39,0x26,0x31,0x71,0xff};   //斷碼
//數(shù)碼管位選定義
uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};
uchar dis_smg[8] = {0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8};   
uchar smg_i = 3;    //顯示數(shù)碼管的個位數(shù)
sbit dq   = P2^4; //18b20 IO口的定義

bit flag_lj_en;        //按鍵連加使能
bit flag_lj_3_en;  //按鍵連3次連加后使能  加的數(shù)就越大了

uchar key_time,key_value;     //用做連加的中間變量

bit key_500ms  ;
sbit pwm = P2^3;  
uchar f_pwm_l ;     //越小越暗

uint temperature ;  //
bit flag_300ms ;
uchar menu_1;       //菜單設計的變量
uint t_high = 300,t_low = 100;     //溫度上下限報警值

/***********************1ms延時函數(shù)*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
     for(j=0;j<120;j++);
}

/***********************小延時函數(shù)*****************************/
void delay_uint(uint q)
{
while(q--);
}


/***********************數(shù)碼顯示函數(shù)*****************************/
void display()
{
static uchar i;   
i++;
if(i >= smg_i)
     i = 0;
P1 = 0xff;          //消隱
P3 = smg_we;            //位選

P1 = dis_smg;       //段選           


}

/******************把數(shù)據(jù)保存到單片機內(nèi)部eepom中******************/
void write_eeprom()
{
SectorErase(0x2000);

byte_write(0x2000, t_high% 256);

byte_write(0x2001, t_high/ 256);

byte_write(0x2002, t_low% 256);

byte_write(0x2003, t_low/ 256);

byte_write(0x2055, a_a);
}

/******************把數(shù)據(jù)從單片機內(nèi)部eepom中讀出來*****************/
void read_eeprom()
{
t_high  = byte_read(0x2001);
t_high <<= 8;
t_high  |= byte_read(0x2000);
t_low   = byte_read(0x2003);
t_low <<= 8;
t_low   |= byte_read(0x2002);
a_a      = byte_read(0x2055);
}

/**************開機初始化保存的數(shù)據(jù)*****************/
void init_eeprom()
{
read_eeprom();        //先讀
if(a_a != 22)     //新的單片機初始單片機內(nèi)問eeprom
{
     t_high = 320;
     t_low  = 280;
     a_a = 22;
     write_eeprom();      //保存數(shù)據(jù)
}   
}


/***********************18b20初始化函數(shù)*****************************/
void init_18b20()
{
bit q;
dq = 1;                //把總線拿高
delay_uint(1);        //15us
dq = 0;                //給復位脈沖
delay_uint(80);       //750us
dq = 1;                //把總線拿高 等待
delay_uint(10);       //110us
q = dq;                //讀取18b20初始化信號
delay_uint(20);       //200us
dq = 1;                //把總線拿高 釋放總線
}

/*************寫18b20內(nèi)的數(shù)據(jù)***************/
void write_18b20(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{                    //寫數(shù)據(jù)是低位開始
     dq = 0;             //把總線拿低寫時間隙開始
     dq = dat & 0x01; //向18b20總線寫數(shù)據(jù)了
     delay_uint(5);     // 60us
     dq = 1;             //釋放總線
     dat >>= 1;
}   
}

/*************讀取18b20內(nèi)的數(shù)據(jù)***************/
uchar read_18b20()
{
uchar i,value;
for(i=0;i<8;i++)
{
     dq = 0;             //把總線拿低讀時間隙開始
     value >>= 1;   //讀數(shù)據(jù)是低位開始
     dq = 1;             //釋放總線
     if(dq == 1)        //開始讀寫數(shù)據(jù)
         value |= 0x80;
     delay_uint(5);     //60us    讀一個時間隙最少要保持60us的時間
}
return value;      //返回數(shù)據(jù)
}

/*************讀取溫度的值 讀出來的是小數(shù)***************/
uint read_temp()
{
uint value;
uchar low;            //在讀取溫度的時候如果中斷的太頻繁了,就應該把中斷給關了,否則會影響到18b20的時序
init_18b20();        //初始化18b20
EA = 0;
write_18b20(0xcc);      //跳過64位ROM
write_18b20(0x44);      //啟動一次溫度轉(zhuǎn)換命令
EA = 1;
delay_uint(50);          //500us

init_18b20();        //初始化18b20

EA = 0;
write_18b20(0xcc);      //跳過64位ROM
write_18b20(0xbe);      //發(fā)出讀取暫存器命令

low = read_18b20();     //讀溫度低字節(jié)

value =read_18b20();  //讀溫度高字節(jié)

EA = 1;
value <<= 8;         //把溫度的高位左移8位
value |= low;        //把讀出的溫度低位放到value的低八位中

value *= 0.625;         //轉(zhuǎn)換到溫度值 小數(shù)

return value;        //返回讀出的溫度 帶小數(shù)
}

/*************定時器0初始化程序***************/
void time_init()   
{
EA   = 1;        //開總中斷
TMOD = 0X11;    //定時器0、定時器1工作方式1

ET0  = 1;        //開定時器0中斷

TR0  = 1;        //允許定時器0定時

ET1  = 1;        //開定時器0中斷

TR1  = 0;        //允許定時器0定時
}

/********************獨立按鍵程序*****************/
uchar key_can;  //按鍵值

void key()  //獨立按鍵程序
{
static uchar key_new;
key_can = 20;                   //按鍵值還原
P2 |= 0x07;

if((P2 & 0x07) !=0x07)      //按鍵按下

{
     if(key_500ms == 1)   //連加
     {
         key_500ms = 0;
         key_new = 1;
     }
     delay_1ms(1);        //按鍵消抖動
     if(((P2 & 0x07) != 0x07) && (key_new == 1))
     {                       //確認是按鍵按下
         key_new = 0;
         switch(P2 & 0x07)
         {
             case 0x06: key_can = 3; break;     //得到k2鍵值
             case 0x05: key_can = 2; break;     //得到k3鍵值
             case 0x03: key_can = 1; break;     //得到k4鍵值
         }
         flag_lj_en = 1;    //連加使能
     }           
}
else
{
     if(key_new == 0)
     {
         key_new = 1;
         write_eeprom();       //保存數(shù)據(jù)
         flag_lj_en = 0;       //關閉連加使能
         flag_lj_3_en = 0; //關閉3秒后使能
         key_value = 0;        //清零
         key_time = 0;
         key_500ms = 0;
     }
}   
}

/****************按鍵處理數(shù)碼管顯示函數(shù)***************/
void key_with()
{
if(key_can == 1)    //設置鍵
{
     f_pwm_l = 30;
     menu_1 ++;
     if(menu_1 >= 3)
     {
         menu_1 = 0;
         smg_i = 3;       //數(shù)碼管顯示3位
     }
}
if(menu_1 == 1)           //設置高溫報警
{
     smg_i = 4;       //數(shù)碼管顯示4位
     if(key_can == 2)
     {
         if(flag_lj_3_en == 0)
             t_high ++ ;       //按鍵按下未松開自動加三次  
         else
             t_high += 10; //按鍵按下未松開自動加三次之后每次自動加10
         if(t_high > 990)
             t_high = 990;
     }
     if(key_can == 3)
     {
         if(flag_lj_3_en == 0)
             t_high -- ;       //按鍵按下未松開自動減三次  
         else
             t_high -= 10; //按鍵按下未松開自動減三次之后每次自動減10
         if(t_high <= t_low)
             t_high = t_low + 1;
     }
     dis_smg[0] = smg_du[t_high % 10];             //取小數(shù)顯示
     dis_smg[1] = smg_du[t_high / 10 % 10] & 0xdf;  //取個位顯示
     dis_smg[2] = smg_du[t_high / 100 % 10] ;     //取十位顯示
     dis_smg[3] = 0x64;    //H
}   
if(menu_1 == 2)           //設置低溫報警
{
     smg_i = 4;       //數(shù)碼管顯示4位
     if(key_can == 2)
     {
         if(flag_lj_3_en == 0)
             t_low ++ ;         //按鍵按下未松開自動加三次  
         else
             t_low += 10;      //按鍵按下未松開自動加三次之后每次自動加10
         if(t_low >= t_high)
             t_low = t_high - 1;
     }
     if(key_can == 3)
     {
         if(flag_lj_3_en == 0)
             t_low -- ;         //按鍵按下未松開自動減三次  
         else
             t_low -= 10;      //按鍵按下未松開自動加三次之后每次自動加10
         if(t_low <= 10)
             t_low = 10;
     }
     dis_smg[0] = smg_du[t_low % 10];              //取小數(shù)顯示
     dis_smg[1] = smg_du[t_low / 10 % 10] & 0xdf;   //取個位顯示
     dis_smg[2] = smg_du[t_low / 100 % 10] ;          //取十位顯示
     dis_smg[3] = 0x3D;     //L
}   
}  

/****************風扇控制函數(shù)***************/
void fengshan_kz()
{
//  static uchar value;

if(temperature >=t_high)    //風扇全開

{   
     TR1 = 1;
     pwm = 0;
}

else if((temperature <t_high)  && (temperature >=t_low))         //風扇緩慢

{
     f_pwm_l = 60;     
     TR1 = 1;
}

else if(temperature <t_low)     //關閉風扇

{
     TR1 = 0;
     pwm = 1;
}           
}
     

/****************主函數(shù)***************/
void main()
{
time_init();                    //初始化定時器

temperature =read_temp();      //先讀出溫度的值  

init_eeprom();  //開始初始化保存的數(shù)據(jù)
delay_1ms(650);               

temperature =read_temp();               //先讀出溫度的值

dis_smg[0] =smg_du[temperature % 10];  //取溫度的小數(shù)顯示

dis_smg[1] =smg_du[temperature / 10 % 10] & 0xdf; //取溫度的個位顯示

dis_smg[2] =smg_du[temperature / 100 % 10] ;    //取溫度的十位顯示

f_pwm_l = 50;
while(1)
{      
     key();                 //按鍵程序
     if(key_can < 10)
     {
         key_with();           //設置報警溫度   
     }
     if(flag_300ms == 1)      //300ms 處理一次溫度程序
     {      
         flag_300ms = 0;   

         temperature =read_temp();  //先讀出溫度的值

         if(menu_1 == 0)
         {   
             smg_i = 3;
             dis_smg[0] = smg_du[temperature % 10];  //取溫度的小數(shù)顯示
             dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取溫度的個位顯示
             dis_smg[2] = smg_du[temperature / 100 % 10] ;    //取溫度的十位顯示
         }
     }
     fengshan_kz();        //風扇控制函數(shù)
}
}

/*************定時器0中斷服務程序***************/
void time0_int() interrupt 1
{   
static uchar value;           //定時2ms中斷一次
TH0 = 0xf8;
TL0 = 0x30;     //2ms
display();     //數(shù)碼管顯示函數(shù)
value++;     
if(value >= 150)
{
     value = 0;   
     flag_300ms = 1;
}
if(flag_lj_en == 1)     //按下按鍵使能
{
     key_time ++;
     if(key_time >= 250) //500ms
     {
         key_time = 0;
         key_500ms = 1; //500ms
         key_value ++;
         if(key_value > 3)
         {
             key_value = 10;
             flag_lj_3_en = 1; //3次后1.5秒連加大些
         }                       
     }
}
}


/*******************定時器1用做單片機模擬PWM 調(diào)節(jié)***********************/

void Timer1() interrupt 3 //調(diào)用定時器1

{
static uchar value_l;
TH1=0xfe;    //    定時10ms中斷一次
TL1=0x0c;   //500us
if(pwm==1)
{
     value_l+=3;

     if(value_l > f_pwm_l)  //高電平

     {
         value_l=0;
         if(f_pwm_l != 0)   
             pwm=0;  
     }
}
else               
{
     value_l+=3;

     if(value_l  > 100 -f_pwm_l)          //低電平

     {
         value_l=0;
         pwm=1;
     }
    }
}





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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表