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

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

QQ登錄

只需一步,快速開始

搜索
查看: 10763|回復(fù): 8
收起左側(cè)

基于51單片機(jī)空氣凈化器控制系統(tǒng)設(shè)計(jì)報(bào)告

  [復(fù)制鏈接]
ID:341297 發(fā)表于 2018-5-30 12:46 | 顯示全部樓層 |閱讀模式

電子信息工程專業(yè) 單片機(jī)系統(tǒng)課程設(shè)計(jì)

空氣凈化器控制系統(tǒng)設(shè)計(jì)




目錄

1 設(shè)計(jì)指標(biāo)及要求
11 設(shè)計(jì)指標(biāo)
12 設(shè)計(jì)要求
2 系統(tǒng)方案分析              2
21 系統(tǒng)分析              2
    22 器件選擇              2
221 PM25傳感器的選擇              2
222 電機(jī)驅(qū)動(dòng)的選擇              3
        223液晶顯示器3
        224AT89S52單片機(jī)4
3 系統(tǒng)硬件電路設(shè)計(jì)              5
31 電源電路              5
32 電機(jī)驅(qū)動(dòng)控制電路              5
    33單片機(jī)最小系統(tǒng)6
    34PM25傳感器電路7
    35液晶顯示電路7
    36下載電路8
    37報(bào)警電路9
4系統(tǒng)軟件設(shè)計(jì)              10
    41主程序模塊10
42液晶顯示LCD1602程序              11
    43 PM25傳感模塊程序設(shè)計(jì)              12
5 系統(tǒng)調(diào)試              13
51 系統(tǒng)調(diào)試中出現(xiàn)的問題              13
52 系統(tǒng)調(diào)試后出現(xiàn)的結(jié)果              13
結(jié)    論              14
參 考 文 獻(xiàn)              15
附錄A 系統(tǒng)硬件電路圖              16
附錄B 實(shí)物照片17
附錄C 系統(tǒng)完整程序代碼18
教師評(píng)語(yǔ)29
1 設(shè)計(jì)指標(biāo)及要求

1.1
設(shè)計(jì)指標(biāo)
設(shè)計(jì)一款簡(jiǎn)易室內(nèi)空氣凈化器控制系統(tǒng),能夠?qū)崿F(xiàn)對(duì)室內(nèi)空氣中的PM2.5含量實(shí)時(shí)檢測(cè)并顯示,根據(jù)測(cè)試結(jié)果對(duì)電機(jī)轉(zhuǎn)速進(jìn)行控制模擬空氣凈化器濾芯轉(zhuǎn)動(dòng)達(dá)到控制室內(nèi)控制質(zhì)量的目標(biāo)。

1.2設(shè)計(jì)要求

(1)前選擇一款合適的PM2.5傳感器,在兼顧檢測(cè)精度的同時(shí)盡量降低成本用于端檢測(cè)電路之用;

(2)以51單片機(jī)為核心對(duì)室內(nèi)空氣質(zhì)量進(jìn)行實(shí)時(shí)檢測(cè),檢測(cè)結(jié)果可通過數(shù)碼管、液晶或者其他方式進(jìn)行顯示;

(3)檢測(cè)結(jié)果與閾值進(jìn)行比較,通過改變直流電機(jī)轉(zhuǎn)速來(lái)模擬空氣凈化器濾芯的轉(zhuǎn)動(dòng),達(dá)到控制室內(nèi)空氣質(zhì)量的目的;


2系統(tǒng)方案分析

2.1系統(tǒng)分析

本次設(shè)計(jì)是根據(jù)實(shí)時(shí)監(jiān)測(cè)空氣中的PM2.5的濃度,通過風(fēng)扇的轉(zhuǎn)速減小PM2.5的濃度已達(dá)到凈化空氣的目的。以AT89C52單片機(jī)為核心,以實(shí)現(xiàn)室內(nèi)空氣檢測(cè)儀的基本控制功能,系統(tǒng)功能主要包括:電源控制電路,數(shù)據(jù)采集,數(shù)模轉(zhuǎn)換電路設(shè)計(jì),液晶顯示電路設(shè)計(jì),復(fù)位電路,電機(jī)驅(qū)動(dòng)控制電路,以及電平轉(zhuǎn)換等電路。



