5STC單片機(jī)C語(yǔ)言通用萬(wàn)能編程模板_第1頁(yè)
5STC單片機(jī)C語(yǔ)言通用萬(wàn)能編程模板_第2頁(yè)
5STC單片機(jī)C語(yǔ)言通用萬(wàn)能編程模板_第3頁(yè)
5STC單片機(jī)C語(yǔ)言通用萬(wàn)能編程模板_第4頁(yè)
5STC單片機(jī)C語(yǔ)言通用萬(wàn)能編程模板_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余44頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、8051單片機(jī)C語(yǔ)言編程模板I 函數(shù)頭文件22. 毫秒級(jí)CPU延時(shí)函數(shù)43. 定時(shí)/計(jì)數(shù)器初始化函數(shù)54 定時(shí)/計(jì)數(shù)器1中斷處理函數(shù)65. 定時(shí)/計(jì)數(shù)器0中斷處理函數(shù)76. PWM初始化函數(shù)87. PWM0占空比設(shè)賈函數(shù)98. UART串口初始化函數(shù)109. UART串口接收中斷處理函數(shù)1110. UART串口發(fā)送函數(shù)12II .UART串口發(fā)送字符串函數(shù)1312.外部中斷INT初始化函數(shù)1413. 外部中斷INTl中斷處理程序1514. 外部中BfINTO中斷處理程序1515. 普通I/O 口模擬PWM生成程序1616. LCD 驅(qū)動(dòng)1617. DS 18B20溫度傳感器驅(qū)動(dòng)1918. LC

2、M2402 (1602也適用)驅(qū)動(dòng)程序2119主函數(shù)2520. 8個(gè)獨(dú)立式鍵盤驅(qū)動(dòng)程序2721.16個(gè)陣列式鍵盤驅(qū)動(dòng)程序281 函數(shù)頭文件/ 本* 京 (京 * 京*車* 車 * 本* 京*)IC 本 * 字* 京* 京* 京*程序名:編寫人:編寫時(shí)間:20年 月曰硬件支持:.專業(yè)接口說(shuō)明:修改日志:NOJ-/京*本*康*承*扌*京*專*卓*京*案* 說(shuō)明:木* * 京* *車* * *永*41*察*琢*京*扌*球*卓*41#include <REG51.h REG52.h STCllFxx.H STC12C2052AD.H STC12C5A60S2.H>通用89C51頭文件(只留

3、下實(shí)際使用的單片機(jī)所對(duì)應(yīng)的頭文件)#include <ssert.h>設(shè)定插入點(diǎn)#include <ctype.h>字符處理#include <errno.h>定義錯(cuò)誤碼#include <float.h>浮點(diǎn)數(shù)處理#include <fstream.h>文件輸入/輸出#include <iomaip.h>參數(shù)化輸入/輸出#include <iostream.h>數(shù)據(jù)流輸入/輸出#include <limits.h>定義各種數(shù)據(jù)類型最值常It#include <locale.h>定義本地

4、化函數(shù)#include <math.h>定義數(shù)學(xué)函數(shù)#include <stdio.h>定義輸入/輸出函數(shù)#include <stdlib.h>定義雜項(xiàng)函數(shù)及存分配函數(shù)#include <string.h>字符串處理#include <strstra.h>基于數(shù)組的輸入/輸出#include <time.h>定義關(guān)于時(shí)間的函數(shù)#include <wchar.h>寬字符處理及輸入/輸出#include <wctype.h>寬字符分類#include <itrins.h>/51基本運(yùn)算(包括

5、op_空函數(shù))Sfr 自定義名二SFR地址;按字節(jié)定義SFR中的存儲(chǔ)器名。例:SfrPl =0x90;Sbit 自定義名二系統(tǒng)位名;按位定義SFR中的存儲(chǔ)器名。例:Sbit Add-Key = P3 1;bit自定義名;定義一個(gè)位(位的值只能是0或】)例:bit LED;專業(yè)#define R替名原名 #define KEYPI SbitSPEAKER = P37;Sbit DQ = P2 5;Sbit RS = P1O;Sbit RW = PlA;用代替名代替原名。例:#define LEDPl / #define TA 0x25鍵盤所連接的I/O接口組定義揚(yáng)聲器連接定義/dsl8B20模式

