版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、xxxxxx学院单片机课程设计报告题目:基于单片机的万年历设计 学生姓名学 号专 业电子信息专业班 级2009级1班指导教师学 部计算机科学与电气工程课程设计时间2012年6月19日基于单片机的电子万年历设计摘 要随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。ds12887 是美国达拉斯半导体公司(dallas) 最新推出的串行接口实时钟芯片,采用cmos 技术制成,具有内部晶振 和时钟芯片备份锂电池,同时它与目前ibm at 计算机常用的时钟芯片mc146818b 和ds1287 管脚兼容,可直接替换。它所提供的世纪字节在位置32h ,世纪寄存器3
2、2h 到2000 年1 月1 日从19 增到20 。采用ds12887 芯片设计的时钟电路不需任何外围电路和器件,并具有良好的微机接口。ds12887芯片具有微功耗, 外围接口简单,精度高,工作稳定可靠等优点, 可广泛用于各种需要较高精度的实时时钟系统。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。该电路采用at89s52单片机作为核心,功耗小,能在3v的低压工作,电压可选用35v电压供电。 综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词:160
3、2液晶,stc89c52 单片机,ds12887时钟 词条用小四号宋体字,词条间用分号(;)隔开,3-5个关键词小提示:当需要从网站或者文档复制到本文档时,先将文字复制到文本文档,然后再从文本文档复制到本文档的相应位置,这样就能够保证格式是正确的!此行不会被打印千万不要删除行尾的分节符,此行不会被打印。(在word菜单-工具-选项-视图标签中,格式标记部分请全部打对号,这样就可以看到隐藏的分节符和空格等信息了)目录摘要i第1章 绪 论11.1 本设计的意义11.1.1 设计发展与应用11.2 本设计的功能11.3 本设计的要求2第2章 主要系统结构描述32.1 系统结构框图及工作流程介绍32.
4、1.1 stc89c52模块介绍32.2 液晶显示模块作用介绍52.2.1 1602字符型lcd简介62.3 时钟模块作用介绍102.3.1 ds12887的介绍102.4 本章小结13第3章 系统硬件电路设计与实现143.1单片机最小系统设计143.1.1单片机介绍143.1.2单片机时钟电路介绍153.1.3单片机复位电路介绍163.1.4单片机按键电路介绍163.2程序下载介绍163.2.1 主要芯片引脚功能介绍163.3本章小结17第4章 系统软件调试环境介绍184.1 keil51软件简介184.1.1 软件功能184.1.2 软件应用流程194.2 程序下载软件介绍214.2.1
5、软件功能214.2.2 软件应用流程214.3 本章小结24第5章 系统程序设计255.1 系统程序设计流程图255.2 时钟程序模块详细流程图265.2.1 程序流程图对应程序代码265.3 液晶程序模块详细流程图285.3.1 程序流程图对应程序代码295.4 按键控制程序模块详细流程图315.4.1 程序流程图对应程序代码315.5 本章小结33结论34参考文献35附录36千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”基于单片机的电子万年历设计第1章 绪 论1.1 本设计的意义 本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分
6、秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。所以意在培养同学的创新精神与实践能力。1.1.1 设计发展与应用时间在我们的生活中有着不可取代的作用,它可以为我们清晰地记录下制作从开始到结束所需要的时间。时间对人们来说总是宝贵的,工作的忙碌性和繁杂性容易使人忘记当前时间,忘记了要做的事情。当事情不重要的时候,这种遗忘无伤大雅,但是,一旦事情重要,一时的耽误可能酿成大祸。例如,许多火灾都
7、是由于人们遗忘而发生的,而时间的重要性在医院、冶金、化工、食品、机械、石油等工业中,更是举足重轻,而现在钟表的数字化给人们的生活带来了极大地方便。成为人们必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2 本设计的功能本电路是由stc89c52单片机为控制核心,具有在线编程功能,低功耗,能在
8、3v超低压工作;时钟电路由ds12887提供,它可以对年、月、日、周日、时、分、秒进行计时。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1287内部有一个用于临时性存放数据的ram寄存器。可产生年、月、日、时、分、秒,具有使用寿命长,精度高和低功耗等特点。1.3 本设计的要求随着电子技术的高速发展,对电子方面人才的要求越来越高,不仅要求其具备相关的专业理论知识,还要求其具有较强的设计、制作等实践动手能力,学校此次举行的电子设计无疑是对从事电子相关专业的人的一次很好的锻炼和考验,是培养信息人才的一次良好的机会,为其提供了一个理论知识与实践相结合的
9、平台。 本次设计可分为两部分:硬件部分、软件部分。硬件部分包括:at89s52单片机、ds12c887时钟芯片、1602lcd液晶显示器。主要由at89s52单片机、实时时钟芯片电路、液晶显示输出电路、键盘输入电路组成等几大部分组成。具体说来,系统智能控制部分由单片机及其相关的外围电路组成,外围电路包括复位电路、晶振电路、键盘设计、电源电路。利用单片机将复位电路、动态显示电路、电源电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。软件部分包括了主程序模块,ds12c887模块,lcd1602模块,键盘控制模块本设计的基本要求是:具有年、月、日、星期、时、分、秒等功能,同时具
10、备年、月、日、星期、时、分、秒校准功能。具体的用单片机实现具有计时、校时等功能的数字时钟,是以单片机at89s52为核心元件,结合ds12c887时钟芯片,采用1602液晶显示屏作为动态显示年、月、日、星期、时、分、秒等的现代计时。第2章 主要系统结构描述 2.1 系统结构框图及工作流程介绍本次设计的题目是基于ds12c887的高精度时钟的设计,可以正常的显示年、月、日、时、分、秒。本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机at89s52为核心元件,同时采用1602液晶显示屏动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。另外
11、具有校时功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。显示电路复位电路stc89c52时钟电路按键电路 图2-12.1.1 stc89c52模块介绍stc89c52是美国 atmel公司生产的低电压、高性能的 cmos 8位单片机,片内含 4k bytes的可反复擦写的只读程序存储器(perom)和 128 bytes的随机存取数据存储器(ram),器件采用 atmel公司的高密度、非易失性存储技术生产,兼容mcs-51指令系统,片内置通用 8位中央处理器(cpu)和 flash存储单元,功能强大 2.1.1.1 stc89c52 的结构 引脚功能: vcc:电源电压 gn
12、d:接地 p0口:p0口是一组 8位漏极开路型双向 i0口,也即地址数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动 8个 ttl逻辑门电路,对端口写“1”可作为高阻抗转入端用。 pl口:p1是个内部带上拉电阻的8位双向io口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写 “1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电萌。 p2口:p2是一个带有内部上拉电阻的 8位双向 io口,p2的输出缓冲级可驱动(吸收或输出电流)4个 ttl逻辑门电路。对端口写 “1”,通过内部的上拉电
13、阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 p3口:可以作为输入/输出口,外接输入/输出设备。作为第二功能使 p3 口的第二功能 rst:复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。 ale/prog:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低 8位字节。即使不访问外部存储器,ale仍以时钟振器频率的 16输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。 psen:程序存储允许(psen)输出是外部程序存储器的读选通信号,当 at89c51
14、由外部程序存储器取指令(或数据)时每个机器周期两次 psen有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的 psen信号不出现。 eavpp:ea0,单片机只访问外部程序存储器。 ea1,单片机访问内部程序存储器。xtali:振荡器反相放大器的及内部时钟发生器的输入端。xtal2:振荡器反相放大器的输出端。 t89s52单片机为40引脚双列直插芯片,有四个i/o口p0,p1,p2,p3, mcs-51单片机共有4个8位的i/o口(p0、p1、p2、p3),每一条i/o线都能独立地作输出或输入。2.1.1.2 stc89c52 的特点与 mcs-51产品指令系统完全兼容 4k
15、字节可重擦写flash闪速存储器 1000次擦写周期 全静态操作:0hz-24mhz 三级加密程序存储器 128*8字节内部ram 32个可编程io口线 2个16位定时计数器 6个中断源 可编程串行 uart通道 低功耗空闲和掉电模式 2.2 液晶显示模块作用介绍1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符。显示电路采用lcd1602液晶显示,如图(10)所示,图中只画出了其相应的接口,3脚用于调节lcd1602的背光,4、5、6为lcd1602的控制口,用于控制其写入
16、或是读出指令,7至14脚为lcd1602的数据口,将数传送到lcd1602中。 图22 lcd1602显示电路2.2.1 1602字符型lcd简介本设计采用1602字符型lcd,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ascii字符集字库,只有并行接口,无串行接口。这种1602字符型lcd通常有14条引脚线或16条引脚线的lcd,多出来的2条线是背光电源线。字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式lcd,目前常用161,162,202和402行等的模块。1602字符型lcd的主要技术参数为:(1)显示容量:162个字符;(2)芯片工作电压:4.55.5
17、v;(3)工作电流2ma(5.0v)不包括背光电流;(4)模块最佳工作电压:5v;(5)字符尺寸:2.954.35(wh)mm;(6)带有英文和日文字库,使用方便;1602字符型lcd的基本操作时序: 读状态 输入:rs=l,r/w=h,e=h 输出:d0d7=状态字 读数据 输入:rs=h,r/w=h,e=h 输出:无写指令 输入:rs=l,r/w=l,d0d7=指令码,e=高脉冲 输出:d0d7=数据写指令 输入:rs=h,r/w=l,d0d7=数据,e=高脉冲 输出:无1602字符型lcd 的ram地址映射图:液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低
18、电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。控制器内部带有80b的ram缓冲区,对应关系如图所示。 lcd 16字2行00 0102030405060708090a0b0c0d0e0f27404142434445464748494a4b4c4d4e4f67图2-1 1602内部ram地址映射图当向图中的000f、404f地址中任一处写入显示数据时,液晶都可立即显示出来,当写入到1027或5067地址处时,必须通过移屏指令将它们移入可显示区域方可显示正常。1602字符型lcd的状态字说明如表3.4所示。表2-2 状态字说明sta7 d7sta6
19、 d6sta5 d5sta4 d4sta3 d3sta2 d2sta1 d1sta0 d0sta0sta6当前地址指针的数值sta7读/写操作使能1禁止;1允许原则上没次对控制器进行读/写操作之前,都必须进行读/写检测,确保sta7为0。实际上由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行读/写检测,或只进行简短延时即可。1602字符型lcd的数据指针设置:控制器内部设有一个数据地址指针,用户可以通过它们访问内部的全部80b的ram。数据指针设置如表3.5所示。表2-3 数据指针设置指令码功能80h+地址码(0h27h,40h67h)设置数据地址指针1602字符型lcd的其他设置
20、如表3.6所示。表2-4 其他设置指令码功能01h显示清屏:1.数据指针清0 2.所有显示清002h显示回车: 数据指针清01602字符型lcd的初始化设置:(1)显示模式设置显示模式设置如表3.7所示。表2-5 初始化设置的显示模式设置指令码功能00111000设置162显示,57点阵,8位数据接口(2)显示开/关以及光标设置显示开/关以及光标设置如表3.8所示。表2-6 初始化设置的显示开/关以及光标设置指令码功能00001dcbd=1开显示;d=0关显示c=1显示光标;c=0不显示光标b=1光标闪烁;b=0光标不显示0000001nsn=1当读或写一个字符后地址指针加1,且光标加1n=0
21、当读或写一个字符后地址指针减1,且光标减1s=1当写一个字符时,整屏显示右移n=1或左移n=0,已得到光标不移动而屏幕移动的效果s=0当写一个字符时,整屏显示不移动00010000光标左移00010100光标右移00011000整屏左移,同时光标跟随移动00011100整屏右移,同时光标跟随移动1602字符型lcd的写操作时序:(1)通过rs确定是写数据还是写命令。写命令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在液晶的什么位置显示等等。写数据时指要显示什么内容。(2)读/写控制端设置为写模式,即低电平。(3)将数据或命令送达数据线上。(4)给e一个高脉冲将数据送入液晶控
22、制器,完成写操作。读操作时序、写操作时序分别如图所示。图2-3 读操作时序 图2-4 写操作时序2.3 时钟模块作用介绍2.3.1 ds12887的介绍ds12887是美国达接斯半导体公司(dallas)最新推出的串行接口实时时钟芯片,采用cmos技术制成,具有内部晶振和时钟芯片备份锂电池,同时它与目前ibm at计算机常用的时钟芯片mc146818b和ds1287管脚兼容,可直接替换。它所提供的世纪字节在位置32h,世纪寄存器32h到2000年1月1日将从19递增到20。采用ds12887芯片设计的时钟电路无需任何外围电路和器件,并具有良好的微机接口。ds12887芯片具有微功耗,外围接口简
23、单,精度高,工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟系统中。2.3.1.1 ds12887的主要功能介绍(1)内含一个锂电池,断电后运行十年以上不丢失数据。(2)计秒,分,时,天,星期,日,月,年,并有闰年补偿功能。(3)二进制数码或bcd码表示时间,日历和定闹。(4)12小时或24小时制,12小时时钟模式带有pm和am指示,有夏令时功能。(5)motorola和intel总线时序选择。(6)有128个字节ram单元与软件接口,其中14个字节作为时钟和控制寄存器,114字节为通用ram,所有ram单元数据都具有掉电保护功能。(7)可编程方波信号输出。(8)中断信号输出(irq)
24、和总线兼容,定闹中断,周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。2.3.1.2 ds12887的原理及引脚说明 图25 ds12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失ram,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。ds12887引脚分配如图1:vcc:直流电源+5v电压。当5v电压在正常范围内时,数据可读写;当vcc低于4.25v,读写被禁止,计时功能仍继续;当vcc下降到3v以下时,ram和计时器供电被切换到内部锂电池。mot(模式选择):mot引脚接到vcc时,选择
25、motorola时序,当接到gnd时,选择intel时序。sqw(方波信号输出):sqw引脚能从实时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器a编程改变。ad0-ad7(双向地址/数据复用线):总线接口,可与motorola微机系列和intel微机系列接口。as(地址选通输入):用于实现信号分离,在ad/ale的下降沿把地址锁入ds12887。ds(数据选通或读输入):ds/rd引脚有两种操作模式,取决于mot引脚的电平,当使用motorola时序时,ds是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,ds指示ds12887驱动双向总线的时刻;在写
26、周期,ds的后沿使ds12887锁存写数据。选择intel时序时,ds称作(rd),rd与典型存贮器的允许信号(oe)的定义相同。r/w(读/写输入):r/w引脚也有两种操作模式。选motorola时序时,r/w是低电平信号时,指示当前周期是读或写周期,ds为高电平时,r/w高电平指示读周期,r/w信号一低电平信号,称为wr。在此模式下,r/w引脚与通用ram的写允许信号(we)的含义相同。cs(片选输入):在访问ds12887的总线周期内,片选信号必须保持为低。irq(中断申请输入):低电平有效,可作微处理的中断输入。没有中断的条件满足时,irq处于高阻态。irq线是漏极开路输入,要求外接上
27、接电阻。reset(复位输出):当该脚保持低电平时间大于200ms,保证ds12887有效复位。2.4 本章小结本章主要是对系统结构进行描述,以及各个功能模块的作用和特点,为编程进行复习准备工作。使我们更加了解这些模块的运用。注意:除第一章绪论外,其他每一章都应该有一个本章小结第3章 系统硬件电路设计与实现3.1单片机最小系统设计图31单片机最小系统 3.1.1单片机介绍单片机(microcontroller, 又称微控制器)是在一块硅片上继承了各种部件的微型计算机。这些部件包括中央处理器cpu、数据存储器、定时器/计数器和多种i/o接口电路。stc89c52单片机为40引脚双列直插芯片,有四
28、个i/o口p0,p1,p2,p3, mcs-51单片机共有4个8位的i/o口(p0、p1、p2、p3),每一条i/o线都能独立地作输出或输入。 图3-23.1.2单片机时钟电路介绍时钟是时序的基础,8052片内由一个反向放大器构成振荡器,可以由它产生时钟。但是虽然89c52有内部振荡电路,但要形成时钟,必须外接元件,所以实际构成的是振荡时钟电路。外接晶体以及电容c1和c2构成并联谐振电路接在放大器的反馈回路中。对接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。晶体频率可在12mhz-12mhz之间任选,电容c1和c2的典型值在20p
29、f-100pf之间选择,考虑到本系统对于外接晶体的频率稳定性要求不高,所以采取比较廉价的陶瓷谐振器。由于本系统应用的机器周期为lms,所以,晶振选择为12mhz,根据调试电容选择30pf图3-3 3.1.3单片机复位电路介绍 在单片机系统中,为了保证在上电时进行可靠的初始化,同时为了保证对电源的监控,需要采用复位电路。常用的复位电路有rc复位电路和复位芯片,在此我们采用rc复位电路。如图: 图343.1.4单片机按键电路介绍按键电路由四个轻触开关组成,如图(9)所示。按键用来调整时间,其一端直接接到单片机的端口,另一端接地,当按下按键时,相应的端口变为低电平,通过一个与门只要这四个按键有一个按
30、下就会在p3.2检测到一低电平就触发外部中断0进入按键调节程序中,通过与各个键相连的端口p3.4_p3.7可以判断是哪个键按下,从而作相应的操作。3.2程序下载介绍单片机在控制本地的外围器件时信息的交互是通过8位并行数据线进行的,在电路的硬件设计上,主要采用串口和max232方便的实现单片机pc机之间的串行通信。3.2.1 主要芯片引脚功能介绍max232芯片是美信公司专门为电脑的rs-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。 图34引脚介绍: 第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给rs-232串口电平
31、的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(r1in)、12脚(r1out)、11脚(t1in)、14脚(t1out)为第一数据通道。 8脚(r2in)、9脚(r2out)、10脚(t2in)、7脚(t2out)为第二数据通道。 ttl/cmos数据从t1in、t2in输入转换成rs-232数据从t1out、t2out送到电脑db9插头;db9插头的rs-232数据从r1in、r2in输入转换成ttl/cmos数据后从r1out、r2out输出。 第三部分是供电。15脚gnd、16脚vcc(+5v)。 主要特点: 1、符合所有的
32、rs-232c技术标准 2、只需要单一 +5v电源供电 3、片载电荷泵具有升压、电压极性反转能力,能够产生+10v和-10v电压v+、v- 4、功耗低,典型供电电流5ma 5、内部集成2个rs-232c驱动器 6、内部集成两个rs-232c接收器下图为mx232双串口的连接图,可以分别接单片机的串行通信口或者实验板的其它串行通信接口: 图353.3本章小结本章主要对硬件系统结构进行描述以及如何实现的一些详细流程。ds12c887的高精确时钟的硬件设计,硬件模块包括at89s52控制模块,ds12c887时钟模块,1602显示模块,键盘及外围电路,外围电路即晶振和复位电路功能运用。第4章 系统软
33、件调试环境介绍4.1 keil51软件简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为cpu可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于mcs-51单片机的汇编软件有早期的a51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,keil软件是目前最流行开发mcs-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持keil即可看出。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在
34、内的完整开发方案,通过一个集成开发环境(mvision)将这些部份组合在一起。运行keil软件需要pentium或以上的cpu,16mb或更多ram、20m以上空闲的硬盘空间、win98、nt、win2000、winxp等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用c语言编程,那么keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用c语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。4.1.1 软件功能keil c51是美国keil software公司出品的51
35、系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c来开发,体会更加深刻。c51工具包的整体结构,其中mvision与ishell分别是c51 for windows和for dos的集成开发环境(ide),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用ide本身或其它编辑器编辑c或汇编源文件。然后分别由c51及a51编译器编译生成目标文件(.obj)。目标文件可由lib51创建生成库文件,也可以与库文件一起经l51连接定位生成绝对目标文件(.abs)。abs文件由oh51转换成标准的hex
36、文件,以供调试器dscope51或tscope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如eprom中。keil51的编译环境如图5-1所示。图中:标题栏:显示当前编译的文件菜单条:有十项菜单可供选择,相应的所有操作命令均可在此菜单中查找;工具栏:常用命令的快捷图标按钮;管理窗口:显示工程文件的项目、各个寄存器值的变化、参考资料等;信息窗口:显示当前文件编译、运行等相关信息;工作窗口:各种文件的显示窗口。图5-1 keil51的编译环境keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下
37、编译后生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍keil c51开发系统各部分功能和使用。4.1.2 软件应用流程keil 51 编译指南:第1步: 打开keil51软件,首先弹出一个开机启动画面。第2步: 然后进入keil51的开发界面。下面简要介绍一下keil51开发环境中各个区域的功能。keil51开发环境可以分为四个区域,分别为:菜单条、项目文件管理窗口、代码编译窗口和代码编译信息窗口四个部分。菜单条分为十项,所有的命令都可以在这里找到。下面的命令是一些常用的菜单命令
38、,如文件的打开、关闭及保存。其中编译命令最为常用。中间靠左是项目文件管理窗口,这里可以看到当前项目中所包含的所有带编译的文件。项目文件管理窗口的右侧是代码编译窗口,这事我们最主要的工作区域。最底层显示了代码编译的信息。当代码有语法错误时,可以在这里轻松的找到问题的所在。第3步:下面以建立一个简单的项目为例,来说明keil51开发项目的一般方法。单击project菜单项,选择new project项。第4步:此时弹出create new project对话框,选择合适的路径口,在文件名一栏中填入新工程的名字。单击保存。第5步: 根据所用的器件,选择cpu的型号,单击确定。第6步:keil51询问
39、是否生成默认的配置文件,这个可选可不选,这里选定。单击yes,观察项目文件管理窗口的变化。第7步:在file菜单下单击new选项,新建文件。此时在代码窗口出现一“text1”空白文档。第8步: 在“text1”中编辑完代码后,单击file菜单中的保存项,弹出保存对话框。保存名写为text.c。单击保存。注意在对文件命名时必须加扩展名。第9步: 在项目导航栏中source group 上单击右键,选add file to group source group 1。第10步: 此时弹出add file 对话框。选中刚才保存的text.c文件。单击add。此时在项目文件管理窗口中就会出现刚才所添加的
40、文件text.c。 第11步: 单击快捷菜单栏中的编译按钮,可以编译程序。第12步: 单击project菜单项,选择option for target target 1选项。在弹出的对话框中可以对project进行总体配置。第13步: 选择output 选项卡,单击create hex file ,代码输出格式应为hex-80 。第14步: 单击确定后,并重新编译。可以看到编译成功之后,build 选项卡里又多了一项。这是生成的hex 文件。第15步: 单击debug 菜单项中的start/stop debug session 命令或工具栏中的进入调试界面。第16步: 单击调试界面debug
41、菜单项中的go命令或工具栏中的运行程序,单击stop running 命令或来结束程序。观察运行结果,若结果正确,便可通过下载软件将它烧写到目标板上去。 这样,一个简单的keil51下的项目就完成了。注:keil51 对汇编语言文件的编译调试步骤和对c语言的编译调试基本上是一样的,只是在第八步中用汇编语言进行代码的编写,并在保存文件时将扩展名加成 . asm。本系统中,最初采用把9个状态分别设置成一个子函数的方法。在每个子函数中对在此状态中需要点亮的led单独赋值,延时程序采用定时器延时,在主函数中设置调用子函数。但是在调试过程中遇到很多问题,比如,led并未按照理想的方式点亮或熄灭,也没有状
42、态变化。在经过分析后,采用了另一种更为简单的方法,即给p1口和p2口整体赋值,如p1=0xff、p2=0xff即表示所有led不点亮。每个状态只需赋一个或两个值,需要延时只需调用延时程序。此外,对延时程序也进行了修改,把原有方案改为用cpu延时,这样,程序变得较为简单易行。4.2 程序下载软件介绍stc89c52单片机采用stc_isp_v4.80向内部烧写程序。4.2.1 软件功能stc_isp_v4.80是由stc公司研发,可以向stc89c51、stc89c52等系列单片机内烧写程序。可以设置波特率,串口等参数。同时stc_isp_v4.80还可以作为串口调试工具,用于串口收发数据的调试
43、软件。4.2.2 软件应用流程第一:打开stc_isp_v4.80软件,分别设置最高,最低波特率,并选择相应的串口等参数。如图:第二:打开所要下载的.hex文件,如图所示:第三:点击download,程序就开始烧写了。如图:你看到下面的提示表示你成功下载了,恭喜你!4.3 本章小结本章主要对系统软件调试环境进行介绍,并详细的解释了软件应用流程。以便于我们对它进行使用。包括软件介绍和调试中存在的问题和解决办法以及显示结果。第5章 系统程序设计5.1 系统程序设计流程图开始初始化 读日期、时间 写日期、时间 显示子程序 时间修改子程序 日期修改子程序显示结果返回 开关控制子程序 图5-1主程序流程
44、图5.2 时钟程序模块详细流程图开始 ds12c887初始化 调用函数获取时钟信息 送数据显示 图4.2 ds12c887的流程图5.2.1 程序流程图对应程序代码void init_ds12887(unsigned char *time) unsigned char time_rigst; p12887b=0x80;/set=1 芯片停止工作 允许初始化 year=*time; time+; month=*time; time+; day=*time; time+; hour=*time; time+; min=*time; p12887_databuf=0x55; p12887a=0x20
45、;/0 010 0000 工作频率32.768khz time_rigst=p12887c;/清除中断请求标志 time_rigst=p12887d;/片内寄存器和ram数据有效 p12887b=0x06;/0000 0110 关闭报警中断,2进制数,24小时制,芯片工作 unsigned char read12887(unsigned char uctype) /读取系统时间 uctype 代表要读的内容 unsigned char idata ucvalue; while(p12887a&0x80)=0x80);/t+;if(t20000)break; ; /12887 a 寄存器最高位
46、为 1 12887 处于更新状态禁止读寄存器 switch(uctype) /察看要读的内容 case 1: ucvalue=year; /取年寄存器 break; case 2: if(month12) month=1; /月校正 ucvalue=month; /取月寄存器 break; case 3: if(day31) day=1; /日校正 ucvalue=day; /取日寄存器 break; case 4: if(hour23) hour=0; /小时校正 ucvalue=hour; /取小时寄存器 break; case 5: if(min59) min=0; /分校正 ucval
47、ue=min; /取分寄存器 break; case 6: if(second59) second=0; /秒校正 ucvalue=second; /取秒寄存器 break; default: ucvalue=0; return ucvalue; /返回读的数据void wait();5.3 液晶程序模块详细流程图 开始 1602初始化 读取数据 第一行显示 读取数据 第二行显示 结束 图5-3 1602lcd的流程图5.3.1 程序流程图对应程序代码/*1602写命令程序*/void send_command(uint command) wait(); l_w_c=command;/*160
48、2*/void delay() uint i,j; for(i=0;i50;i+) for(j=0;j50;j+) ;/*读忙程序*/ void wait() ucharx; do x=l_r_c; while(x&0x80); delay();/*1602写数据程序*/void send_data(uint sdata) wait(); l_w_d=sdata;void dis_time(uchar addr,uchar type) uchar dis_h,dis_l; uchar time_buf,star_addr; if(addr16) star_addr=0x80; else sta
49、r_addr=0xc0-10; time_buf=read12887(type); dis_h=time_buf/10+0x30; dis_l=time_buf%10+0x30; send_command(star_addr+addr); send_data(dis_h); send_command(star_addr+1+addr); send_data(dis_l); 5.4 按键控制程序模块详细流程图图6 时间调整程序流程图5.4.1 程序流程图对应程序代码 void key() unsigned char pd1,zc,wei=1; p12887b=0x80;/set=1 芯片停止工作
50、 允许初始化 send_command(0x0f); send_command(0x81); pd1=1;/ send_data(time_int0/10);zc=time_int0/10;while(pd1)right=left=up=left=ok=1;if(up=0) zc+; send_data(zc+48); send_command(0x80+wei);while(!up);if(down=0) zc-; send_data(zc+48); send_command(0x80+wei);while(!down);if(right=0)/zc=0;switch(wei)case 1: temp_time0=zc*10;zc=time_int0%10;wei+; break;case 2: temp_time0+=zc;zc=time_int1/10;wei+=2;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 散客旅游合同范本在线查看
- 企业车辆交易协议书模板
- 2024体育赛事场地租赁合同
- 2024版土石方运输合同
- 农村个人购房合同范例
- 合伙协议书范例
- 如何签订借款合同避免风险
- 个人汽车买卖合同样本模板
- 2023年高考地理专题复习新题典题精练-洋流(原卷版)
- 致大海选择性必修中册 第四单元课件
- (必练)广东省军队文职(经济学)近年考试真题试题库(含答案)
- 含羞草天气课件
- 2024年安全生产知识竞赛考试题库及答案(共五套)
- 22《鸟的天堂》课件
- 农业灌溉装置市场环境与对策分析
- 新疆乌鲁木齐市第十一中学2024-2025学年八年级上学期期中道德与法治试卷
- 2024年江西省高考地理真题(原卷版)
- 部编版小学五年级上册道法课程纲要(知识清单)
- 经济法学-计分作业一(第1-4章权重25%)-国开-参考资料
- 山东省临沂市(2024年-2025年小学四年级语文)人教版期中考试(上学期)试卷及答案
- 护士2024思想汇报5篇
评论
0/150
提交评论