基于单片机控制的出租车计价器_第1页
基于单片机控制的出租车计价器_第2页
基于单片机控制的出租车计价器_第3页
基于单片机控制的出租车计价器_第4页
基于单片机控制的出租车计价器_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理与应用综合实验报告 题目:基于单片机控制的出租车计价器 摘要:随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展。现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展有很好的前景。尽管小城市尚未普及,但计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。出租车计价器是单片机的一种典型应用。基于单片机的计价器是由单片机和外部电路组成。包括检测模块,控制模块,人机模块。里程检测模块由a44e构成,控制模块包括at89c51单片机和at24c02,人机模块包括独立键盘和led动态显示。关键词:at89c51, a44e ,74hc573,动态显示1、

2、引言出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4 个阶段的发展。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的出租车计价器。出租车计价器计费是否准确、出租车司机是否作弊才是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。因此怎样设计出一种既能有效防止司机作弊又能方便司机的计价器尤为重要。因此, 本文以单片机a t89s52 为核心设计一款多功能出租车计价器,该计价器能实现按时间和里程综合计算车价,能显

3、示时间、里程、单价、总车价等相关信息显示。它比市场上的一些计价器使用更方便,功能更全,还具有有效防止司机作弊和系统稳定性好的优点。 2、总体设计方案的思考与设定 2.1 设计要求(一)基本功能1、显示: 可以显示 单价、里程、总金额2、停车计费功能:中途因故停车超过5分钟后每分钟按当时单价的50%收费3、自动分时计费功能:白天和夜间应能自动更换单价 (二)性能 里程误差小于2%(三)拓展功能1、可增加时钟功能2、可增加数据掉电保护功能2.2 设计思路方案一:采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为时钟脉冲信号,采用计数芯片对脉冲尽心脉冲的计数和分频,最后通过

4、译码电路对数据进行译码,将译码所得的数据送给数码管显示,一下是该方案的流程框图,方案一如图1-1所示: 图1-1 系统图方案二:采用mcu技术,通过单片机作为主控器,利用数码管为显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,本方案主要是必须对于数字电路比较熟悉,成本又不高。基于单片机控制的出租车计价器的软硬件的需要,采用方案二,则计价器系统主要由五部分组成:分别为基于霍尔传感器a44e的里程检测单元、at89c51单片机、外扩串行eeprom-at24c02、独立键盘和led显示。霍尔传感器主要用于检测汽车行使的里程数,出租车车轮每旋转一周,霍尔传感器a44e便产生一相应的脉冲输出

5、,并把该脉冲交由单片机进行处理,单片机则根据程序设定,通过计算脉冲个数换算出已行驶里程(里程=脉冲个数*出租车车轮周长),然后再根据从eeprom-at24c02中读取的单价等相关数据进行总的消费金额的计算:当里程小于3公里时,总金额=起步价+等待时间*等待单价;当里程大于3公里时,总金额=起步价+(里程-3)*运行单价+等待时间*等待单价;计算好的金额、等待时间、里程和单价等数据信息都可实时地显示在数码管上。其中,等待时间可根据霍尔传感器a44e是否有脉冲输出加以判断,如可设定等待时基为5s,即假如a44e在5s后仍无脉冲输出便认为进入等待时间,并由单片机stc89c52内部计时器对其进行计

6、时。独立键盘可以调整单价等相关数据,当按下某按键,会给单片机相应端口一低电平信号,单片机会通过循环扫描检测到此信号,并根据预先设置好的程序做出相应的处理;调整好的数据存储到eeprom中,掉电后可以使该数据不丢失,下次得电后直接从eeprom-at24c02中读到单片机,并通过数码管实时显示。系统结构图如图2-0所示。 图2-0系统结构图2.2.1系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别

7、完成启动、清除、计程和计价等不同的操作。当出租车运行后,就启动计价器,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价值和起步价来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待金额加到总金额里,然后将总金额、里程、等待时间和单价送数码管显示出来。程序流程如图2-1所示。 图2-1 主程序流程图 2.2.2里程计数中断程序每当霍尔传感器输出一个低电平信号,单片机定时器0(工作在计数模式)就对其计数一次,相应的变量设为inter就自加1,当里程计数器inter对里

