(整理)温度检测模块_第1页
(整理)温度检测模块_第2页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、.专业资料.石家庄经济学院信息工程学院电子信息工程专业单片机课程设计报告题目温度检测模块设计_姓名0000000_学号00000000000000000_班级00000000000_ 指导教师 000000000000.专业资料.2013 年 7 月 4 日要求:1 .指导教师按照课程设计大纲要求完成学生课程设计指导工 作。2.课程设计任务书由指导教师照大纲要求填写,内容要全面。3.课程设计报告由参加本学生填写。课程设计结束时交指导教师。4.指导教师要根据每一位学生课程设计任务完成情况 ,认真审 核设计报告,并在课程设计结束时,给出客观、准确的评语和 成绩。5.课程设计任务书和报告要语言流畅

2、,图表正确规范。6.本表要用钢笔、圆柱笔填写或打印,字迹工整。.专业资料.班级 4101090102 姓名 0000000 学号 0000000000000000000课程设计题目_温度检测模块设计_课程设计起止日期2013 年 6 月 17 日 至 2013 年 7 月 5 日实习地点 实验室 106课程设计内容与要求(包括:设计任务及要求、设计原理、所需仪器设备、验收标准)及格:矩阵式键盘设置 4 个按键,初始时,4 位数码管无显示。当 1 号键按下时,第一位数码管显示 1,并闪烁两次;当 2 号键按下时,第二位数码管显示 2,并闪烁两 次;3号键、4 号键同样功能。中:在完成及格任务的基

