ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:312.28KB ,
资源ID:9563584      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9563584.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计.docx

1、单片机课程设计 课 程 设 计 报 告 课程设计名称: 温度测量系统 系 别 : 三 系 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 王志超 开课时间: 20132014学年第二 学期目录1. 引言 21.1 系统背景 21.2 系统功能 22.系统总体方案 22.1 S08AW微控制器介绍 22.2 系统硬件框图 33. 硬件设计 43.1单片机(MCU)模块 43.1.1 MC9S08AW60单片机性能概述 43.1.2 内部结构简图 43.2串行通信模块 53.2.1 MAX232引脚图 53.2.2液晶显示模块 63.3 温度测量显示系统 74.软件流程设计 84.1 MCU

2、(C)程序 84.1.1主程序(main.c) 84.1.2 中断子程序(Isr.c) 114.1.3 LCD子程序(LCD.c) 124.1.4定时器(Timer.c) 164.1.5串行通信子程序(SCI.c) 184.1.6通用I/O端口(GPIO.c) 234.1.7模数转换(AD.c) 255.系统测试 285.1运行界面调试 285.2运行结果图 296. 总结 29参考文献 301. 引言1.1 系统背景随着科学技术的发展电子技术产业结构调整,单片机开始迅速发展,由于家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。 数字时钟,就是以数字显示取代模拟表盘的钟表,在显示上

3、它用数字反应此时的时间,相比模拟钟能给人一种一目了然的感觉,不仅如此它还能同时显示时,分,秒。而且能对时,分,秒准确校时,这是普通钟所不及的。由于单片机集成度高,功能强,可靠性高,体积小,功耗低,使用方面,价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。单片机的应用领域已从面向工业控制,通讯,交通,智能仪表等迅速发展到家用消费产品,办公自动化,汽车电子,PC机外围以及网络通讯等广大领域。单片机系统座位一种典型的嵌入式系统,其系统设计包括硬件设计和软件设计编程设计两个方面,其调试过程一般分为软件调试,硬件调试,系统调试。1.2 系统功能利用定时器设计一个

4、电子钟,并定义一个启动键。当按下该键时电子时钟从当前设定值开始走时。按秒刷新,要求在LCD屏上显示时间和温度。2.系统总体方案2.1 S08AW微控制器介绍 S08AW60拥有62KB片上在线可编程FLASH存储器和2KB片上RAM,具有模块保护与安全选项功能,支持2.75.5V电源。片内总线时钟最高可达20MHz,可选择宽范围的时钟频率。其内部集成了高性能模/数转换器(ADC)和串行通信模块,具有很宽的工作温度范围(-40+125),可适应各类恶劣环境。该芯片还可以通过BDM在计算机与微控制器进行在线编程及后台调试,避免频繁的插拔单片机,编译软件调试功能强大。本设计选择了飞思卡尔公司生产的增

5、强型8位微控制器MC9S08AW60(44引脚、LQFP封装)。其拥有足够大的FLASH存储器和ROM,并带有高性能模/数转换器。另外,体积小,稳定性高,调试方便。2.2 系统硬件框图表2.1 定时器显示控制系统的硬件构件划分 构件中文名称 构件英文名称 构件功能 类型AW60最小系统 AW60-MnSys AW60 MCU的最小系统,包含BDM电路。核心构件 电源 Power 将+24V电压转换为+3.3V电压。中间构件 液晶显示 LCD 采用串行输入模式显示数据。 终端构件图2.1 MC9S08AW60外部工作电路原理图 图中AW60是主要模块,所有的信号都是经过AW60模块进行处理,各个

6、功能模块在AW60模块的连接下才能够协调运行起来。图中,左边一块是各异晶振和两个电容连接,用来产生标准的时钟脉冲,在AW60上面连接的是LCD液晶显示器,用来动态显示当前所计数的秒数,右边一个模块是接地使用,最下面的是一个开关模块,用来在程序加载后由此开关控制何时开始计数,何时暂停计数,以及一些复位等操作。3. 硬件设计3.1单片机(MCU)模块3.1.1 MC9S08AW60单片机性能概述S80是单芯片8位微控制器解决法案。MC9S08AW60/AW60/AW48/AW32/AW16是低成本高性能的8位饿、微处理器单元(MCU)S08家族中的成员。家族中有的MCU使用增强型S08S核,且使用