6、位,為0輸入指令,為丨輸入數(shù)據(jù)讀寫位,為0讀,為1寫SbitE = Pl 2;#define LCCLBUS PO使能位數(shù)據(jù)總線nsigned Char 自定義名;UnSigned int自定義名;定義一個(gè)0-255的整數(shù)變量。定義一個(gè)0-65535的整數(shù)變量。data字節(jié)尋址片RAM,片RAM的128字節(jié)bdata 可位尋址片RAMI 16字節(jié),從0x20到0x2F idata所有片RAMI 256字節(jié),從0x00到OX阡Pdata 片外 RAMI 256 字節(jié),從 OXOo 到 OXFFXdata 片外RA64K字節(jié),從OXoo到OX阡FF(例:data UnSigned Char a;)

7、(例:bdata UnSigned Char a;) (例:idata UnSigned chord;) (例:Pdata UnSigned Char a;) (例:Xdata UnSigned Char a;)COdeROM存儲(chǔ)器,64K字節(jié),從OXoO到OX阡阡(例:COde UnSigned Char a;)2亳秒級(jí)CPU延時(shí)函數(shù)/本* 察* 京 * 京*)(車 *車* 京* 本*京* 京* 京* 京*本* 函數(shù)名:毫秒級(jí)CPU延時(shí)函數(shù) 調(diào)用:DELAY_MS (?);參 數(shù):165535 (參數(shù)不可為0)返回值:無(wú)結(jié) 果:占用CPU方式延時(shí)與參數(shù)數(shù)值相同的毫秒時(shí)間備 注:應(yīng)用于IT單片

8、機(jī)時(shí)i<600,應(yīng)用于12T單片機(jī)時(shí)i<125 (在此預(yù)為IT單片機(jī)數(shù)值)/扌*球車*本*永*車*球*京*木*)1(京*京*卓*京 IVOid DELAY_MS (UnSigned int )UnSigned int i;While ( -a !二 0)for(i 二 0; i V 600; i+);/京*琢*案*琢*京*專*卓*車*車電* /Ml MO方式 說(shuō)明00013位T/C,由TL低5位和TH的8位組成】3位計(jì)數(shù)器01116位TC, TL和TH共16位計(jì)數(shù)器1028位TC1 TL用于計(jì)數(shù),當(dāng)TL溢出時(shí)將TH中的值自動(dòng)寫入TL113兩組8位T/C3 定時(shí)/計(jì)數(shù)器初始化函數(shù)/*

9、)!(京*察* * *察* * *察*4(察* * *京*豪4(* *豪* 京* 京* 函數(shù)名:定時(shí)/計(jì)數(shù)器初始化函數(shù)調(diào)用:T_CJnit();參數(shù):無(wú)返回值:無(wú)結(jié) 果:設(shè)責(zé)SFR中T/C1和(或)T/CO相關(guān)參數(shù)備 注:本函數(shù)控制T/C1和T/CO,不需要使用的部分可用屏蔽/車* 京* * 琢* *第* 京* 京* 車* *j*4* * 京* 京* * * 京*康* 康* */ VOid T_Cnit (VOid)TMOD = OX11;高 4 位控制 TC1 GATE, CT, MI , MO, GATEl C/T1 MII MOEA= 1;中斷總開(kāi)關(guān)TH1 = OX 阡;/16位計(jì)數(shù)寄存

10、器Tl高8位(寫入初值)TLl 二 OxFF;/16位計(jì)數(shù)寄存器Tl低8位ETI 二 1;TRl = 1;/T/C1中斷開(kāi)關(guān)/T/C1啟動(dòng)開(kāi)關(guān)/THO 二 0x3C;/16位計(jì)數(shù)寄存器TO高8位/TLO 二 OxBO;/ETO = 1 ;/TRO 二 1 ;/16位計(jì)數(shù)寄存器TO低8位(0x3CBo = 50mS延時(shí))/T/CO中斷開(kāi)關(guān)/T/CO啟動(dòng)開(kāi)關(guān)/ 京* 第* 京* * *承* *4t*4c*4* * 京* * 車* * * 察* *)|(承*4t4<*4c*4*4 定時(shí)/計(jì)數(shù)器1中斷處理函數(shù)函數(shù)名:定時(shí)/計(jì)數(shù)器丨中斷處理函數(shù)調(diào)用:T/C1溢出后中斷處理 參數(shù):無(wú)返回值:無(wú) 結(jié)

11、果:重新寫入16位計(jì)數(shù)寄存器初始值,處理用戶程序切換寄存器組到3備 注:必須允許中斷并啟動(dòng)T/C本函數(shù)方可有效,重新寫入初值需和T.CJnit函數(shù)一致VOid T_C 1 (VOid) interrupt 3 USing 3THI = 0x3C;TLl = OxBO;/16位計(jì)數(shù)寄存器Tl高8位(重新寫入初值)/16位計(jì)數(shù)寄存器TI低8位(0x3CBO二50mS延時(shí))函數(shù)容/J>*c*c 京定 *拿* *oc* 卓*床噸*卓點(diǎn)*廉* 宜* 克*卓*c*P* 京車* 琢*感* 車電 * 車 /5定時(shí)/計(jì)數(shù)器O中斷處理函數(shù)函數(shù)名:定時(shí)/計(jì)數(shù)器O中斷處理函數(shù)調(diào) 用:TcO溢出后中斷處理參數(shù):無(wú)

12、返回值:無(wú)結(jié) 果:重新寫入16位計(jì)數(shù)寄存器初始值,處理用戶程序備 注:必須允許中斷并啟動(dòng)T/C本函數(shù)方可有效,重新寫入初值需和T_CJnit函數(shù)一致y *)c*)c)»(*«*«*«* /VOid T-CO (VOid) interrupt 1 USing 1 切換寄存器組到 1THO = 0x3C;/】6位計(jì)數(shù)寄存器To高8位(重新寫入初值)TLO二OxBO;/16位計(jì)數(shù)寄存器To低8位(0x3CBO二50mS延時(shí))函數(shù)容/*車*琢*京*車*京*車*車*卓*車*京*京*京*京*京 /6.PWM初始化函數(shù)函數(shù)名:PWM初始化函數(shù)調(diào)用:PWMJnit();

13、參數(shù):無(wú)返回值:無(wú)結(jié) 果:將PCA初始化為PWM模式,初始占空比為O備 注:需要更多路PWM輸出直接插入CCAPnH和CCAPnL即可木*卓*車*京*巾*京*扌*車VOid PWMnit (VOid)CMOD 二 OXo2;CL=OX;CH=OxOO;CCAPMO=OX42;CCAPOL=OX00;CCAPOH=OX00;/CCAPM 1=0x42; /Ccaril=OxOO;設(shè)萱PCA定時(shí)器/PWM0 設(shè)MPCAl作方式為 PWM 方式(OIOoOOIo) 設(shè)直PWMo初始值與CCAPOH相同/ PWM0初始時(shí)為0 /PWMl設(shè)責(zé)PCA工作方式為PWM方式(使用時(shí)刪除/)設(shè)責(zé)PWMl初始值與

14、CCAPOH相同/Ccarih=OxOO;/ PWMl初始時(shí)為O/CCAPM2=0x42; /CCAP2L=0x00; /CCAP2H=0x;/PWM2設(shè)萱PCA工作方式為PWM方式 設(shè)萱PWM2初始值與CCAPOH相同/ PWM2初始時(shí)為0/CCAPM3=0x42;/CCAP3L=0x00; /CCAP3H=0x;/PWM3設(shè)責(zé)PCA工作方式為PWM方式設(shè)萱PWM3初始值與CCAPOH相同/ PWM3初始時(shí)為0CR=I;啟動(dòng)PCA定時(shí)器* * 京* *字* *京*)IC 車* * 京* *4t*4c* * 穴* 京* 京* 京*京*車*7.PWM0占空比設(shè)置函數(shù)/京*康*康*琢*字*京*察*

15、定*專*卓*字*康*承*字*就*沐 函數(shù)名:PWMO占空比設(shè)貢函數(shù)調(diào)用:PWMO.set();參 數(shù):OXOO-OXFF (亦可用 0-255)返回值:無(wú)結(jié) 果:設(shè)HPWM模式占空比,為0時(shí)全部高電平,為】時(shí)全部低電平備 注:如果需要PWMl的設(shè)萱函數(shù),只要把CCAPOL和CCAPOH中的0改為丨即可 VOid PWMO-Set (UnSigned Char a)CCAPOL= a;CCAPOH= a;設(shè)萱值直接寫入CCAPOL設(shè)責(zé)值直接寫入CCAPOH* 京* * 琢*京* 車* *本* 京* *4c* * * 京* * 京* *j*4* *8.UART串口初始化函數(shù)*C* * *1* 函數(shù)

16、名:UART串口初始化函數(shù)調(diào)用:UARTJnitf);參數(shù):無(wú)返回值:無(wú)結(jié) 果:?jiǎn)?dòng)UART串口接收中斷,允許串口接收,啟動(dòng)T/C】產(chǎn)生波特率(占用)備注:振蕩晶體為12MHz, PC串口端設(shè)萱4800, &無(wú),1,無(wú)*察*字*木*未京*車*京定*卓*#*京*察*察*察*京*察*沐VOid UARTJnit (VOid)EA= 1;ES= 1;允許總中斷(如不使用中斷,可用屏蔽)允許UART串口的中斷/TMOD 二 0x20;定時(shí)器T/C1工作方式2SCON 二 0x50;串口工作方式1,允許串口接收(SCON - 0x40時(shí)禁止串口接收)/TH1 = 0xF3;定時(shí)器初值咼8位設(shè)萱/

17、TLl 二 0xF3;定時(shí)器初值低8位設(shè)萱PCON 二 0x80;/TRl = 1;波特率倍頻(屏蔽本句波特率為2400)定時(shí)器啟動(dòng)/ 車* 京* 車 * 京* * * *定*車* * 京* * * 木*琢* * 卓* *)(承 * 京9.UART串口接收中斷處理函數(shù)/*京* *未* *京* * 本*京* * * 京* *4c*4<* 京* *本*函數(shù)名:UART串口接收中斷處理函數(shù)調(diào) 用:SBUF收到數(shù)據(jù)后中斷處理參數(shù):無(wú)返回值:無(wú)結(jié)果:UART串口接收到數(shù)據(jù)時(shí)產(chǎn)生中斷,用戶對(duì)數(shù)據(jù)進(jìn)行處理(并發(fā)送回去)備注:過(guò)長(zhǎng)的處理程序會(huì)影響后面數(shù)據(jù)的接收/*京*琢*琢*京*京*本*車*卓*電*京*

18、本*斗*球*京*康*承/UnSigned Char ART-data;VOid UART_R (VOid) interrupt 4 USing 1切換寄存器組到 1定義串口接收數(shù)據(jù)變量(需要對(duì)接受到的數(shù)據(jù)進(jìn)行處理時(shí),可將其定義為全局變量)RI = O;UARLdQtQ 二 SBUF;/SBUF 二 UARLdQta/while (Tl = 0);/Tl = 0;10.UART串口發(fā)送函數(shù)/* 車* *琢* *京* 車* 京* 車* * * *車* * 京* 京* 京* *4c*4c, 函數(shù)名:UART串口發(fā)送函數(shù)調(diào)用:UARLT (?);參 數(shù):需要UART串口發(fā)送的數(shù)據(jù)(8位/字節(jié))返回值:

19、無(wú)結(jié) 果:將參數(shù)中的數(shù)據(jù)發(fā)送給UART串口,確認(rèn)發(fā)送完成后退出備注:令接收中斷標(biāo)志位為O (軟件清零)將接收到的數(shù)據(jù)送入變量ART.dt用戶函數(shù)容(用戶可使用UART_datQ做數(shù)據(jù)處理)將接收的數(shù)據(jù)發(fā)送回去(刪除即生效)檢查發(fā)送中斷標(biāo)志位令發(fā)送中斷標(biāo)志位為O (軟件清零)K*/VOid UARLT (Unsigned Char UART-.data) (定義串口發(fā)送數(shù)據(jù)變量SBUF = UARLdQtQ;將接收的數(shù)據(jù)發(fā)送回去While(Tl = 0);檢查發(fā)送中斷標(biāo)志位TI = O;令發(fā)送中斷標(biāo)志位為0 (軟件清零)y*4c*4:)IC)IC«*«*«*11 .

20、UART串口發(fā)送字符串函數(shù)/車*京*京*琢*琢*京*京*察*察*41*電*京*木*斗*貳*京*41*定 函數(shù)名:UART串口發(fā)送字符串函數(shù)調(diào)用:UARLTC (?);參 數(shù):需要UART串口發(fā)送的數(shù)據(jù)(8位/1字節(jié))返回值:無(wú)結(jié)果:向串口發(fā)送一個(gè)字符串,長(zhǎng)度不限。備 注:例:UARLTCrd9887321”);此函數(shù)需要#include <string.h>頭文件支持。 /京*承*康*承*家*k*京*宅*專*車*水京*京*車/ VOid UARLTC (UnSigned Char *str)while(*str != ,0,)ART.T(*str);*str+;*str = 0;中

21、斷入口說(shuō)明 中斷入口說(shuō)明interrupt O 外部中斷 O (ROM 入口地址:0x03)interrupt 1定時(shí)/計(jì)數(shù)器中斷O (ROM入口地址:OXOB)interrupt 2 外部中斷 1 (ROM 入口地址:0x13)interrupt 3定時(shí)/計(jì)數(shù)器中斷1 (ROM 口地址:OXlB)interrupt 4 UART 串口中斷(ROM 入口地址:0x23)(更多的中斷依單片機(jī)型號(hào)而定,ROM中斷入口均相差8個(gè)字節(jié))USing O使用寄存器組OUSing 1使用寄存器組1USing 2使用寄存器組2USing 3使用寄存器組3專業(yè)12 外部中斷INT初始化函數(shù)*字* 察*察* 車*

