版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、8051單片機(jī)C語言編程模板1.函數(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ù) .1211.UART串口發(fā)送字符串函數(shù) .1312.外部中斷INT初始化函數(shù) .1513.外部中斷INT1中斷處理程序 .1514.外部中斷INT0中斷處理程序 .1615.普通I/O口模擬PWM生成程序 .1616.LCD驅(qū)動(dòng) .1717. DS18B
2、20溫度傳感器驅(qū)動(dòng) .1918. LCM2402(1602也適用)驅(qū)動(dòng)程序 .2219.主函數(shù) .2620. 8個(gè)獨(dú)立式鍵盤驅(qū)動(dòng)程序 .2821. 1 6個(gè)陣列式鍵盤驅(qū)動(dòng)程序 .291.函數(shù)頭文件/* 程序名:編寫人:編寫時(shí)間: 20 年 月 日硬件支持:接口說明:修改日志:NO.1-/* 說明:/*/#include REG51.h REG52.h STC11Fxx.H STC12C2052AD.H#include #include #include #include #include #include #include #include #include #include #include
3、 #include #include #include #include STC12C5A60S2.H/通用 89C51 頭文件(只留下實(shí)際使用的單片機(jī)所對(duì)應(yīng)的頭文件) /設(shè)定插入點(diǎn)/字符處理/定義錯(cuò)誤碼/浮點(diǎn)數(shù)處理/文件輸入輸出/參數(shù)化輸入輸出/數(shù)據(jù)流輸入輸出 /定義各種數(shù)據(jù)類型最值常量/定義本地化函數(shù)/定義數(shù)學(xué)函數(shù) /定義輸入輸出函數(shù) /定義雜項(xiàng)函數(shù)及內(nèi)存分配函數(shù) /字符串處理/基于數(shù)組的輸入輸出/定義關(guān)于時(shí)間的函數(shù)#inelude #inelude #inelude vintrins.hsfr 自定義名 = SFR 地址;sbit 自定義名=系統(tǒng)位名;bit 自定義名;#define 代
4、替名原名#define KEY P1sbit SPEAKER = P3A7;sbit DQ = P2A5;sbit RS = P1A0;sbit RW= P1A1;sbitE = P1A2;#define Lcd_Bus POunsigned char 自定義名;unsigned int 自定義名;data字節(jié)尋址片內(nèi) RAM ,片內(nèi) RAM 的 128 字節(jié)bdata可位尋址片內(nèi) RAM , 16 字節(jié),從 0 x20 至 U 0 x2Fidata所有片內(nèi) RAM , 256 字節(jié),從 0 x00 到 OxFFpdata片外 RAM , 256 字節(jié),從 0 x00 到 OxFFxdata片
5、外 RAM , 64K 字節(jié),從 0 x00 到 OxFFFFcode ROM 存儲(chǔ)器,64K 字節(jié),從 0 x00 至 U OxFFFF寬字符處理及輸入/輸出寬字符分類/51 基本運(yùn)算(包括_nop_空函數(shù))按字節(jié)定義 SFR 中的存儲(chǔ)器名。例:sfr P1 = 0 x90;按位定義 SFR 中的存儲(chǔ)器名。例: sbit Add_Key = P3A1; 定義一個(gè)位(位的值只能是 0 或 1)例:bit LED;用代替名代替原名。例:#define LED P1 / #define TA 0 x25/鍵盤所連接的 I/O 接口組定義揚(yáng)聲器連接定義/ds18B20模式位,為 0 輸入指令,為 1
6、 輸入數(shù)據(jù)讀寫位,為 0 讀,為 1 寫使能位數(shù)據(jù)總線定義一個(gè) 0255 的整數(shù)變量。定義一個(gè) 065535 的整數(shù)變量。(例:data unsigned char a;)(例:bdata unsigned char a;)(例:idata unsigned char a;)(例:pdata unsigned char a;)(例:xdata unsigned char a;)(例:code unsigned char a;)2.毫秒級(jí)CPU延時(shí)函數(shù)/* 函數(shù)名:毫秒級(jí) CPU 延時(shí)函數(shù)調(diào) 用: DELAY_MS (?);參 數(shù): 165535(參數(shù)不可為 0 )返回值:無結(jié) 果:占用 CPU
7、 方式延時(shí)與參數(shù)數(shù)值相同的毫秒時(shí)間備 注:應(yīng)用于 1T 單片機(jī)時(shí) i600 ,應(yīng)用于 12T 單片機(jī)時(shí) i125 (在此預(yù)為/*/ void DELAY_MS( unsigned int a )unsigned int i;while ( -a != 0)for(i = 0; i 600; i+);*/M1 M0 方式 說明0 0 0 13 位 T/C ,由 TL 低 5 位和 TH 的 8 位組成 13 位計(jì)數(shù)器0 1 1 16 位 T/C , TL 和 TH 共 16 位計(jì)數(shù)器1 0 2 8 位 T/C,TL 用于計(jì)數(shù),當(dāng) TL 溢出時(shí)將 TH 中的值自動(dòng)寫入1 1 3 兩組 8 位 T/
8、C1T 單片機(jī)數(shù)值)TL3.定時(shí)/計(jì)數(shù)器初始化函數(shù)*函數(shù)名:定時(shí)/計(jì)數(shù)器初始化函數(shù)調(diào)用:T_C_init();參 數(shù):無返回值:無結(jié) 果:設(shè)置 SFR 中 T/C1 和(或)T/CO 相關(guān)參數(shù)備 注:本函數(shù)控制 T/C1 和 T/CO,不需要使用的部分可用屏蔽 */ voidT_C_init (void)TMOD = 0 x11;EA= 1;TH1 = OxFF;TL1 = OxFF;ET1 = 1;TR1 = 1;/THO = 0 x3C; /TLO = OxBO;/ETO = 1;/TRO = 1;*高 4 位控制 T/C1 GA TE, C/T, M1 , MO , GATE, C/T,
9、 M1 , MO中斷總開關(guān)6 位計(jì)數(shù)寄存器 T1 咼 8 位(寫入初值) /16 位計(jì)數(shù)寄存器 T1低 8 位/T/C1 中斷開關(guān)/T/C1 啟動(dòng)開關(guān) /16 位計(jì)數(shù)寄存器 TO 高 8 位/16 位計(jì)數(shù)寄存器 TO 低 8 位(0 x3CB0 = 50mS 延時(shí)) /T/CO 中斷開關(guān)/T/C0 啟動(dòng)開關(guān)函數(shù)內(nèi)容4.定時(shí)/計(jì)數(shù)器1中斷處理函數(shù)/*函數(shù)名:定時(shí)/計(jì)數(shù)器 1 中斷處理函數(shù)調(diào)用:T/C1 溢出后中斷處理參 數(shù):無返回值:無結(jié) 果:重新寫入 16 位計(jì)數(shù)寄存器初始值,處理用戶程序備 注:必須允許中斷并啟動(dòng)T/C 本函數(shù)方可有效,重新寫入初值需和*/void T_C1 (void) i
10、nterrupt 3 using 3TH1 = 0 x3C;TL1 = OxBO;*T_C_init 函數(shù)切換寄存器組到3/16 位計(jì)數(shù)寄存器/16 位計(jì)數(shù)寄存器T1 高 8 位(重新寫入初值)T1 低 8 位(0 x3CB0 = 50mS 延時(shí))函數(shù)內(nèi)容5定時(shí)/計(jì)數(shù)器0中斷處理函數(shù)/*函數(shù)名:定時(shí)/計(jì)數(shù)器 0 中斷處理函數(shù)調(diào)用:T/CO 溢出后中斷處理參 數(shù):無返回值:無結(jié) 果:重新寫入 16 位計(jì)數(shù)寄存器初始值,處理用戶程序備 注:必須允許中斷并啟動(dòng) T/C 本函數(shù)方可有效,重新寫入初值需和/*void T_C0 (void) interrupt 1 using 1 切換寄存器組到 1TH
11、O = 0 x3C;TLO = OxBO;*函數(shù)內(nèi)容T_C_init 函數(shù)一致/16 位計(jì)數(shù)寄存器 TO 高 8 位(重新寫入初值)/16 位計(jì)數(shù)寄存器 TO 低 8 位(0 x3CB0 = 50mS 延時(shí))6.PWM初始化函數(shù)/*函數(shù)名:PWM 初始化函數(shù)調(diào)用:PWMnit();參 數(shù):無返回值:無結(jié) 果:將 PCA 初始化為 PWM 模式,初始占空比為 0備 注:需要更多路 PWM 輸出直接插入 CCAPnH 和 CCAPnL 即可*/void PWMJnit (void)CMOD=0 x02;CL=0 x00;CH=0 x00;CCAPM0=0 x42;CCAP0L=0 x00;CCAP
12、0H=0 x00;/CCAP M 仁 0 x42;設(shè)置 PCA 定時(shí)器/PWMO 設(shè)置 PCA 工作方式為 PWM 方式(O1OO 0010)設(shè)置 PWMO 初始值與 CCAPOH 相同/ PWMO 初始時(shí)為 0 /PWM1 設(shè)置 PCA 工作方式為 PWM 方式(使用時(shí)刪除/)/CCAP1L=OxOO;/CCAP1H=OxOO;/CCAPM2=0 x42;/CCAP2L=0 x00;/CCAP2H=0 x00;/CCAPM3=0 x42;/CCAP3L=0 x00;/CCAP3H=0 x00;CR=1;*7.PWM0占空比設(shè)置函數(shù)*函數(shù)名:PWMO 占空比設(shè)置函數(shù)設(shè)置 PWM1 初始值與 C
13、CAPOH 相同/ PWM1 初始時(shí)為 0/PWM2 設(shè)置 PCA 工作方式為 PWM 方式設(shè)置 PWM2 初始值與 CCAPOH 相同/ PWM2 初始時(shí)為 0/PWM3 設(shè)置 PCA 工作方式為 PWM 方式設(shè)置 PWM3 初始值與 CCAPOH 相同/ PWM3 初始時(shí)為 0啟動(dòng) PCA 定時(shí)器調(diào) 用: PWM0_set();參 數(shù): 0 x000 xFF (亦可用 0255 ) 返回值:無結(jié) 果:設(shè)置 PWM 模式占空比,為 0 時(shí)全部高電平,為 1 時(shí)全部低電平備 注:如果需要 PWM1 的設(shè)置函數(shù),只要把 CCAP0L 和 CCAP0H 中的 0 改為 1 即可/*/void PW
14、M0_set (unsigned char a)CCAP0L= a;/設(shè)置值直接寫入 CCAP0LCCAP0H= a;/設(shè)置值直接寫入 CCAP0H*/8.UART串口初始化函數(shù)/*函數(shù)名: UART 串口初始化函數(shù)調(diào) 用: UART_init();參 數(shù):無返回值:無結(jié) 果:?jiǎn)?dòng) UART 串口接收中斷,允許串口接收,啟動(dòng) T/C1 產(chǎn)生波特率(占用)備 注:振蕩晶體為 12MHz , PC 串口端設(shè)置4800, 8,無,1,無*/void UART_init (void)EA = 1;ES = 1;/允許總中斷(如不使用中斷,/允許 UART 串口的中斷/屏蔽)/TMOD = 0 x20;
15、SCON = 0 x50;/定時(shí)器 T/C1 工作方式 2/串口工作方式 1,允許串口接收( SCON = 0 x40 時(shí)禁止串口接收)/TH1 = 0 xF3; /TL1 = 0 xF3;PCON = 0 x80; /TR1 = 1;*9.UART串口接收中斷處理函數(shù)/*函數(shù)名: UART 串口接收中斷處理函數(shù)調(diào) 用: SBUF 收到數(shù)據(jù)后中斷處理 參 數(shù):無返回值:無結(jié) 果: UART 串口接收到數(shù)據(jù)時(shí)產(chǎn)生中斷,用戶對(duì)數(shù)據(jù)進(jìn)行處理(并發(fā)送回去)備 注:過長(zhǎng)的處理程序會(huì)影響后面數(shù)據(jù)的接收/*/void UART_R (void) interrupt 4using 1/切換寄存器組到 1uns
16、igned char UART_data;/定義串口接收數(shù)據(jù)變量 (需要對(duì)接受到的數(shù)據(jù)進(jìn)行處理時(shí),可將其定義為全局變量)RI = 0;/令接收中斷標(biāo)志位為 0(軟件清零)UART_data = SBUF;/將接收到的數(shù)據(jù)送入變量UART_data/定時(shí)器初值高 8 位設(shè)置/定時(shí)器初值低 8 位設(shè)置 /波特率倍頻(屏蔽本句波特率為2400)/定時(shí)器啟動(dòng)/SBUF = UART_data;/while(TI = 0);/Tl = 0;*10. UART串口發(fā)送函數(shù)*函數(shù)名:UART 串口發(fā)送函數(shù)調(diào)用:UART_T;參 數(shù):需要 UART 串口發(fā)送的數(shù)據(jù)(8 位門字節(jié))返回值:無結(jié) 果:將參數(shù)中的數(shù)
17、據(jù)發(fā)送給UART 串口,確認(rèn)發(fā)送完成后退出備注:*/ voidUART_T (unsigned char UART_data)SBUF = UART_data;用戶函數(shù)內(nèi)容(用戶可使用UART_data 做數(shù)據(jù)處理)將接收的數(shù)據(jù)發(fā)送回去(刪除 即生效)檢查發(fā)送中斷標(biāo)志位令發(fā)送中斷標(biāo)志位為 0 (軟件清零)定義串口發(fā)送數(shù)據(jù)變量 將接收的數(shù)據(jù)發(fā)送回去/檢查發(fā)送中斷標(biāo)志位/ 令發(fā)送中斷標(biāo)志位為 0(軟件清零)11. UART串口發(fā)送字符串函數(shù)/* 函數(shù)名: UART 串口發(fā)送字符串函數(shù)調(diào) 用: UART_TC (?);參 數(shù):需要 UART 串口發(fā)送的數(shù)據(jù)( 8 位/1 字節(jié))返回值:無結(jié) 果:向串
18、口發(fā)送一個(gè)字符串 , 長(zhǎng)度不限。備 注:例: UART_TC(d9887321); 此函數(shù)需要 #include 頭文件支持。/*/ void UART_TC (unsigned char *str)*while(TI = 0);TI = 0;while(*str != 0)UART_T(*str);*str+;*str = 0;*/中斷入口說明中斷入口說明interrupt 0 外部中斷 0 (ROM 入口地址:0 x03)interrupt 1 定時(shí)/計(jì)數(shù)器中斷 0 ( ROM 入口地址:OxOB)interrupt 2 外部中斷 1 (ROM 入口地址:0 x13)interrupt 3
19、 定時(shí)/計(jì)數(shù)器中斷 1 ( ROM 入口地址:0 x1 B)interrupt 4 UART 串口中斷(ROM 入口 地址:0 x23)(更多的中斷依單片機(jī)型號(hào)而定,ROM 中斷入口均相差 8 個(gè)字節(jié))using 0 使用寄存器組 0using 1 使用寄存器組 1using 2 使用寄存器組 2using 3 使用寄存器組 312.外部中斷INT初始化函數(shù)/*函數(shù)名:外部中斷 INT 初始化函數(shù)調(diào)用:INT_init();參 數(shù):無返回值:無結(jié) 果:?jiǎn)?dòng)外部中斷 INT1、INTO 中斷,設(shè)置中斷方式備注:*/void INTJnit (void)EA= 1;EX1 = 1;EXO = 1;
20、IT1 = 1;ITO = 1;*/13.外部中斷INT1中斷處理程序*函數(shù)名:外部中斷 INT1 中斷處理程序調(diào) 用:外部引腳 INT1 中斷處理參 數(shù):無返回值:無結(jié) 果:用戶處理外部中斷信號(hào)中斷總開關(guān)/允許外部中斷/允許外部中斷/1:下沿觸發(fā)/1:下沿觸發(fā)1 中斷0 中斷0:低電平觸發(fā)0:低電平觸發(fā)備注:void INT_1 (void) interrupt 2 using 214.外部中斷INTO中斷處理程序*函數(shù)名:外部中斷 INTO 中斷處理程序調(diào) 用:外部引腳 INTO 中斷處理參 數(shù):無返回值:無結(jié) 果:用戶處理外部中斷信號(hào)備注:*/void INT_0 (void) inte
21、rrupt 0 using 2*/15.普通I/O口模擬PWM生成程序*函數(shù)名:普通 I/O 口模擬 PWM 生成程序調(diào)用:display (?)備注:切換寄存器組到 2 用戶函數(shù)內(nèi)容切換寄存器組到 2 用戶函數(shù)內(nèi)容void display (unsigned int a)DY_PORT = 0 x00;delay (a);DY_PORT = Oxff;delay (DY_PWM-a);*16丄CD驅(qū)動(dòng)/LCD 驅(qū)動(dòng)(DY12864CBL 液晶顯示屏并口驅(qū)動(dòng)程序)void chk_busy()RS=0;RW=1;E=1;Lcd_Bus=Oxff;while(Lcd_Bus&0 x80)=0 x
22、80);E=0;*void write_com(unsigned char cmdcode)顯示程序(50ms 的 PWM 寬度)/LED 小燈亮延時(shí) a 的長(zhǎng)度/LED 小燈滅延時(shí)總 PWM 長(zhǎng)度減 a檢查忙位(底層)寫命令到 LCD (底層)chk_busy();RS=O;RW=O;E=1;Lcd_Bus=cmdcode;E=0;*void write_data(unsigned char Dispdata)chk_busy();RS=1;RW=0;E=1;Lcd_Bus=Dispdata;E=0;*void Icmnit()write_com(0 x30);write_com(0 x0c
23、);write_com(0 x01);*void lcm_w_word(unsigned char *s)while(*s0)write_data(*s);寫數(shù)據(jù)到 LCD (底層)初始化 LCD 屏(被調(diào)用層)選擇 8bit 數(shù)據(jù)流開顯示(無游標(biāo)、不反白)清除顯示,并且設(shè)定地址指針為00H向 LCM 發(fā)送一個(gè)字符串,長(zhǎng)度 64 字符之內(nèi)。應(yīng)用:lcm_w_word(您好! ”);(被調(diào)用層)S+;void lcm_w_test(bit i,unsigned char word)if(i = 0)write_com(word);elsewrite_data(word);*void lcm_cl
24、r(void)lcm_w_test(0,0 x01);*17. DS18B20溫度傳感器驅(qū)動(dòng)*/DS18B20 溫度傳感器驅(qū)動(dòng)(顯示 0 至 60 度)*寫指令或數(shù)據(jù)(被調(diào)用層)寫指令或數(shù)據(jù)(0,指令)寫指令或數(shù)據(jù)(1,數(shù)據(jù))清屏函數(shù)void Delay(int num)while(num-);*void lnit_DS18B20(void)unsigned char x=0;DQ = 1;Delay(8);DQ = 0;Delay(80);DQ = 1;Delay(14);x=DQ;Delay(20);*unsigned char ReadOneChar(void) unsigned cha
25、r i=0; unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; dat=1;DQ = 1; if(DQ) dat|=0 x80;Delay(4);*延時(shí)函數(shù)初始化 ds1820/DQ 復(fù)位稍做延時(shí)單片機(jī)將 DQ 拉低精確延時(shí)大于 480us拉高總線稍做延時(shí)后 如果 x=0 則初始化成功 x=1 則初始化失敗讀一個(gè)字節(jié)/給脈沖信號(hào)/給脈沖信號(hào) return(dat);*void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0 x01;De
26、lay(5);DQ = 1;dat=1;*unsigned int ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=O;lnit_DS18B20();WriteOneChar(OxCC);WriteOneChar(Ox44);lnit_DS18B20();WriteOneChar(OxCC);WriteOneChar(OxBE);a=ReadOneChar();b=ReadOneChar();寫一個(gè)字節(jié)讀取溫度/跳過讀序號(hào)列號(hào)的操作/啟動(dòng)溫度轉(zhuǎn)換跳過讀序號(hào)列號(hào)的操作讀取溫度寄存
27、器讀低 8 位讀高 8 位t=b;t=8;t=t|a;tt=t*0.0625;t=tt*10+0.5;return (t);*18. LCM2402 (1602也適用)驅(qū)動(dòng)程序以下是 LCM2402 (1602 也適用)驅(qū)動(dòng)程序*/引腳定義II(使用者根據(jù)實(shí)際更改)#defineLCM2402_DB0_DB7P1sbit LCM2402_RS = P3A2;sbit LCM2402_RW = P3A3;sbit LCM2402_E= P3A4;sbit LCM2402_Busy = P1A7;*定義 LCM2402 指令集/ (詳細(xì)請(qǐng)見技術(shù)手冊(cè))*/#defi neCMD clear0 x01
28、*/放大 10 倍輸出并四舍五入/定義 LCM2402 的數(shù)據(jù)總線/定義 LCM2402 的 RS 控制線/定義 LCM2402 的 RW 控制線/定義 LCM2402 的 E 控制線/定義 LCM2402 的測(cè)忙線(與 LCM2402_DB0_DB7 關(guān)聯(lián))/清除屏幕#defi neCMD_back0 x02#defi neCMD_dec10 x04#defi neCMD_add10 x06#defi neCMD_dis_gb1OxOf#defi neCMD_dis_gb2OxOe#defi neCMD_dis_gb30 x0c#defi neCMD_OFF_dis0 x08#defi ne
29、CMD_set820 x38#defi neCMD_set810 x30#defi neCMD_set420 x28#defi neCMD_set410 x20#defi nelin_10 x80#defi nelin 2OxcO/*/讀 LCM 忙程序底層協(xié)議/ (所有底層協(xié)議都無需關(guān)注)/ LCM2402 測(cè)忙,若 LCM2402 處于忙狀態(tài),本函數(shù)將等待至非忙狀態(tài)*/void LCM2402_TestBusy(void)LCM2402_DB0_DB7 = Oxff;LCM2402_RS = 0;LCM2402_RW = 1;LCM2402_E = 1;while(LCM2402_Busy
30、);LCM2402_E = 0;*寫指令程序/向 LCM2402 寫命令 本函數(shù)需要 1 個(gè)指令集的入口參數(shù)II*/ DDRAM 回零位/讀入后 AC (指針)減 1,向左寫 /讀入后AC (指針)力口 1,向右寫 /開顯示_開光標(biāo)開光標(biāo)閃爍/開顯示_開光標(biāo)關(guān)光標(biāo)閃爍/開顯示_關(guān)光標(biāo)關(guān)光標(biāo)閃爍/關(guān)顯示_關(guān)光標(biāo)關(guān)光標(biāo)閃爍/ 8 位總線_2 行顯示8 位總線行顯示(上邊行)/4 位總線_2 行顯示4 位總線行顯示(上邊行)4 位總線行顯示(上邊行)/4 位總線_1 行顯示(上邊行)/設(shè)備讀狀態(tài)等待 LCM 不忙void LCM2402_WriteCMD(uint8 LCM2402_command)
31、LCM2402_T estBusy();LCM2402_DB0_DB7 = LCM2402_command:LCM2402_RS = 0;LCM2402_RW= 0;LCM2402_E = 1;LCM2402_E = 0;*/寫數(shù)據(jù)程序/向 LCM2402 寫數(shù)據(jù)/*/ voidLCM2402_WriteData(uint8 LCM2402_data)LCM2402_T estBusy();LCM2402_DB0_DB7 = LCM2402_data;LCM2402_RS = 1;LCM2402_RW= 0;LCM2402_E = 1;LCM2402_E = 0;*/打印字符串程序/ (本函數(shù)
32、調(diào)用指針函數(shù))/向 LCM 發(fā)送一個(gè)字符串,長(zhǎng)度 48 字符之內(nèi)/第_行位置 0 x000 x 仃第二行位置 0 x40-0 x57/應(yīng)用舉例:print(0 x80,); /在第一行第一位處從左向右打印*/void print(uint8 a,uint8 *str)LCM2402_WriteCMD(a | 0 x80); 字符串while(*str != 0)LCM2402_WriteData(*str+);*str = 0;*打印單字符程序/第_行位置 0 x000 x 仃第二行位置 0 x40-0 x57/向 LCM 發(fā)送一個(gè)字符,以十六進(jìn)制(0 x00)表示/應(yīng)用舉例:print(0
33、xc0,0 x30); 在第二行第一位處打印字符“0*/ void print2(uint8 a,uint8t)LCM2402_WriteCMD(a | 0 x80);LCM2402_WriteData(t);*IILCM2402 初始化/ (使用者可自定義,加 *號(hào)程序行必須保留但可修改)*/ void LCM2402nit(void)LCM2402_WriteCMD(CMD_set82);LCM2402_WriteCMD(CMD_clear);LCM2402_WriteCMD(CMD_back);LCM2402_WriteCMD(CMD_add1);LCM2402_WriteCMD(CMD
34、_dis_gb3);*/*顯示模式設(shè)置:顯示 2 行,每個(gè)字符為 5*7 個(gè)像素 /顯示清屏/*數(shù)據(jù)指針指向第 1 行第 1 個(gè)字符位置/顯示光標(biāo)移動(dòng)設(shè)置:文字不動(dòng),光標(biāo)右移/顯示開及光標(biāo)設(shè)置:顯示開,光標(biāo)開,閃爍開19.主函數(shù)/*函數(shù)名:主函數(shù)調(diào)用:無參 數(shù):無返回值:無結(jié) 果:程序開始處,無限循環(huán)備注:*/void main (void)*函數(shù)名:揚(yáng)聲器驅(qū)動(dòng)備注:/*unsigned char MUSIC;unsigned char STHO;unsigned char STLO;unsigned int code tab=64021,64103,64260,64400,/低音 3 開始6
35、4524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178;void main(void)TMOD=0 x01;ET0=1;EA=1;KEY = Oxff; while(1)STH0=tabMUSIC/256;STL0=tabMUSIC%256;TR0=1;elseSPEAKER = 1;TR0=0;void tO(void) interrupt 1 using 0TH0=STH0;TL0=STL0;SPEAKER=SPEAKER;*20. 8個(gè)獨(dú)立式鍵盤驅(qū)動(dòng)程序/*函數(shù)名:8 個(gè)獨(dú)立式鍵盤驅(qū)動(dòng)程序調(diào)用:? = Key ();參 數(shù):無返回值:unsigned char 鍵值 08結(jié) 果:有鍵按下時(shí)返回值為鍵值18,無鍵按下時(shí)返回值為0備注:在主函數(shù)中不斷調(diào)用*/unsigned char Key ()unsigned char a,b;KEY = Oxff;if (KEY != Oxff)Delay (20);if (KEY != Oxff)a = KEY;switch(a) /鍵盤狀態(tài)查表case Oxfe: b = 1; break;case Oxfd: b = 2; break;case Oxfb: b = 3; break;case 0 xf7:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游景點(diǎn)護(hù)欄施工合同范例
- 著眼長(zhǎng)遠(yuǎn)發(fā)展進(jìn)行戰(zhàn)略規(guī)劃計(jì)劃
- 水利行業(yè)競(jìng)爭(zhēng)分析合同
- 安全生產(chǎn)承諾書合集八篇
- 世界地球日活動(dòng)策劃書9篇
- 建設(shè)單位對(duì)施工方及監(jiān)理方的現(xiàn)場(chǎng)管理制度
- 內(nèi)蒙古土地資源收儲(chǔ)投資(集團(tuán))有限公司招聘筆試沖刺題2024
- DB31∕T 329.24-2019 重點(diǎn)單位重要部位安全技術(shù)防范系統(tǒng)要求 第24部分:高校
- 考研思想政治理論(101)研究生考試試題與參考答案(2024年)
- 大班游戲我和報(bào)紙玩游戲教案
- 催化材料智慧樹知到答案章節(jié)測(cè)試2023年南開大學(xué)
- 工程造價(jià)司法鑒定難點(diǎn)與應(yīng)對(duì)措施
- YY/T 1181-2021免疫組織化學(xué)試劑盒
- GB/T 4457.4-2002機(jī)械制圖圖樣畫法圖線
- GB/T 16991-1997紡織品色牢度試驗(yàn)高溫耐光色牢度:氙弧
- GB/T 10051.3-2010起重吊鉤第3部分:鍛造吊鉤使用檢查
- GB 5009.3-2016食品安全國(guó)家標(biāo)準(zhǔn)食品中水分的測(cè)定
- 1000W準(zhǔn)正弦逆變器
- DB51-T 2975-2022氣凝膠復(fù)合保溫隔熱材料及系統(tǒng)通用技術(shù)條件
- 2022干燥綜合征評(píng)估方法-Sjgren應(yīng)答評(píng)估工具(STAR)
- 水穩(wěn)施工質(zhì)量保證措施
評(píng)論
0/150
提交評(píng)論