说明书模板

苏 州 市 职 业 大 学

实习(实训)报告

名称

2013年 1 月 7 日至 2013 年 1 月 11 日共 1 周

院 系 计算机工程系 班 级姓 名

系 主 任 教研室主任

指导教师

目 录

一、课程设计的目的与要求.............................................................................................. 2

1.1.课程设计的目的 ............................................................................................... 2 1.2.课程设计的要求 ............................................................................................... 2 二、题目说明................................................................................................................... 2

2.1开发背景 ............................................................................................................ 2 2.2 开发工具............................................................................................................ 3

2.2.1 Code warrior 简单介绍 ..................................................................... 3 2.2.2 MC9S08AW60单片机 .................................................................................. 4 3) AW60最小系统........................................................................................... 0

2.3 小组成员分工..................................................................................................... 1 三、硬件方案................................................................................................................... 1

3.1硬件设计及系统原理图 ....................................................................................... 1

3.2 串行通信 ..................................................................................................... 2 3.2.1 串行通信基本原理 ................................................................................... 2 3.2.2 串行通信的电路原理 ................................................................................. 2

3.3 液晶显示原理 .............................................................................................. 3 四、软件设计..................................................................................................... 5 4.1 总体设计............................................................................................................ 5 4.2 模块结构图 ........................................................................................................ 5 4.3 详细设计............................................................................................................ 6

4.3.1 串口模块 ................................................................................................. 6 4.3.3 LCD液晶模块 ........................................................................................... 9

4.3.4 蜂鸣器模块.............................................................................................10

五、运行结果分析与系统改进 ......................................................................................... 11 六、遇到的问题和解决方法............................................................................................. 11 七、课程设计总结...........................................................................................................12 八、参考文献..................................................................................................................13 附录(源程序代码) .......................................................................................................13

一、课程设计的目的与要求

1.1.课程设计的目的

《单片机原理与应用》是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。

1.2.课程设计的要求

在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。认真编写课程设计报告。

二、题目说明

我们选择的题目是:模拟数字时钟

题目描述:用AW60实验板模拟带计时功能的数字时钟,可设置时钟初始值,可调整时钟时间,可实现秒表计时功能。通过AW60的内部的定时器模块实现计时功能。 1) 输入:自定义键盘,模拟时钟的按键。 2) 输出:用液晶显示器显示时钟时间。 3) 时间:用定时器模块实现计时功能。

2.1开发背景

随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求。现代的数字钟不仅需要数字电路技术而且需要模拟电路技术和单片机技术,增加数字钟的功能。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用

数字钟通过数字电路实现时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因

此,研究数字钟及扩大其应用,有着非常现实的意义。

2.2 开发工具

2.2.1 Code warrior 简单介绍

CodeWarrior包括构建平台和应用所必需的所有主要工具 - IDE、编译器、调试器、编辑器、链接器、汇编程序等。另外,CodeWarrior IDE支持开发人员插入他们所喜爱的工具,使他们可以自由地以希望的方式工作。

CodeWarrior开发工作室将尖端的调试技术与健全开发环境的简易性结合在一起,将C/C++源级别调试和嵌入式应用开发带入新的水平。开发工作室提供高度可视且自动化的框架,可以加速甚至是最复杂应用的开发,因此对于各种水平的开发人员来说,创建应用都是简单而便捷的。

它是一个单一的开发环境,在所有所支持的工作站和个人电脑之间保持一致。在每个所支持的平台上,性能及使用均是相同的。无需担心主机至主机的不兼容。

CodeWarrior开发工作室包括完成大多数嵌入式开发项目所需的所有工具:

项目管理器:为软件开发人员处理最高级别的文件管理;按照主要组别组织项目条目;追踪状态信息(例如文件修改日期);确定每个构建中特定文件的构建顺序及内容;协调插件程序以提供箱版本控制和RTOS支持这样的业务。

文本编辑器:支持源代码和其他文本文件的创建和处理。与其他的IDE功能完全集成。

搜索引擎:查找特定的文字串;以替代文字替换找到的文字;支持常规表达的使用;提供文件比较及差别功能。

源浏览器:保存用于程序的符号数据库;包括变量及功能的名称和值的符号的举例;使用符号数据库协助代码浏览;将每个符号与此符号相关代码的其他位置链接;处理目标导向和程序语言。

构建系统:使用编译器从源代码生成可重新定位的目标代码,并使用链接器从目标码生成最后的可执行图像。CodeWarrior C/C++*编译器工具包括业内领先的C/C++*语言CodeWarrior编译器,包括标准模板库(STL)及各种其他工具。

源级别调试器:提供高性能窗口的源级别调试器,配备最新的高效率增强型图形性能,缩短板的bring-up和应用开发时间;使用符号数据库,提供源级别调试;支持符号格式,例如CodeView、Debug With Arbitrary Records Format(DWARF)和STABS。

指令组模拟器:用于jump-starting应用开发的集成指令组模拟器(仅适用于特定的结构)。

2.2.2 MC9S08AW60单片机 1) MC9S08AW60 机能概述

【实物图】

HCS08系列MCU是Freescale 8位微处理器的主流产品,应用非常广泛。MC9S08AW60微控制器具有多种封装形式,它们分别为44脚、48脚、64脚等,本评估板使用64引脚宽脚封装。

MC9S08AW60微控制器的主要特点概述如下:

①2K片内RAM;60K片内Flash程序存储器,具有在线编程能力和保密功能。 ②时钟发生器模块,具有PLL电路,可产生各种工作频率;内部总线频率最高可达20MHz。

③增强的HCS08 CPU结构;最高支持26个中断源。