圖2.1  系統(tǒng)框圖

2.2器件選擇

2.2.1 PM2.5傳感器的選擇

    PM2.5傳感器選擇GP2Y1010AU0F,灰塵傳感器GP2Y1010AU0F靈敏度高,可以用來(lái)測(cè)量0.8微米以上的微小粒子,可用于室內(nèi)環(huán)境中煙氣、粉塵、花粉等濃度的檢測(cè),以檢測(cè)出單位體積粒子的絕對(duì)個(gè)數(shù),而且內(nèi)置氣流發(fā)生器,可以自行吸入外部空氣。其內(nèi)部對(duì)角安放著紅外線發(fā)光二極管和光電晶體管,使得其能夠探測(cè)空氣中塵埃反射光,即使非常細(xì)小的如煙草煙霧顆粒也能夠被檢測(cè)到,該傳感器輸出為模擬電壓,其值與粉塵濃度成正比。


圖2.2  PM2.5傳感器

2.2.2 電機(jī)驅(qū)動(dòng)部分

電機(jī)驅(qū)動(dòng)部分選擇ULN2003,ULN2003是高耐壓、大電流達(dá)林頓系列,由七個(gè)硅NPN達(dá)林頓管組成。 該電路的特點(diǎn)如下: ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái)處理的數(shù)據(jù),ULN2003 是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng)

圖2.3 電機(jī)驅(qū)動(dòng)原理圖

2.2.3液晶顯示器
1602液晶也叫1602字符型液晶,它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。

圖2.4  液晶顯示屏1602引腳圖

2.2.4AT89S52單片機(jī)
AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。AT89S52是一個(gè)高效的微型計(jì)算機(jī)。它的應(yīng)用范圍廣,可用于解決復(fù)雜的控制問題,且成本較低。

圖2.5 單片機(jī)引腳圖

3 系統(tǒng)硬件電路設(shè)計(jì)

3.1 電源電路

電源電路:采用三端穩(wěn)壓集成電路LM7805。電子產(chǎn)品中,常見的三端穩(wěn)壓集成電路
有正電壓輸出的lm78 ×× 系列和負(fù)電壓輸出的lm79××系列。顧名思義,三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。

圖3.1 電源電路

3.2 電機(jī)驅(qū)動(dòng)控制電路

電機(jī)驅(qū)動(dòng)ULN2003的7個(gè)輸入分別于單片機(jī)的P10-P14口,P36,P37口相接,8口與9口分別接GND.VCC相連。ULN2003A在各種控制電路中常用它作為驅(qū)動(dòng)繼電器的芯片,其芯片內(nèi)部做了一個(gè)消線圈反電動(dòng)勢(shì)的二極管。ULN2003的輸出端允許通過IC 電流200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。輸出電流大,故可以直接驅(qū)動(dòng)繼電器或固體繼電器(SSR)等外接控制器件,也可直接驅(qū)動(dòng)低壓燈泡。

圖3.2 電機(jī)驅(qū)動(dòng)控制電路

3.3單片機(jī)最小系統(tǒng)

單片機(jī)最小系統(tǒng)是由單片機(jī)C52,排阻,開關(guān),電容,電阻等組成。一般來(lái)說(shuō)晶振可以在1.2~12MHz之間任選,甚至可以達(dá)到24MHz或者更高,但是頻率越高功耗也就越大。在本實(shí)驗(yàn)套件中采用的12MHz的石英晶振。和晶振并聯(lián)的兩個(gè)電容的大小對(duì)振蕩頻率有微小影響,可以起到頻率微調(diào)作用。


圖3.3 單片機(jī)最小系統(tǒng)

3.4 PM2.5傳感器電路

    選用GP2Y1051AU0F傳感器,該傳感器共有六個(gè)端口,其中1端口接VCC,3和5端口都選擇接GND,第二個(gè)端口與AD轉(zhuǎn)換相連,可以將接收到的數(shù)據(jù)通過A/D轉(zhuǎn)換傳給該傳感器從而進(jìn)行處理。6端口通過一個(gè)電阻與VCC連接,達(dá)到限流作用,另外需要接一個(gè)電容。4端口連接一個(gè)電阻接到單片機(jī)的P1.1口。

