基于CC1101的无线通信实习报告
通信实习报告范文

通信实习报告范文一、实习背景本次通信实习是我大学期间的一项必修实践课程。
实习期间,我在一家知名的通信设备制造公司进行了为期两个月的实习。
在这个实习期间,我参与了公司的通信产品研发和测试工作,主要负责测试各类通信设备的功能和性能。
二、实习目标和任务1.学习和熟悉公司的通信产品,并了解其基本原理和功能。
2.掌握通信产品的测试方法和流程,学会使用相关的测试工具和设备。
3.参与通信产品的功能测试和性能测试,发现并修复产品存在的缺陷。
4.学习和了解通信行业的最新发展和技术趋势。
三、实习过程与心得体会在实习的第一天,我首先进行了公司的产品培训,了解公司的通信产品和相关技术。
通过培训,我初步了解了通信设备的工作原理和相关技术知识,对于以后的实习工作打下了基础。
在实习过程中,我主要负责通信设备的功能测试和性能测试。
其中,功能测试主要包括通信设备的信号传输、连接稳定性、网络传输等方面的测试;性能测试则主要包括通信设备的带宽、网络延迟、通信速度等方面的测试。
通过这些测试,我能够对通信产品的性能有更深入的了解,并及时发现并解决产品存在的问题。
在实际工作中,我也遇到了一些困难和挑战。
首先,测试设备的操作和使用一开始对我来说比较陌生,需要较长时间的学习和适应。
其次,通信设备的功能非常复杂,需要我细心观察和分析,以确保测试结果的准确性。
另外,由于时间和资源的限制,有时候需要我进行多个项目的测试工作,需要更好地管理和安排时间。
通过这两个月的实习,我学到了很多关于通信设备的知识和技能,进一步提高了自己的专业能力。
我也深刻地认识到了专业知识在实际工作中的重要性以及细心和耐心对于测试工作的必要性。
同时,我也意识到了通信行业的快速发展和不断变化的技术需求,这对于我们学习和专业发展都提出了更高的要求。
四、实习总结与展望通过这次通信实习,我不仅加深了对通信产品和技术的理解,还学到了实际操作和应用技能。
同时,我也提高了团队合作和沟通能力,通过与同事和上级的合作,我能够更好地适应和融入工作环境。
通信工程实习报告

通信工程实习报告一、实习单位概况。
我所在的实习单位是一家专注于通信工程领域的公司,主要业务包括通信网络规划、设计、建设和维护等方面。
公司拥有一支经验丰富、技术过硬的团队,致力于为客户提供高质量的通信解决方案。
二、实习内容。
在实习期间,我主要参与了公司的通信工程项目,包括基站建设、网络优化、通信设备调试等工作。
具体包括以下几个方面:1. 基站建设。
我参与了多个基站建设项目,包括新建基站和现有基站的升级改造。
在项目中,我负责协助工程师进行现场勘察、测量、设备安装和调试等工作。
通过实际操作,我掌握了基站建设的流程和技术要点,对通信设备的安装和调试有了更深入的了解。
2. 网络优化。
在网络优化项目中,我参与了对现有通信网络的性能优化工作。
通过对网络数据的分析和处理,我学习了如何对网络进行优化调整,提高网络的覆盖范围和信号质量。
同时,我也学习了如何使用专业的优化工具和软件,对网络进行参数调整和优化。
3. 通信设备调试。
在通信设备调试方面,我参与了多个设备调试项目,包括天线、收发器、信号处理器等设备的调试工作。
通过这些实际操作,我对不同类型的通信设备有了更深入的了解,掌握了设备调试的技术要点和方法。
三、实习收获。
通过这段时间的实习,我收获了很多。
首先,我对通信工程领域有了更深入的了解,掌握了基础的通信原理和技术知识。
其次,我通过实际操作,提高了自己的动手能力和实际操作技能。
最重要的是,我在实习中结识了很多优秀的工程师和同事,他们的经验和教导对我今后的学习和工作都有很大的帮助。
四、实习总结。
在实习期间,我深刻体会到了通信工程领域的复杂性和挑战性。
通信工程是一个技术含量很高的领域,需要掌握扎实的理论知识和丰富的实践经验。
通过这段实习经历,我对自己未来的发展方向有了更清晰的认识,也对通信工程这个领域有了更深入的了解。
总的来说,这段实习经历对我来说是非常宝贵的。
我将继续努力学习,不断提高自己的专业能力,为将来能够在通信工程领域有所建树而努力奋斗。
无线通信实验报告

无线通信实验报告无线通信实验报告一、引言无线通信是现代社会中不可或缺的一部分,它以无线电波为媒介,使得信息可以在无线环境中传递。
在本次实验中,我们将探索无线通信的基本原理和技术。
本实验分为三个部分:无线信号传输、信号调制与解调以及信号传输中的噪声。
二、无线信号传输在无线通信中,信号的传输是关键环节。
我们使用了一对无线电发射器和接收器进行实验。
首先,我们将发射器和接收器分别连接到电源,并调整频率使其匹配。
然后,我们通过发射器发送一个特定的信号,接收器将接收到的信号传递给示波器进行观察。
实验结果显示,无线信号的传输受到环境的影响。
在开放空间中,信号的传输效果最好,而在有障碍物的环境中,信号会受到衰减和多径效应的影响,导致信号质量下降。
三、信号调制与解调信号调制是将原始信号转换为适合无线传输的形式,而解调则是将接收到的信号还原为原始信号。
在本实验中,我们使用了调频(FM)和调幅(AM)两种常见的调制方式。
通过调频调制,我们可以将音频信号转换为无线电波。
实验中,我们使用示波器观察到调频信号的频谱特征,发现调频信号的频率随着音频信号的变化而改变。
而调幅调制则是通过改变信号的幅度来传输信息。
在解调过程中,我们使用了相应的解调器将接收到的信号还原为原始信号。
实验结果表明,解调过程中会存在一定的失真,尤其是在信号质量较差的情况下。
四、信号传输中的噪声在无线通信中,噪声是无法避免的。
噪声会对信号的传输和接收造成干扰,降低通信质量。
在本实验中,我们使用了噪声发生器模拟了不同强度的噪声环境。
实验结果显示,噪声的强度越大,信号的质量越差。
噪声会使得信号的幅度和频率发生变化,导致信息的丢失和失真。
因此,在无线通信中,我们需要采取一定的措施来降低噪声的影响,如增加信号的功率或使用编码技术。
五、结论通过本次实验,我们深入了解了无线通信的基本原理和技术。
我们了解到信号的传输受到环境和噪声的影响,需要采取相应的措施来提高通信质量。
通信实习报告模板