④54根通用I/O脚,部分I/O口有可选择的内部上拉电阻,并且可以选择引脚的驱动能力。

⑤两个增强型串行通讯口SCI;一个串行外围接口SPI;一个集成电路内部通信接口IIC;两个16位双通道定时器接口模块(TIM1和TIM2),每个通道可选择为输入捕捉、输出比较和PWM;一个模拟信号比较器ACMP;16路10位AD转换模块;8位键盘唤醒口;一个实时时钟计数器模块;一个计算机工作正常(COP)复位模块。

⑥优化用于控制应用;优化支持C语言。

【逻辑结构图】

2) 内部结构简图

如图所示,给出了AW60的内部结构图,它对于我们理解和应用AW60 MCU有重要作用,在学习了基本有法后,应在反过来熟悉这个内部结构图,以便更好地理解AW60 MCU的基本原理。从内部结构图可以看出,AW60主要有以下几个部分:S08 CPU、存储器、定时器接口模块、定时器模块、看门狗模块、通用IO模块、串口通信模块(SCI)、串行外设接口(SPI)模块、IC(IIC)模块、A/D转换模块、键盘中断模块、时钟发生模块、复位与中断模块等。

2

3) AW60最小系统

(1) 芯片:MC9S08AW60CB QFP封装 64引脚。

(2) 最小系统电路:晶振电路、电源及PLL滤波、复位电路。

晶振电路:接MCU第57、58脚之间的电路为晶振电路,这里选用的晶振频率为f=4MHz。通过内部PLL电路模块,可获得小于等于24MHz的内部总线频率。电路及其元件参数是由AW60参考手册确定的。

滤波电路的作用主要是增强电路工作稳定性。AW60芯片的21、22脚(VDD、VSS)为芯片的电源输入端。接在电源与地之间的0.1µF电容为滤波电容。

复位电路:接在MCU第3脚的电路为芯片硬件复位电路。正常工作时该脚通过10K电阻接到电源正极(这里设为5V电源供电),所以应为高电平。若按下复位按钮,则第3脚通过接地,为低电平,芯片复位。

(3) I/O口:每个I/O口都外接到了MCU四周的接线排孔上,用户可以任意使用任何一个I/O口,但要注意不能多个模块同时使用一个口。 注意:

电路板上ADC模块、液晶模块和数码管模块共用一些I/O口,使用时要防止冲突。

三、硬件方案

2.3 小组成员分工

3.1硬件设计及系统原理图

本次,名为单片机控制项目实训,由于水平有限,故分工合作,以实现所要求之目的。此实训大体上,分为串口、键盘、蜂鸣器(闹钟)、液晶模块。 组员:刘宗坤,施方圆,蒋舟舟

分工如下:刘宗坤同学负责串口模块。 施方圆同学负责蜂鸣器模块。 蒋舟舟同学负责键盘模块。

另外,实训内容亦包括:ppt设计、实训报告、程序整合。

3.2 串行通信 3.2.1 串行通信基本原理

232 TTL 电平 电平 (1) MC9S08AW60

内部集成了两个串行通信接口(Serial Communication Interface,SCI)模块,其中SCI1的 发送引脚PTE0/TxD1(13

脚)、接收引脚PTE1/RxD1(14脚),SCI2的发送引脚PTC3/TxD2(63脚)、接收引脚PTC5/RxD2(64脚)。SCI通信是MCU 与外

界进行通信的重要方式之一。MCU引脚一般使用TTL电平,它

适用于板内传输。而PC的串口是RS232 电平的,两者之间要有一个电平转换电路。现在普遍使用的是MAX232。采用最简单的三线制串口连接方法,即电脑的9针串口只用3根线:2

脚接收、3脚发送、5脚地,注意,此处收发是对PC机而言。开发板上已经配置好了全部SCI通信所需的硬件。 (2) TTL电平与RS-232电平转换电路 RS-232通信采用负逻辑,-15V~-3V为逻辑“1”,+3V~+15V为逻辑“0”。 TTL电平的逻辑“1”和“0”的特征电压分别为2.4V和0.4V。

MC9S08AW60实现RS-232串行通信需要电平转换电路。开发板上的转换电路如图4所示。

TTL电平的IN接MC9S08AW60的TXD(12脚)、OUT接MC9S08AW60的RXD(13脚)。 232电平的IN接串口的第3脚、OUT接串口的第2脚。 (3) 评估板中其中一路串行的通信原理如图5所示。串口的第2脚并联小灯,在AW60发送数据时,小灯会闪烁。

3.2.2 串行通信的电路原理

如上图5所示,从基本原理的角度看,串行通信接口SCI的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转换为单线输入。为了设置波特率,SCI应具有波特率寄存器。为了能够设置通信格式、是否校验、是否允许中断等,SCI应具有控制寄存器。而要知道串口是否有数据可收、数据是否发送出去等,需要有SCI状态寄存器。当然,若一个寄存器不够用,控制与状态寄存器可能有多个。而SCI数据寄存器存放要发送的数据,也存放接受的数据,这并不冲突,因为发送与接收的实际工作是通过“发送移位寄存器”和“接收以为寄存器”完成的。编程时,程序员并不直接与“发送移位寄存器”和“接收移位寄存器”打交道,只与数据寄存器打交道,所以MCU中并没有设置“发送移位寄存器和“接收移位寄存器”的映像地址。发送时,程序员通过判定状态寄存器的相应位,了解是否可以发送一个新的数据。若可以发送,则将待发送的数据放入“SCI数据寄存器”中就可以了,剩下的工作由MCU自动完成:将数据从“SCI数据寄存器”送到“发送移位寄存器”,硬件驱动将“发送移位寄存器”的数据一位一位地按照规定的波特率移到发送引脚TxD,供对方接收。接收时,数据一位一位地从接收引脚RxD进入“接收移位寄存器”,当收到一个完成字节时,MCU会自动将数据送入“SCI数据寄存器”,并将状态寄存器的相应位改变,供程序员判定并取出数据。