圖3.4 PM2.5傳感器電路

3.5液晶顯示電路

   管腳功能:

第1腳:GND為電源地
第2腳:VCC接5V電源正極
第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最強(qiáng),接地電源時(shí)對(duì)比度最高。
第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器,低電平0時(shí)選擇指令寄存器。
第5腳:RW為讀寫信號(hào)線,高電平1時(shí)進(jìn)行讀操作,低電平0時(shí)進(jìn)行寫操作。
第6腳:EN端為使能端,高電平1時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。
第7-14腳:D0-D7位8位雙向數(shù)據(jù)端。
第15-16腳:空腳或背燈電15腳背光正極,16腳背光負(fù)極。

圖3.5 液晶顯示電路

3.6下載電路

下載電路的作用是將軟件程序下載到單片機(jī)中,MUX232:常用的電平轉(zhuǎn)換芯片,一般用于串口通信。由于電腦串口輸出電壓高達(dá)12V,直接與單片機(jī)連接會(huì)燒壞芯片。所以用MAX232來(lái)進(jìn)行電平轉(zhuǎn)換。MAX232芯片采用單+5V電源供電,僅需幾個(gè)外接電容即可完成從TTL到RS232電平的轉(zhuǎn)換,共兩路。

圖3.6 下載電路

3.7報(bào)警電路

使用I/O口定時(shí)翻轉(zhuǎn)電平驅(qū)動(dòng)蜂鳴器的方式來(lái)設(shè)置,只需要對(duì)波形進(jìn)行分析。進(jìn)行一次電平翻轉(zhuǎn)就可以驅(qū)動(dòng)一次蜂鳴器得到方波信號(hào),由于PWM控制固定頻率的蜂鳴器,所以可以在系統(tǒng)的初始化就對(duì)PWM的輸出波形進(jìn)行設(shè)置,當(dāng)檢測(cè)到外界的PM2.5大于所設(shè)定的值時(shí),蜂鳴器發(fā)出響聲進(jìn)行報(bào)警。

圖3.6 報(bào)警電路


4系統(tǒng)軟件設(shè)計(jì)

  • 1主程序模塊
    本設(shè)計(jì)基于89C52單片機(jī),初始化階段需要對(duì)單片機(jī)進(jìn)行時(shí)鐘初始化,IO口初始化以及串口初始化。當(dāng)程序初始化完成后,在主程序中以輪詢的方式來(lái)獲取PWM波信息,即確定PWM波的轉(zhuǎn)速,捕捉到后判斷位置,從而確定LCD屏的顯示內(nèi)容以及蜂鳴器是否報(bào)警。

圖4.1 主程序流程圖

4.2液晶顯示LCD1602程序

    設(shè)置16X2顯示,顯示5X7點(diǎn)陣,8位數(shù)據(jù)接口。LCD開始顯示且不顯示光標(biāo),光標(biāo)不閃爍。寫一個(gè)字符后地址指針加一,且光標(biāo)加一,整屏顯示不移動(dòng)。然后顯示清屏。接著設(shè)置指針。然后設(shè)置晶振跟波特率。

                                            

圖4.2液晶模塊程序流程圖

4.3 PM2.5傳感模塊程序設(shè)計(jì)

當(dāng)電源接通后,該傳感模塊進(jìn)入初始化,當(dāng)初始化完成后,通過內(nèi)部的電路實(shí)時(shí)監(jiān)測(cè)空氣中PM2.5的含量,然后將這一模擬量傳送給單片機(jī),單片機(jī)內(nèi)部的AD轉(zhuǎn)換電路將其轉(zhuǎn)化成單片機(jī)可以識(shí)別的數(shù)字量,單片機(jī)根據(jù)接受的數(shù)據(jù)進(jìn)行相應(yīng)的函數(shù)運(yùn)算。

圖4.3 PM2.5傳感器設(shè)計(jì)流程圖

5 系統(tǒng)調(diào)試