3、础上,能对来自热敏电阻传感器上的信号进行 A/D 转换,并在数码管上实时显示采集的电压值。设置开始、结束两个按键控制采集过程。良:将显示的电压值转换成显示温度值,并能够通过按键设定校正值;优:将所有的按键功能通过红外遥控器实现。(开始、结束和校正值设定).专业资料.指导教师:董建彬2013 年 6 月 17 日.专业资料.课程设计任务书一、设计原理与技术方法:(包括:电路工作原理分析与原理图、元器件选择、电路调试方法与结果说明;软件设计说明书与流程图、软件源程序代码、软件调试方法与运行结果说明。)fSiOEFt OP1?U(J20 Irq.=0 Oii+-F3J=L !t? 6-1J=L*0

4、Oipfeq*fka -q.0 P诃i -q.*q*5 CP)1巩1PDBDQIPO.IMIPD却利测利点卜PDiffli和訊E曲FD.W1P2WP1W9F31M0psiFIBIIF3.M3邑粗硼FifllfltPJ1WIPIOfEp俪PIJAEMjntDPI!帕釉PIJF3HFll皿0PI5PHUPitpjdJItptjF3.1Axraa五TTT10Hlj卫丄圧1(卫R? ikU3GL如ECRAMJUQ間丽Ala灿TSTlffi=08CMM.专业资料.1. 电路工作原理分析:89C52 芯片 P0 口,即 P0.0-P0.7 连接到键盘的 D0-D7 , P0 口既是 8 数据口,又是16

5、位地址口的低 8 位。同时 P0 口连接八段数码管作为段选信号。89C52 芯片 P2.7 与 PCF8951 的 SDA 相连做为位锁存,P2.6 与 PCF8951 的 SCL 相连作为段选。89C52 芯片 P3.2 与红外相连作为外部中断。1.1 89C52 芯片说明:(1) 主电源引脚(2 根)VCC(Pin40):电源输入,接+ 5V 电源GND(Pin20):接地线(2) 外接晶振引脚(2 根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端(3) 控制引脚(4 根)RST/VPP(Pin9):复位引脚,引脚上出现 2 个机器周期的高电

6、平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。.专业资料.(4)可编程输入/输出引脚(32 根)STC89C52 单片机有 4 组 8 位的可编程 I/O 口,分别位 PO、P1、P2、P3 口,每个 口有8 位(8 根引脚),共 32 根。PO 口( Pin39 Pin32): 8 位双向 I/O 口线,名称为 P0.0P0.7P1 口(Pin1Pin8): 8 位准双向 I/O 口线,名称为 P1.0P1.

7、7P2 口(Pin21Pin28): 8 位准双向 I/O 口线,名称为 P2.0P2.7P3 口(Pin10Pin17): 8 位准双向 I/O 口线,名称为 P3.0P3.7STC89C52 主要功能如表一所示。表 1 STC89C52 主要功能主要功能特性兼容 MCS51 指令系统8K 可反复擦写 Flash ROM32 个双向 I/O 口256x8bit 内部 RAM3 个 16 位可编程定时/计数器中断时钟频率 0-24MHZ2 个串行中断可编程 UART 串行通道2 个外部中断源共 6 个中断源2 个读写中断口线3 级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能1.2 PCF8

8、951 芯片说明:PCF8591 是一个单片集成、单独供电、低功耗、8-bit CMOS 数据获取器件。PCF8591 具有 4 个模拟输入、1 个模拟输出和 1 个串行 I2C 总线接口。.专业资料.PCF8591 的 3 个地址引脚 A0, A1 和 A2 可用于硬件地址编程,允许在同个 I2C.专业资料.总线上接入 8 个 PCF8591 器件,而无需额外的硬件。在 PCF8591 器件上输入输 出的地址、控制和数据信号都是通过双线双向I2C 总线以串行的方式进行传输 1.2.1 特性(1) 单独供电(2) PCF8591 的操作电压范围 2.5V-6V(3) 低待机电流(4)通过 I2

9、C 总线串行输入/输出(5)PCF8591 通过 3 个硬件地址引脚寻址(6)PCF8591 的采样率由 I2C 总线速率决定(7)4 个模拟输入可编程为单端型或差分输入(8)自动增量频道选择(9)PCF8591 的模拟电压范围从 VSS 到 VDD(10)PCF8591 内置跟踪保持电路(11)8-bit 逐次逼近 A/D 转换器(12)通过 1 路模拟输出实现 DAC 增益红外模块说明:通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作,如图 1 所示。发射部分包括键盘矩阵、编码调制、LED 红外发送器;接收部分包括光、电转换放大器、解调、解码电路。.专业

10、资料.图二红外遥控系统图接收电路可以使用一种集红外线接收和放大于一体的一体化红外线接收器 ,不需 要任何外接元件,就能完成从红外线接收到输出与 TTL 电平信号兼容的所有工作,而 体积和普通的塑圭寸三极管大小一样,它适合于各种红外线遥控和红外线数据传输 。接收器对外只有 3 个引脚:Out、GND、Vcc 与单片机接口非常方便,如图 2(1)脉冲信号输出接,直接接单片机的 IO 口。(2)GND 接系统的地线(0V);(3)Vcc 接系统的电源正极(+5V);2. 程序设计思路及程序说明2.1 及格档2.1.1 要求矩阵式键盘设置 4 个按键,初始时,4 位数码管无显示。当 1 号键按下时,第

11、一位数 码管显示 1,并闪烁两次;当 2 号键按下时,第二位数码管显示并闪烁两次;3 号键、 4 号键同样功能。2.1.2 设计思路.专业资料.对键盘扫描确定键值,可实现按下键数码管显示相应的键值,并通过 for 循环控 制闪烁的次数。其中按键抖动问题可以通过延时程序解决。2.1.3 流程图图四及格档流程图2.1.4 程序代码#include / 包含头文件#defi ne uchar un sig ned char#defi ne uint un sig ned int/子函数声明uint sca nkey();void delay( uint x);void display(key);vo

12、id display1(key);/全局变量声明.专业资料.uchar code wei=0 xfe,0 xfd,0 xfb,0 xf7;uchar code dua n=0 xf9,0 xa4,0 xb0,0 x99;uint hang;uint lie;/延时子函数void delay( uint x)uint t;while(x-)for(t=0;t120;t+);/键盘扫描子函数uint sea nkey()P 仁 0 xfe; /只扫面一行switch(P1)case 0 xee: lie=1;break;case 0 xde: lie=2;break;case 0 xbe: lie

13、=3;break;case 0 x7e: lie=4;break;.专业资料.default: break;while(P1 &0 xf0)!=0 xf0); / 无键按下时return (lie);/显示子函数void display(key)uint i,j;for(j=0;j2;j+) /for 循环控制闪烁次数for(i=0;i100;i+)/ 通过循环延时P0=duankey-1; / 发送段码P2=weikey-1; 发送位码delay(4);for(i=0;i100;i+)P2=0 xff; /关闭所有数码管并延时delay(4);.专业资料./显示子函数void dis

14、playl(key)if(key!=O)P2=weikey-1; 发送位码delay(1);P0=duankey-1; / 发送段码delay(2);else P2=0 xff;/ 关数码管/主函数void mai n()uint key=0;while(1)P 仁 0 xfe;if(P1!=0 xfe)/判断是否有键按下.专业资料.delay (100);/ 延时去抖if(P1!=0 xfe)/确实有键按下key=sca nkey();/ 调扫描程序display(key); /调显示程序else displayl(key); /无键按下时调显示 1 程序 2.2 中档2.2.1 要求矩阵式

15、键盘设置 4 个按键,初始时,4 位数码管无显示。当 1 号键按下时,第一 位数码管显示 1,并闪烁两次;当 2 号键按下时,第二位数码管显示并闪烁两次;3 号键、4 号键同样功能。并能对来自热敏电阻传感器上的信号进行A/D 转换,并在数码管上实时显示采集的电压值。设置开始、结束两个按键控制采集过程。2.2.2 设计思路对键盘扫描确定键值,可实现按下键数码管显示相应的键值,并通过 for 循环控 制闪烁.专业资料.的次数。其中按键抖动问题可以通过延时程序解决 。PCF8591 将模拟量转换 为数字量,即可将输入模拟电压 0 5V 转换为 8 位的数字量,共28,所以每份为5=0.02V,将模拟

16、量转化成数字量并听过计算分别送入四个数码管,即可实现数码255管显示采集的电压值。.专业资料.223 流程图图五中档流程图2.2.4 程序代码/*-内容:温度测量模块-*/#in elude #i nclude vintrin s.h#define AddWr 0 x90/ 写数据地址#define AddRd 0 x91/ 读数据地址#defi ne KeyPort P1.专业资料.#defi ne_Nop() _nop_() / 定义空指令sbit SDA=P2A7;sbit SCL=P2A6;/*-全局变量声明- */un sig ned char codedofly_Dua nMa=0

17、 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff; 显示段码值 09un sig ned char code dofly_WeiMa4=0 xfe,0 xfd,0 xfb,0 xf7;分别对应相应的数码管点亮,即位码un sig ned char TempData4=0 xff,0 xff,0 xff,0 xff; /存储显示值的全局变量un sig ned char j,ha ng,lie;bit ack;bit ReadADFlag;/*-子函数声明- */void DelayUs2x( un sig ned

18、char t);void Display (un sig ned char FirstBit,u nsig ned char Num);void Ini t_Timer0(void);.专业资料.void TimerO_isr(void);void Start_l2c();void Stop_l2c();void NoAck_l2c(void);voidSen dByte( un sig ned char c);un sig ned char RcvByte();un sig ned char ReadADC( un sig ned char Chi);/*-延时子程序- */void Del

19、ayUs2x( un sig ned char t)while(-t);void DelayMs( un sig ned char t)while(t-)/大致延时 1mSDelayUs2x(245);DelayUs2x(245);.专业资料./*-键盘扫描子程序- */unsigned char keyscan()/ 键盘扫描函数,KeyPort=OxOf;if(KeyPort!=OxOf) DelayMs(10);if(KeyPort!=0 x0f)KeyPort=0 x0f;switch(KeyPort)case 0 x0e: han g=1;break;case 0 x0d: han

20、g=2;break;case 0 x0b: han g=3;break;case 0 x07: han g=4;break;default: break;DelayMs(5);KeyPort=0 xf0;使用行列逐级扫描法.专业资料.switch(KeyPort)case OxeO: lie=1;break;case OxdO: lie=2;break;case 0 xb0: lie=3;break;case 0 x70: lie=4;break;default: break;while(KeyPort&0 xf0)!=0 xf0);return (ha ng-1)*4+lie-1);

