基于两片单片机的智能多功能循迹小车项目设计

上传人:细水****9 文档编号:59256575 上传时间:2022-03-02 格式:DOC 页数:50 大小:490.50KB
收藏 版权申诉 举报 下载
基于两片单片机的智能多功能循迹小车项目设计_第1页
第1页 / 共50页
基于两片单片机的智能多功能循迹小车项目设计_第2页
第2页 / 共50页
基于两片单片机的智能多功能循迹小车项目设计_第3页
第3页 / 共50页
资源描述:

《基于两片单片机的智能多功能循迹小车项目设计》由会员分享,可在线阅读,更多相关《基于两片单片机的智能多功能循迹小车项目设计(50页珍藏版)》请在装配图网上搜索。

1、基于两片51单片机的智能多功能循迹小车的项目设计项目作者:戚振勇设计时间:2012/2/012012/2/26设计地点:振勇电子实验室(日照)联系QQ:目录封面- -1目录-2一、摘要-4二、总设计方案2.1 硬件方面 -52.2软件方面-5三、硬件模块设计3.1 51单片机STC89C52-63.2 18B20温度传感器-93.3 12864(带中文字库)液晶-103.4 ISD4002120P语音芯片-173.5 无线发射电路-203.6 光电循迹电路-213.7 电机驱动-21四、程序设计4.1 录音程序设计-214.2 总程序设计-22五 系统测试与结论-23附录一(录音程序)- -2

2、4附录二(总程序详解)-29目录一、摘要四个减速电机遥控电路光电循迹电路IRF420 STC89C523W扬声器TDA2030功放电路这个项目是本人挑战自我的一次大胆尝试,设计意图顺应现在电子产品向多功能化发展的趋势,为以后从事电子行业积累经验。单个功能的项目已经不能适应科技高速发展的现代社会了,本项目包括了:智能语音报时万年历、智能语音温度计、液晶显示、智能循迹小车、无线遥控等功能。目的在于挑战自己应对复杂电路及多功能项目的能力,对该项目的具体生活意义不作过多考虑。 。 STC89C5218B20温度传感器1307时钟芯片独立按键12864液晶显示ISD4002-120语音芯片L298N电机

3、驱动系统设计图二、总体设计方案2.1硬件方案本设计的目的在于锻炼多个模块的协调性,以及设备的先进性,故在显示方面用了技术含量较高的12864显示,受体积限制,温度传感器采用了体积较小的18B20,时钟芯片用了DS1307,这两个芯片不仅体积小,而且占用单片机资源较小,18B20采用单总线通讯协议,只占用1个I/O口,DS1307采用I2C通讯协议,只占用2个I/O口。在硬件连接方面,为了减少插线和体积,将各个系统焊在了同一个板上,并在各个位置焊接了指示灯,便于调试和处理问题。电机驱动电路放在了车底部,降低了电路的复杂程度。使之能更稳定的工作。语音模块采用ISD4002-120p,录放时间长达两

4、分钟,在给语音芯片录音的时候确实费了不少劲,网上很多的电路根本不能把声音录进去,要么就是录进去了声音很杂。经过我近一周的努力,终于找到了一个好的方法,并设计了一个放大增益较大,噪声较小的电路(稍后会给出),完美的解决了语音芯片音质差的问题,士气大增。在音响放大电路方面,网上很多资料都用LM380做放大,经过我的实际试验,LM386的放大增益太小,根本不能把声音完整的播放出来,所以我采用了TDA2030作为音响驱动,放大增益20dB。(反馈比例为4.7:150)2.2 软件方面总体思想是将18B20的温度信号和1307的时钟信号进行处理,在液晶屏上实时的显示出来。并在遥控按键按下的时候控制语音芯

