天城lcs-电压采集报警控制器说明书.doc
电压采集报警控制器目 录第 1 章 STC12C5A60S2单片机根底知识1 1.1概述1 1.2功能及根底参数简介11.3引脚功能介绍2第2章 设计开发软件介绍42.1 KEIL4介绍42.2 PROTEUS介绍42.3 Altim_Designer介绍52.4串口调试助手介绍52.5 STC-ISP下载软件介绍5第3章 电压采集报警控制器硬件电路设计73.1电压采集报警控制器运行流程图73.2芯片选择选择及局部电路103.3 PROTEUS仿真电路原理图143.4硬件调试串口调试助手实时数据153.5 PCB印刷电路板图16结论17参考文献18附录19第一章 STC12C5A60S2单片机根底知识1.1 概述: STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MA*810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。1.2 功能及根底参数简介: 1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051; 2.工作电压:STC12C5A60S2系列工作电压:5.5V-3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V-2.2V(3V单片机); 3.工作频率范围:0 - 35MHz,相当于普通8051的 0420MHz; 4.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节; 5.片上集成1280字节RAM; 6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可到达20mA,但整个芯片最大不要超过55Ma; 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片; 8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM); 9.看门狗; 10.内部集成MA*810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地); 11.外部掉电检测电路:在P4.6口有一个低压门槛比较器,5V单片机为1.32V,误差为+/-5%,3.3V单片机为1.30V,误差为+/-3%; 12.时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟,常温下内部R/C振荡器频率为:5.0V单片机为:11MHz15.5MHz,3.3V单片机为:8MHz12MHz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准; 13.共4个16位定时器 两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器 再加上2路PCA模块可再实现2个16位定时器; 14. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟; 15.外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块, Power Down模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4, T1/P3.5, R*D/P3.0,CCP0/P1.3(也可通过存放器设置到P4.2 ), CCP1/P1.4 (也可通过存放器设置到P4.3); 16. PWM(2路)/PCA(可编程计数器阵列,2路):也可用来当2路D/A使用也可用来再实现2个定时器也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持);17.A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)18.通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口; 19. STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,R*D2/P1.2(可通过存放器设置到P4.2),T*D2/P1.3(可通过存放器设置到P4.3); 20.工作温度范围:-40 - +85(工业级) / 0 - 75(商业级) 21.封装:PDIP-40,LQFP-44,LQFP-48 I/O口不够时,可用2到3根普通I/O口线外接 74HC164/165/595(均可级联)来扩展I/O口, 还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。1.3 引脚功能介绍:图1-1STC12C5A60S2管脚图各引脚功能简单介绍如下: VCC:供电电压; GND:接地; P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写"1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进展校验时,P0输出原码,此时P0外部电位必须被拉高; P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入"1后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收; P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写"1时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。在给出地址"1时,它利用内部上拉的优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号; P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入"1后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口: P3.0 R*D(串行输入口) P3.1 T*D(串行输出口) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 WR (外部数据存储器写选通) P3.7 RD (外部数据存储器读选通) 同时P3口同时为闪烁编程和编程校验接收一些控制信号; RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间; ALE / PROG :当外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想制止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOV*,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE制止,置位无效; PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在内部部数据存储器时,这两次有效的PSEN信号将不出现; EA/VPP:当EA保持低电平时,外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP); *TAL1:反向振荡放大器的输入及内部时钟工作电路的输入;*TAL2:来自反向振荡器的输出;第2章 设计开发软件介绍2.1 KEIL4介绍:Keil uVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的外表对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。最新的Keil uVision4 IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。uVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。uVision4在Vision3 IDE的根底上,增加了更多群众化的功能。·多显示器和灵活的窗口管理系统·系统浏览器窗口的显示设备外设存放器信息·调试复原视图创立并保存多个调试窗口布局·多工程工作区简化与众多的工程2.2 PROTEUS介绍:Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2021年又增加了Corte*和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。Proteus软件具有其它EDA工具软件例:multisim的功能: 1原理布图 2PCB自动或人工布线 3SPICE电路仿真革命性的特点: 1互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,局部SPI器件,局部IIC器件。 2仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境.2.3 Altim_Designer介绍: 电路设计自动化 EDAElectronic Design Automation指的就是将电路设计中各种工作交由计算机来协助完成。如电路原理图Schematic的绘制、印刷电路板PCB文件的制作、执行电路仿真Simulation等设计工作。随着电子科技的蓬勃开展,新型元器件层出不穷,电子线路变得越来越复杂,电路的设计工作已经无法单纯依靠手工来完成,电子线路计算机辅助设计已经成为必然趋势,越来越多的设计人员使用快捷、高效的CAD设计软件来进展辅助电路原理图、印制电路板图的设计,打印各种报表。 Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows *P操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进展设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。Altium Designer 除了全面继承包括Protel 99SE、Protel D*P在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。 由于Altium Designer 在继承先前Protel软件功能的根底上,综合了FPGA设计和嵌入式系统软件设计功能,Altium Designer 对计算机的系统需求比先前的版本要高一些。主要功能:1、原理图设计;2、印刷电路板设计;3、FPGA的开发;4、嵌入式开发;5、3D PCB设计。2.4 串口调试助手介绍: 串口调试助手是串口调试相关工具,有多个版本。如:友善串口调试助手,支持9600,19200等常用各种波特率及自定义波特率,可以自动识别串口,能设置校验、数据位和停顿位,能以ASCII码或十六进制接收或发送任何数据或字符,可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。 硬件连接方面,传统台式PC机支持标准RS232接口,但是带有串口的笔记本很少见,所以需要USB/232转换接口,并且安装相应驱动程序。2.5 STC-ISP下载软件介绍:STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。操作说明:1翻开STC-ISP,如以下图界面,在MCU Type栏目下选中单片机;2)根据您的9针数据线连接情况选中端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些;3)先确认硬件连接正确,按点击"翻开文件"并在对话框内找到您要下载的HE*文件;4选中两个条件项,这样可以使您在每次编译KEIL时HE*代码能自动加载到STC-ISP,点击"Download/下载";5)手动按下电源开关便即可把可执行文件HE*写入到单片机内;6程序写入完毕,目标板开场运行程序结果;图2-1STC下载器界面图第三章 电压采集报警控制器硬件电路设计3.1电压采集报警控制器运行流程图:STC12C5A60S2引脚排序及根本功能同AT89S51作为主控芯片,设计电压采集控制器。一、设计LG4042BH数码管显示实时电压;二、设计AD电压采集电路,进展实时电压采集;三、设计串口电路,将实时电压值传给串口调试助手。四、设计蜂鸣器电路,当电压降到设定值时,进展警报。五、设计按键电路,可对电压限值进展设置,并将电压限值存入24C04中保存。3.1.1 程序主流程图:图3-1 电压采集报警控制器主流程图3.1.2 按键调节限值流程图:图3-2 按键调节限值流程图3.1.3 总线初始化流程图:图3-3 总线初始化流程图3.1.4 总线应答停顿信号流程图: 图3-4 应答信号流程图 图3-5 停顿信号流程图3.1.5 总线读写字节流程图: 图3-6 读字节流程图 图3-7 写字节流程图3.1.6 PCF8591芯片AD转换流程图:图3-8 pcf8591 AD流程图3.2芯片选择:3.2.1 PCF8591芯片介绍:PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进展传输。PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由I2C总线的最大速率决定。1引脚介绍:AOUT:D/A 转换输出端; AGND:模拟信号地;AIN0AIN3:模拟信号输入端;VREF:基准电源端;A0A2:引脚地址端;VDD、VSS:电源端2.56V;SDA、SCL:I2C 总线的数据线、时钟线;OSC:外部时钟输入端,内部时钟输出端;E*T:内部、外部时钟选择线,使用内部时钟时 E*T 接地; 图3-8 PCF8591管脚图2AD转换电路图:图3-9 模数转换模块电路图3.2.2 AT24C04芯片介绍:AT24C04是Ateml公司的4Kb得电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存100年,而且采用8 脚的DIP 封装,使用方便。简而言之,AT24C02是一个在突然掉电的情况下存储数据的芯片,即掉电存储芯片。1引脚介绍:A0:空引脚;A1、A2:器件地址设定引脚;GND:电源地;SDA、SCL:数据线、时钟线; WP:写保护口;VCC:电源;图3-10 AT24C04管脚图2断电存储模块电路:图3-11 断电存储模块电路图3.2.3 MA*232芯片介绍:MA*232是一种双组驱动器/接收器,片内含有一个电容性电压发生器以便在单5V电源供电时提供EIA/TIA-232-E电平。当用单片机和PC机通过串口进展通信,尽管单片机有串行通信的功能,但单片机提供的信号电平和RS232的标准不一样,因此要通过ma*232这种类似的芯片进展电平转换。1引脚介绍:第一局部是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二局部是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从11引脚(T1IN)、10引脚(T2IN)输入转换成RS-232数据从14脚(T1OUT)、7脚(T2OUT)送到电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8引脚(R2IN)输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。第三局部是供电。15脚GND、16脚VCC(+5v)。2) 串口通信模块电路:图3-12 串口通信模块电路图3.2.4 数码管显示电路:图3-13 数码管显示电路图3.2.4 STC12C5A60S2最小系统:图3-14 STC12C5A60S2最小系统电路图3.3 PROTEUS仿真电路图:图3-15 PROTEUS仿真电路图3.4 硬件调试串口调试助手实时数据:图3-16 串口助手实时调试图3.5 PCB印刷电路板图:图3-17 PCB电路板图结 论通过这次单片机课程设计电压采集报警控制器设计,让我对单片机开发及调试软件有了更加熟悉的了解,也让我更加明白了C51程序语言的设计逻辑原理。很多设计理念需要来源于实际,从中找出最适合的方式方法。在设计的过程中遇到的问题,可以说得是困难重重,毕竟是第一次做一个系统性的东西。虽然本次课程设计要求自己独立完成,但是,我遇到问题时和同学互相讨论交流。在做课程设计的过程中不停的讨论问题,解决问题。这样就不会使自己在单独做的过程中没有方向;同时也更加了解了解决问题的方法。在软件编程时遇到了编程语言逻辑性不合理等问题。而且在进展硬件调试时,要结合开发板原理图及C51程序,所以出现了连接上的错误。但经过不断的调试和改进,最后都成功解决。实现了课题的根本要求。我发现,讨论不仅是一些思想的问题,还可以深入的讨论一些技术上的问题,这样可以使自己的处理问题要快一些,少走弯路。多改变自己设计的方法,在设计的过程中最好要不停的改善自己解决问题的方法,这样可以方便自己解决问题由于设计水平有限和时间的仓促,本文中难免有错误和不妥之处,但在此次设计过程中学到了很多无法从书本上学到的东西,从不同方面使自己得到提升。通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把理论与实践结合起来,从理论中得出结论,才能真正为实际效劳,从而提高自己的实践能力和独立思考的能力。同时在设计的过程中发现自己的缺乏之处,对以前所学的知识理解的不够深刻,掌握的不够结实,通过这次课程设计,对以前学到的知识进一步温习和消化。参考文献1*爱钧等单片机原理及应用基于Proteus虚拟仿真技术.:机械工业,20212蒋辉平,周国雄基于Proteus的单片机系统设计与仿真实例.:机械工业,20213王琼单片机原理及应用实验教程.*:*工业大学,20054陈宁,王文宁单片机技术工程教程.*:东南大学,20215黄鹤松,员玉良等51单片机应用开发范例大全.:人民邮电,20216*波51单片机应用开发典型范例基于Proteus仿真.:电子工业,20217李玉梅基于MCS-51系列单片机原理的应用设计.:国防工业,20068江志红51单片机技术与应用系统开发案例精选.:清华大学,2021附 录电压采集报警控制器C51程序:/*/* *城建大学控制与机械工程学院 */* 单片机课程设计 */* 电压采集控制报警器 */* 2021年01月10日 */功能:通过转动滑动变阻器改变模拟输入电压/ 通过AD转换,把数值用数码管显示/ 将实时电压发送给串口助手/ 通过按键设定限值,超过限值时蜂鸣器报警/ 通过AT24C04实现断电保存*include <reg51.h>*include <intrins.h>*define uchar unsigned char*define uint unsigned int*define PCF8591 0*90 /PCF8591 地址*define FOSC 11059200L /System frequency*define BAUD 9600 /UART baudrate/*Define UART parity mode*/*define NONE_PARITY 0 /None parity*define ODD_PARITY 1 /Odd parity*define EVEN_PARITY 2 /Even parity*define MARK_PARITY 3 /Mark parity*define SPACE_PARITY 4 /Space parity*define PARITYBIT NONE_PARITY*defineOP_READ0*a1/ 器件地址以及读取操作,0*a1即为1010 0001B*defineOP_WRITE 0*a0/ 器件地址以及写入操作,0*a1即为1010 0000Btypedef unsigned char BYTE;typedef unsigned int WORD;sbit key1=P10;sbit key0=P11;sbit IICSCL=P14; /IIC串行时钟输入端sbit IICSDA=P15; /IIC串行数据输入端sbit LS138A=P20; /138译码器的3位 控制数码管的 sbit LS138B=P21;sbit LS138C=P22;sbit LS138D=P23;sbit SCL=P24; /串行时钟输入端sbit SDA=P25; /串行数据输入端sbit bit9=P26;sbit beep=P27;int keyvalue;float m;bit busy;uchar code table=0*c0,0*f9,0*a4,0*b0,0*99,0*92,0*82,0*f8,0*80,0*90; /数显管字模uchar table1="实时电压为: Vrn" /串口发送字符串uchar num1=0;uchar num24=0;/ 断电保存数据数组uchar sge,sbai;int num,shi,bai,snum,ssnum;/*函数功能:延时1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+); void delay_1ms(uint z) uint *,y; for(*=z;*>0;*-) for(y=110;y>0;y-);/*函数功能:延时假设干毫秒入口参数:n*/void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+)delay1ms();void delay() /IIC总线初始信号设定,延时4-5个微秒 ;void start() /PCF8591开场信号 SDA=1; delay(); SCL=1; delay(); SDA=0; delay();void stop() /PCF8591停顿信号 SDA=0; delay(); SCL=1; delay(); SDA=1; delay();void respons()/PCF8591 IIC应答 相当于一个智能的延时函数 uchar i; SCL=1; delay(); while(SDA=1)&&(i<250) i+; SCL=0; delay();void init() /PCF8591 IIC初始化 SDA=1; delay(); SCL=1; delay(); uchar read_byte() uchar b,k; SCL=0; delay(); SDA=1; delay(); for(b=0;b<8;b+) SCL=1; delay(); k=(k<<1)|SDA;/先左移一位,再在最低位承受当前位 SCL=0; delay(); return k;void write_byte(uchar date) /写一字节数据 uchar ii,temp; temp=date; for(ii=0;ii<8;ii+) temp=temp<<1; /左移一位 移出的一位在CY中 SCL=0; /只有在scl=0时sda能变化值 delay(); SDA=CY; delay(); SCL=1; delay(); SCL=0; delay(); SDA=1; delay();/*/ 从AT24C04读写数据/*/void IICstart() / 开场位IICSDA = 1; /SDA初始化为高电平"1 IICSCL = 1; /开场数据传送时,要求SCL为高电平"1_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期IICSDA = 0; /SDA的下降沿被认为是开场信号_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期IICSCL = 0; /SCL为低电平时,SDA上数据才允许变化(即允许以后的数据传递 /* 函数功能:完毕数据传送*/void IICstop()/ 停顿位IICSDA = 0; /SDA初始化为低电平"0_nIICSCL = 1; /完毕数据传送时,要求SCL为高电平"1_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期IICSDA = 1; /SDA的上升沿被认为是完毕信号_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期_nop_(); /等待一个机器周期IICSDA=0;IICSCL=0;/* 函数功能:从AT24C*读取数据 出口参数:*/unsigned char ReadData()/ 从AT24C*移入数据到MCUunsigned char i;unsigned char *; /储存从AT24C*中读出的数据for(i = 0; i < 8; i+)IICSCL = 1; /SCL置为高电平*<<=1; /将*中的各二进位向左移一位*|=(unsigned char)IICSDA; /将SDA上的数据通过按位"或"运算存入*中IICSCL = 0; /在SCL的下降沿读出数据return(*); /将读取的数据返回/* 函数功能:向AT24C*的当前地址写入数据 入口参数:y (储存待写入的数据*/在调用此数据写入函数前需首先调用开场函数start(),所以SCL=0bit WriteCurrent(unsigned char y)unsigned char i;bit ack_bit; /储存应答位for(i = 0; i < 8; i+)/ 循环移入8个位 IICSDA = (bit)(y&0*80); /通过按位"与运算将最高位数据送到S