21、 return (17);void Display (un sig ned char FirstBit, un sig ned char Num)static un sig ned char i=0;P0=0 xff; /清空数据,防止有交替重影P2=dofly_WeiMai+FirstBit; / 取位码.专业资料.PO=TempDatai; /取显示数据,段码i+;if(i=Num)i=0;/*-定时器初始化子程序- */void Ini t_Timer0(void)TMOD |= 0 x01;/使用模式 1, 16 位定时器,使用|符号可以在使用多个定时器时不受影响/TH0=0 x00;

22、/给定初值/TL0=0 x00;EA=1;/总中断打开ET0=1;/定时器中断打开TR0=1;/定时器开关打开/*-定时器中断子程序.专业资料.- */void TimerO_isr(void) interrupt 1static un sig ned int num;TH0=(65536-2000)/256;/ 重新赋值 2msTL0=(65536-2000)%256;Display(0,4);/调用数码管扫描nu m+;if(num=50)/ 大致 100msnum=0;ReadADFIag=1; / 读标志位置 1/*-启动总线- */void Start_l2c()SDA=1;/发送起

23、始条件的数据信号_Nop();SCL=1;.专业资料._Nop(); II 起始条件建立时间大于 4.7us,延时_Nop();_Nop();_Nop();_Nop();SDA=O;II 发送起始信号_Nop(); II 起始条件锁定时间大于 4 卩_Nop();_Nop();_Nop();_Nop();SCL=O; II 钳住 I2C 总线,准备发送或接收数据_Nop();_Nop();I*-结束总线- *Ivoid Stop_l2c()SDA=0; II 发送结束条件的数据信号.专业资料.Nop();/发送结束条件的时钟信号SCL=1;/结束条件建立时间大于 4 卩_Nop();_Nop(

24、);_Nop();_Nop();_Nop();SDA=1;/发送 I2C 总线结束信号_Nop();_Nop();_Nop();_Nop();/*-写入一个字节到指定地址- */void Sen dByte( un sig ned char c)un sig ned char BitC nt;for(BitCnt=O;BitCnt8;BitCnt+)/ 要传送的数据长度为 8 位.专业资料.专业资料.if(cBitC nt)&0 x80)SDA=1;/ 判断发送位else SDA=0;_Nop();SCL=1;/置时钟线为高,通知被控器开始接收数据位_Nop();_Nop();/保证时

