欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    音乐万历基于at89s52带完整程序.doc

    • 资源ID:4150747       资源大小:2.77MB        全文页数:49页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    音乐万历基于at89s52带完整程序.doc

    简易数字时钟的设计(完整程序附在最后)摘要:本电子钟利用单片机AT89S52控制日历时钟芯片DS12C887实现多功能数字时钟。该时钟由单片机控制日历时钟芯片实现年份、月份、日期、时间信息的获取,并且通过LCD12864对年份、月份、日期、星期、节日、时间信息进行显示,可以对年份、月份、日期、星期、时间进行修改,具有掉电后时间信息不丢失的功能。另外具有闹钟功能和具有整点报时功能,可设置闹铃时间,当闹铃时间到时,进行闹铃,通过任意按键可解除闹铃;当整点到来,鸣奏音乐。采用18B20进行温度测控,超出温度阈值将会进行报警。我们将程序固化到单片机中,并且设有程序下载口,可以方便对程序进行升级。关键词:多功能数字时钟,单片机AT89S52,日历时钟芯片DS12C887,闹铃,整点报时。1 设计要求基本设计要求(1)单片机控制日历时钟芯片实现年份、月份、日期、星期、时间信息的获取。(2)在LCD上对年份、月份、日期、星期、时间、信息进行显示。(2)可以对年份、月份、日期、星期、时间进行修改。(3)具有掉电后时间信息不丢失的功能。发挥部分(1)具有闹钟功能。可设置闹铃时间,当闹铃时间到时,进行闹铃。通过按键可解除闹铃。(2)具有整点报时功能。(3)程序固化到单片机中,并且可直接进行程序下载和更新。2 总体设计2.1 系统组成及工作原理本电子钟由单片机、定时、显示、按键、定时提醒、ISP在线编程6部分组成。产品以AT89S52单片机、DS12C887时钟芯片为核心,显示部分采用LCD12864,使用6个按键、1蜂鸣器和一个温度传感器,加上ISP在线编程模块。DS12C887时钟芯片产生时钟信号和存放闹铃数据,其精度和可靠性高,在单片机掉电状态下能正确走时、保存闹铃数据长达10年,故能实现停电重起后定时设计不变的关键设计指标。AT89S52单片机实时获取DS12C887的时间和闹铃数据,驱动LCD和蜂鸣器。显示部分的LCD有高亮度,低成本等诸多优点。蜂鸣器作闹铃提示切合实际、直观。按键方面采用软件消抖,减少硬件电路的同时增加了可靠性。本产品完全达到设计要求,辅助的ISP在线编程让产品具有强大的扩展功能,使其不仅仅是一个电子钟,更是一个单片机试验平台。2.2 DS12C887时钟芯片原理DS12C887能够自动产生世纪、 年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决 “千年”问题;DS12C887 中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12 小时制和 24 小时制两种模式。在 12 小时 制模式中,用 AM 和 PM 区分上午和下午; 时间的表示方法也有两种,一种用二进制数 表示,一种是用 BCD 码表示;DS12C887 中 带有 128 字节 RAM,其中有 11 字节 RAM 用来存储时间信息,4 字节 RAM 用来存储 DS12C887 的控制信息,称为控制寄存器,113 字节通用 RAM 使用户使用;此外用户还 可对 DS12C887 进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。3 硬件设计3.1 硬件组成用Visio画出硬件组成框图,并进行描述 本万年历以AT89S52单片机、DS12C887时钟芯片为核心,显示部分采用LCD12864,使用6个按键、1蜂鸣器和一个温度传感器,加上ISP在线编程模块。DS12C887时钟芯片产生时钟信号和存放闹铃数据。3.2 单片机核心模块单片机最小系统3.2.1主要特性单片机AT89S52是 ATMEL公司生产的低电压、高性能COMS 8位单片机,它有128Byte RAM、8KByte可编程FLASH ROM,指令系统与MCS-51系列兼容。采用KEILC51编译软件,PROTUES仿真平台,能方便实现程序的仿真。ISP在线编程,能方便的更新程序。可对选用的单片机特点进行描述,可画出单片机最小系统并描述电路连接。3.2.2单片机引脚说明AT89S52 采用 40Pin 封装的双列直接 DIP 结构,40 个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4 组 8 位共 32 个 I/O 口,中断口线与 P3 口线复用。现在我们对这些引脚的功能加以说明:Pin20: 接地脚。 Pin40: 正电源脚,正常工作或对片内 EPROM 烧写程序时,接 +5V 电源。 Pin19: 时钟 XTAL1 脚,片内振荡电路的输入端。 Pin18: 时钟 XTAL2 脚,片内振荡电路的输出端。 时钟有两种方式,一种是片内时钟振荡方式,但需在 18 和 19 脚外接石英晶体 (2-12MHz) 和振荡 电容,振荡电容的值一般取 10p-30p 。另外一种是外部时钟方式,即将 XTAL1 接地,外部时钟信号 从 XTAL2 脚输入。 输入输出 (I/O) 引脚: Pin32-Pin39 为 P0.0-P0.7 输入输出脚, Pin1-Pin8 为 P1.0-P1.7 输入输出脚, Pin21-Pin28 为 P2.0-P2.7 输入输出脚,Pin10-Pin17 为P3.0-P3.7输入输出脚,这些输入输出脚的功能阐述如下: P0 口( 32 脚 39 脚):是双向 8 位三态 I/O 口,在外接存储器时,与地址总线的低 8 位及数据 总线复用,能以吸收电流的方式驱动 8 个 TTL 负载。P1 口( 1 脚 8 脚):是 8 位准双向 I/O 口。由于这种借口输出没有高阻状态,输入也不能锁存, 故不是真正的双向 I/O 口。 P1 口能驱动(吸收或输出电流) 4 个 TTL 负载。 P2 口( 21 脚 28 脚):是 8 位准双向 I/O 口。访问外部存储器时,它可以作为高 8 位地址总线 送出高 8 位地址。 P2 可以驱动(吸收或输出电流) 4 个 TTL 负载。 P3 口( 10 脚 17 脚):是 8 位准双向 I/O 口, P3 口能驱动(吸收或输出电流) 4 个 TTL 负载。 P3 口除了作为一般的准双向通用 I/O 口使用外,每个引脚还有第二功能。 P3 口的 8 条线都定义有第二功能 6 ,如表 4.1 所列。 P3引脚第二功能:P3.0 RXD (串行口输入端) P3.1 TXD (串行口输出端) P3.2 INT0 (外部中断 0 请求输入端,低电平有效) P3.3 INT1 (外部中断 0 请求输入端,低电平 有效) P3.4 T0 (定时器 / 计数器 0 的技数脉冲输入端) P3.5 T1 (定时器 / 计数器 0 的技数脉冲输入端) P3.6 WR (片外数据存储器写选通信号输出端,低电平有效) P3.7 RD (片外数据存储器写选通信号输出端,低电平有效) Pin9:RESET/Vpd 复位信号复用脚,当单片机通电,时钟电路开始工作,在 RESET 引脚上出现 24 个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器 PC 指向 0000H , P0-P3 输出 口全部为高电平,堆栈指钟写入 07H ,其它专用寄存器被清 “0” 。 RESET 由高电平下降为低电平后, 系统即从 0000H 地址开始执行程序。然而,初始复位不改变 RAM (包括工作寄存器 R0-R7 )的状态, 单片机复位后的状态如下: P0 P3=FFH ,各口可用于输出,也可用于输入; SP=07H ,第一个入栈内容将写入 08H 单元; IP、IE 和 PCON 的有效位为 0 ,各中断源处于低优先级且均被关断,串行通讯的波特率不加倍; PSW=00H ,当前工作寄存器为 0 组。 Pin30:ALE/PROG 当访问外部程序器时, ALE( 地址锁存 ) 的输出用于锁存地址的低位字节。而访 问内部程序存储器时, ALE 端将有一个 1/6 时钟频率的正脉冲信号,这个信号可以用于识别单片机 是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器, ALE 会跳过一 个脉冲。 如果单片机是 EPROM ,在编程其间, PROG 将用于输入编程脉冲。 Pin29:PESN 当访问外部程序存储器时,此脚输出负脉冲选通信号, PC 的 16 位地址数据将出现 在 P0 和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU 读入并执行。Pin31:EA/Vpp 程序存储器的内外部选通线, 8051 和 8751 单片机,内置有 4kB 的程序存储器, 当 EA 为高电平并且程序地址小于 4kB 时,读取内部程序存储器指令数据,而超过 4kB 地址则读取 外部指令数据。如 EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部 无程序存储器的 8031,EA 端必须接地。 3.3晶振电路振荡器是数字钟的核心。振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,通常选用石英晶体构成振荡器电路。石英晶体振荡器的作用是产生时间标准信号。3.4显示电路本电路采用1602LCD,由于数码管只能显示数字数码管显示内容单一,液晶则比较丰富,而这个实验中,要求功能较多,为了使电路显示的更清晰明了,本实验最终决定采用1602LCD显示。且液晶显示已占居社会主流,优势明显。模块引脚功能表: 引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位 低电平有效18NC空脚19LED_A-背光源正极(LED+5V)20LED_K-背光源负极(LED-OV)3.5时钟电路3.6独立按键电路独立按键电路图鉴于使用中断电路会增加硬件电路的复杂度,本电路采用独立按键的方法,只需在程序中加入扫描程序即可。其中P1.4接按键1,P1.5接按键2,P1.6接按键3,P1.7接按键4,其中按键4为确定,通过按键已可以切换至不同的工作方式,譬如时间,日期,闹铃设置,秒表;按键2为加键,通过按键2可以调整时间和闹钟的加键,按键3为减键,按键1为退出键。在秒表中键4为开始键和暂停,2和3为清零键。3.7蜂鸣器电路4 程序设计4.1 主程序设计main() char e=0,f=0,w2=0,w3=0;s1=1;s2=1;s3=1;s4=1;EA=1;/打开总中断 EX0=1;/开外部中断1 IT1=1;/设置负跳变沿触发中断ds_int(); /初始化DS12CR887lcm_init(); /初始化液晶显示器lcm_clr(); /清屏welcome(); /显示欢迎信息DelayM(3000); /显示停留3秒lcm_clr(); /清屏while(1) if(flag_ri=1)/当闹钟中断时进入这里 w3=1;/这里用来取消闹钟报警,任一键取消报警if(s1=0)|(s2=0)|(s3=0)|(s4=0)|(s5=0)|(s6=0) DelayM(5); if(s1=0)|(s2=0)|(s3=0)|(s4=0)|(s5=0)|(s6=0) while(!(s1&&s2&&s3&&s4&&s5&&s6); di(); flag_ri=0;/清除报警标志w3=0; di(); DelayM(100); di(); DelayM(500); if (w = 0&&w2=0)/正常走时 lcm_w_year(); /显示年lcm_w_month();/显示月 lcm_w_date();/显示日lcm_w_day();/显示星期lcm_w_shi();/显示时lcm_w_fen();/显示分lcm_w_miao();/显示秒days(); /显示节日提示else if (s1 = 0&&w3=0) / 设置时间+ DelayM(20); /按键消抖if(s1 = 0 && w = 1&&w3=0) /当是调时状态 本键用于调整下一项di();e+;if (e >= 6 )e = 0; Set_time(e);/调整if(s1 = 0 && w = 0&&w3=0) /当是正常状态时就进入调时状态 di();lcm_clr();/清屏w=1; /进入调时Set_time(e);/调整w2=0; while(s1 = 0); /等待键松开 if (s6 = 0&&w3=0) / 设置时间- DelayM(20); /按键消抖if(s6 = 0 && w = 1&&w3=0) /当是调时状态 本键用于调整下一项di();e-;if (e < -1 )e = 4; Set_time(e);/调整if(s6 = 0 && w = 0&&w3=0) /当是正常状态时就进入调时状态 di();lcm_clr();/清屏w=1; /进入调时e=4;Set_time(e);/调整w2=0; while(s6 = 0); /等待键松开 if (s5 = 0&&w3=0) / 设置闹钟 DelayM(20); /按键消抖if(s5 = 0 && w2 = 1&&w3=0) /当是调闹钟状态 本键用于调整下一项di();f+;if (f >= 3 )f = 0; Set_alarm(f);/调整if(s5 = 0 && w2 = 0&&w3=0) /当是正常状态时就进入调闹钟状态 di();lcm_clr();/清屏w2=1; /进入调闹钟Set_alarm(f);/调整w=0; while(s5 = 0); /等待键松开 if (s2 = 0&&w3=0) / 当在调时状态时就退出调时 DelayM(20);/按键消抖if(s2 = 0 && w = 1&&w3=0)di();w = 0; /退出调时e = 0;/"下一项"计数器清0if(s2 = 0 && w2 = 1&&w3=0)di();w2 = 0; /退出调时f = 0;/"下一项"计数器清0if(s2 = 0 && w = 0&&w3=0) di();lcm_clr();/清屏 lunar();/显示农历while(s2 = 0); /等待键松开 lcm_clr();/清屏lcm_w_year(); /年lcm_w_month();/月 lcm_w_date();/日lcm_w_day();/星期lcm_w_shi();/时lcm_w_fen();/分lcm_w_miao();/秒days(); /显示节日提示 while(s2 = 0);/等待键松开 if (s3 = 0 && w = 1&&w3=0)/加调整 DelayM(20);/按键消抖 if(s3 = 0 && w = 1&&w3=0)di();Set_time(e);/调整 while(s3 = 0);/等待键松开if (s3 = 0 && w2 = 1&&w3=0)/加调整 DelayM(20);/按键消抖 if(s3 = 0 && w2 = 1&&w3=0)di();Set_alarm(f);/调整 while(s3 = 0);/等待键松开if (s4 = 0 && w = 1&&w3=0) /减调整 DelayM(20);/按键消抖 if(s4 = 0 && w = 1&&w3=0)di();Set_time(e);/调整 while(s4 = 0);/等待键松开if (s4 = 0 && w2 = 1&&w3=0) /减调整 DelayM(20);/按键消抖 if(s4 = 0 && w2 = 1&&w3=0)di();Set_alarm(f);/调整 while(s4 = 0);/等待键松开/否则启动调时5 调试及结果本万年历硬件电路并不复杂,重在程序的编写与调试,为了便于后期调试与产品升级,特加上isp下载口,既能给万年历供电又能方便烧写程序。调试初期我们为了熟悉时钟芯片的使用,采用开发板搭接杜邦线的方法调试出程序,克服了无法从时钟芯片中采集出数据的问题。等成功在开发板上实现后,我们制作了如下图的完整的电子万年历。焊好完整电路后,出现了LCD12864屏幕无显示的问题,经过有序的查线,发现单片机的EA管脚没有接高电平,接好后,正常显示。正常显示后,我们发现程序本身还存在着许多缺陷和不足,首先是没有闹铃功能,我们加上有关闹铃的程序段后,发现不能用按键取消闹铃状态,但确实有取消闹铃的代码,这是怎么回事呢?后来发现该段程序和后面的按键选择冲突了,在加上了w2标识变量后解决了这个问题。而后在原有程序的基础上我们还加入了时辰显示、按键铃音、星期自动调整、日期调整等功能,当然还有一些不足以待后续完善。完整程序:/*-电子智能时钟程序单片机:STC89C52RC晶振:12MHz时钟芯片:DS12CR887+5液晶屏:LCM-12864-ST7920时间:2009年2月11日LCM12864使用并口连接方式-*/*头文件-*/#include <reg52.h>#include <string.h>#include "SoundPlay.h"#define uint unsigned int#define uchar unsigned char/*定义全局变量-*/uchar miao,fen,shi,date,month,year,amiao,afen,ashi,lunard,lunarm,lunary;/秒,分,小时,星期,日期,月, 年bit w = 0; /调时标志位bitflag_ri;/*定义12864液晶屏数据线-*/sbit LCM_RS = P20; /模式位,为0输入指令,为1输入数据 sbit LCM_RW = P21; /读写位,为0读,为1写 sbit LCM_EN = P22; /使能位sbit LCM_PSB = P23; /H=并口; L=串口sbit LCM_RST = P25; #define Lcd_Bus P0 /LCM12864数据总线/*定义按键-*/sbit s1 = P12; /s1-设置sbit s2 = P13; /s2-确认sbit s3 = P14; /s3-加sbit s4 = P15; /s4-减sbit s5 = P17;sbit s6 = P16;/*定义DS18B20数据线-*/sbit DQ = P11;/*定义DS12CR887数据线-*/sbit dscs = P34;sbit dsas = P35;sbit dsrw = P36;sbit dsds = P37;sbit dsirq=P32;#define Ds_Bus P0 /DS12CR887数据总线/*定义累加器A中的各位-*/sbit a0 = ACC 0;sbit a1 = ACC 1;sbit a2 = ACC 2;sbit a3 = ACC 3;sbit a4 = ACC 4;sbit a5 = ACC 5;sbit a6 = ACC 6;sbit a7 = ACC 7;void lcm_w_test(bit i,uchar word);void lcm_w_word(uchar *s);/*延时程序-*/延时函数 1MS/次void DelayM(uint a) uchar i;while( -a != 0) for(i = 0; i < 125; i+); /一个 ; 表示空语句,CPU空转。 /i 从0加到125,CPU大概就耗时1毫秒/延时函数void Delay(int num)while(num-);void delay500us()unsigned char j; for(j=0;j<57;j+) /500us基准延时程序 ; void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;i<count;i+)for(j=0;j<120;j+);/两只蝴蝶 unsigned char code Music_Two = 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03, 0x00, 0x00,0x00 ;void di()/产生1KHZ频率声音的函数int t;for(t=0;t<50;t+) beep=0;delay500us();beep=1;delay500us(); void lcm_w_lunary(void)lcm_w_test(0,0x80);/在液晶屏上显示的位置lcm_w_word("现在农历是20");lcm_w_test(0,0x86);/在LCM上的写入位置lcm_w_test(1,(lunary/10)+0x30);lcm_w_test(1,lunary%10+0x30);lcm_w_word("年");void lcm_w_lunarm(void)lcm_w_test(0,0x90);/月份在液晶屏上显示的位置if(lunarm/10 != 0)lcm_w_test(1,(lunarm/10)+0x30);/十位消隐elselcm_w_test(1,0x20);/十位消隐lcm_w_test(1,lunarm%10+0x30);lcm_w_test(0,0x91);/在LCM上的写入位置lcm_w_word("月");void lcm_w_lunard(void)lcm_w_test(0,0x92);/日期在液晶屏上显示的位置if(lunard/10 != 0)lcm_w_test(1,(lunard/10)+0x30);/十位消隐elselcm_w_test(1,0x20);/十位消隐lcm_w_test(1,lunard%10+0x30);lcm_w_test(0,0x93);/在LCM上的写入位置lcm_w_word("号");void nongli() lunary=year; lunarm=month; lunard=date; lcm_w_lunary(); lcm_w_lunarm(); lcm_w_lunard();/*农历数据库*/void lunar(void) nongli();unsigned char GetWeekFromDay(unsigned char year,unsigned char month,unsigned char day) if( month = 1 | month = 2 ) month += 12; if( year> 0 ) year-; else year = 4; / 返回星期几(星期一用1表示,而星期天用7表示) return 1+( day + 2*month + 3*(month+1)/5 + year + year/4 ) %7);/*DS12CR887驱动程序-*/往DS12CR887写数据函数void write_ds(uchar add,uchar date) dscs=0;dsds=1;dsrw=1;dsas=1;Ds_Bus=add; dsas=0;dsrw=0;Ds_Bus=date;dsrw=1;dsas=1;dscs=1;/读取DS12CR887的数据uchar read_ds(uchar add)uchar z;dscs=0;dsrw=1;dsds=1;dsas=1;Ds_Bus=add;dsas=0;dsds=0; Ds_Bus=0xff;z=Ds_Bus;dsds=1;dsas=1;dscs=1;return z;/DS12CR887初始化void ds_int()dsas=0;dsds=0;dsrw=0;write_ds(0x0a,0x20);/DS12CR887寄存器A功能设置,开启时钟振荡器/*12864液晶显示屏并口驱动程序-*/检查忙位(底层)void chk_busy() LCM_RS=0; LCM_RW=1; LCM_EN=1; Lcd_Bus=0xff; while(Lcd_Bus&0x80)=0x80); LCM_EN=0;/写指令到LCD(底层)void write_com(uchar cmdcode)chk_busy();LCM_RS=0;LCM_RW=0;LCM_EN=1;Lcd_Bus=cmdcode;LCM_EN=0;/写数据到LCD(底层)void write_data(uchar Dispdata) chk_busy();LCM_RS=1;LCM_RW=0;LCM_EN=1;Lcd_Bus=Dispdata;LCM_EN=0;/初始化LCD屏(被调用层)void lcm_init() LCM_PSB=1; /如果液晶屏的PSB在电路板中接了高电平的,这里可以屏蔽 LCM_RST=1; /如果液晶屏的RST在电路板中接了高电平的,这里可以屏蔽 write_com(0x30); /选择8bit数据流 write_com(0x0c); /开显示(无游标、不反白) write_com(0x01); /清除显示,并且设定地址指针为00H/向LCM发送一个字符串,长度64字符之内。(被调用层)/应用:lcm_

    注意事项

    本文(音乐万历基于at89s52带完整程序.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开