文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
摘要
随着科学技术的不断发展,电子时钟已经成为一种普遍的工艺了。日常生
活中到处可见。电子时钟的设计有很多种,普遍的电子时钟是基于单片机用汇编
语言做成的扩展。ARM功能也一样且更精确。本文是详细介绍基于ARM上做成的
电子时钟。这个电子时钟的硬件是用LPC2103板,8个按键和8个数码管组成
的键盘显示板,还有LED灯当成闹铃使用。此时钟还可以当成秒表使用。这是一
个基于ARM实现多功能的电子时钟。
关键词
:ARM;数码显示管;按键;LED灯;
目录
前言
3
第一章概述
4
1.1电子时钟概述4
第二章工作原理5
2.1系统框图5
2.2时钟的工作原理与功能5
第三章硬件电路设计6
3.1键盘显示板的电路设计6
3.12数码管的电路设计8
3.12键盘电路设计8
3.14蜂鸣器电路的设计8
3.15LPC2103的电路设计9
第四章软件设计11
4.1软件设计11
第五章调试过程18
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
5.1调试过程18
5.2总结18
附录18
参考文献20
谢辞20
前言
时钟是人们生活中必不可少的一种工具,更是更是在人类生产,生活,学习
等多个领域得到广泛的应用。然而随着时间的推移,尤其是在现在科技的发达,
生活水平高,什么都讲究效率的年代。人们不仅对时钟的精度要求高,而且对时
钟的功能的要求也越来越多。时钟已不仅仅是一种用来显示时间的工具,而是在
很多实际应用中它还需要能够实更多的其他功能。比如日历显示功能,秒表功能,
闹钟功能,温度或湿度的测量电压测量等。时钟数字化给人们的生活带来了极大
的方便,而且也大大地扩展了钟表原先的保湿功能。诸如定时自动报警,按时自
动闹铃,定时广播,各种定时电气的自动启用等。这些社团竞选演讲稿 功能都是一钟表数字化为
基础的。可以说设计多功能数字时钟的意义已不不只在于数字时钟本身,更大的
意义在于多功能数字时钟在许多实时控制系统中的应用。在很多实际应用中,只
要对数字时钟的程序和硬件电路加以一定的修改,便可以得到实施控制的实用系
统,从而应用到实际工作与生产中去。因此,研究数字时钟及扩大其应用,有着
非常现实的意义。
怎样让时钟更好的为我们服务?怎样让时钟更符合实际应用的需求?这就
要求人们不断设计出新型时钟,不断设计出适合实际应用的多功能时钟。本设计
方案正是根据以上所述并结合日常生活中对时钟功能需求的分析,运用ARM编写
技术,设计出一个适合日常生活需要的多功能数字时钟。此多功能数字时钟除了
传统的显示时间功能之外还有日历功能以及秒表及定时闹钟功能。
第一章概述
1.1电子时钟概述
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
加入世贸组织以后,中国会面临激烈的竞争。这种竞争将是一场技实力、
管理水平和人才素质的较量,风险和机遇共存。于是我们在学习ARM基础上,要
会做成多功能的时钟。
电子时钟是要用硬件和软件组成。现在设计的电子时钟的硬件由LPC2103,
键盘显示板和蜂鸣器组成,软件由基于ARM编写程序。LPC2103是一个基于支持
实时仿真的16/32位ARM7TDMI-SCPU的微控制器,并带有32kB的嵌入高速Flash
存储器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时
钟速率下运行。较小的封装和极低的功耗使LPC2103适用于访问控制器和POS
机等小型应用系统中;由于内置了宽范围的串行通信接口(2个UART、SPI、SSP
和2个I2C)和8KB的片内SRAM,LPC2103也适合用在通信网关和协议转换器中。
32/16位定时器、增强型10位ADC、定时器输出匹配PWM特性、多达13个边沿、
电平触发的外部中断、32条高速GPIO,使得LPC2103微控制器特别适用于工业
控制和医疗系统中。键盘显示板是用按键控制LED数码管的显示。不同的按键及
不同的按键次数已表明不同的功能使数码管显示不同功能。键盘显示板有5个排
针,分别是要来接电源,地,输入数据引脚,检测按键引脚,输入位码和段码的
引脚。蜂鸣器是输入低电平就鸣叫的。键盘显示板和蜂鸣器都是用LPC2103的
CPU控制数据的。
第二章工作原理
2.1系统框图
系统是以LPC2103为核心,由按键向2103输入信号,向LED显示板和蜂鸣
器发送信号。系统的基本工作的框图如图2.1.
图2.1系统框图
2.2时钟的工作原理与功能
用接在电脑上的串口线与电源线接到LPC2103上,并用导线把LPC2103上的
P0.4,P0.5,P0。6与键盘显示板连接。P0.4引脚为SCK(SPI0)功能P0.5为GPIO
的功能。P0.6引脚设置为MSOI(SPI0)功能还要把LPC2103上P0.16引脚与蜂鸣
器连接。键盘显示板与蜂鸣器各接上电源线和地线。运行程序时,数据输入,利
用74LS164译码器给数码管。在LPC2103开发系统中,均采用了8位数码管动
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
态扫描显示。它将所数码管的8个段线相应地并接在一起,并接到LPC2103的
P0.4口,由P0.4口控制字段输出。各位数码管的共阴极由LPC2103的P0.6口
控制Q20-Q27来实现8位数码管的位输出控制。如图2.1这样,对于一组数
码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的形代码,用
来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选第几
位数码管工作,称为位码。
由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,
在同一刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同
的字符。若要各数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。
即在某一时刻,只让某位的位选线处于导通状态,而其它各位的位选线处于关闭
状态。同时,段线上输出相应位显示字符的字型码。这样在同一时刻,只有选通
的那一位显示出字符,而其它各位则是熄的,如此循环下去,就可以使各位数码
管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一时刻,
只有一位显示,其它各位熄灭,但于数码管具有余辉特性和人眼有视觉暂留现象,
只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
图2.12数码管电路图
这个时钟有如下的功能如下一是显示时间,则当开始运行时就会是显示定时的
时间。如果想改变时间了就按下按键KEY2,则是分钟加或减1.如果按下按键
KEY3,则是小时加或减1。当你在按下按键KEY1时则是显示日历,如果按下按
键KEY4,则是天数加或减1.如果按下按键KEY5,则是月数加或减1。如果你再
按下唇炎是怎么引起的 按键KEY1则是实现秒表,按下按键KEY7,则是启动秒表,如果再按下按键
KEY7就会停止。如果想要从新开始计时,只要按下按键KEY8,就可以使秒表复
位。如果你再按下按键KEY1,你就可以定时,时间到了蜂鸣器就会响。当然,
你想加或减了,就有你自己决定了。为了方便,我们把按键KEY6设计成方向键。
它默认为是加1的,当你想减1时,你只要在按一下按键KEY6即可。
第三章硬件电路设计
3.1键盘显示板的电路设计
键盘显示板是由电阻,电容,74LS164,排针,按键,数码管,板组成的。如
图3.1所示是键盘显示板的原理图。如图3.12是组成键盘显示板的器件。图3.13
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
是实图。
图3.1键盘显示板原理图
名称
按键
排针
电容
电容
电阻
数码管74HC164
封装
SPST-2
HDR1X5
CAPR2.5-5
CC2012-0805
AXLAL
图3.12键盘显示板部件清单
数量
8
1
1
1
9
82
图3.13
3.12数码管的电路设计
数码管又叫LED数码管。LED是发光二极管的缩写。一个LED数码管是由8
个发光二极管构成的。每一个发光二极管的阳极都接一个电阻到外部引脚上。用
阴极做公共端,连接在一起接地。如图3.14。器件表格如3.15
图3.14
名称
发光二极管
数量64
备注
组成8个8段数码管
表3,15数码管的器件
图3.16
3.13键盘电路设计
键盘显示板上总共使用了8个独立按键。独立按键是每个按键都有一个信号
线与机电路相连,所有按键有一个公共地或公共正端,每个键相互独立互不影响。
按键相互独立的接通一条输入数据线,每个键的工作不会影响其它的I/0口,如
图3.15
3.14蜂鸣器电路的设计
该蜂鸣器是一个无源蜂鸣器,要使用PWM驱动。它是由一个1K的电阻,PNP
三极管和蜂鸣器组成了蜂鸣器电路。如图3.16,实图3.17,图3.18器件表。
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
图3.16蜂鸣器电路图
图3.17蜂鸣器实图
名称
排针
三极管
PLC2103
鸣蜂器
精密电阻
数量
1
1
1
1
1K*1(%1)
10K*1(%1)
图3.18蜂鸣器部件
备注
引脚连接
NPN型
主板
当成闹钟
万用表部分
TL431部分
3.15LPC2103的电路设计
一:LPC2103特性
16/32位ARM7TDMI-S微控制器,超小LQFP48封装;
8KB的片内静态RAM和32KB的片内Flash程序存储器。128位宽度接口/加
速器可实现高达70MHz工作频率;
通过片内boot装载程序实现在系统/在应用编程(ISP/IAP)。单个Flash扇区
或整片擦除时100ms,256字节编程时间为1ms;
嵌入式ICERT通过片内RealMonitor软件提供实时调试;
10位A/D转换器提供8路模拟输入(每个通道的转换时间低至2.44us),以及
特定的结果寄存器来最大限度地减少中断开销;
2个32位定时器/外部事件计数器(带7路捕获和7路比较通道);
16位定时器/外部事件计数器(带3路捕获和7路比较通道);
低功耗实时时钟(RTC)具有独立的电源和特定32KHz时钟输入;
多个串行接口,包括2个UART(16C550协议标准)、2个高速12
C总线(400Kbit/s)、
SPI和具有缓冲作用和数据长度可变功能的SSP;
向量中断控制器(VIC),可配置优先级和向量地址;
多达32个通用I/O口(可承受5V电压);
多达13个边沿、电平触发的外部中断管脚;
通过一个可编程的片内PLL(100us的设置时间)可实现最大为70MHz的CPU
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
操。
作频率,其具有10MHz~25MHz的输入频率;
片内集成振荡器与外部晶体的操作频率范围为1~25MHz;
低功耗模式包括空闲模式、带RTC的睡眠模式和掉电模式;
可通过个别使能/禁止外围功能和外围时钟分频来优化额外功耗;
通过外部中断或RTC将处理器从掉电模式中唤醒。
二引脚的功能如表3.19
PINSEL0引脚名称9:8
P0.4
00
01
10
11
保留
复位值00
GPIOP0.4SCK0(SPI0)CAP0.1(定时器
0)
11:10P0.5GPIOP0.5MISO0(SPI0)MAT0.1(定时器
0)
保留00
13:12P0.6GPIOP0.6MOSI0(SPI0)CAP0.2(定时器
0)
图表3.19LPC2103的引脚功能
图3.20
芯片及其引脚说明
保留00
第四章软件设计
4.1软件设计
系统通过ADS1.2软件平台把十六进制转换二进制主要是实现四个功能,一是
显示时间,二是显示日历,三是实现秒表,四是定时闹铃。把系统分为了主程序、
中断服务程序、发送程序、延时程序、等几个部分,再逐个编写,单独调试通过。
程序如下:
#include"config.h"
#defineLED1<<17
uint8T0Flag=0;
uint8stop=1;//秒表
uint8director=1;//加减方向
uint8h=0,m=0;//定时
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
uint32mcond=0;
uint32hour=1,minute=4,cond=45;uint32minute1=0,cond1=0;
uint32year=11,month=1,date=10,date1=0;//数码管显示的数据
uint8lectable[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//送位码
uint8digitable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f};//送段码
uint32data[8];uint32Key=1<<5;
/********************************************************************
**函数名称:Timer0_InitExt()
**功能描述:TIMER0初始化
**入口参数:无
**出口参数:无
******************************************************************/
voiddelay(intdly){uint32j,k;
for(j=dly;j>0;j--)
for(k=50;k>0;k--);}
voidTime0_InitExt(){
T0TC=0;//设置计时器初始值为0
T0PR=0;//预分频器不分频
T0MCR=0x03;//当T0MR0与TC值英国首相丘吉尔 发生匹配时,将使TC复位,并产生
中断标志
T0MR0=Fpclk/400;//设置定时器的时间为2.5毫秒
T0TCR=0x01;//启动定时器}
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
/********************************************************************
**函数名称:void_irqIRQ_Time0()
**功能描述:定时器timer0中断服务程序,这个中断的作用就是为了计时
**入口参数:无
**出口参数:无
*******************************************************************/void__irqIRQ_Timer0描写声音的诗句 (void){
T0Flag=1;//定时器中断处理,即中断标志
T0IR=0x01;//清除中断标志
VICVectAddr=0x00;//通知VIC中断处理结束,清零表示为下一次中断做准
备}
/********************************************************************
**函数名称:voidIRQ_Init()
**功能描述:设置定时器TIMR0中断IRQ
**入口参数:无
**出口参数:无
*******************************************************************/voidIRQ_Init(){
VICIntSelect=0x00;//所有中断分配为IRQ中断
VICVectCntl0=0x20|0x04;//设置定时器中断分配为向量IRQ通道0,
即其具有最高优先级
VICVectAddr0=(uint32)IRQ_Timer0;//向量IRQ通道0的中断服务程序地
址为IRQ_Timer0,当产生中断时
//就到地址为IRQ_Timer0这个地点
执行程序,即执行函数IRQ_Timer0
VICIntEnable=(1<<4);//定时器中断使能}
/********************************************************************
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
**函数名称:voidCONVBIT()
**功能描述://给全局变量数组data[8]赋值
**入口参数:无
**出口参数:无
*******************************************************************/voidCONVBIT0(void){
data[0]=cond%10;//个位
data[1]=cond/10;//十位
data[2]=11;//百位
data[3]=minute%10;//千位
data[4]=minute/10;//万位
data[5]=11;//十万位
data[6]=hour%10;//百万位
data[7]=hour/10;//千万位}
voidCONVBIT1(void){
data[0]=date%10;//个位
data[1]=date/10;//十位
data[2]=11;//百位
data[3]=month%10;//千位
data[4]=month/10;//万位
data[5]=11;//十万位
data[6]=year%10;//百万位
data[7]=year/10;//千万位}
voidCONVBIT2(void){
data[0]=mcond%10;//个位
data[1]=mcond/10;//十位
data[2]=11;//百位
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
data[3]=cond1%10;//千位
data[4]=cond1/10;//万位
data[5]=11;//十万位
data[6]=minute1%10;//百万位
data[7]=minute1/10;//千万位}
voidCONVBIT3(void){
data[0]=0;//个位
data[1]=0;//十位
data[2]=11;//百位
data[3]=m%10;//千位
data[4]=m/10;//万位
data[5]=11;//十万位
data[6]=h%10;//百万位
data[7]=h/10;//千万位}
/********************************************************************
**函数名称:voidMSPI_Init()
**功能描述:初始化SPI接口,并设置为主机
**入口参数:无
**出口参数:无
*******************************************************************/
voidMSPI_Init(){SPI_SPCCR=0x52让我敬佩的人 ;
SPI_SPCR=(0<<3)|//CPHA=0,数据在SCK的第一个跳变沿(时钟沿)
采样。传输从SSEL信号激活时开始,
//并在SSEL信号无效时结束
(1<<4)|//CPOL=1,时钟为低电平有效
(1<<5)|//设置为主机
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
(0<<6)|//LSBF=0时,SPI数据据MSB(即最高位(位7))
在先
(1<<7);//SPI中断使能}
/********************************************************************
**函数名称:voidMSendData(uint8data)
**功能描述:向SPI总线发送数据,即发送位码和段码
**入口参数:data表示需要发送的数据
**出口参数:
*******************************************************************/voidMSendData(uint8data){
SPI_SPDR=data;//发送数据
while((SPI_SPSR&0x80)==0);//等待SPIF置位(当SPSR状态寄存器的
第七位(功能为SPIF)置位,
//表示一次SPI数据传输完毕,即等待数
据发送完毕}
/********************************************************************
**函数名称:intmain(void)
**功能描述:实现数据的显示
**入口参数:无
**出口参数:无
********************************************************************/intmain(void)
{//addursourcecode
uint32i=0,function=0;//定义i初始值为0,i表示的是所显示的数据在
数码管的第几位,显示一位后,执行i++;使i加1
//这样就显示下一位数,直到第八位,也就是i等于8时,给i赋值为0,这样
就可循环显示数据
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
uint32W=0,ms=0;
uint8Tk=0x09;uint8h1=0,m1=0;
PINSEL0=(0x01<<8)|//设置p0.4引脚为SCK(SPI0)功能p0.5s->Gpio
(0x01<<12);//将p0.6引脚设置为MSOI(SPI0)功能
PINSEL1=0x00;IODIR|=LED;
IOSET|=LED;
MSPI_Init();//功能是初始化SPI接口,并设置为主机
Time0_InitExt();//定时器timer0中断服务程序,这个中断的作
用就是为了计时
IRQEnable();//IRQ中断使能
IRQ_Init();
while(1){
if(T0Flag)//如果产生中断
{T0Flag=0;//使计时器重新开始计时
while(W==4)//当计时器的值经过了4*2.5毫秒时,将W清零,
即重新计时(指W重新计时),
{W=0;
ms++;if(function==0)
CONVBIT0();//并将数组CS[]中的数据赋值给数组data[],
elif(function==1)
CONVBIT1();
elif(function==2)
CONVBIT2();elif(function==3)
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
CONVBIT3();
if(stop==0)mcond++;
if(mcond>=100)
{mcond=0;cond1++;}
if(cond1>=60)
{cond1=0;minute1++;}
/////////////////////////////////////////////////////////////////////
switch(month){
ca1:
ca3:
ca5:
ca7:
ca8:ca10:
ca12:date1=31;break;
ca2:date1=28;
break;
ca4:
ca6:
ca9:ca11:date1;
/////////////////////////////////////////////////////////////////////
if(ms>=100)
{ms=0;
cond++;
if(cond>=60){cond=0;minute++;}
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
if(minute>=60)
{minute=0;hour++;}
if(hour>=24)
{hour=0;date++;}
if(date>date1)
{date=1;month++;}
if(month>12)
{month=1;year++;}
}}
W++;//W自加2.5毫秒
/////////////////////////////////////////
if((IO0PIN&Key)!=0){//按键处理初始化uint8Tk=0x09;
if(Tk==i){switch(Tk){
ca1:function=(function+1)%4;break;
ca2:if(function==0){
if(director==1)minute++;
el{if(minute>0)minute--;elminute=59;}}
if(function==3){m=(m+1)%60;}break;
ca3:if(function==0){
if(director==1)hour++;
el{if(hour>0)hour--;
elhour=23;}}
if(function==3){h=(h+1)%23;}
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
break;
ca4:if(function==1){
if(director==1)date++;
el{if(date>1)date--;
eldate=date1;}}
if(function==3){h1=h;m1=m;}break;
ca5:if(function==1){if(director==1)month++;
el{if(month>1)month--;
elmonth=12;}}break;
ca6:director=(director+1)%2;break;
ca7:if(function==2)stop=(stop+1)%2;
break;
ca0:if(function==2){mcond=0;cond1=0;minute1=0;}
}
Tk=0x09;
}}
elif((IO0PIN&Key)==0){delay(100);
if((IO0PIN&Key)==0)Tk=i;}
////////////////////////////////////////////
if(hour==h1&minute==m1&cond==0)IOCLR|=LED;elIOSET|=LED;
/////////////////////////////////////////////////////////////
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
if(data[i]==11)MSendData(0x40);
elMSendData(digitable[data[i]]);//发送段码
MSendData(lectable[i]);心绞痛怎么治疗 //发送位码
i++;//i自加,即显示第i(即数码管上的第i位数字)位数字
if(i>7)//如果第八位数字显示完毕,则再重新显示第一位数字,
如此循环
i=0;//重新在数码管上显示第1位数字
///////胰腺炎严重吗 ///////////////////////////////////////////////////////////
}
}
return0;}
第五章调试过程
5.1调试过程
调试是一个很重要的过程,也是一个很艰巨的任务,经常遇到很多意想不的
错误。比如说,1:对中断还不够熟悉。2:对LED数码管认识不够等。由于这次
的设计使用的是LPC2103的开发板,所以在硬件上不需要太多的去调试。在利用
开发板硬件资源的基础上,由于这次的多功能闹钟设计使用的模块较多,基本上
各个模块的调试是分开进行的。主要包括初始化的程序调试、按键子程序调试、
LED显示调试这几部分子程序的调试。将这三部分调试成功,那么整个设计的软
件部分也就基本完成了。在该课程设计中,采用的集成开发环境是ADS1.2,在
软件设计过程中,有时候不小心插入了一个中文的符号(如分号),就会使软件
编译不通过,开始在这个错误上浪费不少时间,但后来注意到了这个情况,避免
了类似的错误的发生。四位的数码管采用的是动态显示模式,刷新频率为50Hz,
另外,由于开发板的硬件采用的是移位寄存器送笔段码,所以在软件设计方面要
用到将8位笔段码不断循环右移,增加了设计的难度。起初我认为一切程序都编
写得差不多的时候,烧进芯片的程序使数码管显示一片模糊,基本上显示的都是
8,后来从程序的开始查起,终于找到原因,原来动态显示程序中,每次只能是
一位的数码管点亮,但在程序设计中,在点亮下一位数码管时,忘记了将上一次
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
点亮的位给关掉,导致四位数码管时同时被点亮的,最后,在点亮数码管前首先
将四位数码管全部关闭,再以50Hz的频率进行点亮刷新,显示方回到正常状态。
最后就是在这两个模块的基础上来对整体的程序进行相关的调试和完善。例
如在原先设置有当进入时间设置或者闹钟挂起时有LED点亮进行提示,设置时间
时相关的设置超过相应的极限值,这些在最后的调试过程中得到完善,使其工作
在正常的状态,调试过程也就这样基本得到完成。
5.2总结
通过本电子时钟的设计,我学到了很多东西。首先,在设计电子表的过程中,我们把
系统分为了主程序、中断服务程序、显示程序、延时程序、等几个部分,再逐个编写,单独
调试通过,再连接在一起。大大的减小了工作量,这主要体现在调试工作中。其次,在多功
能电子钟实际设计过程中,所有的模块都是通过不同进制的计数器来实现其主要功能的,各
模块之间是通过进位信号连接在一起的。前一级的进位信号作为下一级的计数clk信号,通
过层次关系使设计思路清晰一开始由于程序的设计考虑置位调整。没有好的思路,走了不少
弯路。后来(有人)想到了在程序里设置总控制端,于是解决了问题。和同学的合作使我的
程序更加优化。在此次课程设计中,更加感到了团结协作的重要性,当一个人陷入困境人助
十分重要的。大家共同商量还可以发现许多个人无法发现的题。
附录:实物图如下
图1显示灯亮(闹钟响)
图2显示年月日
图3显示秒表
图4显示时间
谢辞
首先,在这里感谢学校给我们安排了这次课设,使我们有一个可以自己动手的
机会,通过动手,进一步熟悉自己所学的理论知识,体会自己动手得出结果的那种感
觉。
再次,在这要感谢我们的指导老师,老师在我们的实践过程中不提自己的辛苦,
耐心讲所有的标题,帮助我们解决一些程序和调试,在这表示感谢!
1文档来源为:从网络收集整理.胃部刺痛 word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
感谢这次课程设计中给我帮助的同学,是你们的帮助,我才顺利的完成了课程设
计任务。
谢谢你们的帮助!
1文档来源为:从网络收集整理.word版本可编辑.
本文发布于:2023-04-15 06:02:11,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/82/498126.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |