单片机数字时钟 报告文档格式.docx
- 文档编号:18615016
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:23
- 大小:258.86KB
单片机数字时钟 报告文档格式.docx
《单片机数字时钟 报告文档格式.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟 报告文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。
通过键盘可以进行定时,校时功能。
输出设备显示器可以用液晶显示技术和数码管显示技术。
随着科学技术的发展电子技术产业结构调整,单片机开始迅速发展,由于家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。
数字时钟,就是以数字显示取代模拟表盘的钟表,在显示上它用数字反应此时的时间,相比模拟钟能给人一种一目了然的感觉,不仅如此它还能同时显示时,分,秒。
。
单片机的应用领域已从面向工业控制,通讯,交通,智能仪表等迅速发展到家用消费产品,办公自动化,汽车电子,PC机外围以及网络通讯等广大领域。
单片机系统座位一种典型的嵌入式系统,其系统设计包括硬件设计和软件设计编程设计两个方面,其调试过程一般分为软件调试,硬件调试,系统调试。
1.2系统功能
本次课程设计的主要任务是设计一个时钟计数器,也就是要做一个秒表,能够计数,并且按照我们平时的时间计数格式显示,当我们按下某个计数按键时候,这个计数系统就一秒一秒的计数,当计数到59秒就进位,显示分钟的部分加1,当计数分钟的数字显示到59,同样要进位,这时候时钟部分加1,如此循环下去。
当我们再次按下此按键时候,计数器暂停计数,此时显示器也就暂停在那个时候不在计数了,并且显示当前计数时间。
LCD显示器要求每显示一次就刷新一次,或者刷新频率更高些。
第二章系统硬件设计
2.1系统原理图
表2.1定时器显示控制系统的硬件构件划分
构件中文名称
构件英文名称
构件功能
类型
AW60最小系统
AW60-MinSys
AW60MCU的最小系统,包含BDM电路。
核心构件
电源
Power
将+24V电压转换为+3.3V电压。
中间构件
液晶显示
LCD
采用串行输入模式显示数据。
终端构件
上图中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-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;
图2-2MAX232引脚
(4)Vs-(6脚):
vs-=-2vcc-1.5v=-11.5v;
(5)C2+,C2-(4,5脚):
一般接1uF的电解电容;
(6)C1+,C2-(1,3脚):
一般接1uF的电解电容。
2.3.2串行通信的电路原理
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只是起到电平转换作用。
输入输出引脚分两组,基本含义如表1所示。
在实际使用时,若只需要一路串行通信接口,可以使用其中任何一组
表1MAX232芯片输入输出引脚分类与基本接法
组别
TTL电平引脚
方向
典型接口
232电平引脚
1
11
12
输入
输出
接MCU的TxD
接MCU的RxD
13
14
连接到接口,与其它设备通过232相接
2
10
9
8
7
2.4液晶显示模块
1.点阵字符型LCD基本特点:
LCD作为电子信息产品的主要显示器件,相对于其他类型的显示器件来说有其自身的特点,
主要包括:
(1)低电压,低功耗;
(2)平板型结构;
(3)使用寿命长;
(4)被动显示;
(5)显示信息量大且易于彩色化;
(6)无电磁辐射。
点阵字符型LCD是专门用于显示数字,字母,图形符号及少量自定义符号的液晶显示器。
这类显示器把LCD控制器,点阵驱动器,字符存储器,显示体及少量的阻容元件等集成一个液晶显示模板。
鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示器模块。
点阵字符型液晶显示器模块的控制器大多数为日立公司生产的HD44780及其兼容的控制电路,如:
SED1278(SEIKOEPSON),KS0066(SAMSUNG),NJU6408(NERJAPANRADIO)等。
2.字符型液晶显示器模块的特点如下:
(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)低功耗,高可靠性。
第三章系统软件设计
3.1MCU方(C)程序
3.1.1主程序(main.c)
//工程名:
Timer
//硬件连接:
MCU的串口与PC方的串口相连
//程序描述:
//
(1)打开程序目录中的Timer1.exe,用串口发生给MCU表示时间的3字节数据
//
(2)利用定时器溢出中断修改时间,并发送新时间
//目的:
学习定时器基本功能
//总头文件
#include"
Includes.h"
//在此添加全局变量定义
uint8time[3];
//记录时间的数组
voidmain(void)
{uint8i=0;
uint8LCDbuff[]="
hanxiaoyan080310113"
;
//32空格,显示屏初始字符
uint8remember;
//记录当前秒数的变量
//1关总中断
DisableInterrupt();
//禁止总中断
//2芯片初始化
MCUInit();
//3模块初始化
TPMinit
(1);
//
(1)定时器1初始化
SCIInit(1,SYSTEM_CLOCK,9600);
//
(2)串行口初始化
//4内存初始化
time[0]=0;
//
(1)"
时分秒"
缓存初始化(00:
00:
00)
time[1]=0;
time[2]=0;
remember=time[2];
//
(2)临时变量remember初始化
LCDshow(LCDbuff);
//显示初始字符
//5开放中断
EnableSCIReInt();
//
(1)开放串口接受中断
EnabletimerInt
(1);
//
(2)开放定时器1溢出中断
EnableInterrupt();
//(3)开放总中断
//6主循环
while
(1)
{if(time[2]!
=remember)
{SCISendN(1,3,time);
LCDbuff[0]=time[0]/10+'
0'
LCDbuff[1]=time[0]%10+'
LCDbuff[2]=time[1]/10+'
LCDbuff[3]=time[1]%10+'
LCDbuff[4]=time[2]/10+'
LCDbuff[5]=time[2]%10+'
LCDshow(LCDbuff);
remember=time[2];
}}}
3.1.2中断子程序(Isr.c)
//文件名:
isr.c
//说明:
中断处理函数文件
//头文件
//此处为用户新定义中断处理函数的存放处
//函数名:
isrT1Out
//功能:
定时器1溢出中断处理函数,以秒为最小单位计时,并清定时器1溢出标志位*
//参数:
无
//返回:
//说明:
调用SecAdd1函数
interruptvoidisrT1Out(void)
{uint8temp;
SecAdd1(time);
//1s到,递增时,分,秒缓冲区的值
//清定时器1溢出标志位
temp=AW60_TPM_CSTR
(1);
//读取定时器1状态和控制寄存器TPM1SC
AW60_TPM_CSTR
(1)&
=~(AW60_TPM_CSTR_TOF);
//向定时器溢出标志位写0
//开放总中断}
isrSCIre
SCI接收中断处理函数,接收3个字节数据作为基准时分秒的值,放入
//time[0-2]
调用了SCIReN函数
interruptvoidisrSCIre(void)
temp=SCIReN(1,3,time);
//接收3个字节,放入time数组
//开放总中断}
//未定义的中断处理函数,本函数不能删除
interruptvoidisrDummy(void)
{}
//中断处理子程序类型定义
typedefvoid(*ISR_func_t)(void);
//中断矢量表,如果需要定义其它中断函数,请修改下表中的相应项目
constISR_func_tISR_vectors[]@0xFFCC=
{
isrDummy,//0xFFCC//RTI(periodicinterrupt)vector
isrDummy,//0xFFCE//IICvector
isrDummy,//0xFFD0//analogtodigitalconversionvector
isrDummy,//0xFFD2//keyboardvector
isrDummy,//0xFFD4//SCI2transmitvector
isrDummy,//0xFFD6//SCI2receivevector
isrDummy,//0xFFD8//SCI2errorvector
isrDummy,//0xFFDA//SCI1transmitvector
isrSCIre,//0xFFDC//SCI1receivevector
isrDummy,//0xFFDE//SCI1errorvector
isrDummy,//0xFFE0//SPIvector
isrDummy,//0xFFE2//TPM2overflowvector
isrDummy,//0xFFE4//TPM2channel1vector
isrDummy,//0xFFE6//TPM2channel0vector
isrT1Out,//0xFFE8//TPM1overflowvector
isrDummy,//0xFFEA//TPM1channel5vector
isrDummy,//0xFFEC//TPM1channel4vector
isrDummy,//0xFFEE//TPM1channel3vector
isrDummy,//0xFFF0//TPM1channel2vector
isrDummy,//0xFFF2//TPM1channel1vector
isrDummy,//0xFFF4//TPM1channel0vector
isrDummy,//0xFFF6//ICGvector
isrDummy,//0xFFF8//lowvoltagedetectvector
isrDummy,//0xFFFA//IRQpinvector
isrDummy//0xFFFC//SWIvector
//RESETdefinedinProject.prm};
3.1.3LCD子程序(LCD.c)
//文件名:
LCD.c
LCD驱动
LCD.h"
//该头文件包含寄存器及相关位定义
LCDinit
初始化LCD(HD44780),设置显示方式,输入方式,并清屏
调用了LCDcommand函数
voidLCDinit(void)
{uint16i;
//定义数据口(PTA0-7)为输出
LCDdataD=0b11111111;
//||||||||
//|||||||+--------PTA0
//||||||+---------PTA1
//|||||+----------PTA2
//||||+-----------PTA3
//|||+------------PTA4
//||+-------------PTA5
//|+--------------PTA6
//+---------------PTA7
//定义控制口(PTC4,PTC6)为输出
LCDctrlD1|=(1<
<
LcdRS);
LcdRW);
LCDctrl1&
=~(1<
//RS、R/W=00,写指令
//定义控制口(PTF6)为输出
LCDctrlD2|=(1<
LcdE);
LCDctrl2|=(1<
//E=1
//1功能设置
LCDcommand(0b00111000);
//5*7点阵模式,2行显示,8位数据总线
//|||
//||+--------设置点阵模式,0-5*7点阵,1-5*10点阵
//|+---------设置显示行数,1-2行显示,0-1行显示
//+------设置数据接口位数,1-8位数据总线,0-4位数据总线
//2显示开关控制
LCDcommand(0b00001000);
//不闪烁,关光标显示,关显示
//||+-----闪烁控制,0-不闪烁,1-闪烁
//|+------光标控制,0-关光标,1-开光标
//+-------显示控制,0-关显示,1-开显示
//3清屏
//3.1清DDRAM内容,光标回原位,清AC
LCDcommand(0b00000001);
//3.2等待清屏完毕,时间>
1.6ms
for(i=0;
i<
4000;
i++)
asm("
NOP"
);
//4输入方式设置
LCDcommand(0b00000110);
//显示不移动,光标左移(A=1),数据读写操作后,AC自动增1
//||
//|+------0-显示不移动,1-显示移动
//+-------0-AC自动减1,1-AC自动增1
//5光标或画面移位设置
LCDcommand(0b00010100);
//光标右移一个字符位,AC自动加1
//6显示开关控制
LCDcommand(0b00001100);
//不闪烁,关光标显示,开显示
//||+------闪烁控制,1-闪烁,0-不闪烁
//|+-------光标控制,1-开光标,0-关光标
//+--------显示控制,1-开显示,0-关显示}
LCDcommand
执行给定的LCD命令,并延时
cmd:
待执行的命令
voidLCDcommand(uint8cmd)
//1等待>
40us
i<
1000;
//2数据送到LCD的数据线上
LCDdata=cmd;
//3给出E信号的下降沿,使数据写入LCD
LCDctrl2&
//Lcd结束接收数据
//4等待>
}
LCDshow
在LCD(HD44780)显示屏上显示32个数据
str待显示数据的首地址
调用LCDinit、LCDcommand函数
voidLCDshow(uint8str[])
{uint8i;
//1LCD初始化
LCDinit();
//2显示第1行16个字符
//2.1设置显示首地址
LCDcommand(0b10000000);
//后7位为DDRAM地址0x00
//2.2写16个数据到DDRAM
LCDct
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字时钟 报告 数字 时钟