22、 京* 京* * 車* 車* 京* 京* 琢*Hc*4* * 京* 函數(shù)名:外部中斷INT初始化函數(shù)調(diào) 用:INTJnitf);參數(shù):無(wú)返回值:無(wú)結(jié) 果:?jiǎn)?dòng)外部中斷INTl、INTo中斷,設(shè)直中斷方式備注:/京* 承* *4<*4* * 京* 京* * 車* * 京* * 孚* *京* 京* * 來(lái)*京 /VOid INTJnit (VOid)EA= 1;中斷總開(kāi)關(guān)EXI = 1;允許外部中斷】中斷EXO = 1 ;允許外部中斷0中斷ITl = 1;/1:下沿觸發(fā)0:低電平觸發(fā)ITO= 1;/1:下沿觸發(fā)0:低電平觸發(fā)/琢* * 京* 京* 京* 京* 察京* * 京* *定* */*

23、 車* * *琢*)It 琢* *13外部中斷INTl中斷處理程序 函數(shù)名:外部中斷INTl中斷處理程序調(diào) 用:外部引腳INTl中斷處理參數(shù):無(wú)返回值:無(wú)結(jié)果:用戶處理外部中斷信號(hào)備注:/車*4t*本*察*京*京*卓*車*/VOid INT-I (VOid) interrupt 2 USing 2切換寄存器組到 2用戶函數(shù)容/京*京*察*京*)IC車*本*京*京*京京*察*4c*京*車*察*以琢* /14外部中斷INTO中斷處理程序/京* 察* * 京* *察* 承* *4c*44c*4* * 車* */* */* 京* *專* * 康* *察* 取*函數(shù)名:外部中斷INTo中斷處理程序調(diào) 用

