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ì)
本設(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)完整程序代碼
- #include <reg52.h> //reg52.h是針對(duì)52單片機(jī)定義的頭文件,主要包括寄存器定義。
- #include <intrins.h> //要使用<intrins.h>里面的函數(shù)(像匯編一樣簡(jiǎn)便)
- #include <stdio.h> //C語(yǔ)言標(biāo)準(zhǔn)庫(kù)里的一種 文件,預(yù)處理命令。
- #include <stdlib.h> //可以調(diào)用它里面聲明的函數(shù)了,比如:malloc、free、exit等常用函數(shù)
- #define uchar unsigned char //預(yù)定義 uchar 為 unsigned char 的一個(gè)代名詞
- #define uint unsigned int //預(yù)定義uint為unsigned int的一個(gè)代名詞
- sbit lcden=P1^5; //使能端設(shè)置
- sbit lcdrw=P1^6; //1602(寫數(shù)據(jù)端)
- sbit lcdrs=P1^7; // 1602(讀數(shù)據(jù)端)
- sbit rxd=P3^2; //單片機(jī)發(fā)送數(shù)據(jù)(txd接收數(shù)據(jù))
- sbit PWM=P0^1; //PWM波輸出端
- sbit IN0=P3^5; //輸入口1
- sbit IN1=P3^6; //輸入口2
- sbit alarm=P0^0;//蜂鳴器
- sbit k1=P1^0;//開關(guān)k1為模式一
- sbit k2=P1^1;//開關(guān)k2為模式二
- sbit k3=P1^2;//開關(guān)k3為模式三
- sbit zero=B^0; //52單片機(jī)的頭文件
- sbit one=B^1;
- sbit two=B^2;
- sbit three=B^3;
- sbit four=B^4;
- sbit five=B^5;
- sbit six=B^6;
- sbit seven=B^7;
- uchar cal[7]={0};
- uchar buf;
- uchar sum;
- uint i=0;
- uint lcd;
- uchar gdp=0,gao=0,mode;
- uint Vo=0;
- uchar t=0;
- uchar code table[]="PM2.5:"; //數(shù)組
- uchar code table1[]="Mode:"; //數(shù)組
- uchar code table2[]="ug/m^3"; //數(shù)組
- uchar code table3[]=" "; //數(shù)組
- uchar code table4[]="DianJi:";
- uchar code table5[]="Check ";
- uchar code table6[]="DiSu ";
- uchar code table7[]="GaoSu";
- uchar ZS[2];
- uchar PM[5];
- void delay(uint i) //延時(shí)
- {
- uchar j,k;
- for(j=i;j>0;j--)
- for(k=125;k>0;k--);
- }
- uint k=0;
- void write_com(uchar com)//1602???寫指令
- {
- lcdrs=0;
- P2=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_data(uchar date)//1602???寫數(shù)據(jù)
- {
- lcdrs=1;
- P2=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void key() //模式選擇
- {
- if(k1==0)
- {
- mode=1;
- k++;//按鍵可以加
- delay(200);//去斗
- ;
- if(k>20)
- {
- k=0;
- }
- else if(k<0)
- {
- k=20; //設(shè)置可加的范圍
- }
- sprintf( ZS, "%d", k );
- }
- if(k2==0)
- {
- mode=2;
- k--;
- delay(200);
- if(k>20)
- {
- k=0;
- }
- else if(k<0)
- {
- k=20;
- }
- sprintf( ZS, "%d", k );
- }
- if(k3==0)
- {
- mode=3;
- }
- }
- void init()
- {
- lcdrw=0;
- lcden=0;
- write_com(0x38);//設(shè)置16X2顯示,顯示5X7點(diǎn)陣,8位數(shù)據(jù)接口
- write_com(0x0c);//LCD開顯示且不顯示光標(biāo),光標(biāo)不閃爍
- write_com(0x06);//寫一個(gè)字符后地址指針加一,且光標(biāo)加一,整屏顯示不移動(dòng)。
- write_com(0x01);//顯示清屏
- write_com(0x80);//數(shù)據(jù)指針設(shè)置
- SCON=0x50; //SM0 SM1 SM2 REN TB8 RB8 TI RI 10位異步收發(fā)
- RCAP2H=(65536-156)/256; //晶振12M
- RCAP2L=(65536-156)%256; //PM2.5 2400bps
- TH2=RCAP2H;
- TL2=RCAP2L;
- PCON=0x00; //波特率不加倍
- T2CON=0x34; //TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
- TMOD=0x12;//T0 8位自動(dòng)重裝 T1 16位定時(shí)器
- TH0=160;
- TL0=160;
- TH1=60536/256;
- TL1=60536%256;
- IT0=0; //低電平觸發(fā)(邊沿)
- ES=1; //允許串口中斷
- ET1=1; //定時(shí)器1中斷
- TR1=1; //與門開關(guān)
- PX0=0; //中斷優(yōu)先級(jí)低
- EX0=1; //外部中斷0
- EA=1; //開啟總中斷
- EX0=1;
- EA=1;
- }
- void panduan() //PWM波的設(shè)置
- {
- if(Vo<10)
- {
- gao=2;
- }
- else if(Vo<20)
- {
- gao=3;
- }
- else if(Vo<30)
- {
- gao=4;
- }
- else if(Vo<40)
- {
- gao=5;
- }
- else if(Vo<50)
- {
- gao=6;
- }
- else if(Vo<80)
- {
- gao=10;
- }
- else if(Vo<150)
- {
- gao=15;
- }
- else
- {
- gao=20;
- }
- }
- void moshi()
- {
- if(mode==1)
- {
- gdp=k;
- }
- else if(mode==2)
- {
- gdp=k;
- }
- else if(mode==3)
- {
- gdp=gao;
- }
- else gdp=0;
- }
- void senddata(uchar dat) //PM2.5模式
- {
- if (dat==170)
- {
- i=0;
- cal[i]=dat;
- }
- else
- {
- i=i+1;
- cal[i]=dat;
- if(i==6)//把七位寫進(jìn)去
- {
- sum=cal[1]+cal[2]+cal[3]+cal[4]; //sum=Vout(H)+Vout(L)+Vref(H)+Vref(L)
- if(sum==cal[5]&&cal[6]==255) //sum與校驗(yàn)位相同&&最后一位是0xFF
- {
- Vo=(int)(((float)cal[1]*256+(float)cal[2])/1024*2750);//轉(zhuǎn)換成整型數(shù)據(jù)
- if (Vo<10)
- lcd=1;
- else if (Vo<100)
- lcd=2;
- else if (Vo<1000)
- lcd=3;
- else
- lcd=4;
- sprintf( PM, "%d", Vo ); //輸出Vo 值
-
- }
- }
- }
- }
- void main() //主函數(shù)
- {
- int i=0;
- init();
- for(i=0;i<6;i++)
- {
- write_data(table[i]);
- delay(5);
- }
- write_com(0x80+0x0a);
- for(i=0;i<6;i++)
- {
- write_data(table2[i]);
- delay(5);
- }
- PWM=0;
- alarm=0;
- IN0=0;
- IN1=1;
- mode=3;//JianCe??
- if(i==6)//把七位寫進(jìn)去
- {
- sum=cal[1]+cal[2]+cal[3]+cal[4]; //sum=Vout(H)+Vout(L)+Vref(H)+Vref(L)
- if(sum==cal[5]&&cal[6]==255) //sum與校驗(yàn)位相同&&最后一位是0xFF
- {
- Vo=(int)(((float)cal[1]*256+(float)cal[2])/1024*2750);//轉(zhuǎn)換成整型數(shù)據(jù)
- if (Vo<10)
- lcd=1;
- else if (Vo<100)
- lcd=2;
- else if (Vo<1000)
- lcd=3;
- else
- lcd=4;
- sprintf( PM, "%d", Vo ); //輸出Vo 值
-
- case 1: //按鍵控制PWM波轉(zhuǎn)速加一
- write_com(0x80+0x40);
- for(i=0;i<7;i++)
- {
- write_data(table4[i]);
- delay(2);
- }
- if(k<10)
- {
- write_com(0x80+0x47);
- write_data(table3[1]);
- delay(2);
- write_com(0x80+0x48);
- for(i=0;i<1;i++)
- {
-
- write_data(ZS[i]);
- delay(200);
- }
- write_com(0x80+0x49);
- for(i=0;i<5;i++)
- {
- write_data(table6[i]);
- delay(5);
- }
- }
- else
- {
- write_com(0x80+0x47);
- for(i=0;i<2;i++)
- {
-
- write_data(ZS[i]);
- delay(200);
- }
- write_com(0x80+0x49);
- for(i=0;i<5;i++)
- {
- write_data(table7[i]);
- delay(5);
- }
- }
- break;
- case 2:
- write_com(0x80+0x40);
- for(i=0;i<7;i++)
- {
- write_data(table4[i]);
- delay(2);
- }
-
- if(k<10){
- write_com(0x80+0x47);
- write_data(table3[1]);
- delay(2);
- write_com(0x80+0x48);
- for(i=0;i<1;i++)
- {
-
- write_data(ZS[i]);
- delay(200);
- }
- write_com(0x80+0x49);
- for(i=0;i<5;i++)
- {
- write_data(table6[i]);
- delay(5);
- }
- }
- else
- {
- write_com(0x80+0x47);
- for(i=0;i<2;i++)
- {
-
- write_data(ZS[i]);
- delay(200);
- }
- write_com(0x80+0x49);
- for(i=0;i<5;i++)
- {
- write_data(table7[i]);
- delay(5);
- }
- }
- break;
- case 3:
-
- write_com(0x80+0x40);
- for(i=0;i<5;i++)
- {
- write_data(table1[i]);
- delay(2);
- }
- write_com(0x80+0x45);
- for(i=0;i<8;i++)
- {
-
- write_data(table5[i]);
- delay(2);
- }
- break;
- }
- key();
- }
- }
-
- void pwm() interrupt 3//pwm波中斷服務(wù)
- {
- TH1=60536/256;
- TL1=60536%256;
- if (t==20)
- {
- t=0;
- }
- if (t<gdp)
- {
- PWM=1;
- }
- else
- PWM=0;
- t++;
- }
- void serial() interrupt 4//串行中斷服務(wù)
- {
- ES=0;
- RI=0;
- buf=SBUF;
- senddata(buf);
- ES=1;
- }
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
課程設(shè)計(jì)報(bào)告.doc
(567 KB, 下載次數(shù): 127)
2018-5-30 12:44 上傳
點(diǎn)擊文件名下載附件