5STC单片机C语言通用万能编程模板_第1页
5STC单片机C语言通用万能编程模板_第2页
5STC单片机C语言通用万能编程模板_第3页
5STC单片机C语言通用万能编程模板_第4页
5STC单片机C语言通用万能编程模板_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8051单片机C语言编程模板I 函数头文件22. 毫秒级CPU延时函数43. 定时/计数器初始化函数54 定时/计数器1中断处理函数65. 定时/计数器0中断处理函数76. PWM初始化函数87. PWM0占空比设賈函数98. UART串口初始化函数109. UART串口接收中断处理函数1110. UART串口发送函数12II .UART串口发送字符串函数1312.外部中断INT初始化函数1413. 外部中断INTl中断处理程序1514. 外部中BfINTO中断处理程序1515. 普通I/O 口模拟PWM生成程序1616. LCD 驱动1617. DS 18B20温度传感器驱动1918. LC

2、M2402 (1602也适用)驱动程序2119主函数2520. 8个独立式键盘驱动程序2721.16个阵列式键盘驱动程序281 函数头文件/ 本* 京 (京 * 京*車* 車 * 本* 京*)IC 本 * 字* 京* 京* 京*程序名:编写人:编写时间:20年 月曰硬件支持:.专业接口说明:修改日志: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>浮点数处理#include <fstream.h>文件输入/输出#include <iomaip.h>参数化输入/输出#include <iostream.h>数据流输入/输出#include <limits.h>定义各种数据类型最值常It#include <locale.h>定义本地

4、化函数#include <math.h>定义数学函数#include <stdio.h>定义输入/输出函数#include <stdlib.h>定义杂项函数及存分配函数#include <string.h>字符串处理#include <strstra.h>基于数组的输入/输出#include <time.h>定义关于时间的函数#include <wchar.h>宽字符处理及输入/输出#include <wctype.h>宽字符分类#include <itrins.h>/51基本运算(包括

5、op_空函数)Sfr 自定义名二SFR地址;按字节定义SFR中的存储器名。例:SfrPl =0x90;Sbit 自定义名二系统位名;按位定义SFR中的存储器名。例:Sbit Add-Key = P3 1;bit自定义名;定义一个位(位的值只能是0或】)例:bit LED;专业#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输入指令,为丨输入数据读写位,为0读,为1写SbitE = Pl 2;#define LCCLBUS PO使能位数据总线nsigned Char 自定义名;UnSigned int自定义名;定义一个0-255的整数变量。定义一个0-65535的整数变量。data字节寻址片RAM,片RAM的128字节bdata 可位寻址片RAMI 16字节,从0x20到0x2F idata所有片RAMI 256字节,从0x00到OX阡Pdata 片外 RAMI 256 字节,从 OXOo 到 OXFFXdata 片外RA64K字节,从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字节,从OXoO到OX阡阡(例:COde UnSigned Char a;)2亳秒级CPU延时函数/本* 察* 京 * 京*)(車 *車* 京* 本*京* 京* 京* 京*本* 函数名:毫秒级CPU延时函数 调用:DELAY_MS (?);参 数:165535 (参数不可为0)返回值:无结 果:占用CPU方式延时与参数数值相同的毫秒时间备 注:应用于IT单片