24、:外部引腳INTo中斷處理參數(shù):無(wú)返回值:無(wú)結(jié) 果:用戶處理外部中斷信號(hào)備注:/本*希*京*車*車*璟*京*京 k*車*京*床車*京*京*專*木*京*/VOid INLo (VOid) interrupt 0 USing 2切換寄存器組到 2用戶函數(shù)容VOid display (UnSigned int a) DY-PORT 二 0x;delay (a);DYePORT = Oxff; delay (DY.PWM-a);15普通I/O 口模擬PWM生成程序函數(shù)名:普通I/O 口模擬PWM生成程序調(diào)用:display (?)京* * 克* 京* *京* * * *專* * 克* 察* * *j*

25、 *4t*4t* 康* 京* 京*備注:* 車* * 琢*京* 察* *康* 車* *未*41*京*#*4(*京*京*車*京*顯示程序(5OmS的PWM寬度)/LED小燈亮延時(shí)o的長(zhǎng)度/LED小燈滅延時(shí)總PWM長(zhǎng)度減Q/木*京*宅*車*車*車*察*京*京*琢*廉*卓*京16丄CD驅(qū)動(dòng)/京*京*車*車*字*扌*案*京*字*獄/LCD驅(qū)動(dòng)(DY12864CBL液晶顯示屏并口驅(qū)動(dòng)程序)VOid Chk_busy()檢查忙位(底層)RS=O;RW=I;E 二 1;LCd-BUS=Oxff;While(LCCLBUS&0x80)二二 0x80);E=0;/京* 京* *4c* 衣* 察* 康*