3.3 液晶显示原理

LCD 即液晶,是常用的嵌入式输出设备。评估板上配置两种LCD,一种使用1602点阵

此型号液晶采用并口通信方式,评估板中使用PTB口作为数据口,另外控制引脚采用PTA0~PTA3四个引脚控制,如图9右侧所示。

LCD部分的第二种型号是128×64型LCD,具体见其实用手册,原理图如图10所示:

图9 LCD实物图

图10 LCD2

此LCD采用串行通信方式,大大减少了I/O口资源的使用,仅仅使用PTA0~PTA3四个I/0即可完成通信,其中PTA3是用来控制背光的,如果保持LCD背光常亮,则仅需要3个I/O口接口控制LCD。

点阵字符型LCD是专门用于显示数字、字母、图形符号及少量自定义符号的液晶显示器。这类显示器把LCD控制器、点阵驱动器、字符存储器、显示体及少量的阻容元件等集成一个液晶显示模块。鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,因此,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示模块。

四、软件设计

4.1 总体设计

本次实验,名为单片机控制项目实训,总体上分为液晶、键盘、串口、蜂鸣器模块。

结合本学期所学知识点以及各次实验,整合了串口,键盘,液晶数码管等重要内容,

故设计了本次实验模拟数字时钟。依照实验要求,以液晶显示试验为蓝本,加入串口,键盘等简单原理程序,形成此略显粗糙的程序。

4.2 模块结构图

4.3 详细设计 4.3.1 串口模块

本串口模块,其目的在于实现调整模拟时钟的时间,通过串口发送至MCU,LCD

显示效果。对比常见的电子钟表,通常会带有调整时间的最基本的功能,否则就称不上为时钟。通过键盘输入输入xxxxxx六位数字,通过串口发送到单片机,可以一次性实现时、分、秒的设置。

通过事先定义一下头文件: //头文件

#include //映像寄存器地址头文件 #include "Type.h" //类型别名定义

//SCI寄存器及相关位宏定义

#define ReSendStatusR SCI1S1 //SCI状态寄存器 #define ReTestBit 5 //接收缓冲区满标志位 #define SendTestBit 7 //发送缓冲区空标志位 #define ReSendDataR SCI1D //数据寄存器

//串行通信子函数声明

void SCIInit(void); //串行口初始化 void SCISend1(INT8U o); //发送1字节 void SCISendN(INT8U n, INT8U ch[]); //发送n字节 INT8U SCIRe1(INT8U *p); //接收1字节 INT8U SCIReN(INT8U n, INT8U ch[]); //接收n字节

设计大体上的程序。

4.3.2 键盘模块

如上图所示,需要的端口为PTC0、1、2,PTG0、1、2,实现3x3的键盘接入,

键盘是常用的输入设备,评估板以9个小按键模拟一个3*3 键盘,以掌握矩阵键盘的工作原理,如图3-1所示。

A W60 内部集成了键盘输入中断模块,但是数量有限,为了给用户提供更大的灵活性,评估版中使用插孔的方式,用户可以将任意I/O

口接到插孔上来,这样即提高了用户编程

图3-1 键盘原理图

的灵活性,又提高了I/O口的使用灵活性。 结合所学知识,做出一下设置定义: 1:是秒表计时结束 2:是秒表清屏, 3:是时钟的秒加一 4:是时钟的分加一 5:是时钟的时加一 6:是秒减一 7:是分减一 8:是时减一

为了您能够实现程序的运行,在定时器的蓝本下,加入了以下函数:

void KB_Init(void); //键盘初始化函数 INT8U KB_Scan(void); //扫描读取键值函数 I NT8U KB_Def(INT8U value); //获取键值函数 初始化设置时分秒:time[0] = 0; time[1] = 0; time[2] = 0, 实现键盘初始化:void KB_Init(void) {

KB_P = 0xff; //复位KB_P

KB_D = 0b11111000; //PTG0-PTG2定义为输入 KB_PUE = 0b00000111; //定义输入引脚有内部上拉电阻 KBI1SC = 0b00000100; //状态控制寄存器

//|||||| |||____KBIMOD = 1,Edge-only //||| ||_____KBIE = 0,禁止KBI中断 //||| |______KBACK = 1,清KBF标志 //|||

//|||________KBEDG6 = 0,Falling edges/low levels //||_________KBEDG5 = 0,Falling edges/low levels EnableKBInt(); //开放键盘中断 KBI1PE = 0b00000111; //允许键盘引脚 KBI1P2/PTG2-KBI1P30/PTG0

PTCDD = 0xff; //PTC0~PTC2定义为输出 PTCD=0x00;

// KBI1SC |= 0b00000100; //清KBF标志

}

扫描键值,获取发送至MCU处理,实现功能。

4.3.3 LCD液晶模块

