《天城lcs-电压采集报警控制器说明书.doc》由会员分享,可在线阅读,更多相关《天城lcs-电压采集报警控制器说明书.doc(37页珍藏版)》请在三一办公上搜索。
1、电压采集报警控制器目 录第 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单片机
2、根底知识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、片机); 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
4、.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单片机为:11
5、MHz15.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.
6、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. STC12C5A60S
7、2系列有双串口,后缀有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、口为一个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
9、口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。在给出地址1时,它利用内部上拉的优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号; P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电
10、平,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 :当外部存储器时,地址锁存允许的输出电平用于锁存地址的低位
11、字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想制止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOV*,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE制止,置位无效; PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在内部部数据存储器时,这两次有效的PSEN信号将不出现; EA/VPP:当EA保持
12、低电平时,外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP); *TAL1:反向振荡放大器的输入及内部时钟工作电路的输入;*TAL2:来自反向振荡器的输出;第2章 设计开发软件介绍2.1 KEIL4介绍:Keil uVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的外表对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。最新的
13、Keil uVision4 IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。uVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。uVision4在Vision3 IDE的根底上,增加了更多群众化的功能。多显示器和灵活的窗口管理系统系统浏览器窗口的显示设备外设存放器信息调试复原视图创立并保存多个调试窗口布局多工程工作区简化与众多的工程2.2 PROTEUS介绍:Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真
14、软件、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
15、器件。 2仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境.2.3 Altim_Designer介绍: 电路设计自动化 EDAElectronic Design Automation指的就是将电路设计中各种工作交由计算机来协助完成。如电路原理图Schematic的绘制、印刷电路板PCB文件的制作、执行电路仿真Simulation等设计工作。随着电子科技的蓬勃开展,新型元器件层出不穷,电子线路变得
16、越来越复杂,电路的设计工作已经无法单纯依靠手工来完成,电子线路计算机辅助设计已经成为必然趋势,越来越多的设计人员使用快捷、高效的CAD设计软件来进展辅助电路原理图、印制电路板图的设计,打印各种报表。 Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows *P操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进展设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。Altium Designer
17、 除了全面继承包括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 串
18、口调试助手介绍: 串口调试助手是串口调试相关工具,有多个版本。如:友善串口调试助手,支持9600,19200等常用各种波特率及自定义波特率,可以自动识别串口,能设置校验、数据位和停顿位,能以ASCII码或十六进制接收或发送任何数据或字符,可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。 硬件连接方面,传统台式PC机支持标准RS232接口,但是带有串口的笔记本很少见,所以需要USB/232转换接口,并且安装相应驱动程序。2.5 STC-ISP下载软件介绍:STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2
19、052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。操作说明:1翻开STC-ISP,如以下图界面,在MCU Type栏目下选中单片机;2)根据您的9针数据线连接情况选中端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些;3)先确认硬件连接正确,按点击翻开文件并在对话框内找到您要下载的HE*文件;4选中两个条件项,这样可以使您在每次编译KEIL时HE*代码能自动加载到STC-ISP,点击Download/下载;5)手动按下电源开关便即可把可执行文件HE*写入到单片机内;6程序写入完毕,目标板开场运行程序结果;图2-1STC下载器界面图第三章 电压采集报警控制器硬件
20、电路设计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 总线应答停顿信
21、号流程图: 图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器件上输入输出的地址、控制
22、和数据信号都是通过双线双向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 模数转换模
23、块电路图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
24、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脚(T1
25、IN)、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 数码管显示
26、电路图3.2.4 STC12C5A60S2最小系统:图3-14 STC12C5A60S2最小系统电路图3.3 PROTEUS仿真电路图:图3-15 PROTEUS仿真电路图3.4 硬件调试串口调试助手实时数据:图3-16 串口助手实时调试图3.5 PCB印刷电路板图:图3-17 PCB电路板图结 论通过这次单片机课程设计电压采集报警控制器设计,让我对单片机开发及调试软件有了更加熟悉的了解,也让我更加明白了C51程序语言的设计逻辑原理。很多设计理念需要来源于实际,从中找出最适合的方式方法。在设计的过程中遇到的问题,可以说得是困难重重,毕竟是第一次做一个系统性的东西。虽然本次课程设计要求自己独立完
27、成,但是,我遇到问题时和同学互相讨论交流。在做课程设计的过程中不停的讨论问题,解决问题。这样就不会使自己在单独做的过程中没有方向;同时也更加了解了解决问题的方法。在软件编程时遇到了编程语言逻辑性不合理等问题。而且在进展硬件调试时,要结合开发板原理图及C51程序,所以出现了连接上的错误。但经过不断的调试和改进,最后都成功解决。实现了课题的根本要求。我发现,讨论不仅是一些思想的问题,还可以深入的讨论一些技术上的问题,这样可以使自己的处理问题要快一些,少走弯路。多改变自己设计的方法,在设计的过程中最好要不停的改善自己解决问题的方法,这样可以方便自己解决问题由于设计水平有限和时间的仓促,本文中难免有错
28、误和不妥之处,但在此次设计过程中学到了很多无法从书本上学到的东西,从不同方面使自己得到提升。通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把理论与实践结合起来,从理论中得出结论,才能真正为实际效劳,从而提高自己的实践能力和独立思考的能力。同时在设计的过程中发现自己的缺乏之处,对以前所学的知识理解的不够深刻,掌握的不够结实,通过这次课程设计,对以前学到的知识进一步温习和消化。参考文献1*爱钧等单片机原理及应用基于Proteus虚拟仿真技术.:机械工业,20212蒋辉平,周国雄基于Proteus的单片机系统设计与仿真实例.:机械工业,20213王琼单片机原理及
29、应用实验教程.*:*工业大学,20054陈宁,王文宁单片机技术工程教程.*:东南大学,20215黄鹤松,员玉良等51单片机应用开发范例大全.:人民邮电,20216*波51单片机应用开发典型范例基于Proteus仿真.:电子工业,20217李玉梅基于MCS-51系列单片机原理的应用设计.:国防工业,20068江志红51单片机技术与应用系统开发案例精选.:清华大学,2021附 录电压采集报警控制器C51程序:/*/* *城建大学控制与机械工程学院 */* 单片机课程设计 */* 电压采集控制报警器 */* 2021年01月10日 */功能:通过转动滑动变阻器改变模拟输入电压/ 通过AD转换,把数值
30、用数码管显示/ 将实时电压发送给串口助手/ 通过按键设定限值,超过限值时蜂鸣器报警/ 通过AT24C04实现断电保存*include *include *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
31、 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 in
32、t 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*
33、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;i10;i+) for(j=0;j0;*-) for(y=110;y0;y-);/*函数功能:延时假设干毫秒入口参数:n*/void delaynms(unsig
34、ned char n) unsigned char i;for(i=0;in;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();
35、 while(SDA=1)&(i250) 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;b8;b+) SCL=1; delay(); k=(k1)|SDA;/先左移一位,再在最低位承受当前位 SCL=0; delay(); return k;void write_byte(uchar date) /写一字节数据 uchar ii,temp; tem
36、p=date; for(ii=0;ii8;ii+) temp=temp1; /左移一位 移出的一位在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_(); /等待一个机器
37、周期_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_()
38、; /等待一个机器周期_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置
39、为高电平*=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