7、不同的模块,存储空间,存储器类型与封装类型。 AW60系列主要常规模块和特点:1) 最高达40MHz的CPU工作频率和20MHz的内部总线工作频率;时钟源选项包括晶振,谐振器,外部时钟或,内部产生的时钟。2) 相比HC08CPU指令集,S08CPU增加了BGND指令。3) 单线后台调试模式接口:增强的断点能力,允许单一的断点设置在线调试(在片内调试模块增加了多于两个的断点)。4) 内含32个中断/复位源;内含2KB的片内RAM;内含60KB的片内在线可编程的Flash存储器,带有 块保护和安全选项。5) 可选的计算机正常操作(COP)复位;低电压检测与复位或中断;非法操作码检测与复位;非法地址

8、检测与复位。6) ADC:多达16个通道,10个A/D转换器与动动比较功能;两个串行通信接口SCI模块与可选的13位中断;一个串行外设接口SPI模块;集成电路互联总线IIC模块运行高达100kbps的最高总线负载;8引脚键盘中断KBI模块。7) Timers:1个2 通道和一个6通道16位定时器/脉冲宽度调制器模块。既有输入捕获,输出比较,脉宽调制功能。AW子系列MCU的4种封装形式只是引脚数量和形式有所区别,其他方面是一致的。3.1.2 内部结构简图 图3.1.2 AW60 MCU内部结构框图图3.1.2给出了SW60内部结构框图,它对于我们理解和应用AW60 MCU有重要作用,在学习了基本

9、方法后,应再反过来熟悉这个内部结构图,以便好好地理解AW60 MCU的基本原理。从内部结构框图可以看出,AW60主要有以下部件:S08 CPU,存储器,定时器接口模块,定时器模块,看门狗模块,通用I/O模块,串行通信模块(SCI),串行外设接口模块(SPI),I2C(IIC)模块,A/D转换模块,键盘中断模块,时钟发生器模块,复位与中断模块等。3.2串行通信模块 3.2.1 MAX232引脚图在MCU中,若用RS-232总线进行串行通信,则需外界电路实现电平转换,在发送端需要用驱动电平将TTL电平转换成RS-232电平;在接收端,需要用接收电路将RS-232电平转换为TTL电平。电平转换器不仅

10、可以由晶振管分立元件构成,也可以直接使用集成电路。目前使用MAX232芯片比较多,该芯片使用单一+5V电源供电实现电平转换,上图的引脚说明:(1)VCC(16脚):正电源端,一般为+5V;(2)GND(15脚):接地; 图3.2.1 MAX232芯片(3)Vs+(2j脚):vs+=2vcc-1.5v=8.5v;(4)Vs-(6脚):vs-=-2vcc-1.5v=-11.5v;(5)C2+,C2-(4,5脚):一般接1uF的电解电容;(6)C1+,C2-(1,3脚):一般接1uF的电解电容。 3.2.2液晶显示模块 1.点阵字符型LCD基本特点: LCD作为电子信息产品的主要显示器件,相对于其他

11、类型的显示器件来说有其自身的特点,主要包括: (1)低电压,低功耗;(2)平板型结构;(3)使用寿命长;(4)被动显示;(5)显示信息量大且易于彩色化;(6)无电磁辐射。点阵字符型LCD是专门用于显示数字,字母,图形符号及少量自定义符号的液晶显示器。这类显示器把LCD控制器,点阵驱动器,字符存储器,显示体及少量的阻容元件等集成一个液晶显示模板。鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示器模块。点阵字符型液晶显示器模块的控制器大多数为日立公司生产的HD44780及其兼容的控制电路,如:S