在main.c函数中,通过LCDInit();函数初始化LCD液晶显示器; void LCDInit(void) {

INT16U i;

LCDData_D = 0xFF; //数据口为输出 LCDCtrl_D |= (1

void LCDShow(INT8U str[]) {

INT8U i; LCDInit();

//2. 显示第1行16个字符 //2.1设置显示首地址

LCDCtrl &= ~(1

LCD_Command(0x80); LCDCtrl |= 1

void LCDShowStr(INT8U Line,INT8U Start,INT8U Count,INT8S str[]) {

INT8U i,Saddr; //1. LCD初始化

//LCDInit();

//2. 显示第1行16个字符 //2.1设置显示首地址 if(Line==1) {

LCDCtrl &= ~(1

定义LCDShow();和void LCDShowStr()等相关函数,把从键盘获取的数据显示出来。

4.3.4 蜂鸣器模块

蜂鸣器输出,原理图如图3-5所示。为了节约I/O口,蜂鸣器也采用插孔方式设计,如图22所示,当使用蜂鸣器模块时,1孔插地,2孔插接控制I/O口,3孔插接VCC(5V),当控制点为高电平时蜂鸣器响,当控制点为低电平时蜂鸣器不响。

图3-5蜂鸣器电路

五、运行结果分析与系统改进

结合所学知识,编译,运行基本上满足实验要求,您能够实现以下功能:

用AW60实验板模拟带计时功能的数字时钟,可设置时钟初始值,可调整时钟时间, 可实现秒表计时功能。通过AW60的内部的定时器模块实现计时功能。 4) 输入:自定义键盘,模拟时钟的按键。 5) 输出:用液晶显示器显示时钟时间。 6) 时间:用定时器模块实现计时功能。 但,没有加入,实现不了闹钟功能,只能算得上简单计时时钟。加入串口实现了发送xxxxxx六位数字,设置初始时间。

在同时,可以按键,完成以下操作: 1:是秒表计时结束 2:是秒表清屏, 3:是时钟的秒加一 4:是时钟的分加一 5:是时钟的时加一 6:是秒减一 7:是分减一 8:是时减一

由于闹钟没有实现,可能出于以下原因:1、蜂鸣器模块加入失败 2、函数过于粗糙,

六、遇到的问题和解决方法

1.串口模块加入失败

1)加入串口,并未修改中断向量表 在向量表中第九行改为

isrSCIRe, // 0xFFDC //SCI1 receive vector 2)串口发送时间设置不成

类似在data[0]= time[0]/10 + '0'; //计算时 加入SCISend1(data[0]); 修改相关内容

2.书写错误,以致效果不能实现 第一次书写为{

time[0]++; //时加1 if(time[1]>23) time[1]=0; } 后修改为{

time[0]++; //时加1 if(time[0]>23) time[0]=0; }

3.当程序调试完成后,接线错误

键盘模块需用的端口为PTC0、1、2,PTG0、1、2,误将行列端口完全接反了,C口接入123,G口接入456.

七、课程设计总结

经过了为期一周半的单片机课程设计,首先是对与飞思卡尔的单片机系统有了一定的了解。由于之前就做过几次的实验,而且以前也上过C语言的课程。这次的课程设计,思路很清晰。课程是做一个基于LCD显示的时钟。在原有LCD液晶程序和计数器程序修改的基础上,经过几次修改和整理,在结束之前还是完成了此次的设计。LCD上能够显示时间。这次的课程设计不一样。由于是在原有程序的基础上修改整合,需要对原有的程序进行一个整体的了解和深入。这对与实际的开发很有帮助。能够深入了解飞思卡尔的设计思路。拓展我们的思路。课程设计的内容虽然没有什么太大的实际意义。但是,我们能够了解到实际开发的一些步骤和思路。对于以后的工作也很有帮助的吧。每一次的课程设计,都是一次学习,都是一次进步。

八、参考文献

[1] 权明富,齐佳音,舒华英.客户价值评价指标体系设计[J].南开管理评论,2004,7 [2] 刘小洪,邹鹏. 商业银行客户关系价值管理模型研究[J].管理科学,2005 [3] 楼然苗,李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007 [4] 夏路易,石宗义.《电路原理图与电路板设计教程》北京希望电子工业出版2002 [5] 朱定华,戴汝平.单片微机原理与应用.(M) 北京:清华大学出版社,2003

附录(源程序代码)

苏 州 市 职 业 大 学

实习(实训)报告

名称

2013年 1 月 7 日至 2013 年 1 月 11 日共 1 周

院 系 计算机工程系 班 级姓 名

系 主 任 教研室主任

指导教师

目 录

一、课程设计的目的与要求.............................................................................................. 2

1.1.课程设计的目的 ............................................................................................... 2 1.2.课程设计的要求 ............................................................................................... 2 二、题目说明................................................................................................................... 2

2.1开发背景 ............................................................................................................ 2 2.2 开发工具............................................................................................................ 3

2.2.1 Code warrior 简单介绍 ..................................................................... 3 2.2.2 MC9S08AW60单片机 .................................................................................. 4 3) AW60最小系统........................................................................................... 0

2.3 小组成员分工..................................................................................................... 1 三、硬件方案................................................................................................................... 1

3.1硬件设计及系统原理图 ....................................................................................... 1

3.2 串行通信 ..................................................................................................... 2 3.2.1 串行通信基本原理 ................................................................................... 2 3.2.2 串行通信的电路原理 ................................................................................. 2

3.3 液晶显示原理 .............................................................................................. 3 四、软件设计..................................................................................................... 5 4.1 总体设计............................................................................................................ 5 4.2 模块结构图 ........................................................................................................ 5 4.3 详细设计............................................................................................................ 6

4.3.1 串口模块 ................................................................................................. 6 4.3.3 LCD液晶模块 ........................................................................................... 9

4.3.4 蜂鸣器模块.............................................................................................10

五、运行结果分析与系统改进 ......................................................................................... 11 六、遇到的问题和解决方法............................................................................................. 11 七、课程设计总结...........................................................................................................12 八、参考文献..................................................................................................................13 附录(源程序代码) .......................................................................................................13

一、课程设计的目的与要求

1.1.课程设计的目的

《单片机原理与应用》是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。

1.2.课程设计的要求

在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。认真编写课程设计报告。

二、题目说明

我们选择的题目是:模拟数字时钟

题目描述:用AW60实验板模拟带计时功能的数字时钟,可设置时钟初始值,可调整时钟时间,可实现秒表计时功能。通过AW60的内部的定时器模块实现计时功能。 1) 输入:自定义键盘,模拟时钟的按键。 2) 输出:用液晶显示器显示时钟时间。 3) 时间:用定时器模块实现计时功能。

