




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于ARM7的温度控制器的设计 学院:电气学院 班级:11自一_ 姓名:杜康_ 学号: 指导老师:王崴 目录一、简介 41.单片机的发展历程42.stm32系列单片机43.DS18B20温度传感器5二、总体方案设计 71.主要功能72.设计要求7三、最小系统的设计 71.唤醒电路82.晶振延时电路及复位电路8四、系统硬件分析与设计 91.系统框图92.各模块电路图103.元器件 11(1)Stm32F103RBT6 32位单片机11(2)TFTLCD液晶12(3)其他元器件13五、系统软件程序设计 131.按键控制子流程图142.TFTLCD显示子流程图153.主流程图16六、仿真与调试 171.软件调试172.下载代码,软硬件联调18七、个人总结20八、参考文献21九、附录 221.系统电路原理图222.程序清单23一、简介1.单片机的发展历程典型的微型计算机包括运算器、控制器、存储器、I/O接口四个基本组成部分。如果在一块芯片上,集成了一台微型计算机的四个基本组成部分,这种芯片就被称为单片微型计算机(Single Chip Microcomputer),简称单片机。单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补。纵观单片机的发展过程,可以看出单片机的发展普遍呈现微型单片化、低功耗CMOS化、主流与多品种共存的趋势。九十年代以后,单片机在结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。2.stm32系列单片机传统的单片机(如51)使用的是复杂指令集(CISC),且不具备指令流水线;ARM使用的是精简指令集(RISC),而且使用了三级流水线。这使得ARM的制造成本和运行效率相对51有着明显的优势。传统的单片机一般都是8位机。随着信息量的增加,我们会越来越多的需要处理超过8位以上的数据。以32bit数据的加减法为例,51需要多次处理,而在ARM中只需要1个指令即可。基于ARM内核的芯片种类越来越多,器外围接口(UART/SPI/IIC/USB/CAN/BUS/LCDC),内部一般都加入了DMA,进一步提升了性能。给用户提供了很大的选择空间。典型的如stm32系列单片机。stm32系列32ARM单片机重塑了微控制器市场,克服了应用32位系统的所有障碍,是第一个由半导体厂商提供的基于ARM COTEX M3的为控制器系列。Stm32系列单片机为微控制器的用户带来了全新的自由度。它拥有先进的性能,出色的功耗效率,一流的外设,最大化的集成度,最佳的代码紧凑性,大范围的存储容量选择,最佳的工具与软件平台。3.DS18B20温度传感器DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线”接口的温度传感器。与传 统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的 数字化温度传感器。一线总线结构具有简洁且经济的特点,可使用户轻松地组建传感器网络, 从而为测量系统的构建引入全新概念,测量温度范围为-55+125 ,精度为05。现场温 度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。它能直接读出被测温度, 并且可根据实际要求通过简单的编程实现 9l2 位的数字值读数方式。它工作在 355 V 的电 压范围,采用多种封装形式,从而使系统设计灵活、方便,设定分辨率及用户设定的报警温度 存储在 EEPROM 中,掉电后依然保存。其内部结构见下图:高温触发器TH存储器与控制逻辑64位ROM和单线接口 高速缓存温度传感器低温触发器TL配置寄存器八位CRC发生器I/OVDD图1.1 DS18B20内部结构图ROM 中的 64 位序列号是出厂前被光记好的,它可以看作是该 DS18B20 的地址序列码,每 DS18B20 的 64 位序列号均不相同。64 位 ROM 的排列是:前 8 位是产品家族码,接着 48 位是 DS18B20 的序列号,最后 8 位是前面 56 位的循环冗余校验码(CRC=X8+X5 +X4 +1)。ROM 作 用是使每一个 DS18B20 都各不相同,这样就可实现一根总线上挂接多个。所有的单总线器件要求采用严格的信号时序,以保证数据的完整性。DS18B20 共有 6 种信 号类型:复位脉冲、应答脉冲、写 0、写 1、读 0 和读 1。所有这些信号,除了应答脉冲以外, 都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。DS18B20 的典型 温度读取过程为:复位,发 SKIP ROM 命令(0XCC),发开始转换命令(0X44),延时,复 位,发送 SKIP ,ROM 命令(0XCC),发读存储器命令(0XBE),连续读出两个字节数据(即 温度)-结束。二、总体方案设计1.主要功能功能实现开机后能够检测到当前环境温度并实时送到LCD液晶屏上显示出来,按升温按键,电机正转;按降温按键,电机反转。LED指示灯不断闪烁,表明单片机正在执行当前程序。2.设计要求开机的时候先检测是否有 DS18B20 存在,如果没有,则提示错误。 当检测到 DS18B20 之后才开始读取当前环境温度并显示在 LCD 上,如果发现了 DS18B20,则程 序每隔 200ms 左右读取一次数据,并把温度显示在 LCD 上。按下相应按键,可以控制电机正转或反转。三、最小系统的设计1.唤醒电路 图1.2 唤醒电路的设计按下WK_UP按键,即可实现唤醒控制器开始工作。2.晶振延时电路及复位电路图1.3 晶振延时电路 图1.4 复位电路 Y1、Y2、C3、C4、C5、C6、R4等共同构成了外部振荡电路,Y1选择32.768KHz,Y2选择8MHz, C3、C4、C5、C6均取22pF。复位信号从单片机的NRST引脚输入,按下复位键,即可使单片机复位。复位操作有上电复位和手动复位两种,本次采用手动复位电路。四、系统硬件分析与设计1.系统框图DS18B20数字温度传感器STM32F103RBT632位单片机按键控制TFTLCD液晶显示屏LED指示灯复位电路图1.5 系统总体框图2.各模块电路图1) 温度检测模块 图1.6基于DS18B20的温度检测模块电路2) 按键控制模块 图1.7按键控制模块电路3) 液晶显示模块 图1.8 TFTLCD液晶显示模块电路4) LED指示灯 图1.9 LED指示灯模块电路5) 电机控制电路图2.0电机控制H桥电路3.元器件1) Stm32F103RBT6 32位单片机本次使用的单片机采用LQFP-64封装,其芯片内部集成了USB外设,大大减轻了USB电路设计的负担,只需设计USB接口电路,就可以实现基于STM32电路板的USB通信设计,是一款集32位MCU、USB、CAN、7个16位定时器、两个ADC和9个通信接口的芯片。它具有低功耗、直接存储器存取、多达80I/O快速端口等很多性能方面的优势。 图2.1 STM32F103RBT6 32位ARM引脚排列图2) TFTLCD液晶本次使用的是TFTLCD,其引脚排列为:1号引脚为片选信号输入,2、3、4号分别为RS、WR和RD,5号引脚为复位端,时钟信号为34号引脚,621为DB1DB17等。采用DB_LCD封装。 图2.2 LCD引脚排列图3) 其他元器件 五、系统软件程序设计1. 按键控制子流程图 开始初始化按键扫描过程开始有键按下?按键处理,电机启动调整温度是否LCD显示温度值T2.TFTLCD显示子流程图开始是否有程序执行否是LCD显示T是否有键按下是否LCD显示调整后的温度T结束3.主程序流程图开始初始化扫描复位电路复位键是否按下是单片机复位否检测DS18B20是否存在?提示错误否是读取当前环境温度按键是否有按下否是调整温度值T每隔200ms,显示一次温度值 LED闪烁六、仿真与调试1.软件调试打开keil for ARM,进入软件操作界面。新建new project,选择单片机型号为stm32F103RBT6,生成target1source group1,新建file,写入C语言代码,添加到source group1,选择好各种配置文件,勾选“create hex file“,选择projectrebuild all targets进行编译程序,若有错误则纠错到” 0 error(s) ,0 warning(s)“为止。 图2.3本次程序编译结果2.下载代码,软硬件联调安装USB串口驱动CH340,安装完成后再安装STM ISP下载器MCUISP。安装成功后,打开MCUISP软件,点击搜索串口,即可找到已经安装好的USB-SERIAL CH340串口。点击读器件信息,若前面操作均无错误,那么会看到软件提示“命令执行完毕,一切正常”,如下图所示情况。图2.3 器件信息读取正常然后将在MDK里已经生成的HEX文件装载到MCUISP中,如下图所示。图2.4 载入HEX文件点击“开始编程”,并把“编程后执行”勾选中。编程完毕如下图所示。图2.5 编程完成程序运行结果如下图所示:七、个人总结通过本次温控器的设计,我体会到“书到用时方恨少”的道理,从书本上学到的知识对于我们实践来说,是远远不够的。查阅资料和阅读相关文献是非常重要的。我们必须学会怎样查找资源,利用资源,整合资源,从资源中获得我们需要的东西。我们还要更全面地了解单片机的功能,如何应用单片机,各系列单片机的优缺点,适应范围。遇到不会的内容要虚心向别人请教,但同时不能过分依赖别人,本次课程设计我单人完成的,所以更能锻炼我个人解决问题的能力。对待任何事情都要有耐心,遇到问题要冷静地思考,不要程序有错误或者硬件调试不成功就急躁,慌乱,仔细地分析问题出在哪里,一步一步解决问题,直至调试成功。我更深刻的认识到了实践在大学课程中的重要性,书本是实践的基础,学好书本知识,才能更好地应用于实践,而实践反过来又能巩固和检验我们到底学的扎不扎实,同时我也发觉到了自己在学习方面存在的许多不足之处,在以后的学习中我会努力改进这些不足,不断提高自己的动手实践能力。八、参考文献周立功,ARM嵌入式系统基础教程M.北京航空航天大学出版社,2008.09 周立功,ARM嵌入式系统实验教程M.北京航空航天大学出版社,2005.10刘军、张洋,例说STM32 第二版M.北京航空航天大学出版社,2014.06 张齐,单片机原理与应用系统设计M.电子工业出版社,2009.01钱显毅、钱爱玲,传感器原理与应用M.中国水利水电出版社,2013.02徐爱均、徐阳,智能化测量控制仪表原理与设计M.北京航空航天大学出版社,2012.03九、附录1)系统电路原理图2)程序清单主程序:#include led.h#include delay.h#include sys.h#include usart.h#include lcd.h#include ds18b20.h #include key.h int main(void) u8 t=0; short temperature; short wendu; short xianshi;delay_init(); /延时函数初始化 uart_init(9600); /串口初始化为9600LED_Init(); /初始化与LED连接的硬件接口 LCD_Init();KEY_Init(); POINT_COLOR=RED;/设置字体为红色 LCD_ShowString(60,50,200,16,16,designby dk);LCD_ShowString(60,70,200,16,16,DS18B20 TEST);LCD_ShowString(60,90,200,16,16,from CIT);LCD_ShowString(60,110,200,16,16,2014/10/10); while(DS18B20_Init()/DS18B20初始化LCD_ShowString(60,130,200,16,16,DS18B20 Error);delay_ms(200);LCD_Fill(60,130,239,130+16,WHITE); delay_ms(200); LCD_ShowString(60,130,200,16,16,DS18B20 OK);POINT_COLOR=BLUE;/设置字体为蓝色 LCD_ShowString(60,150,200,16,16,Temp: . C); while(1) if(t%100=0)/每1S读取一次 temperature=DS18B20_Get_Temp(); wendu=temperature;if(wenduAPB2ENR|=1APB2ENR|=1CRL&=0XFFFFFFF0;/PA0设置成输入 GPIOA-CRL|=0X; GPIOA-CRH&=0X0FFFFFFF;/15设置成输入 GPIOA-CRH|=0X; GPIOA-ODR|=1CRL&=0XFF0FFFFF;GPIOC-CRL|=0X;GPIOC-ODR|=1KEY1KEY2!u8 KEY_Scan(u8 mode) static u8 key_up=1;/按键按松开标志if(mode) key_up=1;if(key_up&(KEY0=0|KEY1=0|WK_UP=1)delay_ms(10);/去抖动 key_up=0;if(KEY0=0) return KEY0_PRES;else if(KEY1=0) return KEY1_PRES;else if(WK_UP=1) return WKUP_PRES;else if(KEY0=1&KEY1=1&WK_UP=0)key_up=1; return 0;/ 无按键按下LCD显示子程序:void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode) u8 t,temp;u8 enshow=0; for(t=0;tlen;t+)temp=(num/LCD_Pow(10,len-t-1)%10;if(enshow=0&t(len-1)if(temp=0)if(mode&0X80)LCD_ShowChar(x+(size/2)*t,y,0,size,mode&0X01); else LCD_ShowChar(x+(size/2)*t,y, ,size,mode&0X01); continue;else enshow=1; LCD_ShowChar(x+(size/2)*t,y,temp+0,size,mode&0X01); /显示字符串/x,y:起点坐标/width,height:区域大小 /size:字体大小/*p:字符串起始地址 void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p) u8 x0=x;width+=x;height+=y; while(*p= )/判断是不是非法字符! if(x=width)x=x0;y+=size; if(y=height)break;/退出 LCD_ShowChar(x,y,*p,size,0); x+=size/2; p+; DS18B20配置子程序:/复位DS18B20void DS18B20_Rst(void) DS18B20_IO_OUT(); /SET PA0 OUTPUT DS18B20_DQ_OUT=0; /拉低DQ delay_us(750); /拉低750us DS18B20_DQ_OUT=1; /DQ=1 delay_us(15); /15US/等待DS18B20的回应/返回1:未检测到DS18B20的存在/返回0:存在u8 DS18B20_Check(void) u8 retry=0;DS18B20_IO_IN();/SET PA0 INPUT while (DS18B20_DQ_IN&retry=200)return 1;else retry=0; while (!DS18B20_DQ_IN&retry=240)return 1; return 0;/从DS18B20读取一个位/返回值:1/0u8 DS18B20_Read_Bit(void) / read one bit u8 data;DS18B20_IO_OUT();/SET PA0 OUTPUT DS18B20_DQ_OUT=0; delay_us(2); DS18B20_DQ_OUT=1; DS18B20_IO_IN();/SET PA0 INPUTdelay_us(12);if(DS18B20_DQ_IN)data=1; else data=0; delay_us(50); return data;/从DS18B20读取一个字节/返回值:读到的数据u8 DS18B20_Read_Byte(void) / read one byte u8 i,j,dat; dat=0;for (i=1;i=8;i+) j=DS18B20_Read_Bit(); dat=(j1); return dat;/写一个字节到DS18B20/dat:要写入的字节void DS18B20_Write_Byte(u8 dat) u8 j; u8 testb;DS18B20_IO_OUT();/SET PA0 OUTPUT; for (j=1;j1; if (testb) DS18B20_DQ_OUT=0;/ Write 1 delay_us(2); DS18B20_DQ_OUT=1; delay_us(60); else DS18B20_DQ_OUT=0;/ Write 0 delay_us(60); DS18B20_DQ_OUT=1; delay_us(2); /开始温度转换void DS18B20_Start(void)/ ds1820 start convert DS18B20_Rst(); DS18B20_Check(); DS18B20_Write_Byte(0xcc);/ skip rom DS18B20_Write_Byte(0x44);/ convert /初始化DS18B20的IO口 DQ 同时检测DS的存在/返回1:不存在/返回0:存在 u8 DS18B20_Init(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /使能PORTA口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;/PORTA0 推挽输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 爱心传递温暖人间写人作文6篇
- 精卫填海作文扩写七年级(8篇)
- 品牌使用权协议
- 《中学信息技术基础:计算机操作与应用技巧》
- 身边的小故事一次难忘的经历(7篇)
- 公交公司科技活动方案
- 小学教师节作文300字范文11篇
- 公众号参观活动方案
- 公众活动策划方案
- 公会歪歪活动方案
- 边坡巡检记录表完整优秀版
- 《创新与创业基础》课程思政优秀教学案例(一等奖)
- 原子荧光分析(汞)原始记录2
- 北师大版五下书法《第6课戈字旁》课件
- 铁路TBT3089SNS柔性防护网技术手册
- (高清正版)T_CAGHP 054—2019 地质灾害治理工程质量检验评定标准(试行)
- 物流招标文件模板(完整版)
- 关于地理高考四大能力要求解读
- 空气动力学PPT课件
- 广西地方标准《闽楠栽培技术规程》(征求意见稿)
- 室内灯具系列专业英语词汇
评论
0/150
提交评论