8、机时i<600,应用于12T单片机时i<125 (在此预为IT单片机数值)/扌*球車*本*永*車*球*京*木*)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位计数器01116位TC, TL和TH共16位计数器1028位TC1 TL用于计数,当TL溢出时将TH中的值自动写入TL113两组8位T/C3 定时/计数器初始化函数/*

9、)!(京*察* * *察* * *察*4(察* * *京*豪4(* *豪* 京* 京* 函数名:定时/计数器初始化函数调用:T_CJnit();参数:无返回值:无结 果:设責SFR中T/C1和(或)T/CO相关参数备 注:本函数控制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位计数寄存

10、器Tl高8位(写入初值)TLl 二 OxFF;/16位计数寄存器Tl低8位ETI 二 1;TRl = 1;/T/C1中断开关/T/C1启动开关/THO 二 0x3C;/16位计数寄存器TO高8位/TLO 二 OxBO;/ETO = 1 ;/TRO 二 1 ;/16位计数寄存器TO低8位(0x3CBo = 50mS延时)/T/CO中断开关/T/CO启动开关/ 京* 第* 京* * *承* *4t*4c*4* * 京* * 車* * * 察* *)|(承*4t4<*4c*4*4 定时/计数器1中断处理函数函数名:定时/计数器丨中断处理函数调用:T/C1溢出后中断处理 参数:无返回值:无 结

11、果:重新写入16位计数寄存器初始值,处理用户程序切换寄存器组到3备 注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T.CJnit函数一致VOid T_C 1 (VOid) interrupt 3 USing 3THI = 0x3C;TLl = OxBO;/16位计数寄存器Tl高8位(重新写入初值)/16位计数寄存器TI低8位(0x3CBO二50mS延时)函数容/J>*c*c 京定 *拿* *oc* 卓*床噸*卓点*廉* 宜* 克*卓*c*P* 京車* 琢*感* 車电 * 車 /5定时/计数器O中断处理函数函数名:定时/计数器O中断处理函数调 用:TcO溢出后中断处理参数:无

12、返回值:无结 果:重新写入16位计数寄存器初始值,处理用户程序备 注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_CJnit函数一致y *)c*)c)»(*«*«*«* /VOid T-CO (VOid) interrupt 1 USing 1 切换寄存器组到 1THO = 0x3C;/】6位计数寄存器To高8位(重新写入初值)TLO二OxBO;/16位计数寄存器To低8位(0x3CBO二50mS延时)函数容/*車*琢*京*車*京*車*車*卓*車*京*京*京*京*京 /6.PWM初始化函数函数名:PWM初始化函数调用:PWMJnit();

13、参数:无返回值:无结 果:将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占空比设置函数/京*康*康*琢*字*京*察*

15、定*專*卓*字*康*承*字*就*沐 函数名:PWMO占空比设貢函数调用:PWMO.set();参 数:OXOO-OXFF (亦可用 0-255)返回值:无结 果:设HPWM模式占空比,为0时全部高电平,为】时全部低电平备 注:如果需要PWMl的设萱函数,只要把CCAPOL和CCAPOH中的0改为丨即可 VOid PWMO-Set (UnSigned Char a)CCAPOL= a;CCAPOH= a;设萱值直接写入CCAPOL设責值直接写入CCAPOH* 京* * 琢*京* 車* *本* 京* *4c* * * 京* * 京* *j*4* *8.UART串口初始化函数*C* * *1* 函数

16、名:UART串口初始化函数调用:UARTJnitf);参数:无返回值:无结 果:启动UART串口接收中断,允许串口接收,启动T/C】产生波特率(占用)备注:振荡晶体为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串口接收中断处理函数/*京* *未* *京* * 本*京* * * 京* *4c*4<* 京* *本*函数名:UART串口接收中断处理函数调 用:SBUF收到数据后中断处理参数:无返回值:无结果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备注:过长的处理程序会影响后面数据的接收/*京*琢*琢*京*京*本*車*卓*电*京*

18、本*斗*球*京*康*承/UnSigned Char ART-data;VOid UART_R (VOid) interrupt 4 USing 1切换寄存器组到 1定义串口接收数据变量(需要对接受到的数据进行处理时,可将其定义为全局变量)RI = O;UARLdQtQ 二 SBUF;/SBUF 二 UARLdQta/while (Tl = 0);/Tl = 0;10.UART串口发送函数/* 車* *琢* *京* 車* 京* 車* * * *車* * 京* 京* 京* *4c*4c, 函数名:UART串口发送函数调用:UARLT (?);参 数:需要UART串口发送的数据(8位/字节)返回值:

19、无结 果:将参数中的数据发送给UART串口,确认发送完成后退出备注:令接收中断标志位为O (软件清零)将接收到的数据送入变量ART.dt用户函数容(用户可使用UART_datQ做数据处理)将接收的数据发送回去(删除即生效)检查发送中断标志位令发送中断标志位为O (软件清零)K*/VOid UARLT (Unsigned Char UART-.data) (定义串口发送数据变量SBUF = UARLdQtQ;将接收的数据发送回去While(Tl = 0);检查发送中断标志位TI = O;令发送中断标志位为0 (软件清零)y*4c*4:)IC)IC«*«*«*11 .