2.1开发背景

随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求。现代的数字钟不仅需要数字电路技术而且需要模拟电路技术和单片机技术,增加数字钟的功能。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用

数字钟通过数字电路实现时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因

此,研究数字钟及扩大其应用,有着非常现实的意义。

2.2 开发工具

2.2.1 Code warrior 简单介绍

CodeWarrior包括构建平台和应用所必需的所有主要工具 - IDE、编译器、调试器、编辑器、链接器、汇编程序等。另外,CodeWarrior IDE支持开发人员插入他们所喜爱的工具,使他们可以自由地以希望的方式工作。

CodeWarrior开发工作室将尖端的调试技术与健全开发环境的简易性结合在一起,将C/C++源级别调试和嵌入式应用开发带入新的水平。开发工作室提供高度可视且自动化的框架,可以加速甚至是最复杂应用的开发,因此对于各种水平的开发人员来说,创建应用都是简单而便捷的。

它是一个单一的开发环境,在所有所支持的工作站和个人电脑之间保持一致。在每个所支持的平台上,性能及使用均是相同的。无需担心主机至主机的不兼容。

CodeWarrior开发工作室包括完成大多数嵌入式开发项目所需的所有工具:

项目管理器:为软件开发人员处理最高级别的文件管理;按照主要组别组织项目条目;追踪状态信息(例如文件修改日期);确定每个构建中特定文件的构建顺序及内容;协调插件程序以提供箱版本控制和RTOS支持这样的业务。

文本编辑器:支持源代码和其他文本文件的创建和处理。与其他的IDE功能完全集成。

搜索引擎:查找特定的文字串;以替代文字替换找到的文字;支持常规表达的使用;提供文件比较及差别功能。

源浏览器:保存用于程序的符号数据库;包括变量及功能的名称和值的符号的举例;使用符号数据库协助代码浏览;将每个符号与此符号相关代码的其他位置链接;处理目标导向和程序语言。

构建系统:使用编译器从源代码生成可重新定位的目标代码,并使用链接器从目标码生成最后的可执行图像。CodeWarrior C/C++*编译器工具包括业内领先的C/C++*语言CodeWarrior编译器,包括标准模板库(STL)及各种其他工具。

源级别调试器:提供高性能窗口的源级别调试器,配备最新的高效率增强型图形性能,缩短板的bring-up和应用开发时间;使用符号数据库,提供源级别调试;支持符号格式,例如CodeView、Debug With Arbitrary Records Format(DWARF)和STABS。

指令组模拟器:用于jump-starting应用开发的集成指令组模拟器(仅适用于特定的结构)。

2.2.2 MC9S08AW60单片机 1) MC9S08AW60 机能概述

【实物图】

HCS08系列MCU是Freescale 8位微处理器的主流产品,应用非常广泛。MC9S08AW60微控制器具有多种封装形式,它们分别为44脚、48脚、64脚等,本评估板使用64引脚宽脚封装。

MC9S08AW60微控制器的主要特点概述如下:

①2K片内RAM;60K片内Flash程序存储器,具有在线编程能力和保密功能。 ②时钟发生器模块,具有PLL电路,可产生各种工作频率;内部总线频率最高可达20MHz。

③增强的HCS08 CPU结构;最高支持26个中断源。

④54根通用I/O脚,部分I/O口有可选择的内部上拉电阻,并且可以选择引脚的驱动能力。

⑤两个增强型串行通讯口SCI;一个串行外围接口SPI;一个集成电路内部通信接口IIC;两个16位双通道定时器接口模块(TIM1和TIM2),每个通道可选择为输入捕捉、输出比较和PWM;一个模拟信号比较器ACMP;16路10位AD转换模块;8位键盘唤醒口;一个实时时钟计数器模块;一个计算机工作正常(COP)复位模块。

⑥优化用于控制应用;优化支持C语言。

【逻辑结构图】

2) 内部结构简图

如图所示,给出了AW60的内部结构图,它对于我们理解和应用AW60 MCU有重要作用,在学习了基本有法后,应在反过来熟悉这个内部结构图,以便更好地理解AW60 MCU的基本原理。从内部结构图可以看出,AW60主要有以下几个部分:S08 CPU、存储器、定时器接口模块、定时器模块、看门狗模块、通用IO模块、串口通信模块(SCI)、串行外设接口(SPI)模块、IC(IIC)模块、A/D转换模块、键盘中断模块、时钟发生模块、复位与中断模块等。

2

3) AW60最小系统

(1) 芯片:MC9S08AW60CB QFP封装 64引脚。

(2) 最小系统电路:晶振电路、电源及PLL滤波、复位电路。

晶振电路:接MCU第57、58脚之间的电路为晶振电路,这里选用的晶振频率为f=4MHz。通过内部PLL电路模块,可获得小于等于24MHz的内部总线频率。电路及其元件参数是由AW60参考手册确定的。

滤波电路的作用主要是增强电路工作稳定性。AW60芯片的21、22脚(VDD、VSS)为芯片的电源输入端。接在电源与地之间的0.1µF电容为滤波电容。

复位电路:接在MCU第3脚的电路为芯片硬件复位电路。正常工作时该脚通过10K电阻接到电源正极(这里设为5V电源供电),所以应为高电平。若按下复位按钮,则第3脚通过接地,为低电平,芯片复位。

