5STC單片機C語言通用萬能編程模板_第1頁
5STC單片機C語言通用萬能編程模板_第2頁
5STC單片機C語言通用萬能編程模板_第3頁
5STC單片機C語言通用萬能編程模板_第4頁
5STC單片機C語言通用萬能編程模板_第5頁
免費預覽已結束,剩余44頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、8051單片機C語言編程模板I 函數(shù)頭文件22. 毫秒級CPU延時函數(shù)43. 定時/計數(shù)器初始化函數(shù)54 定時/計數(shù)器1中斷處理函數(shù)65. 定時/計數(shù)器0中斷處理函數(shù)76. PWM初始化函數(shù)87. PWM0占空比設賈函數(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ū)動1617. DS 18B20溫度傳感器驅(qū)動1918. LC

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

3、下實際使用的單片機所對應的頭文件)#include <ssert.h>設定插入點#include <ctype.h>字符處理#include <errno.h>定義錯誤碼#include <float.h>浮點數(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ù)學函數(shù)#include <stdio.h>定義輸入/輸出函數(shù)#include <stdlib.h>定義雜項函數(shù)及存分配函數(shù)#include <string.h>字符串處理#include <strstra.h>基于數(shù)組的輸入/輸出#include <time.h>定義關于時間的函數(shù)#include <wchar.h>寬字符處理及輸入/輸出#include <wctype.h>寬字符分類#include <itrins.h>/51基本運算(包括

5、op_空函數(shù))Sfr 自定義名二SFR地址;按字節(jié)定義SFR中的存儲器名。例:SfrPl =0x90;Sbit 自定義名二系統(tǒng)位名;按位定義SFR中的存儲器名。例:Sbit Add-Key = P3 1;bit自定義名;定義一個位(位的值只能是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接口組定義揚聲器連接定義/dsl8B20模式

6、位,為0輸入指令,為丨輸入數(shù)據(jù)讀寫位,為0讀,為1寫SbitE = Pl 2;#define LCCLBUS PO使能位數(shù)據(jù)總線nsigned Char 自定義名;UnSigned int自定義名;定義一個0-255的整數(shù)變量。定義一個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存儲器,64K字節(jié),從OXoO到OX阡阡(例:COde UnSigned Char a;)2亳秒級CPU延時函數(shù)/本* 察* 京 * 京*)(車 *車* 京* 本*京* 京* 京* 京*本* 函數(shù)名:毫秒級CPU延時函數(shù) 調(diào)用:DELAY_MS (?);參 數(shù):165535 (參數(shù)不可為0)返回值:無結 果:占用CPU方式延時與參數(shù)數(shù)值相同的毫秒時間備 注:應用于IT單片

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

9、)!(京*察* * *察* * *察*4(察* * *京*豪4(* *豪* 京* 京* 函數(shù)名:定時/計數(shù)器初始化函數(shù)調(diào)用:T_CJnit();參數(shù):無返回值:無結 果:設責SFR中T/C1和(或)T/CO相關參數(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;中斷總開關TH1 = OX 阡;/16位計數(shù)寄存

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

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

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

13、參數(shù):無返回值:無結 果:將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;設萱PCA定時器/PWM0 設MPCAl作方式為 PWM 方式(OIOoOOIo) 設直PWMo初始值與CCAPOH相同/ PWM0初始時為0 /PWMl設責PCA工作方式為PWM方式(使用時刪除/)設責PWMl初始值與

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

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

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

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

18、本*斗*球*京*康*承/UnSigned Char ART-data;VOid UART_R (VOid) interrupt 4 USing 1切換寄存器組到 1定義串口接收數(shù)據(jù)變量(需要對接受到的數(shù)據(jù)進行處理時,可將其定義為全局變量)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、無結 果:將參數(shù)中的數(shù)據(jù)發(fā)送給UART串口,確認發(fā)送完成后退出備注:令接收中斷標志位為O (軟件清零)將接收到的數(shù)據(jù)送入變量ART.dt用戶函數(shù)容(用戶可使用UART_datQ做數(shù)據(jù)處理)將接收的數(shù)據(jù)發(fā)送回去(刪除即生效)檢查發(fā)送中斷標志位令發(fā)送中斷標志位為O (軟件清零)K*/VOid UARLT (Unsigned Char UART-.data) (定義串口發(fā)送數(shù)據(jù)變量SBUF = UARLdQtQ;將接收的數(shù)據(jù)發(fā)送回去While(Tl = 0);檢查發(fā)送中斷標志位TI = O;令發(fā)送中斷標志位為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é))返回值:無結果:向串口發(fā)送一個字符串,長度不限。備 注:例:UARLTCrd9887321”);此函數(shù)需要#include <string.h>頭文件支持。 /京*承*康*承*家*k*京*宅*專*車*水京*京*車/ VOid UARLTC (UnSigned Char *str)while(*str != ,0,)ART.T(*str);*str+;*str = 0;中

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

22、 京* 京* * 車* 車* 京* 京* 琢*Hc*4* * 京* 函數(shù)名:外部中斷INT初始化函數(shù)調(diào) 用:INTJnitf);參數(shù):無返回值:無結 果:啟動外部中斷INTl、INTo中斷,設直中斷方式備注:/京* 承* *4<*4* * 京* 京* * 車* * 京* * 孚* *京* 京* * 來*京 /VOid INTJnit (VOid)EA= 1;中斷總開關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ù):無返回值:無結果:用戶處理外部中斷信號備注:/車*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ù):無返回值:無結 果:用戶處理外部中斷信號備注:/本*希*京*車*車*璟*京*京 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小燈亮延時o的長度/LED小燈滅延時總PWM長度減Q/木*京*宅*車*車*車*察*京*京*琢*廉*卓*京16丄CD驅(qū)動/京*京*車*車*字*扌*案*京*字*獄/LCD驅(qū)動(DY12864CBL液晶顯示屏并口驅(qū)動程序)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ù)流開顯示(無游標、不反白)清除顯示,并且設定地址指針為O