20、UART串口发送字符串函数/車*京*京*琢*琢*京*京*察*察*41*电*京*木*斗*貳*京*41*定 函数名:UART串口发送字符串函数调用:UARLTC (?);参 数:需要UART串口发送的数据(8位/1字节)返回值:无结果:向串口发送一个字符串,长度不限。备 注:例:UARLTCrd9887321”);此函数需要#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定时/计数器中断O (ROM入口地址:OXOB)interrupt 2 外部中断 1 (ROM 入口地址:0x13)interrupt 3定时/计数器中断1 (ROM 口地址:OXlB)interrupt 4 UART 串口中断(ROM 入口地址:0x23)(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)USing O使用寄存器组OUSing 1使用寄存器组1USing 2使用寄存器组2USing 3使用寄存器组3专业12 外部中断INT初始化函数*字* 察*察* 車*

22、 京* 京* * 車* 車* 京* 京* 琢*Hc*4* * 京* 函数名:外部中断INT初始化函数调 用:INTJnitf);参数:无返回值:无结 果:启动外部中断INTl、INTo中断,设直中断方式备注:/京* 承* *4<*4* * 京* 京* * 車* * 京* * 孚* *京* 京* * 来*京 /VOid INTJnit (VOid)EA= 1;中断总开关EXI = 1;允许外部中断】中断EXO = 1 ;允许外部中断0中断ITl = 1;/1:下沿触发0:低电平触发ITO= 1;/1:下沿触发0:低电平触发/琢* * 京* 京* 京* 京* 察京* * 京* *定* */*

23、 車* * *琢*)It 琢* *13外部中断INTl中断处理程序 函数名:外部中断INTl中断处理程序调 用:外部引脚INTl中断处理参数:无返回值:无结果:用户处理外部中断信号备注:/車*4t*本*察*京*京*卓*車*/VOid INT-I (VOid) interrupt 2 USing 2切换寄存器组到 2用户函数容/京*京*察*京*)IC車*本*京*京*京京*察*4c*京*車*察*以琢* /14外部中断INTO中断处理程序/京* 察* * 京* *察* 承* *4c*44c*4* * 車* */* */* 京* *專* * 康* *察* 取*函数名:外部中断INTo中断处理程序调 用

24、:外部引脚INTo中断处理参数:无返回值:无结 果:用户处理外部中断信号备注:/本*希*京*車*車*璟*京*京 k*車*京*床車*京*京*專*木*京*/VOid INLo (VOid) interrupt 0 USing 2切换寄存器组到 2用户函数容VOid display (UnSigned int a) DY-PORT 二 0x;delay (a);DYePORT = Oxff; delay (DY.PWM-a);15普通I/O 口模拟PWM生成程序函数名:普通I/O 口模拟PWM生成程序调用:display (?)京* * 克* 京* *京* * * *專* * 克* 察* * *j*

25、 *4t*4t* 康* 京* 京*备注:* 車* * 琢*京* 察* *康* 車* *未*41*京*#*4(*京*京*車*京*显示程序(5OmS的PWM宽度)/LED小灯亮延时o的长度/LED小灯灭延时总PWM长度减Q/木*京*宅*車*車*車*察*京*京*琢*廉*卓*京16丄CD驱动/京*京*車*車*字*扌*案*京*字*獄/LCD驱动(DY12864CBL液晶显示屏并口驱动程序)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 (底层)写数揭到LCD (底层)初始化LCD屏(被调用层)Write-(OX30);Write.(OxOc);选择8bit数据流开显示(无游标、不反白)清除显示,并且设定地址指针为O

27、oHwrite-(0x01);*車*琢*琢*京*車*京*电*京*京*東*京*4CVOid ICm-W-WOrd (UnSigned Char *s)向LCM发送一个字符串,长度64字符之。(被调用层)while(*s>0)应用:ICm_w_WOrdr您好);Writeedata (*s); s+;VOid ICm-WJeSt(bit izunsiged Char WOrd)写指令或数据(被调用层)if(i 二二 0)Write Jword); else写指令或数据(0,指令)write-data(word);/* 拿* 車* 京 *巾木* 京*/* 永* 京定 *#*)IC 木 * 牛*