8、程脉冲计满500次时,对其自身进行清零操作,为下一次计数做准备,同时进入里程计数中断服务程序中,里程变量加1,总金额根据此时所设单价做出相应的变化。里程中断子程序如图2-2所示。图2-2 里程中断服务子程序2.2.3中途等待中断程序在中途等待中断程序中,定时器1每50ms计一次数,每计够100次(5sec),便将当前里程值送入某个缓存变量,与前一个5秒的值进行比较,如果两者相同,则表明霍尔传感器没有输出信号,认为出租车停了下来,进入等待计时,计时中间变量dd自加1,计够12次为一分钟,dd自清零,同时根据所设的等待单价刷新总金额。计数初值可有以下公式获得:x=(65536-t)*11.0592

9、*106/12;th=x/256; tl=x%256;其中:x表示计数初值,th、tl分别为16位计数器高8位和低8位应装入的初值。用定时器作为基准,可使测试的等待时间更为精确(可以精确到us级);且每隔5秒比较一次,能有效减小误判率,避免把汽车低速行驶误认为静止等待处理。中途等待子程序流程图如图2-3所示。图2-3 中途等待中断子程序流程图2.2.4计算程序计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价。程序流程图如图2-4所示。图2-4 计算程序流程图2.2

10、.5显示程序由于8位数码管所有段选皆有8位的p0口进行控制,因此,在每一瞬间,8位led会显示同一个数字。要想每位显示不同的字符,就必须采用动态扫描的方法轮流点亮各位led,即在每一时刻只使某一位显示字符。在此瞬间,段选控制i/o口输出相应字符段选码(字符码),而位选则控制i/o口在该显示的位送入选通电平,以保证该位显示显示相应字符。如此循环操作,使每位分时显示该位应该显示的字符。在本次设计中显示程序利用延时程序,每隔5ms刷新一次,相应的数码管点亮,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,给人看上去每个数码管总是在亮,以实现动态显示。2.2.6键

11、盘程序键盘采用查询的方式,放在主程序中,当有按键按下的时候,在相应i/o口产生一次低电平,当单片机查询出该低电平后便转入进行处理,处理结束返回。按键流程图如图2-5。图2-5 按键检测子程序流程图2.2.6单片机最小系统单元主控机系统采用at89c51单片机,它含有512 字节数据存储器ram,内置8k 的电可擦除flash rom,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。芯片外围电路一般接入24mhz的晶振。复位电路和晶振电路,以及p0口接入的10k的上拉电阻便构成了at89c51 单片机工作所需的最简外围电路。对于单片机的p0口,可以作为地址/数据总线使用,也可以

12、作为一般的i/o口使用。但当其作为i/o使用时,由于输出属于开漏电路,无上拉电阻故也无法进行高低电平的操作,此时必须接上拉电阻,一般阻值选为10k。但p0口不能同时作为地址/数据总线和i/o使用。本设计利用口的i/o功能 2 。单片机最小系统电路图如图2-6所示。 图2-6 单片机最小系统2.2.7霍尔传感器单元本系统选择将a44e的脉冲输出端接到p3.2口,即做为定时器/计数器1的输入端,车轮每转一圈(设车轮的周长是2米),霍尔开关便输出一低电平信号,然后利用单片机定时器1对该脉冲计数,当计数达到500次时,则达到1公里,单片机将自动刷新里程、总金额等信息。a44e 属于开关型的霍尔器件,其

13、工作电压范围比较宽(4.518v),其输出的信号符合ttl电平标准,可以直接接到单片机的i/o 端口上,而且其最高检测频率可达到1mhz3 。 a44e 集成霍耳开关由稳压器a、霍耳电势发生器(即硅霍耳片)b、差分放大器c、施密特触发器d和oc门输出e五个基本部分组成。在输入端输入电压vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差vh输出,该vh信号经放大器放大后送至施密特触发器整形,使其成为方波输送到oc门输出。当施加的磁场达到工作点时,触发器输出高电平,三极管导通, oc门输出端

14、输出低电压,这种状态为开;当触发器输出低电平时,三极管截止,oc门输出高电压,这种状态为关 4 。这样两次电压变换,使霍尔开关完成了一次开关动作。a44e霍尔传感器原理如图2-7所示。图2-7 a44e霍尔传感器原理里程计算主要通过霍尔传感器a44e检测完成,出租车车轮每旋转一周,霍尔传感器a44e便产生一相应的脉冲输出,并把该脉冲交由单片机进行处理,单片机则根据程序设定,通过计算脉冲个数换算出已行驶里程:里程=脉冲个数*出租车车轮周长。2.2.8掉电存储单元at24c02的作用是在电源断开的时候,存储当前设定的总金额,等待时间,运行里程以及单价等信息。at24c02 是ateml公司的2kb

