电子时钟的设计.docx
《电子时钟的设计.docx》由会员分享,可在线阅读,更多相关《电子时钟的设计.docx(52页珍藏版)》请在冰豆网上搜索。
![电子时钟的设计.docx](https://file1.bdocx.com/fileroot1/2023-4/1/7c23802f-c32b-4e2b-ba0a-58ae16fa1da4/7c23802f-c32b-4e2b-ba0a-58ae16fa1da41.gif)
电子时钟的设计
1课程设计目的
单片机体积小、成本低,嵌入到工业控制单元、机器人、智能仪器仪表、汽车电子系统、武器系统、家用电器、办公自动化设备、金融电子系统、玩具、个人信息终端及通讯产品中。
单片机是计算机技术发展史上的一个重要里程碑,标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
单片机是集成电路技术与微型计算机技术高速发展的产物。
体积小、价格低、应用方便、稳定可靠,因此,给工业自动化等领域带来了一场重大革命和技术进步。
由于体积小,很容易地嵌入到系统之中,以实现各种方式的检测、计算或控制,这一点,一般微机根本做不到。
由于单片机本身就是一个微型计算机,因此只要在单片机的外部适当增加一些必要的外围扩展电路,就可以灵活地构成各种应用系统,如工业自动检测监视系统、数据采集系统、自动控制系统、智能仪器仪表等。
从工业自动化、自动控制、智能仪器仪表、消费类电子产品等方面,直到国防尖端技术领域,单片机都发挥着十分重要的作用。
所以单片机的课程设计是十分必要的。
灵活运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到PCB制版,再到软件编程及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。
能够上网查询器件资料,培养对新知识新技术的独立的学习能力和应用能力。
独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为日后的毕业设计及科研工作奠定良好的基础。
2系统方案设计及确定
2.1方案的提出
用单片机及6位LED数码管显示时、分、秒,以24小>时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表(或闹钟)/时钟功能转换,以及实现省电(关闭显示)功能。
系统框图如下图
2.2方案的论证及确定
2.2.1单片机简介及选择
单片机是集成电路技术与微型计算机技术高速发展的产物。
体积小、价格低、应用方便、稳定可靠,因此,给工业自动化等领域带来了一场重大革命和技术进步。
由于体积小,很容易地嵌入到系统之中,以实现各种方式的检测、计算或控制,这一点,一般微机根本做不到。
由于单片机本身就是一个微型计算机,因此只要在单片机的外部适当增加一些必要的外围扩展电路,就可以灵活地构成各种应用系统,如工业自动检测监视系统、数据采集系统、自动控制系统、智能仪器仪表等。
20世纪80年代以来,发展迅速,世界一些著名厂商投放市场的产品就有几十个系列,数百个品种,Intel公司的MCS-48、MCS-51,Motorola公司的6801、6802,Zilog公司的Z8系列,Rockwell公司的6501、6502等。
此外,荷兰的Philips公司、日本的NEC公司、日立公司等也相继推出了各自的产品。
尽管机型很多,但是在20世纪80年代以及90年代,在我国使用最多的8位单片机还是Intel公司的MCS-51系列单片机以及与其兼容的单片机(称为51系列单片机)MCS-51系列单片机主要包括
基本型:
8031/8051/8751(低功耗型80C31/80C51/87C51)增强型:
8032/8052/8752。
已为我国广大技术人员所熟悉和掌握。
在上世纪80年代和90年代,MCS-51系列是在我国应用最为广泛的单片机机型之一。
(1)基本型
典型产品:
8031/8051/8751。
8031内部包括1个8位CPU、128BRAM,21个特殊功能寄存器(SFR)、4个8位并行I/O口、1个全双工串行口,2个16位定时器/计数器,5个中断源,但片内无程序存储器,需外扩程序存储器芯片。
8051是在8031的基础上,片内又集成有4KBROM作为程序存储器。
所以8051是一个程序不超过4KB的小系统。
ROM内的程序是公司制作芯片时,代为用户烧制的。
8751与8051相比,片内集成的4KBEPROM取代了8051的4KBROM来作为程序存储器。
(2)增强型
Intel公司在基本型基础上,推出增强型-52子系列,典型产品:
8032/8052/8752。
内部RAM增到256B,8052、片内程序存储器扩展到8KB,16位定时器/计数器增至3个,6个中断源,串行口通信速率提高5倍。
表2-1列出了基本型和增强型的MCS-51系列单片机片内的基本硬件资源。
表2-1MCS-51系列单片机片内的基本硬件资源。
与MCS-51系列的87C51单片机相比,AT89C51/AT89S51单片机片内的4KBFlash存储器取代了87C51片内的4KBEPROM。
AT89S51片内的Flash存储器可在线编程或使用编程器重复编程,且价格较低。
因此AT89C51/AT89S51单片机作为代表性产品受到用户欢迎,AT89C5x/AT89S5x单片机是目前取代MCS-51系列单片机的主流芯片之一。
本书重点介绍AT89S51单片机的原理及应用系统设计。
AT89S5x的“S”档系列机型是ATMEL公司继AT89C5x系列之后推出的新机型,代表性产品为AT89S51和AT89S52。
基本型的AT89C51与AT89S51以及增强型的AT89C52与AT89S52的硬件结构和指令系统完全相同。
使用AT89C51的系统,在保留原来软硬件的条件下,完全可以用AT89S51直接代换。
与AT89C5x系列相比,AT89S5x系列的时钟频率以及运算速度有了较大的提高,例如,AT89S51工作频率的上限为24MHz,而AT89S51则为33MHz。
AT89S51片内集成有双数据指针DPTR,看门狗定时器、具有低功耗空闲工作方式和掉电工作方式。
目前,AT89S5x系列已逐渐取代AT89C5x系列。
此次设计使用的是AT89S51。
2.2.2键盘电路的简介及选择
键盘具有向单片机输入数据、命令等功能,是人与单片机对话的主要手段。
键盘可分为两类:
非编码键盘和编码键盘。
本报告主要介绍非编码键盘。
非编码键盘是利用按键直接与单片机相连接而成,这种键盘通常使用在按键数量较少的场合。
使用这种键盘,系统功能通常比较简单,需要处理的任务较少,但是可以降低成本、简化电路设计。
按键的信息通过软件来获取。
非编码键盘分为两种结构:
独立式键盘和矩阵式键盘
(1)独立式键盘
独立式键盘特点是:
一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可容易地判断哪个按键被按下,如图10-8所示。
对于图3-1的键盘,图中的上拉电阻保证按键释放时,输入检测线上有稳定的高电平。
当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。
(2)矩阵式键盘
矩阵式(也称行列式)键盘用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。
如图3-2所示,一个44的行、列结构可以构成一个16个按键键盘。
在按键数目较多的场合,要节省较多的I/O口线。
矩阵中无按键按下时,行线为高电平;当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。
列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,这是识别按键是否按下的关键所在。
由于本设计键盘数目较少故采用独立式键盘。
图3-1独立式键盘3-2矩阵式键盘
2.2.3LED数码管的简介及选择
LED(LightEmittingDiode)发光二极管缩写。
LED数码管是由发光二极管构成的。
常见的LED数码管为“8”字型的,共计8段。
每一段对应一个发光二极管。
有共阳极和共阴极两种,如图3-3所示。
共阴极发光二极管的阴极连在一起,通常公共阴极接地。
当阳极为高电平时,发光二极管点亮。
同样,共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。
图3-3
LED数码管有静态显示和动态显示两种显示方式。
静态显示方式的显示无闪烁,亮度都较高,静态显示方式接口编程容易,但是占用口线较多(图3-4)。
动态显示的优点是硬件电路简单,显示器越多,优势越明显。
缺点是显示亮度不如静态显示的亮度高。
如果“扫描”速率较低,会出现闪烁现象(图3-5)。
图2-4静态显示图2-5动态显示
基于以上原因本设计采用动态显示。
总结以上选择,我们单片机选用了AT89S51,键盘选用了非编码式独立式键盘,数码管选择动态显示。
3系统的硬件设计
3.1AT89S51最小系统设计
AT89S51的最小系统包括时钟电路、复位电路,和AT89S51芯片。
3.1.1时钟电路硬件设计
AT89S51内部有一个用于构成振荡器的高增益反相放大器,输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。
C1和C2的典型值通常选择为30pF。
电容大小会影响振荡器频率高低、振荡器的稳定性和起振的快速性。
晶振频率范围通常是1.2~12MHz。
晶体频率越高,单片机速度就越快。
速度快对存储器的速度要求就高,印制电路板的工艺要求也高,即线间的寄生电容要小。
晶体和电容应尽可能与单片机靠近,以减少寄生电容,保证振荡器稳定、可靠地工作。
为提高温度稳定性,采用温度稳定性能好的电容。
常选6MHz或12MHz的石英晶体。
随着集成电路制造工艺技术的发展,单片机的时钟频率也在逐步提高,已达33MHz。
本设计选用的是11.0592MHZ。
图3-1时钟电路
3.1.2复位电路硬件设计
单片机的初始化操作,给复位脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就使AT89S51复位。
复位电路采用上电自动复位和按钮复位两种方式。
上电自动复位是给电容C充电加给RST引脚一个短的高电平信号,此信号随着VCC对电容C的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决于电容C充电时间。
为保证系统可靠复位,RST引脚上的高电平必须维持足够长的时间。
除了上电复位外,有时还需要按键手动复位,本设计采用上电自动复位和按钮复位结合的方式。
图3-2复位电路
下图为AT89S51的最小系统
图3-3AT89S51的最小系统
3.2键盘电路硬件设计
对于图3-8的键盘,图中的上拉电阻保证按键释放时,输入检测线上有稳定的高电平.与门U5B的输出为高电平。
当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,与门U5B的输出为低电平(向单片机发出中断请求),只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。
图3-8键盘电路
3.3显示电路硬件设计
本设计采用的动态显示,图3-9所示为一个6位8段LED动态显示电路。
其中段码线占用一个8位I/O口(P0口),而位选线占用一个6位I/O口(P2口低6位)。
必须采用动态的“扫描”显示方式。
即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要有显示的字符的段码(三极管电路起到驱动作用)。
图3-9显示电路
3.4蜂鸣器电路硬件设计
当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能发出提醒人们警觉的声音报警。
用I/O口很容易实现该功能。
本设计用于整点报时和闹铃用。
购买市售的压电式蜂鸣器,用一根I/O口线驱动蜂鸣器发声。
约需10mA的驱动电流,可用7406或7407低电平驱动,也可以用一个晶体管驱动如图3-10所示
图3-10蜂鸣器电路
4系统软件设计
4.1系统主程序设计
4.1.1系统软件设计内存分配及芯片地址介绍
定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁及秒表定时用,
P1.0、P1.1、P1.2、P1.3为调整按钮,P0口为字符输出口,P2为扫描口,P1.7为蜂呜器口,采用共阳显示管。
50H-55H为闹钟定时单元,60H-65H为秒表计时单元,72H-75H为显示时间单元,76H-79H为分时计时单元。
03H标志=0时钟闪烁,=1秒表,05H=0,不闹铃,=1要闹铃.07H每秒改变一次,用作间隔呜叫。
4.1.2系统主程序流程图
通过不断地调用显示程序可保证在执行其他子程序时保证数码管亮(除省电模式外)。
图4-1系统主程序流程图
4.2定时器的设计
定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁及秒表定时用。
图4-2用T0实现计时流程图
图4-3时间调整流程图
4.3整点报时
图4-4整点报时流程图
5系统调试
5.1调试步骤
该程序的调试环境是在星研仿真软件环境里面进行的,通过软禁工具里的窗口来对CPU进行选择,在其窗口工具栏下的数据窗口里观察,以判断时钟是否正常的进行,再通过仿真机和星研软件相连通,从而进行仿真调试,最终完成时钟系统的各个功能。
1、建立项目文件。
a)执行[主菜单|文件|新建]
选择“创建项目文件”,在“项目文件名”中输入您的项目文件名,例如:
example;在“位于哪个目录”中选择一个项目文件存放目录。
该目录名决定编译、连接时生成的所有文件所在目录;该项目文件名决定最终生成的代码文件的名称。
即如果项目文件名叫“Example”,则最后生成的代码文件为“Example.dob”、“Example.hex”等。
“确定”后,进入下一步。
b)选择仿真头、您需要仿真的CPU的公司、型号。
点击“下一步”
c)选择语言
d)按照您的硬件需要,设置编译、连接控制项。
e)设置存贮器出借方式。
点击“完成”,您的项目文件建立完毕。
存贮器出借方式分为程序空间出借方式、外部数据空间出借方式。
STAR系列仿真器
仿真器内有128K仿真RAM,其中64K可以出借给您作为程序存贮器,存放机器码;64K可出借给您作为数据存贮器,存放外部数据。
通常,您借用仿真RAM作为程序存贮器,便于调试程序;外部数据空间在您的应用系统上,便于对您系统上的I/O、数据RAM操作;如果您的线路板还未制成,您也可借用仿真RAM。
SUPERICE16、SUPERICE51仿真器
仿真器内有64K仿真RAM,可以作为您的程序、数据存贮器。
以8K为一个单位,可出借给您作为程序、数据存贮器。
如果您选中相应的复选框,该8K空间在您的系统上;不选中相应的复选框,该8K空间在仿真器上。
通常,您借用仿真RAM作为程序存贮器,便于调试程序;外部数据空间在您的应用系统上,便于对您系统上的I/O、数据RAM操作;如果您的线路板还未制成,您也可借用仿真RAM。
但要注意您借用的程序空间与您借用的外部数据空间地址不能重叠,因为仿真器内只有64K存贮器(仿真RAM)。
MCS196类CPU可以根据INST引脚区分程序空间和数据空间,如果您不需要区分程序、数据空间或对于只有64K空间的CPU(如8098),请不要选中使用INST区分程序、数据空间。
SUPERICE51S仿真器
仿真器内有64K仿真RAM,可出借给您作为程序、数据存贮器。
如果您选中相应的复选框,该64K空间在您的系统上;不选中相应的复选框,该64K空间在仿真器上。
通常,您借用仿真RAM作为程序存贮器,便于调试程序;外部数据空间在您的应用系统上,便于对您系统上的I/O、数据RAM操作;如果您的线路板还未制成,您也可借用仿真RAM。
但要注意您存放代码的区域与存放数据的区域不能重叠,因为仿真器内只有64K存贮器(仿真RAM)。
2、添加模块文件
工作区窗的项目视中,包含“源文件”、“头文件”、“库文件”、“其它文件”,“其它文件”中通常包含对该项目用途作一些说明的文件。
“库文件”通常包含编译软件自带的OBJ文件、LIB等库文件。
a)如果您的模块文件还没建立,您可以执行[主菜单|文件|新建]
在“文件名”中输入模块文件名,在“位于哪个目录”中,选择一个文件存放的目录,通常与项目文件名在同一个目录;选中“添加到项目文件中”,系统自动将该模块文件加入到项目中。
b)添加已存在的模块文件,库文件
在工作区窗的文件视中按鼠标右键,系统弹出一个菜单,选择“添加文件”,选择需要添加到项目文件中的各种文件。
在选择文件时,按住“Ctrl”,一次可添加多个文件。
使用[主菜单|项目|添加文件],也可以添加文件。
c)在文件窗中,按鼠标右键,系统弹出一个菜单,选择“添加文件至项目”,即可将当前文件添加至项目中。
工作区窗的“Examples”视中包含有一些例子,根据您使用的编译软件,可以选择相应的例子。
3、编辑程序
在工作区窗的项目视中,用鼠标双击程序文件名,即可打开相应的文件,编辑程序。
4、设置项目文件
a)在工作区窗的项目视中按鼠标右键,系统弹出一个菜单,选择“设置项目文件”,可以重新选择仿真头、CPU的公司、型号、编译软件、设置编译软件、存贮器出借方式。
b)使用[主菜单|项目|设置项目文件],也可以设置项目文件。
5、删除模块文件
在工作区窗的文件视中,选择需要删除的模块文件名:
a)按Del键。
b)按鼠标右键,系统弹出一个菜单,选择“删除文件”,即可把它从项目文件中去除。
c)使用[主菜单|项目|删除文件]。
2编译、连接
星研集成环境软件不带任何编译软件,请根据您使用的编译软件设置工作环境
1、设置工作环境
根据您在项目文件中选择的语言、编译器所在目录,设置以上路径。
2、启动编译、连接
对工作区窗项目视的“源文件”中所有模块文件编译,如果没有错误,再与“库文件”中所有库文件连接,生成代码文件(DOB、HEX文件)。
a)在工作区窗的项目视中按鼠标右键,系统弹出一个菜单,选择“编译、连接”或“重新编译连接”
b)使用[主菜单|项目|编译、连接]或[主菜单|项目|重新编译、连接]”。
“编译连接”与“重新编译、连接”区别:
“重新编译、连接”不管项目中有无添加、删除模块文件、编译软件是否变化、编译控制项有无修改、模块文件有无修改,对“源文件”中所有模块文件编译,如果没有错误,再与“库文件”中所有库文件连接,生成代码文件(DOB、HEX文件)。
3、编译、连接结果
编译、连接过程中产生的信息显示在信息窗的“建立”视中。
如有错误、警告信息,用鼠标左键双击错误、警告信息或将光标移到错误、警告信息上,回车,系统自动打开对应的出错文件,并定位于出错行上。
进入调试状态
在进入调试状态以前,请正确设置通信口:
执行[主菜单|辅助|通信]。
仿真器配套的通信线可以与微机并口相连,即为并口通信线,如果并口地址是378H,请选择并口1;并口地址是278H,请选择并口2;并口地址是3BCH,请选择并口3。
仿真器配套的通信线可以与微机串口相连,即为串口通信线:
波特率
STAR系列、SUPERICE51S使用串口通信时,波特率可以选择115200。
如果您选择串行通信,您可在此选择一个合适的波特率。
通常,您可以选择缺省,一般情况下,星研集成环境软件会自动选择一个合适的波特率,用于仿真器与微机之间的通信,但是,对于有的微机可能选择的不合适,出现无法联机,或者过了几分钟,状态条中仍然出现“正在通信”标志,按Esc键,退出联机状态,然后,由高(通常57600)到底,选择波特率,重新联机。
校验通常您不必选中它,可以提高传送DOB/HEX文件时的速度。
如果编译、连接正确后,可以开始调试程序。
进入调试状态方法:
a)执行[主菜单|运行|进入调试状态]
b)点击工具条的
c)执行[主菜单|运行|装载DOB、HEX、BIN文件]
在信息窗的“装载”视中,显示装载的代码文件,装载的字节数,装载完毕后,显示启始地址,结束地址。
装载完毕后,进入调试状态,可以根据您的需要,在[主菜单|查看]中打开:
寄存器窗、存贮器窗1、2、3、观察窗、变量窗、反汇编窗。
您也可以通过[主菜单|辅助|设置|格式],设置每一种窗口使用的字体、大小、颜色。
移动窗口到您喜欢的位置、大小。
首先在“种类”中选择一个窗口,然后选择“字体”、“大小”,在“颜色”中选择某一类,在“前景”、“背景”中选择您喜欢的颜色。
对于高级语言,在您的程序前有一段库文件提供的初试化代码,
(当前可执行标志)不会出现在您的文件行上,如果您使用C语言,可将光标移到main函数上,按F4功能键,让CPU全速运行到main行上后停下;如果您使用PL/M语言,按F7功能键,让CPU“单步进入”,运行到您的任何一个可执行后停下。
您可以使用以下命令调试您的程序:
设置或清除断点(功能键为F2)
在当前光标行上设置或清除一个断点
单步进入(功能键F7)
单步执行当前行或当前指令,可进入函数或子程序。
SUPERICE16、SUPERICE51“单步进入”时,不响应中断。
连续单步进入(功能键Ctrl+F7)
连续执行“单步进入”,用鼠标点击
或按任意键后,停止运行。
SUPERICE16、SUPERICE51“单步进入”时,不响应中断。
单步(功能键F8)
单步执行当前行或当前指令,将函数或子程序作为一条指令来执行。
如果当前行中含有函数、子程序、或发生中断,CPU将执行完整个函数、子程序、或中断,停止于当前行或当前指令的下一有代码的行上。
SUPERICE16、SUPERICE51“单步”时,不响应中断。
连续单步(功能键Ctrl+F8)
连续执行“单步”,用鼠标点击
或按任意键后,停止运行。
SUPERICE16、SUPERICE51“单步”时,不响应中断。
运行到光标行(功能键F4)
从当前地址开始全速运行用户程序,碰到光标行、断点或用鼠标点击
,停止运行。
全速断点(功能键F9)
从当前地址开始全速运行用户程序,碰到断点或用鼠标点击
,停止运行。
全速运行(功能键Ctrl+F10)
从当前地址开始全速运行用户程序,此时,按用户系统的复位键,CPU从头开始执行用户程序,即对于MCS51类CPU是从0开始执行;对于MCS96、MCS196类CPU是从2080H开始执行。
用鼠标点击
,停止运行。
停止运行
终止微机与仿真器之间通信(功能键ESC)。
5.2调试过程中的问题及解决方法
在调试的过程中,由于源程序有多处错误,在编译时会出现提示,这个时候我们会根据提示对错误的地方进行修改,从而使程序编译成功。
虽然编译成功了,但是这只是代表程序的语法方面没有错误,还有可能存在逻辑上的错误,这样也会导致仿真的不正确,从而使得仿真无法通过,这个时候就需要进行单步调试,有的时候也需要设置断点,或者是执行到光标处,运用这些指令,从而将程序进行进一步的调试。
6总结
为期三周的单片机课程设计结束了,令我感到非常高兴,因为我真正的学到了东西,正所谓严师出高徒,在老师的严格要求下,在我看来基本是完不成的任务,我按时完成了。
以前的实训真的不可与课程设计同日而语,课程设计不仅锻炼我们的动手能力,而且还有自主学习的能力以及团队协作的能力,实训时老师要从旁指导,全程监督,而课程设计完全交给了我们自己去完成,交给了我们自己的团队。
人们都说看花容易绣花难,通过这此课程设计我深刻的理解了这个道理。
这次课程设计,遇到了很多的困难,编写程序我们就研究了好久,有时做梦都能梦见写程序,