25、钟高电平周期大于 4 卩_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop();SDA=1;8 位发送完后释放数据线,准备接收应答位_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();if(SDA=1)ack=0;else ack=1;/判断是否接收到应答信号.专业资料.SCL=O;_Nop();_Nop();/*-从指定地址读取一个字节数据-*/un sig ned char RcvByte()un sig ned char retc;un sig ned char BitC nt;retc=0;SDA=1;/置数据线为输入方式for(

26、BitC nt=0;BitC nt8;BitC nt+)_Nop();SCL=0;/置时钟线为低,准备接收数据位_Nop();_Nop();/时钟低电平周期大于 4.7us_Nop();_Nop();.专业资料._Nop();SCL=1;/置时钟线为高使数据线上数据有效_Nop();_Nop();retc=retc1;if(SDA=1)retc=retc+1; / 读数据位,接收的数据位放入 retc 中_Nop();_Nop();SCL=0;_Nop();_Nop();return(retc);/*-发送非应答- */void NoAck_l2c(void)SDA=1;_Nop();.专业资

27、料._Nop();_Nop();SCL=1;_Nop();_Nop();/时钟低电平周期大于 4 卩_Nop();_Nop();_Nop();SCL=0;/清时钟线,钳住 I2C 总线以便继续接收_Nop();_Nop();/*-主程序- */mai n()un sig ned char num=O,nu m 仁 O,nu m2=17,k,i;int nu m3=0,num4=0;Ini t_Timer0();DelayMs(20);while (1)/ 主循环.专业资料.nu m2=keysca n();saomiao:if(nu m2=0)for(j=0;j2;j+)闪烁两次TempDat

28、a0=0 xff;/ 关闭数码管TempData1=0 xff;TempData2=0 xff;TempData3=0 xff;DelayMs(500);DelayMs(500);TempData0=dofly_Dua nMa1;将段码 1 送入第一个数码管TempData1=0 xff;TempData2=0 xff;TempData3=0 xff;DelayMs(500);if(nu m2=1).专业资料.for(j=0;j2;j+)闪烁两次TempData0=0 xff;/ 关闭数码管TempData1=0 xff;TempData2=0 xff;TempData3=0 xff;Dela

29、yMs(500);DelayMs(500);TempData0=0 xff;TempData1=dofly_DuanMa2;/ 将段码 2 送入第二个数码管TempData2=0 xff;TempData3=0 xff;DelayMs(500);if(nu m2=2)for(j=0;j2;j+)闪烁两次TempDataO=Oxff; / 关闭数码管.专业资料.TempData1=0 xff;TempData2=0 xff;TempData3=0 xff;DelayMs(500);DelayMs(500);TempData0=0 xff;TempData1=0 xff;TempData2=dof