15、的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5v,额定电流为1ma,静态电流10ua(5.5v),芯片内的资料可以在断电的情况下保存40年以上,而且采用8 脚的dip 封装,使用方便。at24c02芯片引脚配置如图2-8所示。图2-8 at24c02引脚配置图图中r4、r5 是上拉电阻,其作用是减少at24c02 的静态功耗。由于at24c02的数据线和地址线是复用的,采用串口的方式传送数据,只用两根线scl(时钟脉冲)和sda(数据/地址)与单片机p3.6和p3.7口连接,进行传送数据时遵守i2c总线协议。每当设定一次单价,系统就调用存储程序,将单价信息保存在芯片内

16、;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。2.2.9键盘调整单元当单价等信息需要进行修改时,就要用到键盘。由于调节信息不多,故采用5个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。电路原理如图2-9所示。图2-9 键盘调整单元接线图图中,键盘从上至下依次为:s0:接p1.0口,对上一次的计费进行清零,为下次载客做准备;s1:接p1.1口,通过对功能键s3按下次数的计数,实现单价数据的增大;s2:接p1.2口,通过对功能键s3按下次数的计数,实现单价数据的减小;s3:接p1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚

17、单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。s4: 实现白天单价和夜晚单价的切换。需要注意的时,当按键按下和释放的瞬间都有抖动现象,一般来说,抖动的时间长短与键盘的机械特性有关,大约为5-10ms 5 。所以在实际编程时一定要注意键盘的去抖动。键盘去抖动有专用的延时电路,也有专门的延时芯片,也可以用软件去抖,考虑到电路的难易程度,从简化硬件的角度,本次设计采用软件去抖动,用一个短延时程序,进行键盘去抖操作。2.2.10显示单元显示单元由两个4位8段共阳数码管组成,电路连接时,公共端接高电平,因此我们需要点亮哪个发光二极管只需给哪个二极管阴极送低电平,并采用动态扫描进行

18、显示6。前三个数码管分别接p2.0、p2.1和p2.2,用于显示总金额;第四个接p2.3 ,显示等待时间;第五个和第六个数码管分别接p2.4和p2.5,用于显示里程,由于需精确到小数位,故最多只能显示9.9公里,但经过添加溢出指示,可计到20公里,在现实中已基本够用;后面两个数码管分别接p2.6和p2.7,用于显示单价。由于溢出指示是采用发光二极管是否点亮表示,故必须选好参数以确保发光二极管正常工作。根据元件手册(也可用万用表测量)查得,发光二极管点亮时压降为1.7v,点亮电流为3-20ma,取导通电流为5ma,所以限流电阻可选择为(5-1.7)/5=660,故可选择限流电阻值510。 由于数

19、码管内部二极管点亮时需要5ma以上的电流,而单片机的输出电流还不到1ma,所以数码管与单片机连接时需加驱动电路,可以使用上拉电阻的方法,也可以使用专门的驱动芯片,考虑到复用单片机i/o接口,节省单片机i/o资源,此次设计采用74hc573锁存器,其输出电流较大,电路接口简单且可直接驱动数码管显示。74hc573的引脚分布图2-6如下。图2-10 74hc573的引脚分布:为三态允许输入端(低电平有效),也可称作输出允许端;1d-8d为数据输入端;1q-8q为数据输出端;le为锁存允许端。74hc573所对应真值表2-10如表。表2-10 74hc573真值表inputoutput le dql

20、 h ll l xh x xhq0z由真值表可以看出,当 为高电平时,无论le与d端为何电平状态,其输出均为高阻态,此时芯片处于不可控状态。做设计时必须使其处于可控状态,即 应该接低电平。当 为低电平时,若le为h,则d与q同时为h或者l,数据实现直通传送;而当le为l时,无论d为何状态q都保持上一次的数据状态,数据被锁存住,利用此特性即可实现对数码管的控制。其中 :h高电平;l低电平;x任意电平;z高阻态,既不是高电平也不是低电平,其电平状态由与它相连接的其它电气状态决定;q0上次的电平状态。本次设计中:段选信号le接p1.5,对应图中标号p1.5;位选信号le接p1.6,对应图中标号p1.

21、6。控制显示时先给p1.5高电平,使通道打开,接着送字码,然后把p1.5电平拉低,使字码保持住;之后打开p1.6(送高电平),紧接着送位码,控制要显示的位,然后把p1.6拉低,数据被保持。最后延时5ms;依次循环扫描;利用数码管点亮后的余晖和人眼视觉暂留效应即可实现动态显示。数码管动态显示电路如图2-10所示。3、设计调试分析3.1 控制分析3.1.1动态扫描的调试和分析动态扫描是单片机编程中最基本的知识,虽对其原理有比较清晰的掌握,也曾用汇编语言写过程序,但此次用c语言编写还是出现了错误。第一就是把段码和位码顺序送反,结果是只有在延时时间较长时才能显示正常,当然这样的代价是没有静态的效果;第