26、承(車*康*京*取*京*京*41*車*琢*扌*京VOid Write-(UnSigned Char CmdCOde)Chk_busy();RS=O;RW=O;E=l;LCd-BUS=Cmdcode;E=0;VOid Writedata(unsigned Char DiSPdata)ChkjDUSy();RS=I;RW=O;E=l;LCdeBUS=DiSPdata;E=0;VOid ICnnnit()寫命令到LCD (底層)寫數(shù)揭到LCD (底層)初始化LCD屏(被調(diào)用層)Write-(OX30);Write.(OxOc);選擇8bit數(shù)據(jù)流開(kāi)顯示(無(wú)游標(biāo)、不反白)清除顯示,并且設(shè)定地址指針為O

27、oHwrite-(0x01);*車*琢*琢*京*車*京*電*京*京*東*京*4CVOid ICm-W-WOrd (UnSigned Char *s)向LCM發(fā)送一個(gè)字符串,長(zhǎng)度64字符之。(被調(diào)用層)while(*s>0)應(yīng)用:ICm_w_WOrdr您好);Writeedata (*s); s+;VOid ICm-WJeSt(bit izunsiged Char WOrd)寫指令或數(shù)據(jù)(被調(diào)用層)if(i 二二 0)Write Jword); else寫指令或數(shù)據(jù)(0,指令)write-data(word);/* 拿* 車* 京 *巾木* 京*/* 永* 京定 *#*)IC 木 * 牛*

28、4(* 車寫指令或數(shù)據(jù)(1,數(shù)據(jù))VOid ICm.clr(void)清屏函數(shù)ICm.Wjest(OzOxOl);/察*京*扌*車*琢*京*卓*4*卓*琢*京*京*車車*I17.DS18B20溫度傳感器驅(qū)動(dòng)/車*京*京*察*察*車*京*定*車*京* /DS18B20溫度傳感器驅(qū)動(dòng)(顯示0至60度)/* 4(察* 京*來(lái)* 車* *來(lái)* 車*京* * 京* * 京* 車*+*4c* *)It 京VOid Delay(int nUm)延時(shí)函數(shù)while(num-);/ 京 * 康* Jk* 車* 歡 * 定* 專* 卓* 京* 京 * 案* * 車VOid IniLDSl 8B20(void)初始

29、化ds 1820UnSigned Char x=0;DQ = 1;Delay(8);/DQ復(fù)位稍做延時(shí)DQ = O;Delay (80);單片機(jī)將DQ拉低精確延時(shí)大于480USDQ = 1;Delay(14);拉高總線x=DQ;稍做延時(shí)后如果X二0則初始化成功X=I則初始化失敗Delay(20);/ 車* *京*孚* * 京* * 京* * 京* 京* * *本* 京* *<c*4c* * *UnSigned Char ReadOneChar(VOid)讀一個(gè)字節(jié)UnSigned Char i=0;UnSigned Char dat = O;for (i=8;i>0;i-)DQ =

30、 O; dat>>=l;DQ= 1; if(DQ) dat I =0x80;Delay(4); retrn(dat);/ 琢* 減* 京* 京* 專 *JK* 璟* 京 * 本 * 京 *: VOid WriteOneChar(UnSigned Char dat) UnSigned Char i二0;for (i二8; i>0; i-)DQ = O;DQ = dat&0x01;Delay(5);DQ= 1; dat>>=l;/琢*減*京*京*專*車*璟*京*本*京 UnSigned int ReadTemPeratUre(VOid)UnSigned Cha

31、r a=0;/給脈沖信號(hào)/給脈沖信號(hào)專業(yè)寫一個(gè)字節(jié)嵌*車*京*京*京*京*京讀取溫度/跳過(guò)讀序號(hào)列號(hào)的操作 /啟動(dòng)溫度轉(zhuǎn)換跳過(guò)讀序號(hào)列號(hào)的操作讀取溫度寄存器讀低8位讀高8位UnSigned Char b=0;UnSigned int t=O; float tt=O;IniLDSl 8B20();WriteOneChar(OxCC); WriteOneChar(OX44);IniLDSI8B20(); WriteOneChar(OxCC); WnteOneChar(OxBE); a=ReadOneChar(); b=ReadOneChar(); t=b;專業(yè)t<<=8;t=t I a

32、; tt=t*0.0625;t= tt*10÷0.5; return (t);放大】0倍輸出并四舍五入* * 18.LCM2402 (1602也適用)驅(qū)動(dòng)程序/*京* * 琢* *京*京*車* *京*京*4t* * *4* * /以下是LCM2402 (1602也適用)驅(qū)動(dòng)程序/京*承* 康* 承*)cjk4t*/* 專* 京* 京* *4C)ICIK *字*/引腳定義/ (使用者根據(jù)實(shí)際更改)/琢*京*京*琢* * * 京*減*察*4l*4c* *京* *衣* *HcjK* * 承 /# defineSbit LCM2402.RSSbit LCM2402.RWSbit LCM240