12、ED1278(SEIKO EPSON),KS0066(SAMSUNG),NJU6408(NER JAPANRADIO)等。2.字符型液晶显示器模块的特点如下:(1)液晶显示屏是以若干5*8或5*11点阵块等组成的显示字符群。每个点阵块块为一个字符位,字符间距和行间距都是一个点的宽度。(2)主控制电路为HD44780(HITACHI)及 其他公司的兼容电路。从程序员的角度来看LCD显示接口与编程是面向HD44780的,只要了解HD44780的编程结构即可进行LCD的显示编程。(3)内部具有字符发生器ROM,可显示192种字符。(4)具有64字节的字符发生器RAM,可以定义8个5*8点阵字符或4个

13、5*11的点阵字符。(5)具有64字节的数据显示RAM,供显示器编程使用。(6)标准接口特性,与MC9S08系列的MCU容易接口。(7)模块结构紧凑,轻巧,装配容易。(8)单+5V电源供电(宽温型需要加-7V驱动电源)。(9)低功耗,高可靠性。图3.2.2MCU控制液晶显示接口接线图3.3 温度测量显示系统温度采集系统的硬件部分是由温度采集模块、MCU控制器模块、温度显示模块组成。具体框图如下图3.3所示: 图3.3-1 系统硬件框图该模块是根据热敏电阻阻值随温度变化而变化的特性,利用串联分压的特点,将热敏电阻所分的电压送到MC9S08AW60的模拟量输入端。具体电路原理如图3.3-2所示:

14、图3.3-2 温度采集模块电路原理图 该电路中R4为热敏电阻,其电压传输到MC9S08AW60单片机的模拟量输入端,即B0口。4.软件流程设计4.1 MCU(C)程序4.1.1主程序(main.c)#include Includes.h/在此添加全局变量定义 uint8 time3; /记录时间的数组 uint16 dpj;/存放模拟量 signed int T; /温度 const signed int V_T_table217= 0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,255,0,79,56,43,34,27,21,1

15、5,10,5,-1,-6,-11,-18,-26,-40,0 /*存放A/D转换值和温度值的表*/ ; void main(void) /定义初始显示缓存并赋初值 uint8 i=0; uint8 LCDbuff = Producer: dpj Date: 2014-06-19.;/32个空格,显示屏初始字符 uint8 remember; /记录当前秒数的变量 /1 关总中断 DisableInterrupt(); /禁止总中断 /2 芯片初始化 MCUInit(); LCDinit(); /LCD初始化 GPIO_Init(LCD_Run_PORT,0,0,0); /3 模块初始化 TPM

16、init(1); /(1)定时器1初始化 ADCInit(); /4 串行口初始化 SCIInit(1,SYSTEM_CLOCK,9600);/用SCI1,系统时钟为时钟源,波特率为9600 /4 内存初始化 time0 =15; /(1) 时分秒缓存初始化(00:00:00) time1 = 0; time2 = 0; remember = time2; /(2) 临时变量remember初始化 LCDshow(LCDbuff); /显示初始字符Producer: dpj Date: 2014-06-19. /5 开放中断 EnableSCIReInt(); /(1)开放串口接受中断 Ena

17、bleTimer(1); /(2)开放定时器1溢出中断 EnableInterrupt(); /(3)开放总中断 /6 主循环 while (1) if(GPIO_Get(LCD_Run_PORT,0)=LCD_Run) /获取F端口0口引脚状态 LCD_Run为0 if (time2 != remember)n SCISendN(1, 3, time); LCDbuff0=time0/10+0; LCDbuff1=time0%10+0; LCDbuff2=:; LCDbuff3=time1/10+0; LCDbuff4=time1%10+0; LCDbuff5=:; LCDbuff6=tim

18、e2/10+0; LCDbuff7=time2%10+0; LCDbuff8= ; LCDshow(LCDbuff) ; remember=time2; dpj =ADCAve(AD_CH_0, 200); if(dpj= V_T_table015) T=V_T_table115; /* 当A/D转换值在240255时,按-40摄氏度赋值 */ else for(i=1;i V_T_table0i)&(dpj V_T_table0i+1) T=(V_T_table1i+1-V_T_table1i)*100)/16; T=T*(dpj-V_T_table0i); /* 没有,找到区间并插值 */

