单片机嵌入式应用的在线开发方法是现代电子工程领域中的一个重要环节,它涉及到硬件设计、软件编程、系统调试等多个方面。这种开发方式允许开发者在设备运行时进行程序的编写、修改和测试,极大地提高了开发效率和问题定位能力。本文将深入探讨这一主题,并结合“清华大学出版”的相关资源,为你提供详尽的解析。 我们要理解什么是单片机。单片机是一种集成了微处理器、存储器和外围接口电路的集成电路,常用于控制各种设备的运行。在嵌入式系统中,单片机是核心组件,能够处理特定的控制任务。 在线开发,也称为在线编程或In-Circuit Debugging (ICD),是指在目标硬件上直接对程序进行编写、编译、下载和调试的过程。这种方法省去了传统离线开发中需要频繁拔插编程器或者烧录器的步骤,使得开发流程更加便捷。在线开发通常包含以下几个关键部分: 1. **编程器/调试器**:这是连接单片机和计算机的硬件设备,可以读取和写入单片机的内存,实现程序的下载和调试。 2. **开发环境**:如Keil、IAR、GCC等,提供集成的开发界面,包括源代码编辑、编译、链接、下载和调试功能。 3. **通信协议**:如JTAG(Joint Test Action Group)或SWD(Serial Wire Debug),用于在编程器和单片机之间传输数据。 4. **固件更新**:在线编程允许在不破坏现有系统运行的情况下更新单片机的固件,这对于设备的维护和升级至关重要。 5. **实时调试**:开发者可以通过设置断点、查看变量值、单步执行等手段,实时监控程序的运行状态,快速定位和解决问题。 在线开发的优势在于: 1. **高效**:可以即时验证代码效果,减少反复烧录的时间。 2. **灵活**:便于在实际环境中调试,更接近真实运行情况。 3. **便捷**:无需物理拔插,降低设备损坏风险。 4. **适应性强**:适用于复杂系统和大规模项目。 在“清华大学出版”的相关资源中,可能涵盖了单片机选型、电路设计、编程语言选择(如C或汇编)、在线开发工具的使用教程等内容。学习者可以从这些资源中获得实践指导,加深对单片机嵌入式应用在线开发的理解。 掌握单片机嵌入式应用的在线开发方法,是提升工程实践能力和解决实际问题的关键。通过理论学习与实践操作相结合,开发者可以更好地驾驭这一技术,为各种领域的智能设备开发提供强大支持。
2025-05-25 19:52:52 4.18MB 清华大学出版
1
单片机的打铃系统设计校园打铃系统就是利用现代计算机、通讯等技术,以传统的铃声系统为基础,根据用户对铃声系统功能的要求,由单片机来控制、管理、播放的系统。本次设计是实现一个单片机的校园打铃系统,能过设置打铃时间,同时要求能够在系统掉电时,时间能够继续,数据能够保持,能够实现打铃。单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到校园铃声和广播控制。
2025-05-25 17:25:22 638KB 打铃系统设计
1
在电子工程领域,51单片机是一种广泛应用的微控制器,尤其在教学和小型嵌入式系统中。本文将深入探讨如何使用C语言在51单片机上编写程序,以便与EEPROM(电可擦可编程只读存储器)进行交互。EEPROM是一种非易失性存储器,即使断电也能保持数据,这使得它在需要持久保存配置参数或数据的应用中非常有用。 我们需要了解51单片机的架构。51系列单片机由Intel公司推出,具有8位CPU、内部RAM、ROM和一些基本的外设接口,如定时器、串行通信接口等。C语言作为高级编程语言,可以提供比汇编语言更直观、更易于维护的代码,因此是51单片机编程的常见选择。 在51单片机中,与EEPROM交互通常需要使用I2C或SPI等串行通信协议,因为这些协议允许单片机与外部设备(如EEPROM)进行数据交换。对于I2C协议,51单片机需要模拟SDA(数据线)和SCL(时钟线)的高低电平,而对于SPI,需要控制MISO(主输入/从输出)、MOSI(主输出/从输入)、SCK(时钟)和CS(片选)引脚。 接下来,我们讨论C语言编程中的接口函数。一个简单的例子可能包括以下函数: 1. 初始化函数:这个函数负责设置I2C或SPI接口,通常包括配置IO口为输入/输出,设置波特率,以及开启或关闭中断。 2. 写操作函数:这个函数接收两个参数,一个是EEPROM的地址,另一个是要写入的数据。函数内部会生成相应的控制信号,按照协议发送地址和数据到EEPROM。 3. 读操作函数:同样需要指定地址,函数会读取指定位置的数据并返回。读取过程中,可能需要考虑EEPROM的读等待时间,确保正确读取。 4. 错误处理函数:当通信失败或EEPROM返回错误状态时,此函数可以用来处理异常情况。 在实现这些函数时,我们需要注意以下几点: - EEPROM的写入操作可能有最小写入周期,以防止数据损坏,所以写入操作之间需要适当延时。 - 数据的校验:为了确保数据的完整性和一致性,通常会在写入数据前进行校验,并在读取后再次校验。 - EEPROM的地址空间:不同的EEPROM有不同的地址空间,编程时需确保地址在有效范围内。 关于“eeprom”这个文件名,很可能包含了实现上述功能的源代码或库文件。这些文件可能包括头文件(定义了接口函数),C源文件(实现了函数的代码),以及可能的配置文件(如I2C或SPI的初始化设置)。通过阅读和理解这些代码,我们可以学习如何在实际项目中应用51单片机的C语言编程来与EEPROM通信。 总结起来,51单片机通过C语言编程与EEPROM交互涉及了硬件接口的理解、通信协议的实现、以及C语言函数的设计和实现。这是一个基础但关键的技能,对于开发基于51单片机的嵌入式系统至关重要。通过不断实践和学习,开发者可以熟练掌握这一技术,从而更好地利用EEPROM的特性为各种应用提供可靠的存储解决方案。
2025-05-25 17:12:51 40KB 51单片机 eeprom
1
基于单片机的洗衣机控制系统的设计 本文是基于单片机的洗衣机控制系统的设计,旨在实现全自动洗衣机的控制功能。该系统的设计主要基于 STC89C52 微控制器,包括液晶显示模块、报警模块、水位检测模块、进出水控制模块、电机控制模块和功能按键模块等。 微控制器作为整个系统的核心,负责控制各个模块的工作状态和协调各个模块之间的交互。液晶显示模块负责显示当前的状态和参数信息,报警模块负责发出警示音和警示灯,水位检测模块负责检测洗衣机中的水位,进出水控制模块负责控制洗衣机的进水和出水,电机控制模块负责控制洗衣机的电机旋转,功能按键模块负责检测用户的输入命令。 系统的工作过程是:用户按下启动按键后,系统自动开启进水开关,直到高水位传感器检测到水满,然后关闭进水开关继而启动直流电机转动,模拟洗衣机洗涤。等到了规定洗涤时间后,停止电机转动,然后自动开启出水开关直到低水位传感器检测到水空。然后关闭出水开关,继而开启电机加速旋转,进入脱水状态。最后清洗完成蜂鸣器报警并自动停机。 该系统的设计具有多种工作状态,包括强洗、弱洗、标准洗、经济洗、单独洗和排水等六种状态,满足不同用户的需求。同时,该系统还具有模糊控制理论的应用,能够智能地调整洗衣机的工作状态,提高洗衣机的工作效率和可靠性。 系统的优势在于可以实现全自动洗衣机的控制功能,满足用户的多样化需求,具有实时监控和智能控制的功能,可以提高洗衣机的工作效率和可靠性。该系统的设计也为未来洗衣机的智能化和自动化提供了有价值的参考。 在该系统的设计中,我们还应用了多种技术和理论,包括微控制器技术、模糊控制理论、液晶显示技术、报警技术等。这些技术和理论的应用不仅提高了系统的工作效率和可靠性,也提高了系统的智能化和自动化水平。 本文的设计基于单片机的洗衣机控制系统,满足用户的多样化需求,具有实时监控和智能控制的功能,提高洗衣机的工作效率和可靠性,为未来洗衣机的智能化和自动化提供了有价值的参考。
2025-05-25 01:25:10 2.72MB
1
科学技术的不断进步正在改变着人们的生活习惯和生活方式,而作为科技时代下的产物的洗衣机已经走进了千家万户。为此,本设计基于单片机为控制核心设计了全自动洗衣机控制系统。本系统对洗衣过程的用户数据输入和洗衣、脱水、结束报警结束现实了全自动化控制。控制系统主要由单片机控制系统、电源电路和部硬件电路三大模块组成。通过单片机,实现对外部的硬件的用户数据输入的处理和控制,洗衣机达到了用户预期效果。 本系统的AT89C51单片机下载好软件程序后,系统能够通过对用户的参数输入的检测 做出处理,并且能够实现洗涤、漂洗、进水排水、脱水等各种过程的全自动控制。除此还可以选择洗衣的强度,设有强洗和标准洗选择按键,给用户提供了人性化的选择。本设计实现了洗衣机的各基本功能的自动化控制,符合现代家庭用户的基本洗衣要求,具有很好的实际使用效果。 关键词:AT89C51;洗涤;全自动洗衣机;漂洗 《基于51单片机的智能洗衣机设计》 随着科技的飞速发展,洗衣机作为现代生活中的必备电器,已经深入到人们的日常生活中。本设计旨在利用单片机技术,构建一个全自动洗衣机控制系统,以实现洗衣过程的自动化,提高用户体验。其中,AT89C51单片机作为核心控制器,承担了数据处理和控制任务,确保洗衣机能够根据用户的需求高效运行。 51单片机是一种广泛应用的微控制器,以其性价比高、资源丰富、易于编程等特点,被广泛应用于各种嵌入式系统中。在本设计中,AT89C51单片机负责接收和处理用户输入的数据,如洗衣模式、洗涤强度等,并控制洗衣机的各个功能,如进水、洗涤、漂洗、排水以及脱水等。用户可以根据自身需求选择强洗或标准洗模式,体现了人性化的设计理念。 整个系统由单片机控制系统、电源电路和硬件电路三大模块组成。单片机控制系统是大脑,负责决策和指令的执行;电源电路提供稳定的工作电压,保证系统正常运行;硬件电路则包含了各种传感器和执行机构,如电机、电磁阀、显示屏和按键等,它们与单片机交互,实现洗衣机的实际动作。 在实际操作中,用户通过键盘输入洗衣参数,单片机会实时检测这些输入,并根据预设的程序逻辑进行处理。例如,当用户选择洗涤模式后,单片机会控制电机启动,配合进水和排水的电磁阀,完成洗涤过程。同样,漂洗和脱水过程也会按照预设的顺序自动进行。此外,系统还设置了结束报警功能,当洗衣过程结束后,会通过蜂鸣器或LED/LCD显示器通知用户。 课程设计不仅是理论知识的验证,更是实践能力的提升。学生们需要在两周的时间内,从分析任务、制定设计方案,到完成硬件检测、软件编程和系统调试,整个过程中锻炼团队协作、工程设计和问题解决的能力。通过这样的项目实践,学生可以将电路、电子技术和微机原理等多学科知识融会贯通,形成完整的工程思维。 在设计报告中,需要详细阐述系统功能、硬件需求、小组分工、设计思想、系统结构、程序设计和模块功能等,同时,还需要提交程序清单,分享设计过程中的心得体会。这样的课程设计旨在强化学生的创新精神和工程实践能力,让他们在未来的工作中能够更好地应对复杂的技术挑战。 基于51单片机的智能洗衣机设计不仅展示了科技如何改变生活,还突显了单片机在自动化控制领域的应用价值。通过这样的实践教学,学生不仅可以掌握单片机应用技术,还能培养出良好的工程素养,为未来从事相关工作奠定坚实基础。
2025-05-25 01:17:11 24.17MB 51单片机
1
单片机温度传感仿真是一个常见且重要的实践项目,它主要涉及到51系列单片机以及DS18B20这种数字式温度传感器的应用。在这个项目中,我们可以通过编程实现对环境温度的实时监测和数据显示。 51单片机是微控制器的一种,其内部集成了CPU、RAM、ROM、定时器/计数器和I/O接口等基本功能部件,广泛应用于各种嵌入式系统中。在本项目中,51单片机作为核心处理器,负责接收和处理DS18B20传来的温度数据,并可能控制LCD1602显示器显示这些信息。 DS18B20是一种数字温度传感器,它最大的特点是可以直接通过一根数据线与微控制器通信,实现了“一线总线”(1-Wire)协议。这个协议允许在一条线上同时传输数据和电源,大大简化了硬件连接。DS18B20内部集成了温度传感器、A/D转换器和非挥发性存储器,能够以9-12位精度提供温度读数,测量范围通常为-55°C到+125°C。 在进行仿真时,我们通常会使用如Keil uVision这样的集成开发环境(IDE)。1602&ds18b20.DSN文件很可能是该项目的工程文件,包含了对LCD1602显示器和DS18B20的配置信息以及相关程序代码。LCD1602是一种常见的字符型液晶显示屏,有16个字符、2行的显示能力,常用于简单的数据显示。 在程序设计中,我们需要编写代码来初始化51单片机和DS18B20,包括设置I/O口、配置DS18B20的一线总线通信,以及设置温度传感器的分辨率。然后,通过定时或中断机制定期读取DS18B20的温度数据,经过适当的处理后,将结果显示在LCD1602上。程序仿真图则可以帮助我们直观地理解代码执行流程和各个模块之间的交互。 此外,为了确保程序的稳定性和准确性,我们需要对DS18B20的通信协议有深入理解,比如如何发送读写命令、如何解析返回的温度数据等。在实际应用中,还可能需要考虑温度传感器的抗干扰能力、电源稳定性等因素。 单片机温度传感仿真是一项综合性的实践任务,涵盖了单片机控制、数字传感器应用、总线通信协议以及人机交互显示等多个方面的知识。通过这个项目,我们可以学习到如何将理论知识转化为实际应用,提升在嵌入式系统开发中的技能。
2025-05-24 21:57:44 67KB
1
### NEC单片机MINICUBE_v1.20A 入门学习知识点 #### 一、NEC单片机MINICUBE_v1.20A 概述 **NEC单片机MINICUBE_v1.20A**是一款专为NEC 78K0系列单片机设计的开发工具套件,它包含了硬件仿真器和一系列软件工具,旨在帮助开发者轻松上手并高效地完成基于78K0系列单片机的产品开发工作。此版本的快速入门手册详细介绍了如何安装和使用这些工具,并提供了必要的预备知识和术语解释。 #### 二、重要注意事项 - **合规性与法律要求**:本手册强调了产品、技术和软件的使用必须遵循所在国家或地区的出口管理法规。同时,提醒用户在使用文档中提供的信息时需确保其符合最新的NEC数据表或数据手册的要求。 - **知识产权保护**:明确了未经NEC书面许可不得复制文档,并且NEC不对文档中的任何错误承担责任。此外,还指出了使用NEC半导体产品可能涉及的知识产权问题,并强调NEC不承担因使用这些产品而产生的侵权责任。 - **责任声明**:NEC不对使用文档中描述的电路、软件和其他相关信息造成的任何损失承担责任。同时,NEC致力于提高产品质量,但不保证完全无误,因此建议用户在设计过程中采取额外的安全措施。 - **质量等级分类**:NEC半导体产品根据应用场景的不同被分为“标准”、“专业”和“特级”三个质量等级。文档中详细说明了不同等级的应用范围,以帮助用户正确选择适合的产品。 #### 三、工具套件组成与功能 - **NCT-MINICUBE78K0**:包含硬件仿真器,可支持78K0系列单片机的在线调试。 - **Applilet**:用于配置和设置项目的软件工具。 - **PM+**:项目管理工具,支持项目创建、管理和编译等功能。 - **ID78K0-QB for MINICUBE**:集成调试器,提供高级调试功能,如断点设置、变量监控等。 #### 四、使用指南 1. **工具安装**:介绍了如何安装NCT-MINICUBE78K0开发工具套件中的各个软件组件,包括Applilet、PM+和ID78K0-QB for MINICUBE等。 2. **应用范例**:提供了几个典型的应用案例,帮助用户了解如何利用这些工具进行项目开发。 3. **工具简介**:概述了各工具的主要功能和特点,以便用户根据自己的需求选择合适的工具。 4. **代码生成**:介绍了如何使用Applilet等工具生成初始项目代码模板,加速开发进程。 5. **编译修改**:说明了如何使用PM+进行代码编译、编辑和优化,以提高程序性能。 6. **硬件连接**:指导用户如何将NCT-MINICUBE78K0硬件仿真器与目标系统相连接。 7. **仿真调试**:讲解了如何使用ID78K0-QB for MINICUBE进行软硬件调试,解决开发过程中遇到的问题。 #### 五、术语解释 - **78K0**:NEC的78K系列8位微控制器(MCU)产品分为78K0和78K0S两个子系列,每个子系列都有相应的开发工具支持。 #### 六、参考文档 文档中列出了几个重要的参考文档,包括编译器操作用户手册、汇编器包操作用户手册、集成调试器操作用户手册等,这些文档均可在NEC官方网站上获取。通过阅读这些文档,用户可以获得更深入的技术细节和操作指南,有助于更好地理解和运用NEC单片机MINICUBE_v1.20A开发工具。 NEC单片机MINICUBE_v1.20A不仅为初学者提供了全面的入门指南,还为有经验的开发者提供了丰富的参考资料和技术支持,是进行NEC 78K0系列单片机开发的理想选择。
2025-05-24 19:47:56 4.79MB
1
【STM32+HAL】LCD实现栈计算器是一个嵌入式系统项目,主要使用了STM32F407ZGT6这款微控制器,通过HAL库来驱动LCD显示器,实现了一个功能丰富的图形化计算器,包括基本的加减乘除运算、指数与对数计算以及三角函数操作,并且支持括号和小数点的使用。这个项目涵盖了多个关键的嵌入式系统知识点,下面将详细介绍这些技术点。 1. **STM32F407ZGT6**:这是意法半导体(STMicroelectronics)生产的一款基于ARM Cortex-M4内核的微控制器。它具有高性能、低功耗的特点,内含浮点单元(FPU),非常适合进行数学运算,如我们在这个项目中的计算器应用。 2. **HAL库**:STM32的HAL库是ST公司提供的高级应用层软件框架,它提供了一套标准化的API(应用程序接口),简化了开发者对硬件资源的操作,使得代码更具可移植性和易读性。在这个项目中,HAL库用于LCD驱动和GPIO控制等任务。 3. **LCD显示**:液晶显示器(LCD)是嵌入式系统中常用的用户界面设备。在这个计算器项目中,LCD可能采用SPI或I2C接口与STM32通信,用以显示数字和符号,构建用户友好的操作界面。 4. **栈操作**:计算器的核心部分是运算栈,用于存储待处理的数值和运算符。栈是一种后进先出(LIFO)的数据结构,特别适合处理括号内的运算。在编程实现时,可以使用数组或链表来模拟栈的数据结构。 5. **数学运算**:项目涉及到多种数学运算,包括基础算术运算(加、减、乘、除)、指数运算(如幂次方)、对数运算(自然对数和常用对数)以及三角函数(正弦、余弦、正切)。由于STM32F407ZGT6包含FPU,这些复杂数学运算可以在硬件级别快速高效地完成。 6. **错误检查和处理**:在计算器设计中,必须考虑无效输入(如除以零、超出范围的指数等)和括号不匹配等问题。这需要在程序中添加适当的错误检测和异常处理机制。 7. **用户交互**:计算器还需要响应用户的按键输入,这通常通过GPIO引脚检测按键状态来实现。此外,可能还会有一个简单的输入验证过程,确保用户输入的合法性。 8. **软件设计模式**:为了使代码更模块化和易于维护,开发者可能会采用面向对象的设计原则,如封装、继承和多态,将不同的功能(如按键处理、显示更新、运算逻辑)封装成独立的类或函数。 9. **中断服务程序**:在实时系统中,中断服务程序用于处理外部事件,例如按键按下。中断服务程序可以快速响应并处理这些事件,保证计算器的响应速度。 10. **调试与测试**:在项目开发过程中,调试和测试是必不可少的环节。开发者可能使用如STM32CubeIDE这样的集成开发环境,通过断点、变量查看器等功能来查找和修复问题,同时需要编写各种测试用例来验证计算器的正确性。 通过这个项目,开发者不仅可以深入理解STM32微控制器的使用,还能掌握嵌入式系统开发中涉及的软件设计、硬件驱动、数学运算等多个方面的知识。
2025-05-24 16:08:40 47.83MB stm32
1
在电子工程领域,51单片机是一种广泛应用的微控制器,尤其在教学和小型控制系统中。这个项目"基于51单片机的直流电机调速测速正反转控制Proteus仿真"涉及到的关键知识点包括51单片机的内部结构、直流电机的工作原理、速度控制方法、以及Proteus仿真软件的使用。 51单片机是Intel公司8051系列的一种,其内部集成了CPU、RAM、ROM、定时器/计数器、并行I/O端口等多种功能部件,具有低功耗、高性能、易于编程的特点。通过编写汇编语言或C语言程序,可以实现对51单片机的精确控制,使其完成特定的任务,如在这个项目中的直流电机控制。 直流电机是一种常见的电动机,它的运行原理是利用电能转化为机械能。通过改变输入电机的电压或电流,可以调节电机的转速;而改变电流的方向则可以改变电机的旋转方向。在本项目中,51单片机将用于控制直流电机的正反转,并实现速度的调节。 直流电机调速通常有几种方式:电压调速、电枢回路串电阻调速、斩波调速等。在这个项目中,很可能是通过改变输入电压来实现调速的,这需要51单片机对电机驱动电路进行精确的电压控制。 测速部分可能通过霍尔效应传感器或其他速度检测设备来实现,这些设备可以监测电机的转速,然后将信号反馈给51单片机,以便实时调整电机的速度。 Proteus是一款强大的电子设计自动化软件,它集成了电路原理图设计、PCB布线、硬件仿真和虚拟原型测试等功能。在这个项目中,Proteus将被用来模拟整个系统的行为,包括51单片机的控制逻辑和直流电机的实际运行情况。通过仿真,开发者可以在实际制作硬件之前发现并解决问题,大大提高了设计效率。 这个项目涵盖了微控制器应用、电机控制技术以及电子设计工具的使用,是电子工程学习和实践的好例子。通过深入理解和实践这些知识点,不仅可以掌握基本的单片机控制技能,还能提升对电机控制系统的理解,为后续更复杂的嵌入式系统设计打下坚实基础。
2025-05-23 23:25:19 30.85MB
1
中的“基于51单片机数控可调恒流源设计”是一个涉及电子工程领域的项目,主要探讨如何利用51系列单片机来实现一个数字控制、电流可调的恒流源。51单片机是微控制器的一种,具有成本低、应用广泛的特点,常用于嵌入式系统的设计。在本项目中,51单片机作为核心控制器,通过接收和处理数字信号来调整输出电流的大小,以满足不同应用场景的需求。 中提到的“实物图+原理图+PCB+论文”是该项目的组成部分,具体如下: 1. **实物图**:实物图展示了完成的硬件设计,包括单片机、外围电路以及可能的显示设备等,帮助理解和验证设计的实物形态和工作状态。 2. **原理图**:原理图是电路设计的基础,它详细描绘了各个电子元件的连接方式,包括51单片机、电流调节元器件、A/D和D/A转换器、电源模块以及用户接口等。通过原理图,我们可以理解整个系统的运作机制。 3. **PCB**:PCB(Printed Circuit Board)即印制电路板,是将原理图转化为实际电路的关键步骤。PCB设计包括元件布局和布线,确保电路的电气性能和物理结构的合理性。在本项目中,PCB图会展示所有元件的精确位置和连接方式。 4. **论文**:论文通常包含项目的背景、设计目标、系统架构、工作原理、实现方法、实验结果和分析等,是对整个设计的详细阐述和理论支撑。通过论文,我们可以深入理解设计思路和技术细节,以及项目的意义和价值。 在51单片机数控可调恒流源的设计中,关键知识点包括: 1. **51单片机编程**:使用汇编语言或C语言编写控制程序,实现对电流的数字化控制。 2. **AD和DA转换**:A/D转换器将模拟信号转换为数字信号,让单片机可以处理;D/A转换器则将数字信号转换为模拟信号,控制输出电流的大小。 3. **恒流源电路设计**:可能包括运算放大器、晶体管等元器件,以实现稳定的电流输出,不受负载变化的影响。 4. **用户交互界面**:如LED显示或LCD显示屏,用于显示当前电流值,以及可能的按键输入,允许用户设定电流。 5. **误差校正和控制算法**:通过PID或其他控制算法,确保电流输出的精度和稳定性。 整体来看,这个项目涵盖了单片机编程、数字电路、模拟电路、嵌入式系统设计等多个方面的知识,对于学习和提升电子工程技能具有很高的实践价值。
2025-05-23 23:18:12 16.49MB
1