




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子工程设计第三阶段报告题目4:温度控制系统的定时测量、定时控制、数据记录功能扩展专业: 电子信息工程小组: 19姓名学号: 12021031 指导教师: 高新完成日期:2015.4目录一实验介绍3二基础模块介3三功能设计4四总体设计9五程序调试及遇到的问题11六实验心得与体会.12七参考文献.12附录.13温度控制系统的定时测量、定时控制、数据记录功能扩展一实验介绍1、项目简介:该项目在已经完成的闭环温度控制系统上增加一些新的功能。包括定时温度测控和数据记录二个方面。定时温度测控指的是按一定时间间隔刷新温度的测量结果显示和在规定的时间点上启动温度控制过程。数据记录指的是温度测量的文字数据存档和温度变化过程的图形数据输出。2、实验背景:实时钟电路为能够实时提供精确的日期、时间数据的专用电路,可用于以时间作为动作参考的测控系统之中。实时钟电路均带有标准的处理器接口,可以通过简单的数据访问操作实时获得所需的日期、时间信息。非易失存储器可用于掉电数据不丢失的数据保存需要。非易失存储器常用的有EPROM、EEPROM、Flash ROM、FRAM等,其中EEPROM是低成本、使用简单的非易失存储器,可用于几百KB规模的数据掉电不丢失存储。微型打印机是一种低成本记录设备,可用于文字、图形的存档记录。3、实验要求: 采用实时钟电路进行温度测量与控制的精确定时设计。 对温度测量结果进行掉电不丢失存储。 用微型打印机记录测温结果及温度变化趋势曲线。二基础模块介绍1、单片机C8051F023主要连接如下图2、显示、键盘电路:接在cs4,地址0x80003、AD转换电路:将模拟信号转为数字信号,负责读取温度,接在cs0,地址0x00004、DA转换电路:负责控制实验箱温度的上升与下降,接在cs3,地址0x2000三功能设计1.时钟功能(1)硬件设计:时钟功能我们选用ds12887芯片来实现。DS12887是Dallas半导体公司推出的实时时钟芯片,在没有外部供电的情况下,可以正确走时10年;可以计数时分秒、年月日和星期等信息。以下为其连接图。 AD0AD7是地址、数据复用线,跟标准的51单片机的P0口类似,在一个读写周期里的前后两个时间段分别是作为地址线或数据线。可与f023单片机的AD0AD7口直连。ALE为地址锁存信号,因为DS12887数据地址线采用分时复用的形式,所以需要ALE作地址锁存信号。在一个读写周期里AD0AD7引脚上首先出现的信号表示地址,通过ALE的下降沿将该信号锁存到DS12887的地址寄存器,稍后AD0AD7引脚上出现的信号则表示写入或读出DS12887的数据。ALE可以直接连接至f023的ALE引脚。CS为片选信号,为低电平时选中芯片,是DS12887的读写基地址:接在cs3,地址0x4000。RST引脚输出有效低电平,该引脚为漏极开路输出,在外部需要加上拉电阻。复位功能在本设计中不使用,RST可以直接接高电平。(2)程序设计ds12887的程序分为三部分,定义、写入和读取。定义:unsigned char a7=15,4,21,7,14,0,0/定义一个存取数据的数组,7位代表了年、月、日、星期、小时、分、秒。#define DS12887 0x4000 /定义时钟芯片的片选基址#define DS12887_sec DS12887+0x00 / 秒#define DS12887_min DS12887+0x02 / 分#define DS12887_hour DS12887+0x04 / 时#define DS12887_Reg_A DS12887+0x0a /寄存器A#define DS12887_Reg_B DS12887+0x0b /寄存器B#define DS12887_Reg_C DS12887+0x0c /寄存器C#define DS12887_Reg_D DS12887+0x0d /寄存器D写入:void WriteDs12887()REG_ADD=DS12887_Reg_B; *REG_ADD=0x80; REG_ADD=DS12887_min; *REG_ADD=a5; /将a数组的分数据放入ds12887中REG_ADD=DS12887_sec; *REG_ADD=a6; /将a数组的秒数据放入ds12887中 REG_ADD=DS12887_Reg_A; *REG_ADD=0x20; REG_ADD=DS12887_Reg_B; *REG_ADD=0x06;读取:void ReadDs127887()/将12887中的数据读取到a中相应位置 unsigned char temp; REG_ADD=DS12887_Reg_B;do temp=*REG_ADD; while(temp&0x80)=0x80);REG_ADD=DS12887_min; a5=*REG_ADD; /读取现在的分REG_ADD=DS12887_sec; a6=*REG_ADD; /读取秒2.掉电存储功能(1)硬件设计:掉电存储功能我们选用的是eeprom芯片AT24C64。AT24C64是ATMEL公司生产的 I2C总线的EEPROM芯片,属于最常用24C系列。24C系列从24C01到24C512,C后面的数字代表该型号的芯片有多少K的存储位。ATMEL的24C64存储位是64K位它支持1.8V到5V电源,可以擦写1百万次,数据可以保持100年使用5V电源时时钟可以达到400KHz。SDA是串行数据引脚用于在芯片读写时输入或输出数据、地址等,这个引脚是双向引脚,它是漏极开路的使用时需要加上一个上拉电阻。接在P1*5。SLC脚是器件的串行同步时钟信号,如果器件是使用在单片机系统中那么SLC脚应该由单片机控制根据单片机的程序要求产生串行同步时钟信号控制总线的存取。接在P1*7。WP脚是写保护脚,当这个脚接入高电平时芯片的芯片数据均处于禁止写入状态,所禁止的地址段要看各芯片的详细资料,当把WP脚接到地线芯片处于正常的读写状态。A0到A2为总线地址,我们由于不用总线就置于000了。注:本来f023单片机是由专用slc及sda引脚的,但由于关于f023用的总线资料不太好找,所以我们决定和打印机一样使用在Init device中被定义成I/O口的P1*4-P1*7管脚了。(2)程序部分*start()、stop()等子程序在附录中可查看写入函数:void write_m_data_24c64(uchar addH,uchar addL,uchar *m_data_24c64,uchar n) /从某地址开始连续多字节写入(前两位写入高低地址,第四位地址相当于一页,第三位为存储写入数据的数组) uchar i;start_24c64();/调用启动子程序,通过控制sda、slc的输出启动24c64芯片writebyte_24c64(0xa0);/写指令writebyte_24c64(addH);/写高位地址writebyte_24c64(addL);/写低位地址if(n32) /每页最多32字节n = 32;for(i=0;i32) /n不能大于32,会从头覆盖字节 n=32;start_24c64();writebyte_24c64(0xa0);/写写指令writebyte_24c64(addH);/写高位地址writebyte_24c64(addL);/写低位地址(实际上是调24c64地址指针到要读取的数据的地址)stop_24c64();start_24c64();writebyte_24c64(0xa1);/写读指令for(i=0;in;i+) /读n个字节数据wi = readbyte_24c64(0);/将数据存入宏定义数组w中。stop_24c64();3.打印功能(1)硬件设计:TH40-PC微型打印机:可打印全部448 个字符及图块,包括96 个ASCII 字符,外接口可选用标准并行接口,标准串行接口,485 接口,可选配红外无线接口。我们这里选择并口连接。连接图如下。D0到D7为数据传输口用于将数据信息传输到打印机,直接与单片机上AD0-AD7连接。BUSY引脚是来传送打印机的状态的,可以省略,接在P1*5.STB引脚控制打印机的数据接收,将其置零再置一,就能把此时AD0到AD7的数据接收。接在P1*7,也是初始化为I/O口的引脚。打印机会在收到几个特定的数据作为指令后,会根据数据来打印相应的文字符号,根据指令数据的不同,可以调整打印的方式、字体、大小等。(2)程序部分:传送数据:void pprint(unsigned int ch)while(BUSY1);当打印机忙时循环P3=ch;/p3位单片机AD0-AD7口STB=0; /STB 置0delay();STB=1; /STB 置1,此时p3口数据将被接受文字、数字打印:c1=c/10+48;c2=c%10+48;/将数字分为个位、十位,+48转化为ASCII码pprint(0x1b);pprint(0x38);pprint(0x00); /调用汉字出库指令for(i=0;istrlen(zh);i+)/循环打印字符串,zh中存有“当前温度”字样pprint(zhi);pprint(c1);pprint(c2);pprint(0x0d);/结束标志,这样打印出“当前温度XX”字样,XX表示温度数字曲线打印:pprint(0x1b);pprint(39);pprint(2);/曲线打印指令,一次打一个点,2表示同时打两条线pprint(30+c);pprint(30+z);c、z都是温度量,+30是为了让温度起点高一些。pprint(13);四总体设计1、系统初始化主要为在原有Init_Device()函数中Port_IO_Init()的I/O口配置进行改动void Port_IO_Init()/*I/O口的配置为主要改动XBR0 = 0x0F;/UART0的TX0,RX0 连到端口引脚P0.0,P0.1/SPI0的SCK, MISO, MOSI连接到端口引脚P0.2,P0.3,P0.4/SPI0的NSS连接到端口引脚P1.0,MSBus的SDA, SCL连接到端口引脚P1.1,P1.2/舍弃XBR1的配置,使P1*4-P1*7空闲 XBR2 = 0x42;/开启第一位的弱上位允许/交叉开关使能,使用低端EMIEMI0CF = 0x0F;/选择P2-P3作为总线端口,复用方式,仅使用外部RAM EMI0TC = 0xDF;/总线访问地址建立时间3个SYS周期/总线访问读/写脉冲宽度8个SYS周期,总线访问地址保持时间3个SYS周期/ 设备初始化函数,在主程序中调用Init_DeviceA()void Init_Device() Reset_Sources_Init();/复位源初始化 Port_IO_Init();/端口初始化 Oscillator_Init();/时钟源初始化Voltage_Reference_Init();ADC0_Init();ADC1_Init();DAC_Init();2、系统流程图如图所示,该程序运行开始后会直接进入定时部分,在定时部分可以通过按键来实现年月日时分秒的实时显示及键入更改,也可以通过键入的时间进行最大59分59秒的定时。定时部分按键配置如下:键盘为4行5列0123456789换位定时分钟定时秒钟键入月键入日显示年月显示日时显示分钟键入时键入分在定时结束后,程序会自动跳转到控温部分的程序。在控温程序部分,首先可以通过键入的温度来进行对现有温度的调控,将现在温度调控至键入值。根据按键也可以做到开始/停止同步打印或打印已存好的数据及现在的实时温度。右下角的两个键可以实现将当前温度存入24C64芯片或从24C64芯片中的数据取出并显示在数码管上,实现数据的掉电不丢失存储。为达到系统的完整,也可以通过按键来重置控温程序或是返回到定时程序的最开始状态。以下为控温部分的按键配置:0123456789换位键入目标温度停止控温返回定时部分当前温度存入24C64重启控温程序开始同步打印停止同步打印打印存好的数据读取24C64中数据并显示五程序调试及遇到的问题(1)时间控制部分:由于用于控制时间的ds12887资料比较多,可以从网上找到很完全的资料,所以在定时、计时的时间部分并没有什么困难,按照设计的步骤连接,在用程序测试一下基本就成功了。然而在把定时的程序和控温程序放在一起时就出现了很多问题。应该是由于都是用AD0-AD7的数据口来传送数据吧,将数据写入ds12887的程序WriteDs12887()会导致整个控温部分瘫痪,显示乱码,不能进行循环等问题。对此我们经行过很多的删改测试,也都没有效果。但单独使用ds12887的定时计时都没有问题,所以我最后决定从单独的定时部分开始重新编程,将原有的控温程序的main函数改名为step(表示跳转)函数,直接作为子函数复制到新程序里,在定时结束时向子程序跳转,这样定时部分和控温部分都可以正常工作了。(2)打印机部分 打印机本身比较简单,但由于资料不足,研究起来十分困难。我选择的是并口连接的方式,按照说明书的例子将BUSY、STB连接在了P1*4、P1*6的中断口上,根据说明书的程序配置了打印机后,打印机基本还是没有反应,费了不少时间进行各寄存器的尝试改动后,才明白例程无法直接使用。于是我开始研究打印机的工作方式,按例子程序理解,只要在STB的上升延时把相对应的数据从AD口送出就能控制打印机打印。但经过实验发现,P1*4、P1*6管脚并不能按我的要求输出相应的上升沿,这个问题困扰了很久也没找到方法,最后还是问的高新老师,老师告诉我只有空闲的I/O口才能实现这样的功能,在Init device的初始化中,XBR0-XBR3寄存器控制了各引脚的功能控制。在学习过XBR寄存器相关的知识后,我把XBR1的配置删除以置空P1*4-P1*7,并把XBR3的首位置零,从0XC2改为0X42,使弱上位成立。在改动后,STB、BUSY都可以正常的输出,打印机也可以成功打印了。把打印机程序放入控温部分并没有出什么问题,要注意的一点就是除了打印ASCII码以外都需要把相应的指令重新输入才能打印,例如:打印曲线时for(i=0;i20;i+)ch=wi;y1=2*z;y=2*ch;pprint(0x1b);pprint(39);pprint(2);/打印曲线的指令程序pprint(30+y);pprint(30+y1);pprint(13);如上式,指令程序必须在for循环内,否则依旧输出ASCII码。(3)掉电存储部分: 24C64的使用是我们本次课设的一大难点了,虽然有老师给的例程,但使用并不成功,之后我从网上也搜集了很多资料,花了两次课的时间也没有成功存入数据。后来是在完成了打印部分后才有了进展,我按照网上用51单片机驱动24C64的原理改进线路,放弃了f023单片机原本自带的SLC、SDA管脚,改接在P1*5、P1*7两个在连接打印机电路时初始化为I/O口的管脚。然后就可以普通的使用51单片机I/O口驱动24C64的原理进行存取了,经过之前尝试过的程序,很快就完成了掉电存储的部分。六实验心得与体会在这次的实验过程中,硬件电路部分并不难,我们在焊接时,适时检查有无漏接,错接,分模块检查,而不是都焊完后检查。同样地,我们检查硬件电路时,从电源,接地查起,进而检查数据线等等。另外,我们在焊接时尽量避免了串线跨线等不良的焊线方法,按照一定的顺序来焊接以方便查线和改接。不过由于新增的线路并不多,所以基本上从两端进行通断检测就可以发现大部分问题。电子工程第三阶段对于我们来说是一个新的实验内容,我们在此次实践中学到了更多的知识,并通过第二阶段设计单片机系统的经验和编程经验进行了进一步的尝试,有了一定的经验积累。我们做到了自己思考设计原理,从网上寻找,可见这是对知识的一次深层理解。理论的学习流于纸面,通过实际应用对知识的理解又深了一层。在编程及设计方面,可以说我们此次编程,是对单片机设计系统编程流程的一次熟悉和实际演练。通过编程,我们锻炼了思考主程序与各子程序连接及中断程序的设计等思维方法。在调试环节,我们也遇到了一些问题,比如在定义管脚和实验板子的过程中有所出入,但通过对C8051F系列单片机的头文件以及Init-device库函数的研究,我们最终解决了这些问题。在这次实验中,我们锻炼了实践能力,懂得了即使资料十分有限的情况下,只要能根据工作原理、细化问题,研究好每个细节的部分,也总能把东西吃透,理解其相关的工作方法。在理论上可以计算出来的电路,在焊接到板子上之后又是另一种情况。同时,我们在编程的过程中,实践的过程中,了解了更多的单片机的知识。今后我们要培养耐心,不断通过实践来提高自己的能力,加深自己的认知。最后感谢高新老师对我们的耐心教导。七参考文献(1)电子工程设计任务书(2)其他元器件参数及简介书目附录1、 课设结果上图左边为实时打印的温度与要求温度,文字右侧为保存的温度,由于保存点数不够,所以前10个点被新进入的数据改写了,导致图像的开始点位于中间。2、 24c64相关子程序uchar readbyte_24c64(uchar ack) /ack应答位,ack=1,MCU不应答(不继续接受数据) /ack=0,MCU应答,继续接受数据uchar i,data_from_24c64;scl_24c64 = 0;for(i=0;i8;i+)data_from_24c64=1; scl_24c64 = 1;Delay_xus(1);data_from_24c64 |
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 33100-2025浸胶帘线带式曲挠疲劳试验方法
- 汉字构成课件
- 辽宁省阜新市彰武县五校联考2024-2025学年八年级下学期期末英语试卷(含答案)
- 福建省连城县2025-2026学年高一上学期开学英语试题(含解析)
- 城市交通发展前瞻分析
- 餐饮业外卖服务市场需求分析
- 餐饮业市场发展趋势与品牌经营策略
- DB53-T 1317-2024 便利店建设管理规范
- 水龙头安装安全知识培训课件
- Ubuntu Linux 22.04系统管理与服务器配置 课件 项目7 配置与管理DNS服务器
- ECRS原则课件教学课件
- 2024年辽源市应急管理局招聘应急管理专员笔试真题及答案
- 2025年大庆市中考语文试题卷(含答案解析)
- 2025年大学试题(大学选修课)-创业:道与术历年参考题库含答案解析(5套典型考题)
- 基孔肯雅热医疗机构门诊应急处置演练方案(二)
- 中职教师培训课件
- 上海市闵行区2024-2025学年下学期期末考试六年级数学试卷及答案(新教材沪教版)
- 华为廉洁培训课件
- 失眠的预防与中医护理
- 2025-2030年中国再生建筑骨料行业市场现状供需分析及投资评估规划分析研究报告
- 2025届中考物理全真模拟卷【云南专用】(含解析)
评论
0/150
提交评论