通信实习报告模板(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作总结、工作计划、演讲致辞、策划方案、合同协议、规章制度、条据文书、诗词鉴赏、教学资料、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays for everyone, such as work summaries, work plans, speeches, planning plans, contract agreements, rules and regulations, doctrinal documents, poetry appreciation, teaching materials, other sample essays, etc. If you want to learn about different sample formats and writing methods, please stay tuned!通信实习报告模板通信实习报告模板(通用3篇)通信实习报告模板篇11 实习目的通过在大唐电信的毕业实习进一步掌握和强化通信专业理论知识的理解,了解当代通信新技术及运营商实际情况,认识3g无线网络、光传输、epon接入网等商用设备,学习其工作原理及领域。
通信专业实习报告

通信专业实习报告一、综述本次实习报告旨在详细阐述我在通信专业实习期间的学习和实践经历。
通过本次实习,我对通信工程领域有了更为深入的了解,并对理论知识在实际工作中的应用有了更为直观的认识。
本实习报告将围绕实习目的、实习单位概况、实习过程及主要内容等方面进行展开。
首先实习的目的在于将所学理论知识与实际工作相结合,提高我在通信工程领域的实际操作能力,为我未来的职业发展打下坚实的基础。
在实习过程中,我主要关注通信技术的实际应用,尤其是无线通信、光纤传输以及通信网络等领域。
实习单位是一家在通信领域具有影响力的知名企业,拥有先进的生产设备和研发技术。
在实习期间,我有幸参与了公司的多个项目,深入了解了通信设备的生产流程和研发过程,对公司的运营模式和管理体系也有了初步的了解。
在实习过程中,我主要参与了通信设备测试、网络优化以及项目管理工作。
通过实际操作,我对通信设备的性能有了更为深入的了解,对网络规划和优化有了更为直观的认识。
同时通过与团队成员的紧密合作,我的团队协作能力和沟通能力也得到了很大的提升。
本次实习让我对通信工程领域有了更为深入的了解,提高了我的实际操作能力,为我未来的职业发展打下了坚实的基础。
在接下来的报告中,我将详细阐述实习过程中的具体工作内容和所遇到的问题及解决方案。
1. 实习目的和意义本次实习的目的和意义在于,通过实际操作和亲身体验,深化理论知识的理解和应用,提高解决实际问题的能力。
实习作为通信专业学习过程中的重要环节,旨在使我们实习生更好地将课堂所学的专业知识与实际工作相结合,理解和掌握通信行业的实际运作情况,以此增强我们的职业素养和实际操作能力。
通过实习我们期望能够了解和掌握通信设备的操作、通信系统的构建和维护,以及通信网络的管理和规划等方面的知识。
此外实习也是我们了解行业发展趋势和市场需求的重要途径,有助于我们明确未来的职业发展方向,并为未来的工作生涯做好充分的准备。
实习的意义不仅在于技能的提升,更在于我们在实践中学会了如何将理论知识转化为实际生产力,如何将个人的学习和职业发展与社会的需求紧密相连。
无线通信系统实习报告

无线通信系统实习报告一、实习背景与目的随着无线通信技术的飞速发展,无线通信系统在各个领域的应用越来越广泛。
为了更好地了解无线通信技术及其应用,提高自己的实际操作能力,我参加了本次无线通信系统实习。
本次实习的主要目的是学习无线通信系统的原理、组成及其应用,掌握无线通信系统的调试和优化方法,培养自己的实际工程实践能力。
二、实习内容与过程1. 实习前的准备在实习开始前,我首先了解了无线通信系统的基本原理、主要技术指标和分类。
同时,学习了无线通信系统中的关键模块,如调制解调器、射频前端、基带处理等。
此外,我还熟悉了无线通信系统的相关设备,如无线网卡、天线、功率放大器等。
2. 实习过程(1)无线通信系统搭建在实习的第一周,我参与了无线通信系统的搭建。
我们小组采用了Zigbee技术,搭建了一个基于Zigbee的无线电阻值检测系统。
该系统主要由Zigbee模块、STC12单片机、高精度参考电阻、被测电阻等组成。
通过STC12内部高8位AD采集电压,利用高精度参考电阻测量分压,计算出被测电阻值。
(2)无线通信系统调试与优化在实习的第二周,我们开始了无线通信系统的调试与优化工作。
首先,我们测试了系统的通信距离,发现其在开阔地带的通信距离可达100米。
然后,我们对系统的信号强度、误码率等性能指标进行了测试,并针对存在的问题进行了优化。
通过调整发射功率、优化天线布局等方式,提高了系统的通信质量和稳定性。
(3)无线通信系统应用实践在实习的第三周,我们开始探讨无线通信系统在实际应用中的可能性。
我们小组将无线通信技术应用于智能家居系统,实现了远程控制家电、实时监控家居环境等功能。
此外,我们还探讨了无线通信技术在工业自动化、智能交通等领域的应用前景。
三、实习收获与体会通过本次实习,我对无线通信系统有了更深入的了解,掌握了无线通信系统的原理、组成及其应用。
在实际操作中,我学会了无线通信系统的调试和优化方法,提高了自己的实际工程实践能力。
通信实习报告4篇(模板)

通信实习报告4篇通信实习报告篇1(4541字)实习目的:为巩固通信工程专业的主业知识,提高对实际操作生产技能的认识,加深对通信相关产品和生产流程的具体,了解更多的关于通信方面课本以外的知识,为以后对本专业课的学习有更好的帮助。
前言:通过近一周的学习,我们从感性上学到了很多东西,也对我们将来的学习和研究方向的确定产生了深远的影响。
通过这次参观实习丰富了本人的理论知识,增强了本人观察能力,开阔了视野,并使我对以后的工作有了定性的认识,真是让我收获颇多。
现将本次实习就参观实习内容、实习收获、以及未来自己努力的方向和此次感想等三方面作以总结。
准备工作:9月1日这一天我们参加了认识实习动员大会,会上带队老师给我们详细说明了实习时的注意事项等各项事宜和这几天实习的统一安排,并鼓励大家见习时要勤于向技术人员提问,希望通过这次实习,使我们对本专业有更好更深入的了解。
一、参观实习内容1.中国地质大学通信系统实验室9月2日在老师的带领下,我们坐车前往中国地质大学,去参观那的通信系统实验室。
在那里我们了解到中国地质大学通信系统实验室是面向本科生和研究生的重要通信与信息技术实验教学基地,集实验教学与科学研究于一体的开放性实验室。
为培养创新性人才提供一个良好的实训环境,为校企共建提供一个合作交流平台。
系统的总目标是建成实验平台。
在跟随老师参观的同时,内部老师介绍到该通信实验系统由华为公司的metro系列光传输产品、c研究了多模光纤传输理论与光纤设计,其中特别重要的是,开发了通过微分模时延(dmd)测量结果的分析来优化预制棒工艺提高多模光纤带宽的关键技术;进行了多模光纤通信系统现场试验;建立了50/125梯度多模光纤(以下简称50-mmf)工业标准;50-mmf投入规模生产。
有代表性的是康宁公司的wilmington光纤厂1979年1月投产以及at6月刚刚通过了10gb/s以太网标准。
这种超高速率lan系统,必需采用激光器作为光源,并配用高性能的新一代多模光纤。
通信工程实习报告

通信工程实习报告我曾经在一家通信公司实习了三个月,这期间我学到了很多关于通信工程的知识。
在实习的过程中,我所在的团队主要负责开发一种新型无线通信技术。
一、实习的第一天我刚来到公司的那一天,感觉公司非常的庞大,大厦高耸入云,而且内部的设计也非常的现代化,让人瞬间就能够感受到这是一家具有强大科技力量的企业。
在人事部工作了一整天之后,我被派到了通信工程部门。
二、学习通信工程知识在通信工程部门,我遇到了我的导师,他给我介绍了很多通信工程的基础知识,例如通信原理、信号处理等等。
我注意到通信工程是一门非常复杂的学科,需要掌握极其深奥的数学和物理知识。
三、参与无线通信技术的研发在接触通信工程基础知识之后,我开始参与我们团队正在开发的无线通信技术。
该技术是一个非常先进的无线传输方案,可以在不同类型的环境下进行数据传输。
在这个项目中,我主要负责设计和编写通信协议,并在模拟环境下进行测试和验证。
四、经验与表现在整个实习期间,我深深意识到了通信工程这个行业的重要性。
作为一个通讯工程师,需要具备较强的一个创新能力,以及对细节的高度关注。
我的优点是工作耐心细致,并注重规划任务和组织发展计划。
我不断思考吸收各方面的经验,和团队成员进行交互,我有着特别良好的沟通与协作能力。
五、总结回想这三个月里,我从零基础开创学习通信工程知识,一步步从理论到实际去开发新技术的过程。
这次实习让我充分认识到工程设计的重要性,深深感受到一个好的工程对于社会和人们的影响与作用。
通过和同事们的互动和经验沉淀,让我更加清晰的知道自己未来职业发展的方向。
最后,我非常感谢这个机会且对这家公司和我的导师表示感谢,我相信这段经历将成为我毕业后职业道路上的一个重要奠定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京化工大学生产实习报告——基于CC1101的串口通信及无线通信院系:专业:班级:姓名:学号:组员:学号:指导教师:助教:完成日期:一、实验名称:基于CC1101的串口通信及无线通信。
二、实习简介:实习的目的是培养学生的实际动手能力,只有让学生真正完成一个产品的生产过程才更具现实意义。
本生产实习的内容注重培养学生硬件和软件的动手能力,为学生毕业后在电子信息、通信等领域,从事软件与硬件的开发和生产工作的培养的基本技能,提升学生的就业竞争力。
三、实习目的1、了解电路板的制造工艺和过程;2、学习电路板焊接前的检查方法;3、认识常用的电子元器件;4、学习电路板焊接的基础知识;5、学习电路板中元件的焊接方法,电源连接器和插排连接器的焊接方法;6、学习C语言单片机的软件编程技术;7、编写串口通信/无线通信/按键程序/液晶显示的驱动程序。
四、实习内容本次生产实习的电路分为两个部分:硬件电路板和软件编程。
硬件电路板主要是将各个器件完好地焊接到电路板上。
软件编程有:串口通信/无线通信/按键程序/液晶显示驱动程序。
五、实习步骤1.原理图和PCB图的绘制:学习发光LED、独立按键、液晶显示器、无线模块的工作原理,以及用AltiumDesigner软件画原理图,PCB图的基本使用方法。
再用AltiumDesigner软件时要根据所用原器件的说明书合理的画封装,选择合适的封装形式。
学习各个模块的功能、特点、实现原理。
根据所提供的设计好的实验模块,分组(3人)进行电路设计、绘制原理图和PCB图,学习掌握RS232通信接口的基本设计方法,设计通信接口的基本电路。
2.电路板的焊接组装与调试:(1)基本技能的训练包括:常用元件的特性,焊接技巧与注意事项,硬件故障的检测方法及模块功能和性能的测试方法。
(2)元件测试、焊接:在检测电子器件和分组的基础上,在贴片联系区进行贴片电阻的焊接训练,最终在线路板上完成元件的焊接与组装。
3.单片机的软件设计:(1)软件使用方法:学习C语言编译环境的功能及实现方法(主要是Keil编译器)。
(2)软件设计与编程:编写串口通信/无线通信/按键程序/液晶显示的驱动程序。
(3)调试程序:六、实习所需工具硬件工具:电烙铁、焊锡丝、镊子、助焊剂、等。
软件工具:Keil编译器,STC_ISP V4.80 以及AltiumDesigner6.9等。
七、实习过程1.用AltiumDesigner软件画PCB原理图(1)原理图的绘制我们参考了各种AltiumDesigner详细使用教程,按照参考的原理图绘制自己的原理图,根据参考的原理图我们建造了自己的原理图库,根据元件封装说明建造了自己的封装库。
如图:图1 原理图库图2 封装库图3 原理图(2)PCB 的绘制原理图画好后,设定好规则,我们采用自动布线的方法。
图4 设计规则图5 PCB(3)设计规则检查2.板子的焊接我们参考我们用了一下午的时间就焊好了板子,其中感觉比较困难的就是贴片元件的焊接,不过在我们组员的精细配合下完成了。
焊接前,我们主要测量了二极管的极性,以免焊反了带来不必要的麻烦,毕竟磨刀不误砍柴工。
焊接过程中,注意不能焊坏元件,焊锡的量要适中,要先焊元件低的,在焊高的,焊底座时一定要保证每一个引脚都焊住,不要出现短路。
3.程序的编写我们先编写了一个串口通信实习代码,代码如下,经反复调试,用STC_ISP V4.80烧录后成功实现了通过在键盘上键入相应的字符,在液晶屏上显示的功能。
成功后我们有进行了无线通信及键盘输入代码的编写,经过对CC1101手册的反复熟读,查阅相关的资料,我们用时三天完成了该功能的实现,最后我们又对改代码进行了改进,使其更加的人性化。
实现了在reset键按下后屏幕清屏并显示WELCOME!的功能及在发送模式下,按send键,接收机上显示发射机发送的信息,并显示“OK!”,询问接收方是否收到,并反馈,(注意:发送机按下“send”后,要立刻切换到“READ”模式)此时,接收机切换到“SEND”模式,键入“SHOUDAO(收到)”进行对发送机的应答。
接收机收到信息“SHOUDAO”,即完成此次通信。
八、参考资料1602字符模块使用手册STC12C5A数据手册SP32332数据手册CC1101数据手册马忠梅《单片机的C语言的应用程序设计》,北京航空航天大学出版社九、程序代码#include <STC12C5A.h>#include <intrins.h>//*************************made by 钱远鹏*******************************//#define u8 unsigned char#define u16 unsigned int//*************************made by 钱远鹏*******************************//#define WRITE_BURST 0x40 //连续写入#define READ_SINGLE 0x80 //读#define READ_BURST 0xC0 //连续读#define BYTES_IN_RXFIFO 0x7F //接收缓冲区的有效字节数#define CRC_OK 0x80 //CRC校验通过位标志//***********************************CC1100接口*************************************************//*************************made by 钱远鹏*******************************//sbit GDO0 =P0^6;sbit GDO2 =P0^7;sbit MISO =P1^6;sbit MOSI =P1^5;sbit SCK =P1^7;sbit CSN =P3^7;//*************************made by 钱远鹏*******************************////************************************lcd***************************** *******************////*************************made by 钱远鹏*******************************//#define uchar unsigned char#define uint unsigned intunsigned char LCD_DATA;sbit RS = P3^4;sbit RW = P3^5;sbit EN = P3^6;sbit S1 = P0^5;sbit S2 = P0^4;sbit S3 = P0^3;sbit S4 = P0^2;sbit S5 = P0^1;sbit S6 = P0^0;sbit SW1 = P1^0;sbit SW2 = P1^1;sbit SW3 = P1^2;sbit SW4 = P1^3;sbit SW5 = P1^4;int flag;uchar DATA[32];bit SWRS;//*************************made by 钱远鹏*******************************////***************更多功率参数设置可详细参考DATACC1100英文文档中第48-49页的参数表******************//u8 PaTabel[8] = {0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04}; //-30dBm功率最小xdata u8 PaTabel[8] = {0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60}; //0dBm //u8 PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0}; //10dBm功率最大//******************************************************************** *********************void SpiInit(void);void CpuInit(void);void RESET_CC1100(void);void POWER_UP_RESET_CC1100(void);void halSpiWriteReg(u8 addr, u8 value);void halSpiWriteBurstReg(u8 addr, u8 *buffer, u8 count);void halSpiStrobe(u8 strobe);u8 halSpiReadReg(u8 addr);void halSpiReadBurstReg(u8 addr, u8 *buffer, u8 count);u8 halSpiReadStatus(u8 addr);void halRfWriteRfSettings(void);void halRfSendPacket(u8 *txBuffer, u8 size);u8 halRfReceivePacket(u8 *rxBuffer, u8 *length);//******************************************************************** *********************//******************************************************************** *********************// CC1100 STROBE, CONTROL AND STATUS REGSITER#define CCxxx0_IOCFG2 0x00 // GDO2 output pin configuration #define CCxxx0_IOCFG1 0x01 // GDO1 output pin configuration #define CCxxx0_IOCFG0 0x02 // GDO0 output pin configuration #define CCxxx0_FIFOTHR 0x03 // RX FIFO and TX FIFO thresholds#define CCxxx0_SYNC1 0x04 // Sync word, high u8#define CCxxx0_SYNC0 0x05 // Sync word, low u8#define CCxxx0_PKTLEN 0x06 // Packet length#define CCxxx0_PKTCTRL1 0x07 // Packet automation control#define CCxxx0_PKTCTRL0 0x08 // Packet automation control#define CCxxx0_ADDR 0x09 // Device address#define CCxxx0_CHANNR 0x0A // Channel number#define CCxxx0_FSCTRL1 0x0B // Frequency synthesizer control #define CCxxx0_FSCTRL0 0x0C // Frequency synthesizer control #define CCxxx0_FREQ2 0x0D // Frequency control word, high u8 #define CCxxx0_FREQ1 0x0E // Frequency control word, middle u8#define CCxxx0_FREQ0 0x0F // Frequency control word, low u8 #define CCxxx0_MDMCFG4 0x10 // Modem configuration#define CCxxx0_MDMCFG3 0x11 // Modem configuration#define CCxxx0_MDMCFG2 0x12 // Modem configuration#define CCxxx0_MDMCFG1 0x13 // Modem configuration#define CCxxx0_MDMCFG0 0x14 // Modem configuration#define CCxxx0_DEVIATN 0x15 // Modem deviation setting#define CCxxx0_MCSM2 0x16 // Main Radio Control State Machine configuration#define CCxxx0_MCSM1 0x17 // Main Radio Control State Machine configuration#define CCxxx0_MCSM0 0x18 // Main Radio Control State Machine configuration#define CCxxx0_FOCCFG 0x19 // Frequency Offset Compensation configuration#define CCxxx0_BSCFG 0x1A // Bit Synchronization configuration#define CCxxx0_AGCCTRL2 0x1B // AGC control#define CCxxx0_AGCCTRL1 0x1C // AGC control#define CCxxx0_AGCCTRL0 0x1D // AGC control#define CCxxx0_WOREVT1 0x1E // High u8 Event 0 timeout#define CCxxx0_WOREVT0 0x1F // Low u8 Event 0 timeout#define CCxxx0_WORCTRL 0x20 // Wake On Radio control#define CCxxx0_FREND1 0x21 // Front end RX configuration#define CCxxx0_FREND0 0x22 // Front end TX configuration#define CCxxx0_FSCAL3 0x23 // Frequency synthesizer calibration #define CCxxx0_FSCAL2 0x24 // Frequency synthesizer calibration #define CCxxx0_FSCAL1 0x25 // Frequency synthesizer calibration #define CCxxx0_FSCAL0 0x26 // Frequency synthesizer calibration #define CCxxx0_RCCTRL1 0x27 // RC oscillator configuration#define CCxxx0_RCCTRL0 0x28 // RC oscillator configuration#define CCxxx0_FSTEST 0x29 // Frequency synthesizer calibration control#define CCxxx0_PTEST 0x2A // Production test#define CCxxx0_AGCTEST 0x2B // AGC test#define CCxxx0_TEST2 0x2C // Various test settings#define CCxxx0_TEST1 0x2D // Various test settings#define CCxxx0_TEST0 0x2E // Various test settings// Strobe commands#define CCxxx0_SRES 0x30 // Reset chip.#define CCxxx0_SFSTXON 0x31 // Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1).// If in RX/TX: Go to a wait state where only the synthesizer is// running (for quick RX / TX turnaround).#define CCxxx0_SXOFF 0x32 // Turn off crystal oscillator.#define CCxxx0_SCAL 0x33 // Calibrate frequency synthesizer and turn it off// (enables quick start).#define CCxxx0_SRX 0x34 // Enable RX. Perform calibration first if coming from IDLE and// MCSM0.FS_AUTOCAL=1.#define CCxxx0_STX 0x35 // In IDLE state: Enable TX. Perform calibration first if// MCSM0.FS_AUTOCAL=1. If in RX state and CCA is enabled:// Only go to TX if channel is clear. #define CCxxx0_SIDLE 0x36 // Exit RX / TX, turn off frequency synthesizer and exit// Wake-On-Radio mode if applicable.#define CCxxx0_SAFC 0x37 // Perform AFC adjustment of the frequency synthesizer#define CCxxx0_SWOR 0x38 // Start automatic RX polling sequence (Wake-on-Radio)#define CCxxx0_SPWD 0x39 // Enter power down mode when CSn goes high.#define CCxxx0_SFRX 0x3A // Flush the RX FIFO buffer.#define CCxxx0_SFTX 0x3B // Flush the TX FIFO buffer.#define CCxxx0_SWORRST 0x3C // Reset real time clock.#define CCxxx0_SNOP 0x3D // No operation. May be used to pad strobe commands to two// u8s for simpler software.#define CCxxx0_PARTNUM 0x30#define CCxxx0_VERSION 0x31#define CCxxx0_FREQEST 0x32#define CCxxx0_LQI 0x33#define CCxxx0_RSSI 0x34#define CCxxx0_MARCSTATE 0x35#define CCxxx0_WORTIME1 0x36#define CCxxx0_WORTIME0 0x37#define CCxxx0_PKTSTATUS 0x38#define CCxxx0_VCO_VC_DAC 0x39#define CCxxx0_TXBYTES 0x3A#define CCxxx0_RXBYTES 0x3B#define CCxxx0_PATABLE 0x3E#define CCxxx0_TXFIFO 0x3F#define CCxxx0_RXFIFO 0x3F// RF_SETTINGS is a data structure which contains all relevant CCxxx0 registers typedef struct S_RF_SETTINGS{// u8 FSCTRL2; //自已加的u8 FSCTRL1; // Frequency synthesizer control.u8 FSCTRL0; // Frequency synthesizer control.u8 FREQ2; // Frequency control word, high u8.u8 FREQ1; // Frequency control word, middle u8.u8 FREQ0; // Frequency control word, low u8.u8 MDMCFG4; // Modem configuration.u8 MDMCFG3; // Modem configuration.u8 MDMCFG2; // Modem configuration.u8 MDMCFG1; // Modem configuration.u8 MDMCFG0; // Modem configuration.u8 CHANNR; // Channel number.u8 DEVIATN; // Modem deviation setting (when FSK modulation is enabled).u8 FREND1; // Front end RX configuration.u8 FREND0; // Front end RX configuration.u8 MCSM0; // Main Radio Control State Machine configuration.u8 FOCCFG; // Frequency Offset Compensation Configuration.u8 BSCFG; // Bit synchronization Configuration.u8 AGCCTRL2; // AGC control.u8 AGCCTRL1; // AGC control.u8 AGCCTRL0; // AGC control.u8 FSCAL3; // Frequency synthesizer calibration.u8 FSCAL2; // Frequency synthesizer calibration.u8 FSCAL1; // Frequency synthesizer calibration.u8 FSCAL0; // Frequency synthesizer calibration.u8 FSTEST; // Frequency synthesizer calibration controlu8 TEST2; // Various test settings.u8 TEST1; // Various test settings.u8 TEST0; // Various test settings.u8 IOCFG2; // GDO2 output pin configurationu8 IOCFG0; // GDO0 output pin configurationu8 PKTCTRL1; // Packet automation control.u8 PKTCTRL0; // Packet automation control.u8 ADDR; // Device address.u8 PKTLEN; // Packet length.} RF_SETTINGS;/////////////////////////////////////////////////////////////////const RF_SETTINGS rfSettings ={// 0x00,0x08, // FSCTRL1 Frequency synthesizer control.0x00, // FSCTRL0 Frequency synthesizer control.0x10, // FREQ2 Frequency control word, high byte. //基频设置0xA7, // FREQ1 Frequency control word, middle byte. //基频设置0x62, // FREQ0 Frequency control word, low byte. //基频设置0x5B, // MDMCFG4 Modem configuration. //传输速度设置信道滤波器设置99.9756KBaud 325KHz0xF8, // MDMCFG3 Modem configuration. //传输速度设置0x03, // MDMCFG2 Modem configuration. //调制格式设置2FSK 曼彻斯特编码否同步字限定检测到30/32同步字位0x22, // MDMCFG1 Modem configuration. //FEC/交错编码否前导字节数 4 指数信道间隔2位0xF8, // MDMCFG0 Modem configuration. //信道频率间隔的8位尾数与MDMCFD1后2位共同决定频率间隔0x00, // CHANNR Channel number. //通道数量0x47, // DEVIATN Modem deviation setting (when FSK modulation is enabled).0xB6, // FREND1 Front end RX configuration. //RX 配置0x10, // FREND0 Front end RX configuration. //TX配置0x18, // MCSM0 Main Radio Control State Machine configuration.//状态切换需要进行的校准终止计数64(建议)无线控制特性(不需要)不用强制在sleep状态开启XOSC0x1D, // FOCCFG Frequency Offset Compensation Configuration.//频率补偿?0x1C, // BSCFG Bit synchronization Configuration. //位同步配置?0xC7, // AGCCTRL2 AGC control. //RSSI 与CS相关0x00, // AGCCTRL1 AGC control. //RSSI 与CS相关0xB2, // AGCCTRL0 AGC control. //RSSI 与CS相关0xEA, // FSCAL3 Frequency synthesizer calibration. //频率合成校准0x2A, // FSCAL2 Frequency synthesizer calibration. //频率合成校准0x00, // FSCAL1 Frequency synthesizer calibration. //频率合成校准0x11, // FSCAL0 Frequency synthesizer calibration. //频率合成校准0x59, // FSTEST Frequency synthesizer calibration. //测试用(不改变)0x81, // TEST2 Various test settings. //FIFOTHR 寄存器测试当FIFOTHR里面的ADC_RETENTION为1时,从SLEEP唤醒后TEST1=0x35,TEST2=0x810x35, // TEST1 Various test settings. //FIFOTHR 寄存器测试当FIFOTHR里面的ADC_RETENTION为1时,从SLEEP唤醒后TEST1=0x35,TEST2=0x810x09, // TEST0 Various test settings. //开启/关闭VCO选择校准级,其他按参考设计0x0B, // IOCFG2 GDO2 output pin configuration. //GDO2功能配置:串行时钟,在RX下,在下降边缘上建立数据,TX下载上升边缘对数据采样0x06, // IOCFG0 GDO0 output pin configuration. //GDO0功能配置:发送/接收到同步字时置位,RX下,校验失败或RXFIFO溢出取消置位,TX下,FIFO下溢取消置位0x04, // PKTCTRL1 Packet automation control. //数据包自动控制:无地址校验,与参考一致0x05, // PKTCTRL0 Packet automation control. //数据包自动控制:关闭白化,使用RX和TX的FIFO,TX/RX下开启CRC,可变数据包长度,与参考一致0x00, // ADDR Device address. //无地址校PKTCTRL1控制(不用改)0xff // PKTLEN Packet length. //固定数据包长度模式设置长度,由于PKTCTRL0设置为可变数据包,此位不管};//******************************************************************** *********************//函数名:delay(unsigned int s)//输入:时间//输出:无//功能描述:普通廷时,内部用//******************************************************************** *********************static void delay(unsigned int s){unsigned int i;for(i=0; i<s; i++);for(i=0; i<s; i++);}void halWait(u16 timeout) {do {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();} while (--timeout);}void SpiInit(void){CSN=0;SCK=0;CSN=1;}/******************************************************************** *********************//函数名:CpuInit()//输入:无//输出:无//功能描述:SPI初始化程序/******************************************************************** *********************/void CpuInit(void){SpiInit();delay(5000);}//******************************************************************** *********************//函数名:SpisendByte(u8 dat)//输入:发送的数据//输出:无//功能描述:SPI发送一个字节//******************************************************************** *********************u8 SpiTxRxByte(u8 dat){u8 i,temp;temp = 0;SCK = 0;for(i=0; i<8; i++){if(dat & 0x80){MOSI = 1;}else MOSI = 0;dat <<= 1;SCK = 1;_nop_();_nop_();temp <<= 1;if(MISO)temp++;SCK = 0;_nop_();_nop_();}return temp;}//******************************************************************** *********************//函数名:void RESET_CC1100(void)//输入:无//输出:无//功能描述:复位CC1100//******************************************************************** *********************void RESET_CC1100(void){CSN = 0;while (MISO);SpiTxRxByte(CCxxx0_SRES); //写入复位命令while (MISO);CSN = 1;}//******************************************************************** *********************//函数名:void POWER_UP_RESET_CC1100(void)//输入:无//输出:无//功能描述:上电复位CC1100//******************************************************************** *********************void POWER_UP_RESET_CC1100(void){CSN = 1;halWait(1);CSN = 0;halWait(1);CSN = 1;halWait(41);RESET_CC1100(); //复位CC1100}//******************************************************************** *********************//函数名:void halSpiWriteReg(u8 addr, u8 value)//输入:地址和配置字//输出:无//功能描述:SPI写寄存器//******************************************************************** *********************void halSpiWriteReg(u8 addr, u8 value){CSN = 0;while (MISO);SpiTxRxByte(addr); //写地址SpiTxRxByte(value); //写入配置CSN = 1;}//******************************************************************** *********************//函数名:void halSpiWriteBurstReg(u8 addr, u8 *buffer, u8 count)//输入:地址,写入缓冲区,写入个数//输出:无//功能描述:SPI连续写配置寄存器//******************************************************************** *********************void halSpiWriteBurstReg(u8 addr, u8 *buffer, u8 count){u8 i, temp;temp = addr | WRITE_BURST;CSN = 0;while (MISO);SpiTxRxByte(temp);for (i = 0; i < count; i++){SpiTxRxByte(buffer[i]);}CSN = 1;}//******************************************************************** *********************//函数名:void halSpiStrobe(u8 strobe)//输入:命令//输出:无//功能描述:SPI写命令//******************************************************************** *********************void halSpiStrobe(u8 strobe){CSN = 0;while (MISO);SpiTxRxByte(strobe); //写入命令CSN = 1;}//******************************************************************** *********************//函数名:u8 halSpiReadReg(u8 addr)//输入:地址//输出:该寄存器的配置字//功能描述:SPI读寄存器//******************************************************************** *********************u8 halSpiReadReg(u8 addr){u8 temp, value;temp = addr|READ_SINGLE;//读寄存器命令CSN = 0;while (MISO);SpiTxRxByte(temp);value = SpiTxRxByte(0);CSN = 1;return value;}//******************************************************************** *********************//函数名:void halSpiReadBurstReg(u8 addr, u8 *buffer, u8 count)//输入:地址,读出数据后暂存的缓冲区,读出配置个数//输出:无//功能描述:SPI连续写配置寄存器//******************************************************************** *********************void halSpiReadBurstReg(u8 addr, u8 *buffer, u8 count){u8 i,temp;temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令CSN = 0;while (MISO);SpiTxRxByte(temp);for (i = 0; i < count; i++){buffer[i] = SpiTxRxByte(0);}CSN = 1;}//******************************************************************** *********************//函数名:u8 halSpiReadReg(u8 addr)//输入:地址//输出:该状态寄存器当前值//功能描述:SPI读状态寄存器//******************************************************************** *********************u8 halSpiReadStatus(u8 addr){u8 value,temp;temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令CSN = 0;while (MISO);SpiTxRxByte(temp);value = SpiTxRxByte(0);CSN = 1;return value;}//******************************************************************** *********************//函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)//输入:无//输出:无//功能描述:配置CC1100的寄存器//******************************************************************** *********************void halRfWriteRfSettings(void){// Write register settingshalSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1);halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL0);halSpiWriteReg(CCxxx0_FREQ2, rfSettings.FREQ2);halSpiWriteReg(CCxxx0_FREQ1, rfSettings.FREQ1);halSpiWriteReg(CCxxx0_FREQ0, rfSettings.FREQ0);halSpiWriteReg(CCxxx0_MDMCFG4, rfSettings.MDMCFG4);halSpiWriteReg(CCxxx0_MDMCFG3, rfSettings.MDMCFG3);halSpiWriteReg(CCxxx0_MDMCFG2, rfSettings.MDMCFG2);halSpiWriteReg(CCxxx0_MDMCFG1, rfSettings.MDMCFG1);halSpiWriteReg(CCxxx0_MDMCFG0, rfSettings.MDMCFG0);halSpiWriteReg(CCxxx0_CHANNR, rfSettings.CHANNR);halSpiWriteReg(CCxxx0_DEVIATN, rfSettings.DEVIATN);halSpiWriteReg(CCxxx0_FREND1, rfSettings.FREND1);halSpiWriteReg(CCxxx0_FREND0, rfSettings.FREND0);halSpiWriteReg(CCxxx0_MCSM0 , rfSettings.MCSM0 );halSpiWriteReg(CCxxx0_FOCCFG, rfSettings.FOCCFG);halSpiWriteReg(CCxxx0_BSCFG, rfSettings.BSCFG);halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);halSpiWriteReg(CCxxx0_FSCAL3, rfSettings.FSCAL3);halSpiWriteReg(CCxxx0_FSCAL2, rfSettings.FSCAL2);halSpiWriteReg(CCxxx0_FSCAL1, rfSettings.FSCAL1);halSpiWriteReg(CCxxx0_FSCAL0, rfSettings.FSCAL0);halSpiWriteReg(CCxxx0_FSTEST, rfSettings.FSTEST);halSpiWriteReg(CCxxx0_TEST2, rfSettings.TEST2);halSpiWriteReg(CCxxx0_TEST1, rfSettings.TEST1);halSpiWriteReg(CCxxx0_TEST0, rfSettings.TEST0);halSpiWriteReg(CCxxx0_IOCFG2, rfSettings.IOCFG2);halSpiWriteReg(CCxxx0_IOCFG0, rfSettings.IOCFG0);halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);halSpiWriteReg(CCxxx0_ADDR, rfSettings.ADDR);halSpiWriteReg(CCxxx0_PKTLEN, rfSettings.PKTLEN);}//******************************************************************** *********************//函数名:void halRfSendPacket(u8 *txBuffer, u8 size)//输入:发送的缓冲区,发送数据个数//输出:无//功能描述:CC1100发送一组数据//******************************************************************** *********************void halRfSendPacket(u8 *txBuffer, u8 size){halSpiWriteReg(CCxxx0_TXFIFO, size);halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据halSpiStrobe(CCxxx0_STX); //进入发送模式发送数据// Wait for GDO0 to be set -> sync transmittedwhile (!GDO0);// Wait for GDO0 to be cleared -> end of packetwhile (GDO0);halSpiStrobe(CCxxx0_SFTX);}void setRxMode(void){halSpiStrobe(CCxxx0_SRX); //进入接收状态}u8 halRfReceivePacket(u8 *rxBuffer, u8 *length){u8 status[2];u8 packetLength;u8 i=(*length)*4; // 具体多少要根据datarate和length来决定halSpiStrobe(CCxxx0_SRX); //进入接收状态delay(2);while (GDO0){delay(2);--i;if(i<1)return 0;}if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0{packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度if (packetLength <= *length) //如果所要的有效数据长度小于等于接收到的数据包的长度{halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据*length = packetLength; //把接收数据长度的修改为当前数据的长度// Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); //读出CRC校验位halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区return (status[1] & CRC_OK); //如果校验成功返回接收成功}else{*length = packetLength;halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区return 0;}}elsereturn 0;}//******************************************************************** *********************//************************************* lcd*********************************************//void Delayms(uint ms){uchar i,j;while(ms--){for(j=0;j<24;j++)for(i=0;i<120;i++);}}uchar Busy_Check(){uchar LCD_Status;RS = 0;RW = 1;EN = 1;Delayms(1);LCD_Status = P2;EN = 0;return LCD_Status;}void Write_LCD_Command(uchar cmd) {while((Busy_Check()&0x80)==0x80);RS = 0;RW = 0;EN = 0;P2 = cmd;EN = 1;Delayms(1);EN = 0;}void Write_LCD_Data(uchar dat){while((Busy_Check()&0x80)==0x80);RS = 1;RW = 0;EN = 0;P2 = dat;EN = 1;Delayms(1);EN = 0;}void Initialize_LCD(){Write_LCD_Command(0x38);Delayms(1);Write_LCD_Command(0x01);Delayms(1);Write_LCD_Command(0x06);Delayms(1);Write_LCD_Command(0x0f);Delayms(1);}void ShowString(uchar x,uchar y,uchar *s) {uchar i = 0;if(y == 0)Write_LCD_Command(0x80 | x);if(y == 1)Write_LCD_Command(0xc0 | x);Write_LCD_Data(*s);}void Initialize_LCD();void exint0() interrupt 0{Delayms(1000);if(SWRS==0){SWRS=1;P4=~P4;}else{SWRS=0;P4=~P4;}}void exint1() interrupt 2{uint flagsw = 0;EA=0;Delayms(50);///////////// S1=0 ////////////////////S1 = 0;S2 = 1;S3 = 1;S4 = 1;S5 = 1;S6 = 1;if(SW1 == 0){LCD_DATA = 0x41;flag = 1;flagsw = 1;}else if(SW2 == 0){LCD_DATA = 0x47;flag = 1;flagsw = 1;}else if(SW3 == 0){LCD_DATA = 0x4D;flag = 1;flagsw = 1;}else if(SW4 == 0){LCD_DATA = 0x53;flag = 1;flagsw = 1;}else if(SW5 == 0){LCD_DATA = 0x59;flag = 1;flagsw = 1;}///////////// S1=0 //////////////////// ///////////// S2=0 //////////////////// if(flagsw != 1){S1 = 1;S2 = 0;S3 = 1;S4 = 1;S5 = 1;S6 = 1;if(SW1 == 0){LCD_DATA = 0x42;flag = 1;flagsw = 1;}else if(SW2 == 0){LCD_DATA = 0x48;flag = 1;flagsw = 1;}else if(SW3 == 0){LCD_DATA = 0x4E;flag = 1;flagsw = 1;}else if(SW4 == 0){LCD_DATA = 0x54;flag = 1;flagsw = 1;}else if(SW5 == 0){LCD_DATA = 0x5A;flag = 1;flagsw = 1;}}///////////// S2=0 //////////////////// ///////////// S3=0 //////////////////// if(flagsw != 1){S1 = 1;S2 = 1;S3 = 0;S4 = 1;S5 = 1;S6 = 1;if(SW1 == 0){LCD_DATA = 0x43;flag = 1;flagsw = 1;}else if(SW2 == 0){LCD_DATA = 0x49;flag = 1;flagsw = 1;}else if(SW3 == 0 ){LCD_DATA = 0x4F;flag = 1;flagsw = 1;}else if(SW4 == 0){LCD_DATA = 0x55;flag = 1;flagsw = 1;}else if(SW5 == 0){LCD_DATA = 0x20;flag = 1;flagsw = 1;}}///////////// S3=0 //////////////////// ///////////// S4=0 //////////////////// if(flagsw != 1){S1 = 1;S2 = 1;S3 = 1;S4 = 0;S5 = 1;S6 = 1;if(SW1 == 0){LCD_DATA = 0x44;flag = 1;flagsw = 1;}else if(SW2 == 0){LCD_DATA = 0x4A;flag = 1;flagsw = 1;}else if(SW3 == 0){LCD_DATA = 0x50;flag = 1;flagsw = 1;}else if(SW4 == 0){LCD_DATA = 0x56;flag = 1;flagsw = 1;}else if(SW5 == 0){LCD_DATA = 0x00;flag = 1;flagsw = 1;}}///////////// S4=0 //////////////////// ///////////// S5=0 ////////////////////if(flagsw != 1){S1 = 1;S2 = 1;S3 = 1;S4 = 1;S5 = 0;S6 = 1;if(SW1 == 0){LCD_DATA = 0x45;flag = 1;flagsw = 1;}else if(SW2 == 0){LCD_DATA = 0x4B;flag = 1;flagsw = 1;}else if(SW3 == 0){LCD_DATA = 0x51;flag = 1;flagsw = 1;}else if(SW4 == 0){LCD_DATA = 0x57;flag = 1;flagsw = 1;}else if(SW5 == 0){LCD_DATA = 0x3F;flag = 1;flagsw = 1;}}///////////// S5=0 ///////////////////////////////// S6=0 //////////////////// if(flagsw != 1){S1 = 1;S2 = 1;S3 = 1;S4 = 1;S5 = 1;S6 = 0;if(SW1 == 0){LCD_DATA = 0x46;flag = 1;flagsw = 1;}else if(SW2 == 0){LCD_DATA = 0x4C;flag = 1;flagsw = 1;}else if(SW3 == 0){LCD_DATA = 0x52;flag = 1;flagsw = 1;}else if(SW4 == 0){LCD_DATA = 0x58;flag = 1;flagsw = 1;}else if(SW5 == 0){LCD_DATA = 0x01;flag = 1;flagsw = 1;}}///////////// S6=0 ////////////////////P0&=0xc0;EA=1;}//************************************* lcd*********************************************//void main(void){//********************************** lcd******************************************//int i,j;//*********************************** lcd***************************************//xdata u8TxBuf[32]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0 x20,0x20,0x20,0x20}; // 8字节, 如果需要更长的数据包,请正确设置xdata u8RxBuf[32]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0 x20,0x20,0x20,0x20};P4SW = P4SW | 0x70;SWRS=1;P4=0x20;//*********************************** lcd***************************************//i=0;j=0;IE = 0x81;IT1 = 1;。