(3) I/O口:每个I/O口都外接到了MCU四周的接线排孔上,用户可以任意使用任何一个I/O口,但要注意不能多个模块同时使用一个口。 注意:

电路板上ADC模块、液晶模块和数码管模块共用一些I/O口,使用时要防止冲突。

三、硬件方案

2.3 小组成员分工

3.1硬件设计及系统原理图

本次,名为单片机控制项目实训,由于水平有限,故分工合作,以实现所要求之目的。此实训大体上,分为串口、键盘、蜂鸣器(闹钟)、液晶模块。 组员:刘宗坤,施方圆,蒋舟舟

分工如下:刘宗坤同学负责串口模块。 施方圆同学负责蜂鸣器模块。 蒋舟舟同学负责键盘模块。

另外,实训内容亦包括:ppt设计、实训报告、程序整合。

3.2 串行通信 3.2.1 串行通信基本原理

232 TTL 电平 电平 (1) MC9S08AW60

内部集成了两个串行通信接口(Serial Communication Interface,SCI)模块,其中SCI1的 发送引脚PTE0/TxD1(13

脚)、接收引脚PTE1/RxD1(14脚),SCI2的发送引脚PTC3/TxD2(63脚)、接收引脚PTC5/RxD2(64脚)。SCI通信是MCU 与外

界进行通信的重要方式之一。MCU引脚一般使用TTL电平,它

适用于板内传输。而PC的串口是RS232 电平的,两者之间要有一个电平转换电路。现在普遍使用的是MAX232。采用最简单的三线制串口连接方法,即电脑的9针串口只用3根线:2

脚接收、3脚发送、5脚地,注意,此处收发是对PC机而言。开发板上已经配置好了全部SCI通信所需的硬件。 (2) TTL电平与RS-232电平转换电路 RS-232通信采用负逻辑,-15V~-3V为逻辑“1”,+3V~+15V为逻辑“0”。 TTL电平的逻辑“1”和“0”的特征电压分别为2.4V和0.4V。

MC9S08AW60实现RS-232串行通信需要电平转换电路。开发板上的转换电路如图4所示。

TTL电平的IN接MC9S08AW60的TXD(12脚)、OUT接MC9S08AW60的RXD(13脚)。 232电平的IN接串口的第3脚、OUT接串口的第2脚。 (3) 评估板中其中一路串行的通信原理如图5所示。串口的第2脚并联小灯,在AW60发送数据时,小灯会闪烁。

3.2.2 串行通信的电路原理

如上图5所示,从基本原理的角度看,串行通信接口SCI的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转换为单线输入。为了设置波特率,SCI应具有波特率寄存器。为了能够设置通信格式、是否校验、是否允许中断等,SCI应具有控制寄存器。而要知道串口是否有数据可收、数据是否发送出去等,需要有SCI状态寄存器。当然,若一个寄存器不够用,控制与状态寄存器可能有多个。而SCI数据寄存器存放要发送的数据,也存放接受的数据,这并不冲突,因为发送与接收的实际工作是通过“发送移位寄存器”和“接收以为寄存器”完成的。编程时,程序员并不直接与“发送移位寄存器”和“接收移位寄存器”打交道,只与数据寄存器打交道,所以MCU中并没有设置“发送移位寄存器和“接收移位寄存器”的映像地址。发送时,程序员通过判定状态寄存器的相应位,了解是否可以发送一个新的数据。若可以发送,则将待发送的数据放入“SCI数据寄存器”中就可以了,剩下的工作由MCU自动完成:将数据从“SCI数据寄存器”送到“发送移位寄存器”,硬件驱动将“发送移位寄存器”的数据一位一位地按照规定的波特率移到发送引脚TxD,供对方接收。接收时,数据一位一位地从接收引脚RxD进入“接收移位寄存器”,当收到一个完成字节时,MCU会自动将数据送入“SCI数据寄存器”,并将状态寄存器的相应位改变,供程序员判定并取出数据。

3.3 液晶显示原理

LCD 即液晶,是常用的嵌入式输出设备。评估板上配置两种LCD,一种使用1602点阵

此型号液晶采用并口通信方式,评估板中使用PTB口作为数据口,另外控制引脚采用PTA0~PTA3四个引脚控制,如图9右侧所示。

LCD部分的第二种型号是128×64型LCD,具体见其实用手册,原理图如图10所示:

图9 LCD实物图

图10 LCD2

此LCD采用串行通信方式,大大减少了I/O口资源的使用,仅仅使用PTA0~PTA3四个I/0即可完成通信,其中PTA3是用来控制背光的,如果保持LCD背光常亮,则仅需要3个I/O口接口控制LCD。

点阵字符型LCD是专门用于显示数字、字母、图形符号及少量自定义符号的液晶显示器。这类显示器把LCD控制器、点阵驱动器、字符存储器、显示体及少量的阻容元件等集成一个液晶显示模块。鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,因此,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示模块。

四、软件设计

4.1 总体设计

本次实验,名为单片机控制项目实训,总体上分为液晶、键盘、串口、蜂鸣器模块。

结合本学期所学知识点以及各次实验,整合了串口,键盘,液晶数码管等重要内容,

故设计了本次实验模拟数字时钟。依照实验要求,以液晶显示试验为蓝本,加入串口,键盘等简单原理程序,形成此略显粗糙的程序。

4.2 模块结构图

4.3 详细设计 4.3.1 串口模块

本串口模块,其目的在于实现调整模拟时钟的时间,通过串口发送至MCU,LCD