22、二就是用动态扫描时给八个数码管送了10个数,显然这样做结果必定混乱;最后就是开始时用switch、case语句实现动态扫描,当程序较小时可以正常工作,但当后期程序较大时,出现了时序混乱的问题。最后解决的方法是用了锁存器,显示结果正常为固定的预设的八个数字。3.1.2按键查询功能的实现按键查询比较容易实现,只要注意1. 按键结束后注意退出按键处理;2.不要陷入死循环,即避免显示一个数据后退不出来;3.在做实际键盘时要注意按下去抖和释放去抖。按键去抖可通过以下语句实现: if(key=0) delay(5); if(key=0) while(!key); delay(5); while(!key)

23、; 按键处理程序 3.1.3计算程序的分析与设计由于里程和单价都精确的小数点后一位,而显示时仍按整数显示,只不过人为的加入 &0x7f(共阳极时加入&0x7f,共阴极时加入 |0x)控制是否显示小数点儿,故实际计算时要做适当改动。改动如下:1. 当里程值大于30(实际对应大于3公里)且无进位时,溢出指示灯不亮,总金额=起步价+(里程十位数字-2)*运行单价+等待单价*等待时间;2. 当里程值小于30(实际对应小于3公里),肯定无进位,溢出指示灯不亮,总金额=起步价+等待单价*等待时间;3. 有进位,溢出指示灯点亮,表示里程一定大于三公里,只需执行总金额=起步价+7*运行单价+(里程十位数字+1

24、)*运行单价+等待单价*等待时间即:总金额=起步价+(里程十位数字+8)*运行单价+等待单价*等待时间;3.1.4结果分析与性能改进经过反复调试验证,基于at89c51单片机控制设计的出租车计价器满足了所有预设性能指标,具有较好的抗干扰性,价格也较为合理,具有很好的工业开发和市场前景。可以改进的地方可能有很多;就我现在所思考的可从以下两个方面加以考虑: 1. 尝试着把两个锁存器74hc573去掉,当然不能影响整个计价器的功能,这样会使硬件电路更简洁,成本也会更低,符合实际中的最大利润空间定理。2. 设计板时把键盘和显示器放在芯片和其它电路的反面,这样封装成实际产品时可把人机接口留在外面,更人性

25、化,也符合人们的习惯。4、计价器系统的仿真当各个子模块都实现后,联调则主要是看当把他们融合在一起时是否会有时序上的冲突,以及可能存在的分析不周全的地方。本次设计联调时出现的问题主要有:第一是显示时存在时序上的冲突,详见4.1第三点;第二就是中断设置时出现混乱,即同时用定时器0,定时器1,和外部中断1时,后两者都不再工作(通过编一个方波程序,发现定时器1即p3.5无跳变),解决方法时让定时器1工作在计数方式代替工作在定时方式,如此不但可以完成相应功能,解决了问题,更重要的是省去一个中断,简化了程序设计。调试完成后在proteus 7.5 上仿真结果如图所示。图4-1单价调整(起步价)图4-2单价

26、调整(白天)图4-3单价调整(夜晚)图4-里程溢出时5、 结束语经过近一周的设计,在查找与参考资料下,基本实现了预先设定的计价器应具有的功能,且会满足了所有设计指标。1. 能较准确计算出出租车运行里程;2. 实现了单价可调,里程精确到0.1公里,并可以对等待时间进行计时;3.利用i2c总线通过eeprom-at24c02对存储空间进行了扩展,使其具备掉电存储功能。4. 有完整的软件仿真结果和硬件电路,并用protel设计出了系统原理图,制作了pcb板。通过对基于proteus 7.5的仿真和实际电路的测试结果分析,表明用此方法设计的计价器。实现了单价可调,掉电保持,计程精度达到0.1公里,此外

27、还增加了等待计时功能,白天夜晚单价自动切换,并且能实时显示总金额,等待时间,运行里程,运行单价等详细信息;且能很方便的在不改变硬件电路的情况下通过改变软件实现计价精度的提高,进行功能上的扩展,如可把现有的计价器转变为计速器,完善的功能使得基于at89c51单片机的出租车计价器的通用性和实用性有着无可比拟的优势,具有很高的现实意义和很好的市场前景。通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。通过这