5.1 系統(tǒng)調(diào)試中出現(xiàn)的問題

(1)單片機(jī)程序下載不進(jìn)去。
(2)蜂鳴器不報(bào)警。
(3)液晶顯示屏1602的亮度太低。
(4)1602與電機(jī)共用了一個(gè)口導(dǎo)致1602的顯示很跳躍。
(5)PM2.5傳感器反應(yīng)不靈敏。

5.2 系統(tǒng)調(diào)試后出現(xiàn)的結(jié)果

程序下載進(jìn)單片機(jī)后,液晶屏上顯示正常,通過改變外界PM2.5的值觀測(cè)現(xiàn)象,出現(xiàn)的結(jié)果與程序設(shè)計(jì)的一致。當(dāng)用開關(guān)調(diào)節(jié)到模式一時(shí),電機(jī)低速運(yùn)轉(zhuǎn),調(diào)節(jié)到模式三時(shí),電機(jī)高速運(yùn)轉(zhuǎn)。當(dāng)調(diào)節(jié)到模式二時(shí),電機(jī)的轉(zhuǎn)動(dòng)與PM2.5的值有關(guān),外界的PM2.5值超過一定數(shù)值時(shí)蜂鳴器報(bào)警。


結(jié)    論

通過這次對(duì)空氣凈化系統(tǒng)的設(shè)計(jì),明白了它的工作原理,如何達(dá)到凈化空氣的效果,PM2.5的濃度對(duì)空氣的污染,這次實(shí)習(xí)給我們的收獲不小。我們更加深刻的體會(huì)到了理論與實(shí)踐的差距所在了。發(fā)現(xiàn)單片機(jī)這門課程能和以前學(xué)的模電,數(shù)電,電路知識(shí)配合上,首先鞏固一下課程理論,再一遍熟悉課程知識(shí)的構(gòu)架,然后結(jié)合加以理論分析、總結(jié),有了一個(gè)清晰的思路和一個(gè)完整的的軟件流程圖之后才著手設(shè)計(jì)。認(rèn)識(shí)到了學(xué)習(xí)單片機(jī)要有一定的基礎(chǔ),要有電子技術(shù)方面的數(shù)字電路和模擬電路等方面的理論基礎(chǔ),也要有編程語(yǔ)言的匯編語(yǔ)言或C語(yǔ)言的基礎(chǔ)。
參 考 文 獻(xiàn)

[1] 《51單片機(jī)課程設(shè)計(jì)》 華中科技大學(xué)出版社   周向紅編

[2] 《51單片機(jī)C語(yǔ)言應(yīng)用開發(fā)》北京航空航天大學(xué)出版社   劉波文等編

[3] 《單片機(jī)實(shí)用系統(tǒng)設(shè)計(jì)與仿真經(jīng)典實(shí)例》電子工業(yè)出版社 周潤(rùn)景等編

[4] 《新型電子通用單元電路》電子工業(yè)出版社   孫余凱等編

[5] http://wenku.baidu.com/view/1c7e5723dd36a32d737581c1.html

[6] http://wenku.baidu.com/view/89a4b74bcf84b9d528ea7ab9.html

[7] http://www.doc88.com/p-606590837883.html


附錄A  系統(tǒng)硬件電路圖

附錄B 實(shí)物照片