28、4(* 車写指令或数据(1,数据)VOid ICm.clr(void)清屏函数ICm.Wjest(OzOxOl);/察*京*扌*車*琢*京*卓*4*卓*琢*京*京*車車*I17.DS18B20温度传感器驱动/車*京*京*察*察*車*京*定*車*京* /DS18B20温度传感器驱动(显示0至60度)/* 4(察* 京*來* 車* *來* 車*京* * 京* * 京* 車*+*4c* *)It 京VOid Delay(int nUm)延时函数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)读一个字节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;/给脉冲信号/给脉冲信号专业写一个字节嵌*車*京*京*京*京*京读取温度/跳过读序号列号的操作 /启动温度转换跳过读序号列号的操作读取温度寄存器读低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;专业t<<=8;t=t I a

32、; tt=t*0.0625;t= tt*10÷0.5; return (t);放大】0倍输出并四舍五入* * 18.LCM2402 (1602也适用)驱动程序/*京* * 琢* *京*京*車* *京*京*4t* * *4* * /以下是LCM2402 (1602也适用)驱动程序/京*承* 康* 承*)cjk4t*/* 專* 京* 京* *4C)ICIK *字*/引脚定义/ (使用者根据实际更改)/琢*京*京*琢* * * 京*减*察*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的数据总线定义LCM2402的RS控制线定义LCM2402的RW控制线定义LCM2402的E控制线定义LCM2402的测忙线(与LCM2402LDB7关联)# 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忙程序底层协议/ (所有底层协议都无需关注)/ LCM2402测忙,若LCM2402处于忙状态,本函数将等待至非忙状态/ /京*承*康*承*車*京卓宣*京*專*車*京*京*車VOid LCM2402_TestBusy(void)设备读状态等待LCM不

36、忙LCM2402_DB0_DB7 二 Oxff;LCM2402RS 二 0;LCM2402_RW 二 1;LCM2402-E = 1 ;While(LCM2402.Bsy);LCM2402_E 二 O;/写指令程序/向LCM2402写命令本函数需要1个指令集的入口参数/*車*京*琢*車*京*京*車*車*卓*京*察*京*京*京*察*京/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;/車*京*京*察*車*字*康*京*京* /写数据程序/向LCM2402写数据/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(*琢*才*京*/打印字符串程序/ (本函数调用指针函数)/向LCM发送一个字符串,长度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发送一个字符,以十六进制(OXOO)表示/应用举例:Print(OXCO,0x30); /在第二行第一位处打印字符“0”/* 車* *木*京*京*車*京*京*4<*41*卓*車*京*京*京*京*京 /VOid prit2(uint8 o,Uint81)LCM2402-WriteCMD(a | 0x80);LCM2402.WriteData(t);专业/車*京*琢*琢*察*京*車*卓*京*京*察*卓*京*琢*車車*第 /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.主函数/車* * *本*4(*察*京*球*)1(承*卓* 函数名:主函数调用:无参数:无返回值:无结 果:程序开始处,无限循环备注:VOid mcin (VOid)/京*車*眾*木*承*扌*專*卓*京*京*車*康* 函数名

41、:扬声器驱动/*显示模式设責:显示2行,每个字符为5*7个像素 /显示清屏/*数据指针指向第】行第】个字符位直/显示光标移动设萱:文字不动,光标右移/显示开及光标设直:显示开,光标开,闪烁开专业备注:/車*京*琢*京*京*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个独立式键盘驱动程序y 4c)cj 4c*)c4t*4t*4t4c)c*4<*4C函数名:8个独立式键盘驱动程序调用:? = Key ();参数:无返回值:UnSigned Chor 键值 08结 果:有键按下时返回值为键值】&无键按下时返回值为0备注:在主函数中不断调用/ 京*康*琢*木*字*#*/*未*察*車*察* /UnSigned Char Ke

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论