30、ly_DuanMa3;/将段码 3 送入第三个数码管TempData3=0 xff;DelayMs(500);if(nu m2=3)for(j=0;j2;j+)闪烁两次TempData0=0 xff; / 关闭数码管TempData1=0 xff;TempData2=0 xff;TempData3=0 xff;DelayMs(500);.专业资料.DelayMs(500);TempData0=0 xff;TempData1=0 xff;TempData2=0 xff;TempData3=dofly_DuanMa4; / 将段码 4 送入第四个数码管DelayMs(500);if(nu m2=4

31、)k=1;while(k)num2=keysca n();/调键扫子程序if(ReadADFIag)ReadADFlag=0;/读标志位为零EA=0;num=ReadADC(1);EA=1;/A/D 采样前关中断,采样结束后开中断.专业资料.num 仁 n um*5*100/255%10;/计算第一个数码管的段码num=num*5*10/255;/模拟量转化成数字量TempData0=0 xff;/ 数码管关TempData1=dofly_Dua nM a( nu m-( num/100)*100)/10&0 x7f;/管段码,显示小数点TempData2=dofly_Dua nMan

32、 um%10; 计算第二个数码管段码TempData3=dofly_Dua nManu m1;if(nu m2=0| nu m2=1| nu m2=2| nu m2=3| nu m2=5| nu m2=6)goto saomiao;/ 跳出循环if(num2=5)/实现电压保持TempData0=0 xff;TempData1=dofly_Dua nM a( nu m-( nu m/100)*100)/10&0 x7f;TempData2=dofly_Dua nManu m%10;TempData3=dofly_Dua nM a num1;if(nu m2=6)计算第三个数码.专业资料

33、.TempDataO=Oxff;/关闭所有数码管TempData1=0 xff;TempData2=0 xff;TempData3=0 xff;/*-读 AD 转值程序- */un sig ned char ReadADC( un sig ned char Chi)un sig ned char Vai;Start_l2c();Sen dByte(AddWr);if(ack=O)return(O);Sen dByte(Chi);if(ack=O)return(O);Start_I2c();Sen dByte(AddRd);/启动总线/发送器件地址/发送器件子地址.专业资料.if(ack=O)r

34、eturn(O);Val=RcvByte();NoAck_l2c();/发送非应位Stop_l2c();/结束总线return(Val);2.3 良档2.3.1 要求矩阵式键盘设置 4 个按键,初始时,4 位数码管无显示。当 1 号键按下时,第一 位数码管显示 1,并闪烁两次;当 2 号键按下时,第二位数码管显示 2,并闪烁两次; 3 号键、4 号键同样功能。能对来自热敏电阻传感器上的信号进行 A/D 转换,并在数 码管上实时显示采集的电压值。设置开始、结束两个按键控制采集过程。将显示的电 压值转换成显示温度值,并能够通过按键设定校正值。2.3.2 设计思路对键盘扫描确定键值, 可实现按下键数

35、码管显示相应的键值, 并通过 for 循环控制闪 烁的次数。其中按键抖动问题可以通过延时程序解决。PCF8591 将模拟量转换为数字量,即可将输入模拟电压0 -=0.02V-5V 转换为 8 位的数字量,共28,所以每份为255将模拟量转化成数字量并听过计算分别送入四个数码管,即可实现数码管显示采集的 电压值。.专业资料.通过温度电阻的关系,电阻电压的关系制作温度电压表,用查表的的方法实 现电压温度的转化显示温度。并设定加减键对温度进行矫正。.专业资料.233.流程图2.3.4 程序代码 /*内容:温度测量模块- */ #in elude #i nclude vintrin s.h#defi

36、ne KeyPort P1#defi ne AddWr 0 x90#defi ne AddRd 0 x91#define _Nop() _nop_()/ 定义空指令/写数据地址/读数据地址图六中档流程图.专业资料.sbit SDA=P2A7;/定义锁存使能端口 位锁存sbit SCL=P2A6;定义锁存使能端口 段锁存bit ack;bit ReadADFlag;/*-全局变量声明- */un sig ned char j,ha ng,lie;un sig ned char code dofly_Dua nM a=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x8

37、2,0 xf8,0 x80,0 x90,0 xff;显示段码值 09un sig ned char code dofly_WeiMa4=0 xfe,0 xfd,0 xfb,0 xf7;分别对应相应的数码管点亮,即位码un sig ned char TempData4=0 xff,0 xff,0 xff,0 xff; /存储显示值的全局变量un sig ned int code wen du=6067,6043,6019,5995,5971,5947,5923,5899,5875,5851,5827,5803,5778,5755,5731,5706,5682,5658,5634,5609,558