显示效果。对比常见的电子钟表,通常会带有调整时间的最基本的功能,否则就称不上为时钟。通过键盘输入输入xxxxxx六位数字,通过串口发送到单片机,可以一次性实现时、分、秒的设置。

通过事先定义一下头文件: //头文件

#include //映像寄存器地址头文件 #include "Type.h" //类型别名定义

//SCI寄存器及相关位宏定义

#define ReSendStatusR SCI1S1 //SCI状态寄存器 #define ReTestBit 5 //接收缓冲区满标志位 #define SendTestBit 7 //发送缓冲区空标志位 #define ReSendDataR SCI1D //数据寄存器

//串行通信子函数声明

void SCIInit(void); //串行口初始化 void SCISend1(INT8U o); //发送1字节 void SCISendN(INT8U n, INT8U ch[]); //发送n字节 INT8U SCIRe1(INT8U *p); //接收1字节 INT8U SCIReN(INT8U n, INT8U ch[]); //接收n字节

设计大体上的程序。

4.3.2 键盘模块

如上图所示,需要的端口为PTC0、1、2,PTG0、1、2,实现3x3的键盘接入,

键盘是常用的输入设备,评估板以9个小按键模拟一个3*3 键盘,以掌握矩阵键盘的工作原理,如图3-1所示。

A W60 内部集成了键盘输入中断模块,但是数量有限,为了给用户提供更大的灵活性,评估版中使用插孔的方式,用户可以将任意I/O

口接到插孔上来,这样即提高了用户编程

图3-1 键盘原理图

的灵活性,又提高了I/O口的使用灵活性。 结合所学知识,做出一下设置定义: 1:是秒表计时结束 2:是秒表清屏, 3:是时钟的秒加一 4:是时钟的分加一 5:是时钟的时加一 6:是秒减一 7:是分减一 8:是时减一

为了您能够实现程序的运行,在定时器的蓝本下,加入了以下函数:

void KB_Init(void); //键盘初始化函数 INT8U KB_Scan(void); //扫描读取键值函数 I NT8U KB_Def(INT8U value); //获取键值函数 初始化设置时分秒:time[0] = 0; time[1] = 0; time[2] = 0, 实现键盘初始化:void KB_Init(void) {

KB_P = 0xff; //复位KB_P

KB_D = 0b11111000; //PTG0-PTG2定义为输入 KB_PUE = 0b00000111; //定义输入引脚有内部上拉电阻 KBI1SC = 0b00000100; //状态控制寄存器

//|||||| |||____KBIMOD = 1,Edge-only //||| ||_____KBIE = 0,禁止KBI中断 //||| |______KBACK = 1,清KBF标志 //|||

//|||________KBEDG6 = 0,Falling edges/low levels //||_________KBEDG5 = 0,Falling edges/low levels EnableKBInt(); //开放键盘中断 KBI1PE = 0b00000111; //允许键盘引脚 KBI1P2/PTG2-KBI1P30/PTG0

PTCDD = 0xff; //PTC0~PTC2定义为输出 PTCD=0x00;

// KBI1SC |= 0b00000100; //清KBF标志

}

扫描键值,获取发送至MCU处理,实现功能。

4.3.3 LCD液晶模块