27、oHwrite-(0x01);*車*琢*琢*京*車*京*電*京*京*東*京*4CVOid ICm-W-WOrd (UnSigned Char *s)向LCM發(fā)送一個字符串,長度64字符之。(被調(diào)用層)while(*s>0)應用: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ū)動/車*京*京*察*察*車*京*定*車*京* /DS18B20溫度傳感器驅(qū)動(顯示0至60度)/* 4(察* 京*來* 車* *來* 車*京* * 京* * 京* 車*+*4c* *)It 京VOid Delay(int nUm)延時函數(shù)while(num-);/ 京 * 康* Jk* 車* 歡 * 定* 專* 卓* 京* 京 * 案* * 車VOid IniLDSl 8B20(void)初始

29、化ds 1820UnSigned Char x=0;DQ = 1;Delay(8);/DQ復位稍做延時DQ = O;Delay (80);單片機將DQ拉低精確延時大于480USDQ = 1;Delay(14);拉高總線x=DQ;稍做延時后如果X二0則初始化成功X=I則初始化失敗Delay(20);/ 車* *京*孚* * 京* * 京* * 京* 京* * *本* 京* *<c*4c* * *UnSigned Char ReadOneChar(VOid)讀一個字節(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;/給脈沖信號/給脈沖信號專業(yè)寫一個字節(jié)嵌*車*京*京*京*京*京讀取溫度/跳過讀序號列號的操作 /啟動溫度轉(zhuǎn)換跳過讀序號列號的操作讀取溫度寄存器讀低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ū)動程序/*京* * 琢* *京*京*車* *京*京*4t* * *4* * /以下是LCM2402 (1602也適用)驅(qū)動程序/京*承* 康* 承*)cjk4t*/* 專* 京* 京* *4C)ICIK *字*/引腳定義/ (使用者根據(jù)實際更改)/琢*京*京*琢* * * 京*減*察*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的測忙線(與LCM2402LDB7關聯(lián))# defineCMD-CIearOxOl/清除屏幕# defineCMD.back0x02/ DDRAM回零位# defi neCMD_dec0x04/讀入后AC (指針)減】,向左寫# defineCMD-.add 10x06/讀入后AC (指針)加】

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

35、0x80/ 4位總線行顯示(上邊行)# definelin.2OXCO4位總線_1行顯示(上邊行)定義LCM2402指令集/ (詳細請見技術手冊)/* 京* 京* 車*)cjc*ji*jK*)c*j*)4c4i*Hc*4c*jK*jK*京* * *定*京* *)|(專* 車*車*察* 4t* 察* * *定* 京* 車京* 車* 車*%*/讀LCM忙程序底層協(xié)議/ (所有底層協(xié)議都無需關注)/ LCM2402測忙,若LCM2402處于忙狀態(tài),本函數(shù)將等待至非忙狀態(tài)/ /京*承*康*承*車*京卓宣*京*專*車*京*京*車VOid LCM2402_TestBusy(void)設備讀狀態(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個指令集的入口參數(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ā)送一個字符串,長度48字符之

38、第一行位M 0x00-0x17 第二行位萱 0x40-0x57/應用舉例: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ā)送一個字符,以十六進制(OXOO)表示/應用舉例:Print(OXCO,0x30); /在第二行第一位處打印字符“0”/* 車* *木*京*京*車*京*京*4<*41*卓*車*京*京*京*京*京 /VOid prit2(uint8 o,Uint81)LCM2402-WriteCMD(a | 0x80);LCM2402.WriteData(t);專業(yè)/車*京*琢*琢*察*京*車*卓*京*京*察*卓*京*琢*車車*第 /LCM2402初始化/ (使用者可自定義,加*號程序行必須保留但可修改)/京*承*康*承*/*專*京*京*京* 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)用:無參數(shù):無返回值:無結 果:程序開始處,無限循環(huán)備注:VOid mcin (VOid)/京*車*眾*木*承*扌*專*卓*京*京*車*康* 函數(shù)名

41、:揚聲器驅(qū)動/*顯示模式設責:顯示2行,每個字符為5*7個像素 /顯示清屏/*數(shù)據(jù)指針指向第】行第】個字符位直/顯示光標移動設萱:文字不動,光標右移/顯示開及光標設直:顯示開,光標開,閃爍開專業(yè)備注:/車*京*琢*京*京*Jk*京*京*京*/*京*京*本*承* signed Char MUSIC;UnSigned CharSTHO;signed Char STLO;sig ned int COde tab=6402L64103,64260,644007/低音 3 開始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個獨立式鍵盤驅(qū)動程序y 4c)cj 4c*)c4t*4t*4t4c)c*4<*4C函數(shù)名:8個獨立式鍵盤驅(qū)動程序調(diào)用:? = Key ();參數(shù):無返回值:UnSigned Chor 鍵值 08結 果:有鍵按下時返回值為鍵值】&無鍵按下時返回值為0備注:在主函數(shù)中不斷調(diào)用/ 京*康*琢*木*字*#*/*未*察*車*察* /UnSigned Char Ke

溫馨提示

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

評論

0/150

提交評論