38、5,5561,5536,5512,5487,5463,5438,5414,5389,5365,5341,5316,5292,5267,5242,5218,5193,5169,5144,5119,5095,5070,5045,5020,4996,4971,4946,4921,4896,4872,4847,4822,4797,4772,4747,4722,4697,4672,4647,4622,4597,4571,4546,4521,4495,4470,4445,4419,4393,4368,4342,4316,4290,4264,4238,4212,4186,4159,4133,4106,407

39、9,4052,4025,3997,4081,4054,4028,4012,3975,3949,3922,3896,3869,3843,3817,3791,3764,3738,3711,3684,3658,3631,3605,3578,3551,3525,3498,3471,3444,3417,3390,3363,3336,3309,3282,3255,3227,3200,3173,3145,.专业资料.3117,3089,3061,3032,3004,2976,2947,2918,2888,2859,2829,2799,2769,2738,2707,2676,2644,2612,2579,25

40、46,2513,2479,2444,2410,2374,2339,2302,2266,2229,2192,2154,2118,2080,2043,2007,1971,1936,1903,1871,1842,1817,1795,1779,1768,1766,1773,1792,1825;/*-子函数声明- */void DelayUs2x( un sig ned char t);void Display (un sig ned char FirstBit,u nsig ned char Num);void Ini t_Timer0(void);void Timer0_isr(void);void

41、 Start_I2c();void Stop_l2c();void NoAck_l2c(void);voidSen dByte( un sig ned char c);un sig ned char RcvByte();un sig ned char ReadADC( un sig ned char Chl);/*-延时子程序.专业资料.- */void DelayUs2x( un sig ned char t)while(-t);void DelayMs( un sig ned char t)while(t-)/大致延时 1mSDelayUs2x(245);DelayUs2x(245);/*

42、-键盘扫描子程序- */unsigned char keyscan()/ 键盘扫描函数KeyPort=0 x0f;if(KeyPort!=OxOf) DelayMs(10);使用行列逐级扫描法.专业资料.if(KeyPort!=OxOf)KeyPort=0 x0f;switch(KeyPort)case OxOe: han g=1;break;case 0 x0d: han g=2;break;case 0 x0b: han g=3;break;case 0 x07: han g=4;break; default: break;DelayMs(5);KeyPort=0 xf0;switch(K

43、eyPort)case 0 xe0: lie=1;break;case 0 xd0: lie=2;break;case 0 xb0: lie=3;break;case 0 x70: lie=4;break; default: break;while(KeyPort&0 xfO)!=OxfO);return (ha ng-1)*4+lie-1);.专业资料. return (17);/*-显示子程序- */void Display (un sig ned char FirstBit, un sig ned char Num) static un sig ned char i=0;P0=0

44、 xff;/清空数据,防止有交替重影P2=dofly_WeiMai+FirstBit; / 取位码P0=TempDatai; /取显示数据,段码i+;if(i=Num)i=0;.专业资料./*-定时器初始化子程序- */void Ini t_TimerO(void)TMOD |= 0 x01;/使用模式 1 ,16 位定时器,使用|符器时不受影响/TH0=0 x00;/给定初值/TL0=0 x00;EA=1;/总中断打开ET0=1;/定时器中断打开TR0=1;/定时器开关打开/*-定时器中断子程序- */ void Timer0_isr(void) interrupt 1 static un

45、sig ned int num;TH0=(65536-2000)/256;/ 重新赋值 2msTL0=(65536-2000)%256;Display(0,4);/调用数码管扫描可以在使用多个定时.专业资料.nu m+;if(num=50)/ 大致 100msnum=0;ReadADFIag=1; / 读标志位置 1/*-启动总线- */void Start_l2c()SDA=1;/发送起始条件的数据信号_Nop();SCL=1;_Nop();/起始条件建立时间大于 4.7us,延时_Nop();_Nop();_Nop();_Nop();SDA=O;/发送起始信号_Nop();/起始条件锁定时

46、间大于 4 卩.专业资料._Nop();_Nop();_Nop();_Nop();SCL=O; /钳住 I2C 总线,准备发送或接收数据_Nop();_Nop();/*-结束总线- */void Stop_l2c()SDA=0;/发送结束条件的数据信号_Nop();/发送结束条件的时钟信号SCL=1;/结束条件建立时间大于 4 卩_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; /发送 I2C 总线结束信号.专业资料._Nop();_Nop();_Nop();_Nop();/*-写入一个字节到指定地址-*/void Sen dByte( un sig ned char c)un sig ned char BitC nt;for(BitCnt=O;BitCnt8;BitCnt+)/ 要传

温馨提示

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

评论

0/150

提交评论