33、2.ELCM2402_DB0_DB7=P3 2;=P3 3;=P3 4;Pl/Sbit LCM2402.Bsy = Pl 7;/*京*本*本*未*京*察*扌*京*康*京*定義LCM2402的數(shù)據(jù)總線定義LCM2402的RS控制線定義LCM2402的RW控制線定義LCM2402的E控制線定義LCM2402的測(cè)忙線(與LCM2402LDB7關(guān)聯(lián))# defineCMD-CIearOxOl/清除屏幕# defineCMD.back0x02/ DDRAM回零位# defi neCMD_dec0x04/讀入后AC (指針)減】,向左寫# defineCMD-.add 10x06/讀入后AC (指針)加】

34、,向右寫# defineCMD_dis_gblOXOf/開(kāi)顯示_開(kāi)光標(biāo)一開(kāi)光標(biāo)閃爍# defineCMD_dis_gb2OXOe/開(kāi)顯示_開(kāi)光標(biāo)一關(guān)光標(biāo)閃爍# defineCMD_dis_gb3OXOC/開(kāi)顯示_關(guān)光標(biāo)一關(guān)光標(biāo)閃爍# defineCMD_O 阡 _dis0x08/關(guān)顯示一關(guān)光標(biāo)_關(guān)光標(biāo)閃爍# defineCMD.set820x38/ 8位總線_2行顯示# defineCMD.set810x30/ 8位總線行顯示(上邊行)# defineCMD.set420x28/ 4位總線_2行顯示# defineCMD.set410x20/ 4位總線行顯示(上邊行)# definelin.l

35、0x80/ 4位總線行顯示(上邊行)# definelin.2OXCO4位總線_1行顯示(上邊行)定義LCM2402指令集/ (詳細(xì)請(qǐng)見(jiàn)技術(shù)手冊(cè))/* 京* 京* 車*)cjc*ji*jK*)c*j*)4c4i*Hc*4c*jK*jK*京* * *定*京* *)|(專* 車*車*察* 4t* 察* * *定* 京* 車京* 車* 車*%*/讀LCM忙程序底層協(xié)議/ (所有底層協(xié)議都無(wú)需關(guān)注)/ LCM2402測(cè)忙,若LCM2402處于忙狀態(tài),本函數(shù)將等待至非忙狀態(tài)/ /京*承*康*承*車*京卓宣*京*專*車*京*京*車VOid LCM2402_TestBusy(void)設(shè)備讀狀態(tài)等待LCM不

36、忙LCM2402_DB0_DB7 二 Oxff;LCM2402RS 二 0;LCM2402_RW 二 1;LCM2402-E = 1 ;While(LCM2402.Bsy);LCM2402_E 二 O;/寫指令程序/向LCM2402寫命令本函數(shù)需要1個(gè)指令集的入口參數(shù)/*車*京*琢*車*京*京*車*車*卓*京*察*京*京*京*察*京/VOid LCM2402_WriteCMD(Uint8 LCM2402-COmmand)LCM2402-TestBusy();LCM2402_DB0_DB7 二 LCM2402-COmmand;LCM2402RS 二 0;LCM2402_RW 二 0;LCM240

37、2.E 二 1 ;LCM2402_E 二 0;/車*京*京*察*車*字*康*京*京* /寫數(shù)據(jù)程序/向LCM2402寫數(shù)據(jù)/VOid LCM2402-WriteData (Uint8 LCM2402-data)LCM2402-TestBusy();LCM2402_DB0_DB7 二 LCM2402-data;LCM2402_RS 二 1;LCM2402.RW 二 O;LCM2402-E 二 1 ;LCM2402-E = 0;/京*京*未*察*察*4:*)|(41*41*京*察*扌*京*|1*車*4(*琢*才*京*/打印字符串程序/ (本函數(shù)調(diào)用指針函數(shù))/向LCM發(fā)送一個(gè)字符串,長(zhǎng)度48字符之

