版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机在电子钟的实际应用- 26 -目 录摘要iabstractii1 绪论- 1 -1.1 单片机介绍- 1 -1.2 单片机在嵌入式系统中的应用- 2 -1.2.1 什么是嵌入式系统- 2 -1.2.2 现代计算机技术的两大分支- 3 -1.2.3 嵌入式系统的应用模式- 4 -1.3 单片机在嵌入式系统中的发展前景- 4 -1.4 学习单片机的基本问题- 5 -2 单片机开发以及软硬件的选择- 7 -2.1 单片机如何开发注意事项- 7 -2.2 单片机软硬件的选择- 8 -2.2.1 芯片的选择- 8 -2.2.2 硬件扩展的选择- 9 -2.2.3 开发环境- 9 -3.1 设计要求
2、- 10 -3.2 方案简介- 10 -3.2.1 功能结构图- 10 -3.2.2 硬件连接- 10 -3.3.3 数字电子钟软件结构- 12 -3.3.4 调试结果与问题解决- 18 -3.3.5 效果演示- 19 -3.3.6 数字电子钟与传统电子钟的比较- 19 -结束语- 21 -参考文献- 22 -致谢- 23 -附录- 24 -1 绪论目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能ic卡,民用豪华轿车的安全保障系统,录像机、摄像机、全
3、自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。1.1 单片机介绍 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:cpu、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器(microcontroller)
4、,是因为它最早被用在工业控制领域。单片机由芯片内仅有cpu的专用处理器发展而来。最早的设计理念是通过将大量外围设备和cpu集成在一个芯片中,使计算机系统更小,更容易集成复杂的而对体积要求严格的控制设备当中。intel的z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机内部也应用和电脑功能类似的模块,比如cpu,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对于家用电脑弱很多,不过价钱也是低的,一般不超过10元。用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、vcd等等的家电里面都可以看到
5、它的身影!它主要是作为控制部分的核心部件。 单片机是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用pc)的主要区别。 单片机是依靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的cd4000系列这些纯硬件来搞定的话,电路一定是一块大pcb板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!因为单片机是可以通过你编写的程序来实现高智能,
6、高效率,以及高可靠性的! 由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的cpu,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十kb的尺寸!对于家用pc的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用pc上来运行,家用pc的也
7、是承受不了的。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称pc机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品
8、名称前冠以形容词“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就是因为产品中未使用单片机或其它可编程逻辑器件上。1.2 单片机在嵌入式系统中的应用1.2.1 什么是嵌入式系统ieee(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”(原文为:devices used to control,monitor or assist the operation of equipment,machinery or plants)。这主要是从应用对象上加以定义,从
9、中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在rom中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统。1.2.2 现代计算机技术的两大分支随着大规模集成电路技术的不断发展,微型计算机以异军突起,从而导致微型计算机向两个方向深入发展:一个是向高速、高性能的通用微型
10、计算机方向发展;另一个是向稳定可靠、小而廉的嵌入式计算机或专用计算机发展。如果说微型机的出现使计算机进入到现代计算机发展阶段,那么嵌入式计算机系统的诞生则标志着计算机进入了通用计算机系统与嵌入式计算机系统两大分支并行发展时代。从而导致20世纪末21世纪初计算机的高速发展时期。 通用微型计算机通用微型计算机是指具有海量高速数值计算、信息处理、多媒体、和网络应用等功能的计算机,如pc机。通用计算机的运算功能主要由中央处理器cpu来完成,因此计算机性能的优劣取决于cpu的性能。在微型计算机中,cpu通常是一个大规模的集成电路芯片,也称微处理器(p)。因此,探讨通用计算机的情况从微处理器的发展情况入手
11、。 嵌入式计算机计算机由于大大提高了现场环境的可靠性,体积小型化,从而走出机房,迈入微型计算机时代;同时计算机强化了i/o驱动功能,对外部的控制管理功能以及抗干扰性能得以增强,将计算机嵌入到对象体系中,实现嵌入式应用要求的计算机。不难理解,嵌入式计算机属于专用计算机。此时的计算机失去了原有形态,功能也动态地发生变化。嵌入式计算机是面向测控对象,具有对象交互、嵌入式应用、i/o管理功能的计算机。目前,比较典型的嵌入式处理器类型有微控制器mcu(micro-controller unit,国内习惯称作单片机)、嵌入式微处理器(embedded micro-processor unit)和数字信号处
12、理器dsp(digital signal processor)等。1.2.3 嵌入式系统的应用模式按应用形态分,嵌入式系统可分为设备级(工控机)、板级(单板、模板)、芯片级(mcu、dsp)、soc级。设备级、板级可看作通用计算机的嵌入式系统应用模式,芯片级和soc级则是专用计算机的嵌入式系统应用模式。 1.设备级模式设备级模式(工控机)是嵌入式系统的最早形态,是通过将通用计算机加固而实现的,具有通用计算机的形态和操作系统。嵌入系统是面向专门应用的,对成本非常敏感,特别是批量系统更是如此,这正是这种嵌入式系统应用模式的软肋所在。去掉不要的功能,能很快出产品,但伴随的问题可能是成本高,核心竞争力
13、差。 2.板级模式板级模式是指以各种性能卓越的工业级32位通用微处理器为核心构成的功能模块或功能板,如一些通用cpu处理器生产厂家将在通用处理器方面的技术和产品“移植”到嵌入式应用领域,制成的小型工程板或工控卡,在各种自动化设备、数字机械产品中具有非常广阔的应用空间。与工业控制计算机相比,板级模式具有体积较小、重量轻、成本低、可靠性高的优点,但在电路板上必须包括rom 、ram、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。若将微处理器及其存储器、总线、外设等安装在一块电路板上,则称为单片机计算机。 3.芯片级模式芯片级模式是基于嵌入式处理器(如mcu、emcu和dsp)
14、的嵌入式系统,它们根据各种应用系统的不同要求,选用相应的嵌入式处理芯片、存储器(rom和ram)及i/o接口芯片等组成相应的嵌入式系统,相应的系统软件和应用软件也以固件形式固化在rom中。他们是典型的嵌入式系统形态,是本论文讨论和研究的对象。 4.soc级模式 系统级芯片soc(system on chip)是把嵌入式处理器、i/o接口、存储器等不同的功能模块,根据应用的要求集成在一块芯片上。1.3 单片机在嵌入式系统中的发展前景单片机属于嵌入式系统最常见的一种设备,可以说是嵌入式系统的实例化。嵌入式系统的出现最初是基于单片机的。70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千
15、上万种产品可以通过嵌入电子装置来获得更佳的使用性能:更易用、更快速、更便宜。我们知道,嵌入式系统起源于微型机时代,但很快就进入到独立发展的单片机时代。在单片机时代,嵌入式系统以器件形态迅速进入到传统电子技术领域中,以电子技术应用工程师为主体实现传统电子系统的智能化。单片机开创了嵌入式系统独立发展道路 。嵌入式系统虽然起源于微型计算机时代,然而,微型计算机的体积、价位、可靠性都无法满足广大对象系统的嵌入式应用要求,因此,嵌入式系统必须走独立发展道路。这条道路就是芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。1.4 学习单片机的基本问题 总线:我们知道,一个电路总是
16、由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时
17、工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。 数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的。数字,或者说都是一串0和1组成的序列。换言之,地址、指令也都是数字。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改;地址:是寻找单片
18、机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程);数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况: 1地址(如mov dptr,#1000h),即地址1000h送入dptr。 2方式字或控制字(如mov tmod,#3),3即是控制字。 3常数(如mov th0,#10h)10h即定时常数。 4实际输出值(如p1口接彩灯,要灯全亮,则执行指令:mov p1,#0ffh,要灯全暗,则执行指令:mov p1,#0
19、0h)这里0ffh和00h都是实际输出值。又如用于led的字形码,也是实际输出的值。 p0口、p2口和p3的第二功能用法:初学时往往对p0口、p2口和p3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如p3.6、p3.7分别是wr、rd信号,当微片理机外接ram或有外部i/o口时,它们被用作第二功能,不能作为通用i/o口使用,只要微处理机执行到movx指令,就会有相应的信号从p3.6或p3.7送出,不需要事先用指令说明。事实上不能作为通用i/o口使用也并不是不能而是(使用者)不会将其作为通用i
20、/o口使用。你完全可以在指令中安排一条setb p3.7的指令,并且当单片机执行到这条指令时,也会使p3.7变为高电平,但使用者不会这么去做,因为这通常这会导致系统的崩溃。 堆栈: 堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部ram的一部份,特殊的是它存放和取用数据的方式,即所谓的先进后出,后进先出,并且堆栈有特殊的数据传输指令,即push和pop,有一个特殊的专为其服务的单元,即堆栈指针sp,每当执一次push指令时,sp就(在原来值的基础上)自动加1,每当执行一次pop指令,sp就(在原来值的基础上)自动减1。由于sp中的值可以用指令加以改变,所以只要在程序开始
21、阶段更改了sp的值,就可以把堆栈设置在规定的内存单元中。2 单片机开发以及软硬件的选择2.1 单片机如何开发注意事项从上面的章节中我们已经了解了什么是单片机以及单片机在应用领域中的地位,在那些实例中可以发现每一个系统都是在完成一个特定的功能,这些特定功能的实现依靠单片机来指派。单片机知道怎样来进行指派(由我们编写的程序来控制),这个过程反过来推导就是单片机开发的一个过程根据硬件设计编写程序并把程序加载到单片机里。所谓硬件(hardware),就是看得到,摸得到的实体。有了这样的硬件,才有了实现计算和控制功能的可能性,硬件设计就是根据我们要设计的系统来找到实现这个系统所需要的硬件,并根据一定的电
22、气规则把它们组合起来(前期用来做试验的硬件也称之为开发系统)。 单片机要真正地能进行计算和控制,还必须有软件(software)的配合。软件主要指的是各种程序。只有将各种正确的程序“灌入”(存入)单片机,它才能有效地工作。所谓程序,就是人们为了告诉微处理器要做什么事而编写的,微处理器能够理解的一串指令,有时也叫代码、程序。单片机能自动地进行运算和控制,是由于人把实现计算和控制的步骤一步一步地用命令的形式,即一条一条的指令(instruction)预先存入到存储器中,单片机在中央处理器(也称“内核”)的控制下,将指令一条一条地取出来,并加以翻译和执行。由于单片机只认识“0”和“1”,为了让单片机
23、认识我们编写的程序,这就需要一个“中间人”来充当翻译,把程序翻译成“0”和“1”的一系列组合,这个“中间人”就是我们通常所说的开发环境(也称“编译器”),为了把翻译的结果“灌入”单片机,人们发明了下载器(或称“烧录器”)。 同时,为了更加方便的检查我们编写的程序是否符合设计的系统的要求(或者说更好的进行程序调试),人们又发明了仿真机,当我们的程序仿真成功以后,再下载到我们设计的系统上,这样一来不仅为我们的程序调试提供了方便,也减少了把一个有误的程序下载到设计的系统上的可能。当然如果你确认你的程序没有问题的话,也可以不使用仿真器,可惜的是这种牛人在现实中很少见。 总体来说单片机开发的一般过程是首
24、先进行硬件设计,然后根据硬件和系统的要求在开发环境中编写程序,经多次使用仿真器把程序调试成功后,再通过烧录器把程序写到单片机里。2.2 单片机软硬件的选择2.2.1 芯片的选择spce061a是各类单片机里的一种,它是伴随凌阳大学计划在大陆推出的,在短时间里 spce061a单片机得到了各大院校师生的认可,并在业界获得了良好的声誉,因为这个单片机代表了现代单片机的大部分特点。现在可以说是一个单片机百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,spce061a单片机之所以能在短时间内在国内得到认同,主要是因为它代表了单片机发展的潮流。使用 spce061a单片机进行学习,
25、不仅可以学到单片机的一些基础知识,并且学习成本低廉,还可进一步了解单片机的发展方向和接触到当前一些先进的技术。spce061a的封装引脚排列图、管脚描述表、以及spce061a最小系统原理图可参见附图1 、附图2、附表1。“61板”是spce061a emu board的简称,是spce061a单片机的开发系统,通过挂接不同的硬件和下载不同的程序就可实现各类特定功能的系统,下面将各区的功能进行一下简要的介绍: 电源区:为整个系统提供电源,通常采用系统配套的电池盒进行供电,只要放入3节5号电池就可以满足供电需求了;下载区:程序就是通过这边的接口下载到spce061a单片机的,当然,在进行在线调试
26、时也能上传一些硬件信息到开发环境中;音频区:这里的麦克风是用来进行语音输入的,还有一个喇叭的接口用来进行语音播放;spce061a与周边:这就是整块板子的大脑,所有控制信息都是从这里发出的,那些周边器件用来协助spce061a单片机正常工作;键控区:采用这几个按键可以做一些简单的试验,比如说当板子里下载了复读机的程序,按这几个按键就可以分别用来进行录音、暂停和播放,如果下载了语音万年历的程序,这几个按键就可以用来设定初始时间和控制播放当前时间等;复位区:这里是由几个简单的电子元器件组成,当按下这里面的按键后,单片机就重新开始工作,也可以说成是单片机里的程序从第一条开始重新运行; 端口区:用于对
27、外挂硬件的控制,或者获取外部硬件的一些状态以便spce061a来进行处理。 2.2.2 硬件扩展的选择splc501 液晶显示模组为 128x64 点阵,面板采用 stn(super twisted nematic)超扭曲向列技术制成并且由 128 segment 和 64 common 组成,lcm 非常容易通过接口被访问。模组上的液晶显示器采用凌阳科技的 splc501 芯片作为 lcd 驱动和控制器,为 128x64 点阵图形液晶显示器。下面为splc501液晶显示模组的基本参数: 显示模式 黄色模式stn液晶 显示格式 128x64点阵地图形液晶显示 输入数据 兼容68/80系列mpu
28、数据输入 背光 黄绿色led 模块尺寸 72.8(长)73.6(宽)9.5(高)mm 视屏尺寸 58.84(宽)35.79(长)mm 点大小 0.42(宽)0.51(长)mm 像素尺寸 0.46(宽)0.56(长)mm 2.2.3 开发环境所谓的开发环境,其实就是一个或几个电脑上的可执行程序,。不管是哪类单片机的开发环境都至少具备如下的功能:程序编写:可以在开发环境里录入程序 编译程序:负责把程序翻译成机器码 下载: 把机器码下载到仿真板或开发系统上在本论文中,一切对硬件的软件操作都是在凌阳公司提供的开发环境unsp ide来完成的。该开发环境叫做集成开发环境(也称ide),它除了具备上面的三
29、个功能外还可以组织多个程序文件形成一个系统开发的项目,这样更有利于一些大型系统的开发和各功能模块的模块化,同时它还结合spce061a单片机的硬件提供各类在线调试窗口,使调试程序变得更加直观和简单,除此之外,它还提供一些软件模拟spce061a单片机仿真的功能,在没有硬件的情况下也可以完成一些简单程序的调试,可以通过集成开发环境使用c语言和汇编语言对spce061a进行编程。3 单片机应用方案数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到了广泛的应用。随着科技的发展,人们对电子产品的应用要求越来越高,数字电子钟不但可以显示当前的时间,而且可以显示日期、农历、以及星期等,给人们的生活带
30、来了方便。另外数字钟还具备秒表和闹钟功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。3.1 设计要求利用spce061a单片机作为控制器,扩展splc501a液晶模组,完成以下功能: 可以在splc501a液晶模组上面显示时间、日期、农历、星期、闹钟; 可以语音播报日期和时间; 整点报时; 闹钟; 闹钟的铃声可以选择; 具备秒表功能。 3.2 方案简介3.2.1 功能结构图图3.1功能结构图3.2.2 硬件连接spce061a与splc501a的硬件框图如图3.2,硬件连接图如图3.3:图3.2 硬件框图图3.3 硬件连接图数字电子钟的连接示意图见图3.3,ioa的高八位接到液晶模组的
31、八个数据端,同时也连接了液晶模组的电源,即直接用一根10pin的排线连接61 板“+”、ioa8-15、“-”与splc501a液晶显示模组的“+”、db0-7、“-”,主要用来向液晶模组传送命令和数据;iob6 接ep,iob5 接r/w,iob4 接ao,用来控制液晶显示和工作方式,分别控制显示器的读写信号、时钟信号、数据选择信号。应为显示器的驱动电压为3.3v,所以j5跳线应把vio和3v短接起来。3.3.3 数字电子钟软件结构软件结构如图3.4,图中可以看出各文件之间的调用关系:图3.4 软件结构图下面简要介绍一下各个程序文件的功能: 1.main.c 实现了系统的初始化,显示开机画面
32、,键盘扫描和语音播报; 2.system.c 包含了工程中大部分的功能函数,包括各种界面的显示、时间和日期的调整、秒表的调整、闹钟的时间设定、闹钟的铃声选择等; 3.key.c 键盘扫描文件,里面定义了键盘扫描函数、延时函数,用来实现对键盘的扫描等功能,键盘扫描采用查询方式;4.isr.asm 中断服务函数文件,实现语音解码、秒表和时间以及日期的修改; 5.speak.c 语音播报函数,实现语音播报日期、时间以及闹钟。 本方案是采用的c语言来编写的,其源程序的主要主程序main.c如下,其中调用的子程序以及显示器驱动程序等可参见附表程序:#include spce061a.h#include
33、splc501user.h#include model.h#define ring1 17 /播放第一个铃声的序号#define ring2 18 /播放第二个铃声的序号extern void display(); /对主函数调用的函数声明extern void playrespond(unsigned int result);extern void speaktime();extern void keyscan();extern void nextdisplay(); extern void setday();extern void set_ring();extern void setsec
34、ond(); extern void speaktime();extern void speakday();extern void keyinitial(); /定义文件中用到的变量以及常数数组unsigned int keyflag1=0; /键按下标志1,控制进入功能选择菜单unsigned int keyflag2=0; /键按下标志2,控制进入时间日期设置界面unsigned int keyflag3=0; /键按下标志3,控制进入时间日期调整界面unsigned int keyflag4=0; /键按下标志4,控制进入闹钟时间设置界面unsigned int keyflag5=0;
35、/键按下标志5,控制进入秒表设置界面unsigned int keyflag6=0; /键按下标志6,控制进入闹钟设置界面unsigned int keyflag7=0; /键按下标志7,控制进入闹钟铃声选择界面unsigned int ringflag=0; /播放铃声标志位1播放第一首2播放第二首unsigned int keyvalue=0; /存放按下的键值unsigned int runflag=0; /当年闰月标志位unsigned int num=0; /2hz计数单元unsigned int hour=0; /存放当前的小时unsigned int min=0; /存放当前的分
36、钟unsigned int sec=0; /存放当前的秒unsigned int year=2006; /存放当前的年unsigned int gmonth=8; /存放当前的公历的月unsigned int gday=1; /存放当前的公历的日unsigned int xqvalue=0; /存放当前的星期unsigned int nmonth=7; /存放农历的月unsigned int nday=8; /存放农历的日unsigned int mouse=1,17,32,48; /箭头坐标数组unsigned int nhour=12; /存放闹钟的小时unsigned int nmin=
37、0; /存放闹钟的分钟unsigned int mbmin=0; /存放秒表的分unsigned int mbsec=0; /存放秒表的秒unsigned int mmsec=0; /存放秒表的毫秒unsigned int mbnum=0; /1khz中断标志位unsigned int onoff=0; /闹钟开关标unsigned int int2hz; /设置一个2hz中断标志unsigned int ringonoff; /闹钟响时关闭标志unsigned int clockset=11,31,51; /设置闹钟铃声时的光标unsigned int counter=0; /设置显示sun
38、plus计数器unsigned int mapcounter1=0;unsigned int mapcounter2=0; int main(void)(keyinitial(); /键盘初始化lcd501_init(0); /液晶显示初始化lcd501_circle(64,32,15,1);lcd501_clrscreen(0);lcd501_fontset(0);*p_int_ctrl_new = *p_int_ctrl_new | 0x0004; /置2hz中断标志_asm(int irq); /开放2hz中断 while(1) int i=0; /定义一个循环变量,用来对数组寻址 di
39、splay(); /用显示日期时间界面 while(hour=nhour & min=nmin & onoff=0) /当闹钟开时,判断闹钟时间是否到了 keyscan(); /当闹钟响时如果有任何键按下,则关闭闹钟 if(keyvalue!=0) onoff=1; else if(ringflag=0) playrespond(ring1); /播放乐曲1 else playrespond(ring2); /播放乐曲2 if(min=0 & sec=0) /正点报时功能 speaktime(); keyscan(); /键盘扫描 *p_watchdog_clear=0x0001; if(ke
40、yvalue=0x0001) /如果key1键按下 keyflag1=1; /置位键按下标志 lcd501_clrscreen(0); /调用清屏函数 while(keyflag1=1) nextdisplay(); /显示调整界面 lcd501_bitmap(15,mousei,(unsigned int*)encoding_mouse); /显示鼠标位置 keyscan(); *p_watchdog_clear=0x0001; switch(keyvalue) case 0x0001: /如果是key1按下则进入相应的调整 switch(i) /判断此时的鼠标指向 case 0: setd
41、ay(); break; /指向的时间日期调整 case 1: set_ring(); /设置闹钟的铃声和时间 break; case 2: setsecond(); /设置秒表 break; case 3: /指向的返回,则执行返回程序 lcd501_clrscreen(0);keyflag1=0; break; break; case 0x0002: /如果是key2则箭头下翻 lcd501_bitmap(15,mousei,(unsigned int*)encoding_empty); if(i=3) i=0; else i=+i; /修改箭头的坐标 lcd501_bitmap(15,m
42、ousei,(unsigned int*)encoding_mouse); break; case 0x0004: /如果是key3则箭头上翻 lcd501_bitmap(15,mousei,(unsigned int*)encoding_empty); if(i=0) i=3; else i=-i; /修改箭头的坐标 lcd501_bitmap(15,mousei,(unsigned int*)encoding_mouse); break; else if(keyvalue=0x0002) /如果key2按下报时间 speaktime(); /调用时间拨报函数 else if(keyvalu
43、e=0x0004) /如果key3按下报日期 speakday() ; /调用日期拨报函数 else if(keyvalue=0x0006) /如果key2 key3同时按下则切换闹钟的开关 switch(onoff) case 0: onoff=1; break; /切换闹钟的开关 case 1: onoff=0; break; else *p_watchdog_clear=0x0001; /清看门狗3.3.4 调试结果与问题解决根据图3.3连接硬件,并连接好下载线,打开电池盒电源,启动unsp ide,新建项目文件,正确输入程序,然后编译连接,正确编译会出现下图所示结果,否则编译失败,证明
44、程序输入有错误:编译连接无误后就可以下载程序进行在线操作或离线操作了。在编译以及下载过程中可能会出现如下问题,经过实际操作总结,可通过如下方法来解决:q: spce061a与splc501a接线正确,但下载程序后lcd屏幕没有现象?a:复位spce061a和splc501a,然后再下载程序并运行,则能正常显示;或者j5跳线没有连接正确,应把vio和3v短接起来。q:硬件连接正确,但不能编译或下载?a:该开发板的下载线采用的是25针打印机端口,方便与pc机连接,因为是并行传输数据,所以打印机端口应设置为spp。在使用61板或ide应注意如下问题:1.硬件连接时,正负极性一定要对应,不能接反,板子
45、上的正负极都有明确标注;2.在出现异常现象时应首先考虑电池的问题,更换优质电池有时问题会迎刃而解;3. 下载程序时ide应处于在线仿真状态,选择“use ice”。3.3.5 效果演示下载程序代码到61板上,下载成功后会有几秒钟的开机画面,随后会进入时间日期显示界面,此时按key1键会进入功能选择菜单,按key2键播放当前的时间,按key3键播放当前的日期,key2和key3同时按下,切换闹钟的开与关,当闹钟响时,按下三个键中的任何一个都可以关闭闹钟。 1.进入功能选择菜单界面,此时key1为确定键,key2为下翻键,key3 为上翻键;2.进入时间日期调整界面,此时key1为确定键,key2
46、为加一键,key3 为减一键,屏幕中闪烁的部分表示当前正在调整的选项,当设置完成后,按key1会自动退出设置界面;3.进入闹钟设置界面,此时key1为确定键,key2为下翻键,key3为上翻键;4.进入闹钟时间设置界面,此时key1为确定键,key2为加一键,key3为减一键,屏幕中闪烁的部分表示当前正在调整的选项,当设置完成后,按key1会自动退出设置界面;5.进入闹钟铃声设置界面,此时key1为确定键,key2为选择键,key3为播放当前选择的铃声键;6. 进入秒表功能界面,此时key1为退出键,key2为开始/暂停键,key3为清零键,只有当秒表停止运行时key3才有效3.3.6 数字电
47、子钟与传统电子钟的比较数字电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用lcd数字电子钟已经成为一种时尚。但目前市场上各式各样的lcd数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点,因此有必要对数字电子钟进行改进。数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充(可用该电子钟发出各种控制信号),精确度高等特点。结束语由于单片机技术已经广泛用于电气工程、电子工程、自动化工程、通信工程等诸多工程领域,其范围遍及工业、交通、电力、军事、航空航天、航海、建筑乃至家庭等几乎所有的方面。可以说凡是有运动并对运动进行控制的地方都有单片机的身影。因为单片机技术的地位如此重要,所以它已经成为电气信息类专业的一门重要的专业基础课程。能够致力于单片机技术的研究和开发是一种历史的机遇,也是一个幸运。经过几周的奋战我的毕业设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年财政系统版财务法规知识测试试题附答案
- 计算机编程基础测试题库2026
- 2026年现代企业管理理论与实践问题集培训资料
- 2026年机关干部获得电力指标知识竞赛题
- 2026年安全培训之电气安全规范操作问答库
- 2026年恶意商标注册规制知识竞赛
- 2026年森林火险气象等级预报知识试题
- 小学美术沪教版一年级下册12 克隆小动物教案设计
- 2026年铁塔公司财务基础知识面试
- 农村自建房工程变更管理方案
- T/CNCA 014-2022改性镁渣基胶凝材料
- 四川省成都市青羊区2025年中考语文二诊试卷(含答案)
- 2025年安徽铜陵港航投资建设有限责任公司招聘笔试参考题库附带答案详解
- 中央2025年中国佛教协会和中国佛学院应届生招聘6人笔试历年参考题库附带答案详解
- 多轴加工项目化教程课件 项目二 任务2-2 左右半球加工
- 工业机器人虚拟仿真与实操课件 项目一 ABB工业机器人仿真软件基本操作
- 3.2-第一节-种子的萌发
- GB/T 44096-2024田径课程学生运动能力测评规范
- 知行合一 - 社会实践•创新创业智慧树知到期末考试答案2024年
- 玄隐遗密全文及译文
- 《马克思主义与社会科学方法论》课后思考题答案全
评论
0/150
提交评论