5、片工作,将时钟信号和温度信号变成声音信号准确的读出来。循迹方面单独用另一块单片机控制,通过传感器送回来的信号分析黑线的位置,进而控制两边的电机的转速(PWM调速)。整个项目采用C51语言编程。三、硬件模块设计3.1 STC89C53RC单片机 此次温度及设计没有采用使用较为广泛的AT89C51系列单片机,而是采用STC89C53RC单片机控制电路。这一使用增进了我们对不同单片机的了解,为我们熟练掌握各种单片机打下了基础。此款单片机的主要性能如下: u 增强型6时钟/机器周期,12时钟/机器周期 8051 CPU。u 工作电压:5.5V-3.4V。 u 工作频率范围:0-40MHz,相当于普通8

6、051的080MHz。实际工作频率可达48MHz。 u 用户应用程序空间15K字节。 u 片上集成512字节RAM。 u 通用I/O口(36个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口使用时,需加上拉电阻。 u ISP(在系统可编程)/ IAP(在应用可编程),无需专用编程器。可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片。 u EEPROM 功能。 u 看门狗。 u 内部集成MAX810 专用复位电路(D 版本才有),外部晶体20M 以下时,可省外部复位电路。 u 共3个16位定时器/计

7、数器。 u 外部中断2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒。 u 通用异步串行口(UART)。 u 工作温度范围:-40 - +85。 u 封装: PDIP-40。单片机复位电路及晶振电路:晶振电路:复位电路:51单片机DIP40封装图3.2 18B20温度传感器温度传感器的种类众多,在应用与高精度、高可靠性的拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢电子爱好者来说,DS18B20的优势更是我们学习单片机技术产品的不二选择。 DS18B20的主要特征: u 全数

8、字温度转换及输出。 u 先进的单总线数据通信。 u 最高12位分辨率,精度可达土0.5摄氏度。 u 12位分辨率时的最大工作周期为750毫秒。u 可选择寄生工作方式。 u 检测温度范围为55C+125C(67F +257F)。 u 内置EEPROM,限温报警功能。 u 64位光刻ROM,内置产品序列号,方便多机挂接。 u 多样封装形式,适应不同硬件系统。测温部分电路设计:3.3 12864(带中文字库)液晶部分用户指令集1、指令表1:(RE=0:基本指令集)指令指令码说明执行时间(540KHZ)RSRWDB7DB6DB5DB4DB3DB2DB1DB0清除显示0000000001将DDRAM填满

9、“20H”,并且设定DDRAM的地址计数器(AC)到“00H”4.6ms地址归位000000001X设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容4.6ms进入点设定00000001I/DS指定在资料的读取与写入时,设定游标移动方向及指定显示的移位72us显示状态开/关0000001DCBD=1:整体显示ONC=1:游标ONB=1:游标位置ON72us游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容72us功能设定00001DLX0REXXDL=1 (必须设为1)RE

10、=1: 扩充指令集动作RE=0: 基本指令集动作72us设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址计数器(AC)72us设定DDRAM地址001AC6AC5AC4AC3AC2AC1AC0设定DDRAM地址到地址计数器(AC)72us读取忙碌标志(BF)和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值0us写资料到RAM10D7D6D5D4D3D2D1D0写入资料到内部的RAM(DDRAM/CGRAM/IRAM/GDRAM)72us读出RAM的值11D7D6D5D4

11、D3D2D1D0从内部RAM读取资料(DDRAM/CGRAM/IRAM/GDRAM)72us指令表2:(RE=1:扩充指令集)指令指令码说明执行时间(540KHZ)RSRWDB7DB6DB5DB4DB3DB2DB1DB0待命模式0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”72us卷动地址或IRAM地址选择000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM地址72us反白选择00000001R1R0选择4行中的任一行作反白显示,并可决定反白与否72us睡眠模式0000001SLXXSL=1:脱离睡眠模式SL=0:进

12、入睡眠模式72us扩充功能设定000011X1REG0RE=1: 扩充指令集动作RE=0: 基本指令集动作G=1 :绘图显示ONG=0 :绘图显示OFF72us设定IRAM地址或卷动地址0001AC5AC4AC3AC2AC1AC0SR=1:AC5AC0为垂直卷动地址SR=0:AC3AC0为ICON IRAM地址72us设定绘图RAM地址001AC6AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址计数器(AC)72us备注:1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个

13、指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。具体指令介绍:1、清除显示CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLH功能:清除显示屏幕,把DDRAM位址计数器调整为“00H”2、位址归位CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLL

14、LHX功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM3、位址归位CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHI/DS功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。4、显示状态 开/关CODE: RW RS DB7 DB6

15、DB5 DB4 DB3 DB2 DB1 DB0LLLLLLHDC B 功能: D=1;整体显示ON C=1;游标ON B=1;游标位置ON5、游标或显示移位控制CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLHS/CR/LX X 功能:设定游标的移动与显示的移位控制位:这个指令并不改变DDRAM的内容6、功能设定CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHDLX0 REX X 功能:DL=1(必须设为1) RE=1;扩充指令集动作 RE=0:基本指令集动作7、设定CGRAM位址CODE: RW

16、RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLHAC5AC4AC3AC2AC1 AC0功能:设定CGRAM位址到位址计数器(AC)8、设定DDRAM位址CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLHAC6AC5AC4AC3AC2AC1 AC0 功能:设定DDRAM位址到位址计数器(AC)9、读取忙碌状态(BF)和位址CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LHBFAC6AC5AC4AC3AC2AC1 AC0 功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址

17、计数器(AC)的值10、写资料到RAMCODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HLD7D6D5D4D3D2D1 D0 功能:写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)11、读出RAM的值CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HHD7D6D5D4D3D2D1 D0 功能:从内部RAM读取资料(DDRAM/CGRAM/TRAM/GDRAM)12、待命模式(12H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLL H 功能:

18、进入待命模式,执行其他命令都可终止待命模式13、卷动位址或IRAM位址选择(13H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLH SR 功能:SR=1;允许输入卷动位址 SR=0;允许输入IRAM位址 14、反白选择(14H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHR1 R0 功能:选择4行中的任一行作反白显示,并可决定反白的与否15、睡眠模式(015H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLHSLX X 功能:S

19、L=1;脱离睡眠模式 SL=0;进入睡眠模式16、扩充功能设定(016H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHHX1 REG L 功能:RE=1;扩充指令集动作 RE=0;基本指令集动作 G=1;绘图显示ON G=0;绘图显示OFF17、设定IRAM位址或卷动位址(017H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLHAC5AC4AC3AC2AC1 AC0 功能:SR=1;AC5AC0为垂直卷动位址 SR=0;AC3AC0写ICONRAM位址18、设定绘图RAM位址(018H)CODE

20、: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLHAC6AC5AC4AC3AC2AC1 AC0 功能:设定GDRAM位址到位址计数器(AC)显示坐标关系1、图形显示坐标水平方向X以字节单位 垂直方向Y以位为单位2、汉字显示坐标 X坐标Line180H81H82H83H84H85H86H87HLine290H91H92H93H94H95H96H97HLine388H89H8AH8BH8CH8DH8EH8FHLine498H99H9AH9BH9CH9DH9EH9FH液晶连接图3.4 ISD4002120P语音芯片ISD4002系列语音芯片采用多电平直接模拟存储(h

21、ip Corder)专利技术,声音不需要AD转换和压缩,每个采样直接存储在片内的闪烁存储器中避免了AD转换的误差,能够真实、自然地还原语音、音乐及效果声,避免了一般固体和压缩造成的量化噪声和金属声本文所设计的系统使用的芯片型号为ISD4002-120P,单片录放时间为120s。ISD4002工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作.因此,对ISD4002而言,在时钟上升沿锁存MOSI引脚数据,在下降沿将数据送至MISO引脚。协议具体内容如下: u 所有串行数据传输开始于SS下降沿; u SS在传输期间必须保持为低电平,

22、在两条指令之间保持为高电平; u 数据在时钟上升沿移入,在下降沿移出; u SS变低,输入指令和地址之后ISD才开始录放动作; u 指令格式是IO位地址码加6位控制码;u ISD的任何操作( 含快进) 如果遇到EOM或OVF则产生一个中断, 该中断状态在下一个SPI周期开始时被清除; u 使用读指令会使中断状态为移出ISD的MISO引脚时, 控制及地址数据也同步从MOSI移入; u 所有操作在运行位( R U N) 置“1”时开始,置“0”时结束;所有指令都在ss上升沿开始执行。 芯片的引脚图如下所示:ISD4002120P设计电路图:录音电路设计:3.5 无线发射电路无线解码接收电路:3.6

23、光电循迹电路在这里我用了1M欧的电阻,符合我的电路特点,网上很多写几十K甚至几K的都不能从实际上应用成功,这就是理论与实际的差距吧。3.7电机驱动电路为了分开单片机与驱动电路,在这里应用了光电耦合器(光耦817),并有四个发光二级管提示驱动方式。3.8电源由于本系统耗电较大,所以采用了分离式供电。即电机驱动和单片机电源分开供电,但是两个电源必须共地。四、程序设计4.1录音程序设计:根据ISD4002的特点,我们设计程序,将0-9等语音信号储存到从0000H开始的地址中。对应关系如下:地址储存语音信号0000H现在时间是0010H现在车速是0020H10030H20040H30050H40060

24、H50070H60080H70090H800A0H900B0H十00C0H点00D0H分00E0H秒00F0H欢迎使用振勇电子产品录音程序详解:见附录一4.2总程序详解:见附录二。五、系统测试与结论经多天艰苦调试,功能已经全部实现了。只是由于程序过于复杂,导致整个系统稳定性不佳,容易出错,还有待于进一步改进。欢迎大家批评指正。共同进步。参考文献:【1】2010年山东大学创新科技大赛智能语音数字温度计技术报告。都洪涛,黄浩龙,卢繁 著。【2】新概念51单片机C语言教程郭天祥著。【3】网友文章:玩转12864。附录一、录音程序详解#include#include#define uchar unsi

25、gned char#define uint unsigned intsbit ss=P10;/ss为允许通讯位sbit sclk=P11;sbit mosi=P12;sbit miso=P13;sbit led=P20;sbit isd_int=P17;/芯片溢出位sbit an=P16;sbit stop=P15;sbit pr=P14;波动开关,1为录音0为放音uchar count1,count2;void delay(uint time)纳秒级延时while(time!=0)time-;void delayms(uchar x)毫秒级延时uchar i,j;for(i=x;i0;i-)

26、for(j=121;j0;j-);void spi_send(uchar isdx) /串行发送子程序uchar i;ss=0;/通讯允许位sclk=0;for(i=0;i1;sclk=1;delay(2);sclk=0;delay(2);void isd_stop()/发送STOP指令delay(10);spi_send(0x30);ss=1;delayms(50);void isd_pu(void)/发送上电指令delay(10);/ss=0;spi_send(0x20);ss=1;delay(50);void isd_pd()/发送掉电指令delay(10);/ss=0;spi_send

27、(0x10);ss=1;delay(50);void isd_play()/发送PLAY指令led=0;ss=0;spi_send(0xf0);ss=1;void isd_rec(void)/发送REC指令led=0;/ss=0;spi_send(0xb0);ss=1;void isd_setplay(uchar adl,uchar adh)/发送STEPLAY指令spi_send(adl);adh=adh|0xe0;spi_send(adh);ss=1;void isd_setrec(uchar adl,uchar adh)/发送SETREC指令spi_send(adl);adh=adh|0

28、xa0;spi_send(adh);ss=1;void isd_overflow(void)/芯片溢出,LED闪烁while(an=0)led=1;delayms(300);led=0;delayms(300);uchar chk_isdovf(void)/检查芯片是否溢出ss=0;delay(2);sclk=0;delay(2);sclk=1;sclk=0;delay(2);if(miso)sclk=0;ss=1;isd_stop();return 1;else sclk=0;ss=1;isd_stop();return 0;void main()uchar ovflog;while(1)P

29、0=P1=P2=P3=0xff;/程序初始化while(an=1)/等待按键按下if(an=0)delayms(20);/延时确认isd_pu();isd_pd();isd_pu();if(pr=1)/pr等于0则为录音模式delayms(500);isd_setrec(0x00,0x00);while(an=0)isd_setrec(0x00+16*count1,0x00);count1+;isd_rec();delay(20);while(an=0)if(isd_int=0)isd_overflow();if(isd_int=0)break;led=1;isd_stop();while(a

30、n=1)if(stop=0)break;if(an=0)delayms(500);Else/则为放音模式while(an=0);isd_setplay(0x00,0x00);doisd_setplay(0x00+16*count2,0x00);count2+;isd_play();delay(20);while(isd_int=1);led=1;isd_stop();if(ovflog=chk_isdovf()/检查是否溢出break;while(an=1)if(stop=0)delayms(20);if(stop=0)break;if(an=0)delayms(20);led=0;while

31、(an=0);isd_stop();isd_pd();以上为录音程序,在作品中将这一部分程序去掉了,因为成品不可能让用户自己录音,因为那样可能会录乱。附录二、总程序详解#include/包含52单片机的头文件#include/包含左右移动的头文件#define uchar unsigned char #define uint unsigned intsbit sda=P24;/1307的数据位sbit scl=P25;/1307的时钟线sbit lcd_rs=P20;/液晶的操作位sbit lcd_rw=P21;sbit lcd_en=P22;sbit lcd_psb=P23;sbit key

32、1=P14;按键sbit key2=P15;sbit key3=P16;sbit key4=P26;sbit key5=P30;sbit key6=P31;sbit ds=P27;/18b20的操作位sbit ss=P10;/语音芯片的读写通讯允许位sbit sclk=P11;/语音芯片时钟线sbit mosi=P12;/语音芯片数据输入sbit miso=P13;/语音芯片数据输出sbit isd_int=P17;/语音芯片EOM中断信号uchar dis1=20 年 月 日;uchar dis2=时间 时 分 秒;uchar dis3=星期 温度 ;uchar dis4=振兴中华勇闯天涯;

33、uchar dis5=.;uchar code dis6=欢迎使用振勇电子;uchar code dis7=万年历 ;uchar code dis8=联系QQ;uchar code dis9=振勇电子实验室 ;uchar code dis10=制作 ;uchar num,num1,con,con1,son;uint aa,bb,cc,dd,ee,ff,gg,hh,ll,mm,jj,nn,kk,oo,pp,qq;long int wendu;char nian,yue,ri,shi,fen,miao,xingqi;void delay(uint z)纳秒级延时uchar x,y;for(x=z;

34、x0;x-)for(y=110;y0;y-);void delayms(uchar x)/毫秒级延时uchar i,j;for(i=x;i0;i-)for(j=121;j0;j-); void spi_send(uchar isdx) /串行发送子程序uchar i;ss=0;sclk=0;for(i=0;i1;sclk=1;delay(2);sclk=0;delay(2);void isd_stop()/发送STOP指令delay(10);spi_send(0x30);ss=1;delayms(50);void isd_setplay(uchar adl,uchar adh)/发送STEPL

35、AY指令spi_send(adl);adh=adh|0xe0;spi_send(adh);ss=1;void isd_pu(void)/发送上电指令delay(10);ss=0;spi_send(0x20);ss=1;delay(50);void isd_pd()/发送掉电指令delay(10);spi_send(0x10);ss=1;delay(50);void isd_play()/发送PLAY指令ss=0;spi_send(0xf0);ss=1;void delay_2(uint z)uchar x,x1;for(;z0;z-)for(x=0;x112;x+)for(x1=0;x11;x

36、1+); void star()sda=1;delay(2);scl=1;delay(2);sda=0;delay(2);void stop()sda=0;delay(20);scl=1;delay(20);sda=1;delay(20);void ack()uchar z=0;while(sda=1)&(z50)z+;scl=0;delay(2);void write(uchar slave_write_address,uchar byte_address,uchar data_data)/写一个数据 uchar temp,temp1,i,ii; star();/开始 for(ii=0;ii

37、3;ii+)/根据 24CXX文档资料,和时序图,按顺序送:器件写地址,字节地址,数据 if(ii=0) temp=slave_write_address;/送 器件写地址 temp1=slave_write_address; else if(ii=1) temp=byte_address;/送 字节地址 temp1=byte_address; else if(ii=2) temp=data_data;/送 数据 temp1=data_data; for(i=0;i8;i+) scl=0; delay(5);/5us延时 temp=temp1; temp=temp&0x80;/ 相 与 后,把

38、不相关的位清零 if(temp=0x80)/根据前面 相 与 后,判断 temp是否等于0x80,是则该位为 1 sda=1; else sda=0; delay(5);/5us延时 scl=1; delay(5);/5us延时 scl=0; delay(5);/5us延时 temp1=temp11;/向左移出1位 sda=1; delay(5);/5us延时 scl=1; delay(5);/5us延时 ack(); stop();/停止 read(uchar slave_write_address,uchar byte_address,uchar slave_read_address)/读

39、一个数据 uchar temp,temp1,i,ii,x,data_data; star();/开始 for(ii=0;ii3;ii+)/根据 24CXX文档资料,和时序图,按顺序送:器件写地址,字节地址,器件读地址 if(ii=0) temp=slave_write_address;/送 器件写地址 temp1=slave_write_address; else if(ii=1) temp=byte_address;/送 字节地址 temp1=byte_address; else if(ii=2) star();/开始 temp=slave_read_address;/送 器件读地址 tem

40、p1=slave_read_address; for(i=0;i8;i+)/开始读数据 scl=0; delay(5);/5us延时 temp=temp1; temp=temp&0x80;/ 相 与 后,把不相关的位清零 if(temp=0x80)/根据前面 相 与 后,判断 temp是否等于0x80,是则该位为 1 sda=1; else sda=0; delay(5);/5us延时 scl=1; delay(5);/5us延时 scl=0; delay(5);/5us延时 temp1=temp11;/向左移出1位 sda=1; delay(5);/5us延时 scl=1; delay(5)

41、;/5us延时 ack();/应答 for(x=0;x8;x+) data_data=data_data0)i-;ds=1;i=4;while(i0)i-; bit tempreadbit(void)uint i;bit dat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i0)i-;return(dat);uchar tempread (void)uchar i,j,dat;dat=0;for(i=1;i8;i+)j=tempreadbit();dat=(j1);return(dat); void tempwritebyte(uchar dat)uint i;uc

42、har j;bit testb;for(j=1;j1;if(testb)ds=0;i+;i+;ds=1;i=8;while(i0)i-;else ds=0;i=8;while(i0)i-;ds=1;i+;i+; void tempchange(void)dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0x44); uint get_temp()/单总线操作,获取温度uchar a,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread();b=tem

43、pread();wendu=b;wendu=8;wendu=wendu|a;wendu=wendu/10;return wendu; void desplay()/120864显示程序具体不在解释sfm();/将十位与各位分开显示write_com(0x81);/写地址write_dat(dis5ll);/写数据delay(5);write_dat(dis5mm);delay(5);write_com(0x83);write_dat(dis5jj);delay(5);write_dat(dis5kk);delay(5);write_com(0x85);write_dat(dis5gg);del

44、ay(5);write_dat(dis5hh);delay(5);write_com(0x92);write_dat(dis5ee);delay(5); write_dat(dis5ff);delay(5); write_com(0x94);write_dat(dis5cc);delay(5);write_dat(dis5dd);delay(5);write_com(0x96);write_dat(dis5aa);delay(5);write_dat(dis5bb);delay(5);write_com(0x8a);write_dat(dis5nn);delay(5); write_com(0x8e);write_dat(dis5oo);delay(1);write_dat(dis5pp);delay(1);write_com(0x8f);write_dat(dis510);write_dat(dis5qq);delay(2);void baowen()/报温程序isd_setplay(0x10,0x00);/温度十位isd_play();whil

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!