38、第一行位M 0x00-0x17 第二行位萱 0x40-0x57/應(yīng)用舉例:Print(OX80doyoung.ner,); /在第一行第一位處從左向右打印字符串/穴*京* 京*車* 京* 車 *巾察*京* 案* 京* 京* 京 1K*HC* 案*木*察 /VOid Print(Uint8 CbUint8 *str)LCM2402-WriteCMD( | 0x80);while(*str !二,0,)LCM2402WriteData (*str÷+);*str = 0;/ 車*京* jk*jk*4c 電* 察*京(琢* 球* */*/打印單字符程序/第一行位萱0x00-0x17第二行位

39、萱0x40-0x57/向LCM發(fā)送一個(gè)字符,以十六進(jìn)制(OXOO)表示/應(yīng)用舉例:Print(OXCO,0x30); /在第二行第一位處打印字符“0”/* 車* *木*京*京*車*京*京*4<*41*卓*車*京*京*京*京*京 /VOid prit2(uint8 o,Uint81)LCM2402-WriteCMD(a | 0x80);LCM2402.WriteData(t);專業(yè)/車*京*琢*琢*察*京*車*卓*京*京*察*卓*京*琢*車車*第 /LCM2402初始化/ (使用者可自定義,加*號(hào)程序行必須保留但可修改)/京*承*康*承*/*專*京*京*京* 4c*W*/VOid LCM2

40、402Jnit(void)LCM2402_WriteCMD(CMD-Set82);LCM2402-WriteCMD(CMD-Clear);LCM2402.WriteCMD(CMD_back);LCM2402_WriteCMD(CMD.addl);LCM2402_WriteCMD(CMD.dis_gb3);*4t*)c)fc*4oc*4<*)c*4t*4C*)IC/19.主函數(shù)/車* * *本*4(*察*京*球*)1(承*卓* 函數(shù)名:主函數(shù)調(diào)用:無(wú)參數(shù):無(wú)返回值:無(wú)結(jié) 果:程序開(kāi)始處,無(wú)限循環(huán)備注:VOid mcin (VOid)/京*車*眾*木*承*扌*專*卓*京*京*車*康* 函數(shù)名

41、:揚(yáng)聲器驅(qū)動(dòng)/*顯示模式設(shè)責(zé):顯示2行,每個(gè)字符為5*7個(gè)像素 /顯示清屏/*數(shù)據(jù)指針指向第】行第】個(gè)字符位直/顯示光標(biāo)移動(dòng)設(shè)萱:文字不動(dòng),光標(biāo)右移/顯示開(kāi)及光標(biāo)設(shè)直:顯示開(kāi),光標(biāo)開(kāi),閃爍開(kāi)專業(yè)備注:/車*京*琢*京*京*Jk*京*京*京*/*京*京*本*承* signed Char MUSIC;UnSigned CharSTHO;signed Char STLO;sig ned int COde tab=6402L64103,64260,644007/低音 3 開(kāi)始64524,64580,64684,64777,64820,64898,64968,65030,6505&65110,6

42、5157,65178;VOid mcin(VOid)TMOD=OX01;ETo 二 1 ;EA=I;KEY = Oxff;While(I)STHO=tabMSIC256;STL0=tabMSIC%256;TRO=1;elseSPEAKER = 1;TRO=O;VOid tO(void) interrupt 1 USing OTHO=STH0;TLO=STLO;SPEAKER二SPEAKER;/車*京*本*4t*京*京*承*卓*專20. 8個(gè)獨(dú)立式鍵盤驅(qū)動(dòng)程序y 4c)cj 4c*)c4t*4t*4t4c)c*4<*4C函數(shù)名:8個(gè)獨(dú)立式鍵盤驅(qū)動(dòng)程序調(diào)用:? = Key ();參數(shù):無(wú)返回值:UnSigned Chor 鍵值 08結(jié) 果:有鍵按下時(shí)返回值為鍵值】&無(wú)鍵按下時(shí)返回值為0備注:在主函數(shù)中不斷調(diào)用/ 京*康*琢*木*字*#*/*未*察*車*察* /UnSigned Char Ke

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論