附錄C 系統(tǒng)完整程序代碼

  1. #include <reg52.h>   //reg52.h是針對(duì)52單片機(jī)定義的頭文件,主要包括寄存器定義。
  2. #include <intrins.h>  //要使用<intrins.h>里面的函數(shù)(像匯編一樣簡(jiǎn)便)
  3. #include <stdio.h>   //C語(yǔ)言標(biāo)準(zhǔn)庫(kù)里的一種       文件,預(yù)處理命令。
  4. #include <stdlib.h>   //可以調(diào)用它里面聲明的函數(shù)了,比如:malloc、free、exit等常用函數(shù)
  5. #define uchar unsigned char  //預(yù)定義 uchar 為 unsigned char 的一個(gè)代名詞
  6. #define uint unsigned int   //預(yù)定義uint為unsigned int的一個(gè)代名詞
  7. sbit lcden=P1^5;   //使能端設(shè)置
  8. sbit lcdrw=P1^6;   //1602(寫數(shù)據(jù)端)
  9. sbit lcdrs=P1^7;   // 1602(讀數(shù)據(jù)端)
  10. sbit rxd=P3^2;    //單片機(jī)發(fā)送數(shù)據(jù)(txd接收數(shù)據(jù))
  11. sbit PWM=P0^1;  //PWM波輸出端
  12. sbit IN0=P3^5;    //輸入口1
  13. sbit IN1=P3^6;    //輸入口2
  14. sbit alarm=P0^0;//蜂鳴器
  15. sbit k1=P1^0;//開關(guān)k1為模式一
  16. sbit k2=P1^1;//開關(guān)k2為模式二
  17. sbit k3=P1^2;//開關(guān)k3為模式三
  18. sbit zero=B^0;  //52單片機(jī)的頭文件
  19. sbit one=B^1;
  20. sbit two=B^2;
  21. sbit three=B^3;
  22. sbit four=B^4;
  23. sbit five=B^5;
  24. sbit six=B^6;
  25. sbit seven=B^7;
  26. uchar cal[7]={0};
  27. uchar buf;
  28. uchar sum;
  29. uint i=0;
  30. uint lcd;
  31. uchar gdp=0,gao=0,mode;
  32. uint Vo=0;
  33. uchar t=0;
  34. uchar code table[]="PM2.5:";   //數(shù)組
  35. uchar code table1[]="Mode:";  //數(shù)組
  36. uchar code table2[]="ug/m^3";  //數(shù)組
  37. uchar code table3[]="    ";    //數(shù)組
  38. uchar code table4[]="DianJi:";
  39. uchar code table5[]="Check   ";
  40. uchar code table6[]="DiSu ";
  41. uchar code table7[]="GaoSu";
  42. uchar ZS[2];
  43. uchar PM[5];
  44. void delay(uint i)  //延時(shí)
  45. {
  46.   uchar j,k;
  47.   for(j=i;j>0;j--)
  48.     for(k=125;k>0;k--);
  49. }
  50. uint k=0;
  51. void write_com(uchar com)//1602???寫指令
  52. {
  53.               lcdrs=0;
  54.               P2=com;
  55.               delay(5);
  56.               lcden=1;
  57.               delay(5);
  58.               lcden=0;
  59. }
  60. void write_data(uchar date)//1602???寫數(shù)據(jù)
  61. {
  62.               lcdrs=1;
  63.               P2=date;
  64.               delay(5);
  65.               lcden=1;
  66.               delay(5);
  67.               lcden=0;
  68. }
  69. void key()   //模式選擇
  70.   {
  71.                               if(k1==0)
  72.                             {
  73.                                           mode=1;
  74.                                           k++;//按鍵可以加
  75.                                           delay(200);//去斗
  76. ;
  77.                                           if(k>20)
  78.         {
  79.                 k=0;
  80.         }
  81.         else if(k<0)
  82.         {
  83.                 k=20;   //設(shè)置可加的范圍
  84.          }
  85.                                           sprintf( ZS, "%d", k );
  86.                             }
  87.                             if(k2==0)
  88.                             {
  89.                                           mode=2;
  90.                                           k--;
  91.                                           delay(200);
  92.                                           if(k>20)
  93.         {
  94.                 k=0;
  95.         }
  96.         else if(k<0)
  97.         {
  98.                 k=20;
  99.          }
  100.                                           sprintf( ZS, "%d", k );
  101.                             }
  102.                             if(k3==0)
  103.                             {
  104.                                           mode=3;
  105.                             }
  106.   }
  107. void init()
  108. {
  109.               lcdrw=0;
  110.               lcden=0;
  111.               write_com(0x38);//設(shè)置16X2顯示,顯示5X7點(diǎn)陣,8位數(shù)據(jù)接口
  112.               write_com(0x0c);//LCD開顯示且不顯示光標(biāo),光標(biāo)不閃爍
  113.               write_com(0x06);//寫一個(gè)字符后地址指針加一,且光標(biāo)加一,整屏顯示不移動(dòng)。
  114.               write_com(0x01);//顯示清屏
  115.               write_com(0x80);//數(shù)據(jù)指針設(shè)置
  116.               SCON=0x50;  //SM0 SM1 SM2 REN TB8 RB8 TI RI  10位異步收發(fā)
  117.               RCAP2H=(65536-156)/256; //晶振12M
  118.               RCAP2L=(65536-156)%256; //PM2.5 2400bps
  119.               TH2=RCAP2H;
  120.               TL2=RCAP2L;
  121.               PCON=0x00; //波特率不加倍
  122.               T2CON=0x34; //TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
  123.               TMOD=0x12;//T0 8位自動(dòng)重裝              T1 16位定時(shí)器
  124.               TH0=160;
  125.               TL0=160;
  126.               TH1=60536/256;
  127.               TL1=60536%256;
  128.               IT0=0;     //低電平觸發(fā)(邊沿)
  129.               ES=1;     //允許串口中斷
  130.               ET1=1;    //定時(shí)器1中斷
  131.               TR1=1;    //與門開關(guān)
  132.               PX0=0;    //中斷優(yōu)先級(jí)低
  133.               EX0=1;    //外部中斷0
  134.               EA=1;     //開啟總中斷
  135.    EX0=1;  
  136.               EA=1;
  137. }
  138. void panduan()    //PWM波的設(shè)置
  139. {
  140.               if(Vo<10)
  141.               {
  142.                             gao=2;
  143.               }
  144.               else if(Vo<20)
  145.               {
  146.                             gao=3;
  147.               }
  148.               else if(Vo<30)
  149.               {
  150.                             gao=4;
  151.               }
  152.               else if(Vo<40)
  153.               {
  154.                             gao=5;
  155.               }            
  156.               else if(Vo<50)
  157.               {
  158.                             gao=6;
  159.               }
  160.               else if(Vo<80)
  161.               {
  162.                             gao=10;
  163.               }
  164.               else if(Vo<150)
  165.               {
  166.                             gao=15;
  167.               }
  168.               else
  169.               {
  170.                             gao=20;
  171.               }
  172. }
  173. void moshi()
  174. {
  175.               if(mode==1)
  176.               {
  177.                             gdp=k;
  178.               }            
  179.               else if(mode==2)
  180.               {
  181.                             gdp=k;
  182.               }
  183.               else if(mode==3)
  184.               {
  185.                             gdp=gao;
  186.               }
  187.               else gdp=0;
  188.   }
  189. void senddata(uchar dat)   //PM2.5模式
  190. {
  191.               if (dat==170)
  192.                             {
  193.                             i=0;
  194.                             cal[i]=dat;
  195.               }
  196.               else
  197.               {
  198.                                           i=i+1;
  199.                                           cal[i]=dat;
  200.                                           if(i==6)//把七位寫進(jìn)去
  201.                             {
  202.                                           sum=cal[1]+cal[2]+cal[3]+cal[4]; //sum=Vout(H)+Vout(L)+Vref(H)+Vref(L)
  203.                                           if(sum==cal[5]&&cal[6]==255)  //sum與校驗(yàn)位相同&&最后一位是0xFF
  204.                                           {
  205.                                                         Vo=(int)(((float)cal[1]*256+(float)cal[2])/1024*2750);//轉(zhuǎn)換成整型數(shù)據(jù)
  206.                                                         if (Vo<10)
  207.                                                                       lcd=1;
  208.                                                         else if              (Vo<100)
  209.                                                                       lcd=2;
  210.                                                         else if (Vo<1000)
  211.                                                                       lcd=3;
  212.                                                         else
  213.                                                                       lcd=4;
  214.                                                         sprintf( PM, "%d", Vo ); //輸出Vo 值

  215.                                           }
  216.                             }
  217.               }
  218. }
  219. void main()   //主函數(shù)
  220. {
  221.               int i=0;
  222.               init();
  223.               for(i=0;i<6;i++)
  224.               {
  225.                             write_data(table[i]);
  226.                             delay(5);
  227.               }
  228.               write_com(0x80+0x0a);
  229.               for(i=0;i<6;i++)
  230.               {
  231.                             write_data(table2[i]);
  232.                             delay(5);
  233.               }
  234.               PWM=0;
  235.               alarm=0;
  236.               IN0=0;
  237.               IN1=1;
  238.               mode=3;//JianCe??
  239.   if(i==6)//把七位寫進(jìn)去
  240.                             {
  241.                                           sum=cal[1]+cal[2]+cal[3]+cal[4]; //sum=Vout(H)+Vout(L)+Vref(H)+Vref(L)
  242.                                           if(sum==cal[5]&&cal[6]==255)  //sum與校驗(yàn)位相同&&最后一位是0xFF
  243.                                           {
  244.                                                         Vo=(int)(((float)cal[1]*256+(float)cal[2])/1024*2750);//轉(zhuǎn)換成整型數(shù)據(jù)
  245.                                                         if (Vo<10)
  246.                                                                       lcd=1;
  247.                                                         else if              (Vo<100)
  248.                                                                       lcd=2;
  249.                                                         else if (Vo<1000)
  250.                                                                       lcd=3;
  251.                                                         else
  252.                                                                       lcd=4;
  253.                                                         sprintf( PM, "%d", Vo ); //輸出Vo 值

  254.                                           case 1:   //按鍵控制PWM波轉(zhuǎn)速加一
  255.                                           write_com(0x80+0x40);
  256.                                           for(i=0;i<7;i++)
  257.                                           {
  258.                                                         write_data(table4[i]);
  259.                                                         delay(2);
  260.                                           }
  261. if(k<10)
  262. {
  263.   write_com(0x80+0x47);
  264.                                           write_data(table3[1]);
  265.                                           delay(2);
  266.               write_com(0x80+0x48);
  267.                           for(i=0;i<1;i++)
  268.                           {

  269.                                 write_data(ZS[i]);
  270.                                 delay(200);
  271.                            }
  272.               write_com(0x80+0x49);
  273.               for(i=0;i<5;i++)
  274.               {
  275.                             write_data(table6[i]);
  276.                             delay(5);
  277.               }
  278. }
  279. else
  280. {
  281. write_com(0x80+0x47);
  282.                           for(i=0;i<2;i++)
  283.                           {

  284.                                 write_data(ZS[i]);
  285.                                 delay(200);
  286.                            }
  287.               write_com(0x80+0x49);
  288.               for(i=0;i<5;i++)
  289.               {
  290.                             write_data(table7[i]);
  291.                             delay(5);
  292.          }
  293.                                           }
  294.                            break;
  295.                                           case 2:
  296.                          write_com(0x80+0x40);
  297.                                 for(i=0;i<7;i++)
  298.                                 {
  299.                                                 write_data(table4[i]);
  300.                                                  delay(2);
  301.                                  }
  302.                                                          
  303. if(k<10){
  304.      write_com(0x80+0x47);
  305.                                           write_data(table3[1]);
  306.                                           delay(2);
  307.               write_com(0x80+0x48);
  308.                           for(i=0;i<1;i++)
  309.                           {

  310.                                 write_data(ZS[i]);
  311.                                 delay(200);
  312.                            }
  313.               write_com(0x80+0x49);
  314.               for(i=0;i<5;i++)
  315.               {
  316.                             write_data(table6[i]);
  317.                             delay(5);
  318.               }
  319. }
  320. else
  321. {
  322. write_com(0x80+0x47);
  323.                           for(i=0;i<2;i++)
  324.                           {

  325.                                 write_data(ZS[i]);
  326.                                 delay(200);
  327.                            }
  328.               write_com(0x80+0x49);
  329.               for(i=0;i<5;i++)
  330.               {
  331.                             write_data(table7[i]);
  332.                             delay(5);
  333.          }
  334.                                           }
  335.                                                           break;
  336.                                           case 3:
  337.                                          
  338.                                                              write_com(0x80+0x40);
  339.                                                                 for(i=0;i<5;i++)
  340.                                                                {
  341.                                                                              write_data(table1[i]);
  342.                                                                             delay(2);
  343.                                                                }
  344.                         write_com(0x80+0x45);
  345.                           for(i=0;i<8;i++)
  346.                           {

  347.                            write_data(table5[i]);
  348.                            delay(2);
  349.                            }
  350.                            break;
  351.                             }
  352.                             key();
  353.     }
  354. }

  355. void pwm() interrupt 3//pwm波中斷服務(wù)
  356. {            
  357.               TH1=60536/256;
  358.               TL1=60536%256;
  359.               if (t==20)
  360.               {
  361.                             t=0;
  362.               }
  363.               if (t<gdp)
  364.               {
  365.                             PWM=1;                           
  366.               }
  367.               else
  368.                             PWM=0;
  369.               t++;
  370. }
  371. void serial() interrupt 4//串行中斷服務(wù)
  372. {
  373.               ES=0;
  374.               RI=0;
  375.               buf=SBUF;
  376.               senddata(buf);
  377. ES=1;
  378. }
