单片机 数字钟课程设计.docx

上传人:b****5 文档编号:3373919 上传时间:2022-11-22 格式:DOCX 页数:20 大小:135.09KB
下载 相关 举报
单片机 数字钟课程设计.docx_第1页
第1页 / 共20页
单片机 数字钟课程设计.docx_第2页
第2页 / 共20页
单片机 数字钟课程设计.docx_第3页
第3页 / 共20页
单片机 数字钟课程设计.docx_第4页
第4页 / 共20页
单片机 数字钟课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

单片机 数字钟课程设计.docx

《单片机 数字钟课程设计.docx》由会员分享,可在线阅读,更多相关《单片机 数字钟课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

单片机 数字钟课程设计.docx

单片机数字钟课程设计

课程设计报告

 

课程设计名称:

系:

学生姓名:

班级:

学号:

成绩:

指导教师:

开课时间:

学年学期

一.设计题目

数字时钟

二.主要内容

利用定时器设计一个电子钟,并定义一个启动键。

当按下该键时电子时钟从当前设定值开始走时。

按秒刷新,要求在LCD屏上显示。

三.具体要求

在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。

教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。

学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。

学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。

学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。

学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。

设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。

周一

周二

周三

周四

周五

讲课设内容,安排任务

查资料,确定硬件电路方案

画出程序流程图,写出程序清单

画出程序流程图,写出程序清单

写总结报告

四.进度安排

五.成绩评定

考核方法:

现场验收(占50%),课程设计报告(占50%)。

考核内容:

学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。

成绩评定:

优,良,中,及格,不及格。

特别说明:

如发现抄袭,按照不及格处理。

目录

第一章系统概要

1.1系统背景…………………………………………………………1

1.2系统功能…………………………………………………………1

第二章系统硬件设计

2.1系统原理图………………………………………………………2

2.2单片机(MCU)模块

2.2.1MC9S08AW60单片机功能概述………………………………2

2.2.2内部结构简图………………………………………………3

2.3串行通信模块

2.3.1MAX232引图………………………………………………3

2.3.2串行通信的电路原理………………………………………4

2.4液晶显示模块……………………………………………………5

第三章系统软件设计

3.1MCU方(C)程序

3.1.1串行通信子程序……………………………………………7

3.1.2LCD子程序…………………………………………………11

第四章系统测试……………………………………………………………14

第五章总结展望

5.1总结………………………………………………………………16

5.2展望………………………………………………………………16

参考文献………………………………………………………………………16

第一章系统概要

1.1系统背景

单片机技术自发展以来已走过了近20年的发展路程。

单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。

小到遥控电子玩具,大到航空航天技术等电子行业都有单片机应用的影子。

1946年第一台电子计算机诞生至今,依靠微电子技术和半导体技术的进步,从电子管——晶体管——集成电路——大规模集成电路,使得计算机体积更小,功能更强。

特别是近20年时间里,计算机技术获得飞速的发展,计算机在工农业,科研,教育,国防和航空航天领域获得了广泛的应用,计算机技术已经是一个国家现代科技水平的重要标志。

单片机诞生于20世纪70年代,所谓单片机是利用大规模集成电路技术把中央处理单元(CenterProcessingUnit,也即常称的CPU)和数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用广泛。

20世纪70年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各种新材料新工艺尚未成熟,单片机仍处在初级的发展阶段,元件集成规模还比较小,功能比较简单,一般均把CPU、RAM有的还包括了一些简单的I/O口集成到芯片上,像Fairchild公司就属于这一类型,它还需配上外围的其他处理电路方才构成完整的计算系统。

九十年代以后,单片机获得了飞速的发展,世界各大半导体公司相继开发了功能更为强大的单片机。

美国Microchip公司发布了一种完全不兼容MCS-51的新一代PIC系列单片机,引起了业界的广泛关注,特别它的产品只有33条精简指令集吸引了不少用户,使人们从INTEL的111条复杂指令集中走出来。

PIC单片机获得了快速的发展,在业界中占有一席之地。

21世纪新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。

1.2系统功能

本次课程设计的主要任务是设计一个时钟计数器,也就是要做一个秒表,能够计数,并且按照我们平时的时间计数格式显示,当我们按下某个计数按键时候,这个计数系统就一秒一秒的计数,当计数到59秒就进位,显示分钟的部分加1,当计数分钟的数字显示到59,同样要进位,这时候时钟部分加1,如此循环下去。

当我们再次按下此按键时候,计数器暂停计数,此时显示器也就暂停在那个时候不在计数了,并且显示当前计数时间。