在main.c函数中,通过LCDInit();函数初始化LCD液晶显示器; void LCDInit(void) {

INT16U i;

LCDData_D = 0xFF; //数据口为输出 LCDCtrl_D |= (1

void LCDShow(INT8U str[]) {

INT8U i; LCDInit();

//2. 显示第1行16个字符 //2.1设置显示首地址

LCDCtrl &= ~(1

LCD_Command(0x80); LCDCtrl |= 1

void LCDShowStr(INT8U Line,INT8U Start,INT8U Count,INT8S str[]) {

INT8U i,Saddr; //1. LCD初始化

//LCDInit();

//2. 显示第1行16个字符 //2.1设置显示首地址 if(Line==1) {

LCDCtrl &= ~(1

定义LCDShow();和void LCDShowStr()等相关函数,把从键盘获取的数据显示出来。

4.3.4 蜂鸣器模块

蜂鸣器输出,原理图如图3-5所示。为了节约I/O口,蜂鸣器也采用插孔方式设计,如图22所示,当使用蜂鸣器模块时,1孔插地,2孔插接控制I/O口,3孔插接VCC(5V),当控制点为高电平时蜂鸣器响,当控制点为低电平时蜂鸣器不响。

图3-5蜂鸣器电路

五、运行结果分析与系统改进

结合所学知识,编译,运行基本上满足实验要求,您能够实现以下功能:

用AW60实验板模拟带计时功能的数字时钟,可设置时钟初始值,可调整时钟时间, 可实现秒表计时功能。通过AW60的内部的定时器模块实现计时功能。 4) 输入:自定义键盘,模拟时钟的按键。 5) 输出:用液晶显示器显示时钟时间。 6) 时间:用定时器模块实现计时功能。 但,没有加入,实现不了闹钟功能,只能算得上简单计时时钟。加入串口实现了发送xxxxxx六位数字,设置初始时间。

在同时,可以按键,完成以下操作: 1:是秒表计时结束 2:是秒表清屏, 3:是时钟的秒加一 4:是时钟的分加一 5:是时钟的时加一 6:是秒减一 7:是分减一 8:是时减一

由于闹钟没有实现,可能出于以下原因:1、蜂鸣器模块加入失败 2、函数过于粗糙,

六、遇到的问题和解决方法

1.串口模块加入失败

1)加入串口,并未修改中断向量表 在向量表中第九行改为

isrSCIRe, // 0xFFDC //SCI1 receive vector 2)串口发送时间设置不成

类似在data[0]= time[0]/10 + '0'; //计算时 加入SCISend1(data[0]); 修改相关内容

2.书写错误,以致效果不能实现 第一次书写为{

time[0]++; //时加1 if(time[1]>23) time[1]=0; } 后修改为{

time[0]++; //时加1 if(time[0]>23) time[0]=0; }

3.当程序调试完成后,接线错误

键盘模块需用的端口为PTC0、1、2,PTG0、1、2,误将行列端口完全接反了,C口接入123,G口接入456.

七、课程设计总结

经过了为期一周半的单片机课程设计,首先是对与飞思卡尔的单片机系统有了一定的了解。由于之前就做过几次的实验,而且以前也上过C语言的课程。这次的课程设计,思路很清晰。课程是做一个基于LCD显示的时钟。在原有LCD液晶程序和计数器程序修改的基础上,经过几次修改和整理,在结束之前还是完成了此次的设计。LCD上能够显示时间。这次的课程设计不一样。由于是在原有程序的基础上修改整合,需要对原有的程序进行一个整体的了解和深入。这对与实际的开发很有帮助。能够深入了解飞思卡尔的设计思路。拓展我们的思路。课程设计的内容虽然没有什么太大的实际意义。但是,我们能够了解到实际开发的一些步骤和思路。对于以后的工作也很有帮助的吧。每一次的课程设计,都是一次学习,都是一次进步。

八、参考文献

[1] 权明富,齐佳音,舒华英.客户价值评价指标体系设计[J].南开管理评论,2004,7 [2] 刘小洪,邹鹏. 商业银行客户关系价值管理模型研究[J].管理科学,2005 [3] 楼然苗,李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007 [4] 夏路易,石宗义.《电路原理图与电路板设计教程》北京希望电子工业出版2002 [5] 朱定华,戴汝平.单片微机原理与应用.(M) 北京:清华大学出版社,2003

附录(源程序代码)


相关内容

  • 软件需求-第14课-软件需求规格说明书
  • 软件需求 Che cking Che Ckin Che cking g Che cking Che Ckin Che cking g Checking Checking Checking Checking Checking Settings Entry/ OpenShutter( 0.5 ); Me ...

  • 组合钢模板技术规范
  • 组合钢模板技术规范GBJ214-89 中华人民共和国国家标中华人民共和国国家标准 组合钢模板技术规范GBJ214-89 中华人民共和国国家标准 组合钢模板技术规范GBJ214-89 主编部门:中华人民共和国冶金工业部 批准部门:中华人民共和国建设部 施行日期:1990年1月1日 关于发布国家标准&l ...

  • 衬砌台车使用说明
  • 大别山隧道进口衬砌台车 使用说明书 一.衬砌台车结构 衬砌台车由台车架.模板及液压动力系统三大部分组成.通过液压装臵立模.拆模,可一次完成隧道全断面衬砌12m. 1.台车车架 主要包括门架纵梁.横梁.立柱.斜撑.侧部连杆.顶部连杆及行走部分.在满足强度.刚度要求的情况下,采用型钢设计,保证结构合理, ...

  • 模板验收要求
  • 主控项目 4.2.1 安装现浇结构的上层模板及其支架时,下层楼板应具有承受上层荷载的 承载能力,或加设支架:上.下层支架的立柱应对准,并铺设垫板. 检查数量:全数检查. 检验方法:对照模板设计文件和施工技术方案观察. 条文说明: 模板分项工程是为混凝土浇筑成型用的模板及其支架的设计.安装.拆除 等一 ...

  • 用户手册制作规范_V1.00
  • 文档编号: 密 级: 技术文件名称:用户手册制作规范 版 本:V1.0 文件质量等级:[单击此处键入文件质量等级] 拟制: 审核: 批准: [单击此处键入批准者姓名] 版本记录 目录 1 概述 ..................................................... ...

  • 建筑工程说明各章编制说明文档
  • 第一章 土石方工程 一.概况 本章包括人工土方,机械土石方,运土石方三节. 1.人工土方分平整场地,地基钎探,原土打夯,人工挖土方,人工挖沟槽,人工挖基坑,人工挖淤泥.流砂,人工挖冻土,人工回填土. 2.机械土石方分推土机推土,铲运机铲运土,挖掘机挖土,挖掘机.装载机挖土自卸汽车运土,场地机械平整. ...

  • jeecms模板标签说明
  • 目 录 第 1 章       Include标签 第1.1节        功能简介 第1.2节        标记说明 第 2 章       ArtiList标签 第2.1节        功能简介 第2.2节        标记说明 第 3 章       Position标签 第3.1节  ...

  • 清单计价操作程序
  • 三.清单报价软件操作程序 三.清单报价软件操作程序 (一) 建立新工程项目,录入工程项目信息(如图6-1.6-2) . 图6-1(工程项目信息设置) 工程项目设置时首先选择项目划分库.定额数据库及工程设置模板.系统缺省为全国工程量清单项目库.四川省2004清单定额库及2004清单定额工程设置模板.若 ...

  • 沃森疫苗冷链温度传感系统操作说明书
  • 疫苗冷链管理中智能温度传感器及中间件的技术研发 操作使用说明书 云南掌联科技有限公司 目 录 1. 引言 ................................................................................................. ...

  • 2004江苏定额模板计算说明
  • 第二十章 模板工程 说明 本章分为现浇构件模板.现场预制构件模板.加工厂预制构件模板和构筑物工程模板四个部分,使用时应分别套用.为便于施工企业快速报价,在附录中列出了混凝土构件的模板含量表,供使用单位参考.按设计图纸计算模板接触面积或使用砼含模量折算模板面积,两种方法仅能使用其中一种,相互不得混用. ...