復(fù)制代碼


完整的Word格式文檔51黑下載地址:
課程設(shè)計(jì)報(bào)告.doc (567 KB, 下載次數(shù): 127)
回復(fù)

使用道具 舉報(bào)

ID:97678 發(fā)表于 2020-3-26 16:18 | 顯示全部樓層
空氣凈化器控制程序.c(298): error C171: 'break': missing enclosing loop. 發(fā)現(xiàn)以上錯(cuò)誤。怎么回事?
回復(fù)

使用道具 舉報(bào)

ID:494050 發(fā)表于 2019-3-19 17:47 | 顯示全部樓層
你好,請(qǐng)問有高清版的原理圖嗎 能看到每個(gè)引腳的那種 如果有可以發(fā)給我嗎  謝謝
回復(fù)

使用道具 舉報(bào)

ID:375715 發(fā)表于 2019-4-26 22:40 來(lái)自手機(jī) | 顯示全部樓層
挺好的
回復(fù)

使用道具 舉報(bào)

ID:715368 發(fā)表于 2020-3-26 10:03 | 顯示全部樓層
幫助很大
回復(fù)

使用道具 舉報(bào)

ID:636538 發(fā)表于 2020-6-17 17:32 | 顯示全部樓層
jovew 發(fā)表于 2020-3-26 16:18
空氣凈化器控制程序.c(298): error C171: 'break': missing enclosing loop. 發(fā)現(xiàn)以上錯(cuò)誤。怎么回事?