LCD显示器要求每显示一次就刷新一次,或者刷新频率更高些。

 

第二章系统硬件设计

2.1系统原理图

上图中AW60是主要模块,所有的信号都是经过AW60模块进行处理,各个功能模块在AW60模块的连接下才能够协调运行起来。

图中,左边一块是各异晶振和两个电容连接,用来产生标准的时钟脉冲,在AW60上面连接的是LCD液晶显示器,用来动态显示当前所计数的秒数,右边一个模块是接地使用,最下面的是一个开关模块,用来在程序加载后由此开关控制何时开始计数,何时暂停计数,以及一些复位等操作。

2.2单片机(MCU)模块

2.2.1MC9S08AW60单片机性能概述

S80是单芯片8位微控制器解决法案。

MC9S08AW60/AW60/AW48/AW32/AW16是低成本高性能的8位饿、微处理器单元(MCU)S08家族中的成员。

家族中有的MCU使用增强型S08S核,且使用不同的模块,存储空间,存储器类型与封装类型。

AW60系列主要常规模块和特点:

(1)最高达40MHz的CPU工作频率和20MHz的内部总线工作频率;时钟源选项包括晶振,谐振器,外部时钟或,内部产生的时钟。

(2)相比HC08CPU指令集,S08CPU增加了BGND指令。

(3)单线后台调试模式接口:

增强的断点能力,允许单一的断点设置在线调试(在片内调试模块增加了多于两个的断点)。

(4)内含32个中断/复位源;内含2KB的片内RAM;内含60KB的片内在线可编程的Flash存储器,带有块保护和安全选项。

(5)可选的计算机正常操作(COP)复位;低电压检测与复位或中断;非法操作码检测与复位;非法地址检测与复位。

(6)ADC:

多达16个通道,10个A/D转换器与动动比较功能;两个串行通信接口SCI模块与可选的13位中断;一个串行外设接口SPI模块;集成电路互联总线IIC模块运行高达100kbps的最高总线负载;8引脚键盘中断KBI模块。

(7)Timers:

1个2通道和一个6通道16位定时器/脉冲宽度调制器模块。

既有输入捕获,输出比较,脉宽调制功能。

AW子系列MCU的4种封装形式只是引脚数量和形式有所区别,其他方面是一致的。

2.2.2内部结构简图

1.内部结构简图

 

 

图2-1AW60MCU内部结构框图

图2-1给出了SW60内部结构框图,它对于我们理解和应用AW60MCU有重要作用,在学习了基本方法后,应再反过来熟悉这个内部结构图,以便好好地理解AW60MCU的基本原理。

从内部结构框图可以看出,AW60主要有以下部件:

S08CPU,存储器,定时器接口模块,定时器模块,看门狗模块,通用I/O模块,串行通信模块(SCI),串行外设接口模块(SPI),I2C(IIC)模块,A/D转换模块,键盘中断模块,时钟发生器模块,复位与中断模块等。

2.3串行通信模块

2.3.1MAX232引脚图

在MCU中,若用RS-232总线进行串行通信,则需外界电路实现电平转换,在发送端需要用驱动电平将TTL电平转换成RS-232电平;在接收端,需要用接收电路将RS-232电平转换为TTL电平。

电平转换器不仅可以由晶振管分立元件构成,也可以直接使用集成电路。

目前使用MAX232芯片比较多,该芯片使用单一+5V电源供电实现电平转换,上图的引脚说明:

(1)VCC(16脚):

正电源端,一般为+5V;

(2)GND(15脚):

接地;