19、 T=V_T_table1i+T/100; T=T+20; break; LCDbuff10=T; LCDbuff11=; LCDbuff12=T/10+0; LCDbuff13=T%10+0; LCDbuff14=C; 4.1.2 中断子程序(Isr.c)interrupt void isrSCIre(void) uint8 temp; DisableInterrupt(); /禁止总中断 temp=SCIReN(1, 3,time); /接收3个字节,放入time数组 EnableInterrupt(); /开放总中断/未定义的中断处理函数,本函数不能删除interrupt void is

20、rDummy(void)/中断处理子程序类型定义typedef void( *ISR_func_t)(void);/中断矢量表,如果需要定义其它中断函数,请修改下表中的相应项目const ISR_func_t ISR_vectors 0xFFCC = isrDummy, /时基中断 isrDummy, /IIC中断 isrDummy, /ADC转换中断 isrDummy, /键盘中断 isrDummy, /SCI2发送中断 isrDummy, /SCI2接收中断 isrDummy, /SCI2错误中断 isrDummy, /SCI1发送中断 isrSCIre, /SCI1接收中断 isrDum

21、my, /SCI1错误中断 isrDummy, /SPI中断 isrDummy, /TPM2溢出中断 isrDummy, /TPM2通道1输入捕捉/输出比较中断 isrDummy, /TPM2通道0输入捕捉/输出比较中断 isrT1Out, /TPM1溢出中断 isrDummy, /TPM1通道5输入捕捉/输出比较中断 isrDummy, /TPM1通道4输入捕捉/输出比较中断 isrDummy, /TPM1通道3输入捕捉/输出比较中断 isrDummy, /TPM1通道2输入捕捉/输出比较中断 isrDummy, /TPM1通道1输入捕捉/输出比较中断 isrDummy, /TPM1通道0输

22、入捕捉/输出比较中断 isrDummy, /ICG的PLL锁相状态变化中断 isrDummy, /低电压检测中断 isrDummy, /IRQ引脚中断 isrDummy, /SWI指令中断 /RESET是特殊中断,其向量由开发环境直接设置(在本软件系统的Start08.o文件中);4.1.3 LCD子程序(LCD.c)#include LCD.h /该头文件包含寄存器及相关位定义void LCDshow(uint8 str) uint8 i,cmd2; /1 LCD初始化 LCDinit(); /2 显示第1行16个字符 /2.1 设置显示首地址 AW60_LCDctrl1=( AW60_LC

23、Dctrl1 & AW60_LCDctrl1_RS & AW60_LCDctrl1_RW); cmd2=(0 |AW60_LCDdata_PTAD7); LCDcommand(cmd2); /2.2 写16个数据到DD RAM AW60_LCDctrl1=( AW60_LCDctrl1 | AW60_LCDctrl1_RS & AW60_LCDctrl1_RW); for (i = 0;i 16;i+)/将要显示在第1行上的16个数据逐个写入DD RAM中 LCDcommand(stri); /3 显示第2行16个字符 /3.1 设置显示首地址 AW60_LCDctrl1=( AW60_LCD

24、ctrl1 & AW60_LCDctrl1_RS & AW60_LCDctrl1_RW); cmd2=(0 |AW60_LCDdata_PTAD7 |AW60_LCDdata_PTAD6); LCDcommand(cmd2); /3.2 再写16个数据到DD RAM AW60_LCDctrl1=( AW60_LCDctrl1 | AW60_LCDctrl1_RS & AW60_LCDctrl1_RW); for (i = 16;i 1.6ms for(i = 0; i 40000; i+) asm(NOP); /4 输入方式设置 cmd1=(0 |AW60_LCDdata_PTAD2 |AW60_LCDdata_PTAD1); LCDcommand(cmd1); / 显示不移动,光标左移(A = 1), 数据读写操作后,AC自动增1 /5 光标或画面移位设置 cmd1=(0 |AW60_LCDdata_PTAD2 |AW60_LCDdata_PTAD4); LCDcommand(cmd1);/光标右移一个字符位,AC自动加1 /6 显示开关控制 cmd1=(0 |AW60_LCDdata_PTAD2 |AW60_LCDdata_PTAD3); LCDcommand(cmd1); /不闪烁, 关光标显示,开显示 /-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1