這個(gè)程序有錯(cuò)誤,我知道的CASE的引用是switch()再是case:{}break;
回復(fù)

使用道具 舉報(bào)

ID:893362 發(fā)表于 2021-3-22 15:06 來(lái)自手機(jī) | 顯示全部樓層
用的是AT89S52 還是AT89C52啊
回復(fù)

使用道具 舉報(bào)

ID:911847 發(fā)表于 2021-4-25 15:00 | 顯示全部樓層
有正確的原理圖嗎?
回復(fù)

使用道具 舉報(bào)

ID:1067315 發(fā)表于 2023-3-19 22:07 | 顯示全部樓層
有幫助
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级在线 | 午夜av电影院 | av片免费观看| 免费美女网站 | 欧美日在线 | 91久久久久久久久久久 | 日韩欧美一级精品久久 | 成人av观看 | 免费国产精品久久久久久 | 亚洲天堂网站 | 国产久视频 | 天天操夜夜操免费视频 | 精品日韩一区 | 久久久久一区二区三区四区 | www.久久久.com | 精品少妇一区二区三区日产乱码 | 一级黄色毛片a | 91精品国产91久久久久久最新 | 欧美日韩一区二区在线观看 | 久久精品免费 | 欧美h版 | 精品国产一区久久 | 日韩国产欧美 | 日韩午夜 | 久久国产精品久久久久久久久久 | 国产在线一区二区三区 | 成人一区二区三区在线观看 | 国产一级在线观看 | 你懂的国产 | 国产中文在线观看 | 美女激情av| 久久性色| 国产在线激情视频 | 国产做a爱免费视频 | 午夜视频网 | 91社区在线高清 | 国产精品明星裸体写真集 | 成人av在线播放 | www.亚洲视频.com | 亚洲一区二区在线视频 | 天堂av影院|