28、次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。这在以前的学习过程中是不曾学到的。这次设计是我认真认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。另外通过本次设计,是我认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。参考文献1 李朝青. 单片机原理及接口技术(第三版). 北京: 北京航空航天大学出版社, 20082 郭天祥. 51单片机c语言教程. 北京:电子工业出版社, 20083 单成祥, 牛彦文. 传感器设计基础. 北京: 国防工业

29、出版社, 20074 谭浩强. c程序设计(第三版). 北京: 清华大学出版社, 20055 阎石.数字电子技术.(第五版).北京:高等教育出版社, 20066 张一斌, 余建坤.单片机原理课程设计 .中南大学出版社, 20087 万隆, 巴奉丽. 单片机原理及应用技术.北京:清华大学出版社, 2008附录附录内容包含:整体电路原理图、(pcb图)、(仿真结果图)、程序等1、整体电路原理图:oe11d22d33d44d55d66d77d88d9gnd10le118q127q136q145q154q163q172q181q19vcc20u274hc573oe11d22d33d44d55d66d7

30、7d88d9gnd10le118q127q136q145q154q163q172q181q19vcc20u374hc573a01a12a23gnd4vcc8wp7scl6sda5u4at24c02vcc40p0.039p0.138p0.237p0.336p0.435p0.534p0.633p0.732ea31ale30psen29p2.021p2.122p2.223p2.324p2.425p2.526p2.627p2.728p1.01p1.12p1.23p1.34p1.45p1.56p1.67p1.78rst9p3.0/rxd10p3.1/txd11p3.2/int012p3.3/int113

31、p3.4/t014p3.5/t115p3.6/wr16p3.7/rd17xtal218xtal119gnd20u1stc89c52117421105312986a b c d e f g dpcom1 com2 com3 com4led?7seg(0.36)x4117421105312986a b c d e f g dpcom1 com2 com3 com4led?7seg(0.36)x412345678161514131211109respack4res8as0sw-pbs?sw-pbs?sw-pbs3sw-pbs?s4gndvccgndgndgndgnd40vccvccs0 s1 s2

32、s3 s4 r35.1kr65.1kvccp1.5p1.6gndgndvccvccc430pc530py111.0592m162738495j?db9r81ks?sw-pbr5510r7200c322ufvccgndc?ledvcc1gnd2out3u11a44evccgndrrin28rrin113rtout27rtout114cap2-5cap2+4cap-6gnd15vcc16cap+2cap1+1cap1-3tin111tin210rout112rout29u8c0.1ufc70.1ufc0.1ufc0.1ufc0.1ufvccgnd2、pcb图(proteus仿真图)3、程序:#in

33、clude#include #define uchar unsigned char#define uint unsigned intuchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uint zongjine,dengdai;licheng;uint s3num,qiehuantemp;uchar danjia1,danjia2,danjia3,qibu,danjia; /分别为白天单价、夜晚单价、/等待单价、白天夜晚单价切换暂存、起步价uint aa,bb,temp,temp1,inter,exter; /中

34、断调用 uint cc,dd,qufan;sbit s0=p10; / 清零sbit s1=p11; / +sbit s2=p12; / -sbit s3=p13; / 功能键sbit s4=p14;/ 切换sbit led=p17;/里程溢出指示sbit dula=p15; sbit wela=p16 ;sbit sda=p37; / i2c引脚sbit scl=p36;void delay(uint x) int i,j; for(i=x;i0;i-) for(j=110;j0;j-);void delaynop( ) / 保证i2c的时序要求 =4.7us_nop_();_nop_();

35、_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();void i2c_init()sda=1; scl=1;delaynop( ) ;void start()scl=1; delaynop( ) ;sda=1;delaynop( ) ;sda=0; delaynop( ) ;scl=0;delaynop( ) ;void stop() sda=0;delaynop( ) ;scl=1; delaynop( ) ;sda=1;delaynop( ) ;void ack() sda=0;delaynop( );scl=1;

36、delaynop( );scl=0;delaynop( );void noack()sda=1;delaynop( ); scl=1;delaynop( );scl=0;delaynop( );void send(uchar data) uchar bitcounter=8; uchar temp; do temp=data; scl=0; delaynop( ); if(temp&0x80)=0x80) sda=1; else sda=0; scl=1; temp=data1; data=temp; bitcounter-; while(bitcounter); scl=0; uchar read() /读一个字节的数据,并返回该字节值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论