(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的电解电容。

2.3.2串行通信的电路原理图2-2MAX232引脚

1、焊接到PCB板上的MSX232芯片检测方法

正常情况下,

(1)T1IN=5V,则T1OUT=-9V;T1IN=0V;则T1OUT=9V。

(2)将R1IN与T1OUT相连,令T1IN=5V,则R1OUT=5V;令T1IN=0V,则T1OUT=0V。

具有串行通信接口的MCU,一般具有发送引脚(TxD)与接受引脚(RxD),不同公司或不同系列的MCU,使用的引脚缩写名可能不一致,但含义相同。

串行通信接口的外围硬件电路,主要目的是:

将MCU的发送引脚TxD与接收端引脚RxD的TTL电平,通过RS-232电平转换器芯片转换成RS-232电平,上图就是基本串行通信的电平转换电路。

2、MAX232芯片进行电平转换的基本原理

发送过程:

MCU的TxD(TTL电平)经过MAX232的11脚(T1IN)送到MAX232内部,在内部TTL电平被“提升”为232电平,通过14脚(T1OUT)发送出去。

接收过程:

外部232电平经过MAX232的13脚(R1IN)送入到MAX232的内部,在内部的电平被“降低”为TTL电平,经过12脚(R1OUT)送到MCU的RxD,进入MCU内部。

进行MCU的串行通信接口编程时,只针对MCU的发送与接收引脚,与MAX232无关,MAX232只是起到电平转换作用。

表1MAX232芯片输入输出引脚分类与基本接法

组别

TTL电平引脚

方向

典型接口

232电平引脚

方向

典型接口

1

11

12

输入

输出

接MCU的TxD

接MCU的RxD

13

14

输入

输出

连接到接口,与其它设备通过232相接

2

10

9

输入

输出

接MCU的TxD

接MCU的RxD

8

7

输入

输出

连接到接口,与其它设备通过232相接

输入输出引脚分两组,基本含义如表1所示。

在实际使用时,若只需要一路串行通信接口,可以使用其中任何一组。

2.4液晶显示模块

点阵字符型LCD基本特点:

LCD作为电子信息产品的主要显示器件,相对于其他类型的显示器件来说有其自身的特点,主要包括:

(1)低电压,低功耗;

(1)平板型结构;(3)使用寿命长;(4)被动显示;(5)显示信息量大且易于彩色化;(6)无电磁辐射。

点阵字符型LCD是专门用于显示数字,字母,图形符号及少量自定义符号的液晶显示器。

这类显示器把LCD控制器,点阵驱动器,字符存储器,显示体及少量的阻容元件等集成一个液晶显示模板。

鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示器模块。

点阵字符型液晶显示器模块的控制器大多数为日立公司生产的HD44780及其兼容的控制电路,如:

SED1278(SEIKOEPSON),KS0066(SAMSUNG),NJU6408(NERJAPANRADIO)等。

字符型液晶显示器模块的特点如下:

(1)液晶显示屏是以若干5*8或5*11点阵块等组成的显示字符群。

每个点阵块块为一个字符位,字符间距和行间距都是一个点的宽度。

(2)主控制电路为HD44780(HITACHI)及其他公司的兼容电路。

从程序员的角度来看LCD显示接口与编程是面向HD44780的,只要了解HD44780的编程结构即可进行LCD的显示编程。

(3)内部具有字符发生器ROM,可显示192种字符。

(4)具有64字节的字符发生器RAM,可以定义8个5*8点阵字符或4个5*11的点阵字符。

(5)具有64字节的数据显示RAM,供显示器编程使用。

(6)标准接口特性,与MC9S08系列的MCU容易接口。

(7)模块结构紧凑,轻巧,装配容易。

(8)单+5V电源供电(宽温型需要加-7V驱动电源)。

(9)低功耗,高可靠性。

LCD(YM1602C)

MCU控制液晶显示接口接线图

 

第三章系统软件设计

3.1MCU方(C)程序

3.1.1串行通信子程序

//-------------------------------------------------------------------------*

//文件名:

SCI.c

//说明:

SCI构件函数源文件

//-------------------------------------------------------------------------*

//头文件

#include"SCI.h"//该头文件包含SCI相关寄存器及标志位宏定义

//-------------------------------------------------------------------------*

//函数名:

SCIInit

//功能:

初始化SCIx模块。

x代表1,2//参数:

uint8SCINo:

第SCINo个SCI模块。

其中SCINo取值为1,2

//如果SCINo大于2,则认为是2//uint8sysclk:

系统总线时钟,以MHz为单位

//uint16baud:

波特率,如4800,9600,19200,38400//一般来说,速度慢一点,通信会更稳定

//返回:

//说明:

SCINo=1表示使用SCI1模块,依此类推。

//-------------------------------------------------------------------------*

voidSCIInit(uint8SCINo,uint8sysclk,uint16baud)

{

uint16ubgs;

ubgs=0;

if(SCINo>2)

{

SCINo=2;//若传进的通道号大于2,则按照2来接收

}

//1.计算波特率并设置:

ubgs=fsys/(波特率*16)(其中fsys=sysclk*1000000)

ubgs=sysclk*(10000/(baud/100))/16;//理解参考上一行,此处便于CPU运算

SCI_BDH(SCINo)=(uint8)((ubgs&0xFF00)>>8);

SCI_BDL(SCINo)=(uint8)(ubgs&0x00FF);

//无校验,正常模式(开始信号+8位数据(先发最低位)+停止信号)

SCI_C1(SCINo)=0b00000000;//SCI控制寄存器1

//||||||||

//|||||||+-PT---奇偶校验类型,在PE=1时游泳

//||||||+--PE---奇偶校验使能,

//|||||+---ILT---闲置线路类型选择

//||||+----WAKEI---接受长期唤醒方式选择

//|||+-----M---9位或8位数据选择

//||+------RSRC---接收器源选择

//|+-------SCISWAI等待模式中SCI停止

//+--------LOOPS---循环模式选择

//允许发送,允许接收,中断方式收发

SCI_C2(SCINo)=0b00001100;//SCI控制寄存器2

//||||||||

//|||||||+-SBK---发送中止字符

//||||||+--RWU---接收器唤醒控制

//|||||+---RE---接收器使能

//||||+----TE---发送器使能

//|||+-----ILIE---闲置线路中断使能

//||+------RIE---接收器中断使能

//|+-------TCIE---发送完成中断使能

//+--------TIE---发送中断使能

}

//-------------------------------------------------------------------------*

//函数名:

SCISend1

//功能:

串行发送1个字节

//参数:

uint8SCINo:

第SCINo个SCI模块,其中SCINo取值为1,2

//uint8ch:

要发送的字节

//返回:

//说明:

SCINo=1表示使用SCI1模块,依此类推

//-------------------------------------------------------------------------*

voidSCISend1(uint8SCINo,uint8ch)

{

if(SCINo>2)

{

SCINo=2;//若传进的通道号大于2,则按照2来接收

}

while(!

(SCI_S1(SCINo)&0b1000000));//判断发送缓冲区是否为空

SCI_D(SCINo)=ch;

}

//-------------------------------------------------------------------------*

//函数名:

SCISendN

//功能:

串行发送N个字节

//参数:

uint8SCINo:

第SCINo个SCI模块,其中SCINo取值为1,2

//uint16n:

发送的字节数

//uint8ch[]:

待发送的数据

//返回:

//说明:

SCINo=1表示使用SCI1模块,依此类推

//调用了SCISend1函数

//-------------------------------------------------------------------------*

voidSCISendN(uint8SCINo,uint16n,uint8ch[])

{

uint16i;

if(SCINo>2)

{

SCINo=2;//若传进的通道号大于2,则按照2来接收

}

for(i=0;i

SCISend1(SCINo,ch[i]);

}

//-------------------------------------------------------------------------*

//函数名:

SCIRe1

//功能:

从串口接收1个字节的数据

//参数:

uint8SCINo:

第SCINo个SCI模块,其中SCINo取值为1,2

//返回:

接收到的数(若接收失败,返回0xff)

//uint8*p:

接收成功标志的指针(0表示成功,1表示不成功)

//说明:

参数*p带回接收标志,*p=0,收到数据;*p=1,未收到数据*

//说明:

SCINo=1表示使用SCI1模块,依此类推

//-------------------------------------------------------------------------*

uint8SCIRe1(uint8SCINo,uint8*p)

{

uint16k;

uint8i;

if(SCINo>2)

{

SCINo=2;//若传进的通道号大于2,则按照2来接收

}

for(k=0;k<0xfbbb;k++)//有时间限制

if((SCI_S1(SCINo)&0b00100000)!

=0)//判断接收缓冲区是否满

{

i=SCI_D(SCINo);

*p=0x00;

break;

}

if(k>=0xfbbb)//接受失败

{

i=0xff;

*p=0x01;

}

returni;

}

//-------------------------------------------------------------------------*

//函数名:

SCIReN

//功能:

从串口接收N个字节的数据

//参数:

uint8SCINo:

第SCINo个SCI模块,其中SCINo取值为1,2

//uint16n:

要接收的字节数

//uint8ch[]:

存放接收数据的数组

//返回:

接收标志=0接收成功,=1接收失败

//说明:

SCINo=1表示使用SCI1模块,依此类推

//调用了SCIRe1函数

//-------------------------------------------------------------------------*

uint8SCIReN(uint8SCINo,uint16n,uint8ch[])

{

uint16m;

uint8fp;//接收标志

m=0;

if(SCINo>2)

{

SCINo=2;//若传进的通道号大于2,则按照2来接收

}

while(m

{

ch[m]=SCIRe1(SCINo,&fp);

if(fp==1)

{

return1;//接收失败

}

m++;

}

return0;//接收成功

}

//-------------------------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 学科竞赛

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

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