单片机课设.docx
- 文档编号:29134285
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:48
- 大小:128.93KB
单片机课设.docx
《单片机课设.docx》由会员分享,可在线阅读,更多相关《单片机课设.docx(48页珍藏版)》请在冰豆网上搜索。
单片机课设
单片机原理及应用B课程设计说明书
题目:
电子时钟定闹器
学生姓名:
学号:
院(系):
专业:
电子信息工程
指导教师:
2014年12月26日
1选题背景
1.1单片机和数字时钟简介
单片机(Singlechipmicrocomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机,单片机(Singlechipmicrocomputer)作为计算机发展的一个重要分支领域,根据发展情况,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。
时钟一直以来都是国人钟爱的商品之一。
新中国成立以来,国家投入大量资金发展钟表工业,使这一产业得以快速发展,此后,中国的改革开放以及经济全球化发展给中国钟表业带来了繁荣。
这次采用单片机与液晶显示屏,通过汇编语言显示日期,时间,以及定闹等功能。
1.2设计目的
(1)复习和巩固所学过的知识,利用此课程设计正好可以对所学习过的知识进行系统的回顾。
(2)拓展知识面,课堂的知识是远远满足不了设计的要求的,这就需要我们去主动找寻更多的资料,了解更多的知识。
(3)培养了设计能力和解决实际实际问题的能力,同时增强了自学能力,通过设计完整的单片机系统也初步掌握了组成系统、编程、调试等能力。
(4)通过本LCD电子种的设计初步了解了单片机应用系统开发研制过程,软件和硬件设计的方法。
1.3本LCD电子闹钟的功能和特点介绍
1.3.1设计特点
电子定时闹钟是一种种基于单片机技术的多功能、多用途的电子产品,有时钟、日期显示、定时闹铃等多种功能。
实用性强,应用灵活。
1.3.2主要功能
(1)可以显示时间
(2)可以显示日期
(3)可以修改时间
(4)可以定闹
2方案论证
2.1总体方案设计
电子定时数字闹钟,是以单片机及外围接口电路作为核心硬件,辅以外围硬件电路,用汇编语言设计的程序来设计并实现的。
根据C51单片机的外围接口特点扩展成相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件来执行一定的程序实现数字钟的功能。
之所以用单片机来制作电子钟,是因为这样在设计制作简单而且功能多、精确度高,也可方便的扩充其他功能,淡然实现也十分简单。
本设计是利用AT89C51单片机为主控芯片,由七段数码管、晶振、电阻、电容、发光二极管、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和控制的数字定时闹钟。
2.2硬件设计
2.2.1电路总体概念图设计
总体的硬件系统结构框图如图2-1所示。
图2-1硬件电路概念图
2.2.2主控芯片AT98C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.AT89C51提供以下标准功能:
4k 字节Flash 闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作[2]。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
管脚功能如下:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口。
P3口管脚的备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度[3]。
AT89C51单片机的封装及管脚分布如图2-2所示。
图2-2AT89C51单片机封装及管脚分布图
2.2.3时钟电路部分
时钟电路简单定义如下:
(1)就是产生象时钟一样准确的振荡电路。
(2)任何工作都按时间顺序。
用于产生这个时间的电路就是时钟电路。
现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。
这些电路的接口简单、价格低廉、使用方便,被广泛地采用。
实时时钟电路DS1302主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
采用普通32.768kHz晶振。
AT89C51系列的单片机的时钟方式分为内部方式和外部方式。
内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。
外部时钟方式是把外部已经有的时钟信号引入到单片机内部。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。
本LCD电子闹钟设计是采用内部时钟方式,用一个30PF晶振和两个30Pf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用。
其电路如图2-3所示。
图2-3时钟电路
2.2.4LCD显示电路部分
采用了型号为LM016L的LCD。
LCD有LED数码显示更好的更的直观效果,也更加经久耐用。
液晶显示模块体积小功耗低、显示内容丰富。
本LCD是2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。
没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚).该模块也可以只用D4-D7作为四位数据分两次传送。
这样的话可以节省MCU的I/O口资源。
图2-4LM016LLCD
引脚说明:
VDD:
电源正极,4.5-5.5V,通常使用5V电压;
VL:
LCD对比度调节端,电压调节范围为0-5V。
接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;
RS:
MCU写入数据或者指令选择端。
MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;
R/W:
读写控制端。
R/W为高电平时,读取数据;R/W为低电平时,写入数据;
E:
LCD模块使能信号控制端。
写数据时,需要下降沿触发模块。
D0-D7:
8位数据总线,三态双向。
如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。
本充电器就是采用4位数据传送方式;
BLA:
LED背光正极。
需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;
BLK:
LED背光地端。
2.2.5喇叭部分的电路
如图2-5所示,通过单片机发出的控制信号经过简单的放大和处理后直接控制LS1喇叭。
图2-5SPEAKER部分电路图
3软件设计
3.1软件设计概述
这里用汇编的单片机程序构成了本LCD电子闹钟的软件系统。
该程序实现时间及定时(时间以0点0分0秒为基准计算,闹铃定时以0时0分为基准计算)的显示,有外中断0和五个开关实现校时,闹钟功能。
其中程序的晶振频率为12MHz,最小计时单位为1/20秒。
主芯片P0.1-P0.7输出数据到LCD数据总线,P2.0-P2.2输出LCD控制信号,P3.7输出声音信号,P1.4-P1.5输入外部控制信号,整个系统也是根据这个关系连接成一个完整的系统。
最后经过反复的修改和实验最终确定了主程序见附录I,并附有十分详细的注释。
3.2主函数的设计
电子闹钟的的主程序流程图如图3-1所示。
图3-1主函数流程图
3.3部分设计思想的说明
3.3.1闹钟的实现
程序设计思想如图3-2所示。
图3-2闹铃实现思想流程图
闹钟功能的实现涉及到两个方面:
闹铃时间设定和是否闹铃判别与相应处理。
闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。
闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。
当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。
3.3.2显示程序
显示程序包括时钟显示和定时显示程序。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
液晶模块内部的控制器共有11条控制指令:
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5×7的点阵字符,高平时显示5×10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
4Proteus软件仿真
图4-1仿真结果截图
5课程设计体会
为时两周的单片机课设到此就要结束了,时间说长不长,说短不短,进一步充分了解了单片机的应用。
它有4k 字节Flash 闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
当然也充分了解到了自己的不足,比如说在汇编语言的应用上不够灵活,不能将课本上不同模块的知识融会贯通,还需要更加努力才行。
还有也认识了许多新的元器件,例如:
LM016L等。
以便积累,下次设计时才能累积更多认识。
在对应用PROTUES仿真软件的应用更加熟练了。
参考文献
[1]范力旻.单片机原理及应用技术.电子工业出版社.2010.
[2]皮大能.单片机课程设计指导书.北京理工大学出版社.2010.
[3]金杰.MCS-51单片机C语言程序设计与实践.电子工业出版社.2011.
[4]杜文洁.单片机原理课程设计案例精编.清华大学出版社.2012.
[5]张淑清.单片机原理及应用技术.国防工业出版社.2010.
附录
附录I源程序代码
;按K1键,依次进入闹钟功能,闹钟时间,年,月,日和时,分,秒模式,直致退出设置状态*
;按K2键,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字*
;闹钟响时,按K2即可停止闹钟的声响*
;K2和K1需要配合使用
;设置状态,LCD上排最前面显示"P",下排最前面设置闹钟时显示"alarm:
",其他显示"time:
"*
;闹钟启用时,在LCD下排中间显示一小喇叭,闹钟禁用时,无此小喇叭*
;年代变化2000--2099,星期自动转换*
;************变量的定义*************
RSBITP2.0;LCD数据/命令选择端(H/L)
RWBITP2.1;LCD读/写选择端(H/L)
EPBITP2.2;LCD使能控制
PREBITP1.7;调整键(K1)
ADJBITP1.6;调整键(K2)
SPKBITP3.7;闹钟声音输出口
YEARDATA18H;年,月,日变量
MONTHDATA19H
DATEDATA1AH
WEEKDATA1BH
HOURDATA1CH;时,分,秒,百分之一秒变量
MINDATA1DH
SECDATA1EH
SEC100DATA1FH
HOUR_ARMDATA20H;闹钟时,分,秒,变量
MIN_ARMDATA21H
SEC_ARMDATA22H
STATEDATA23H
ALARMBITSTATE.0;闹钟是否启用标志1--启用,0--禁止
LEAPBITSTATE.1;是否闰年标志1--闰年,0--平年
KEY_SDATA24H;当前扫描键值
KEY_VDATA25H;上次扫描键值
DIS_BUF_U0DATA26H;LCD上排显示缓冲区
DIS_BUF_U1DATA27H
DIS_BUF_U2DATA28H
DIS_BUF_U3DATA29H
DIS_BUF_U4DATA2AH
DIS_BUF_U5DATA2BH
DIS_BUF_U6DATA2CH
DIS_BUF_U7DATA2DH
DIS_BUF_U8DATA2EH
DIS_BUF_U9DATA2FH
DIS_BUF_U10DATA30H
DIS_BUF_U11DATA31H
DIS_BUF_U12DATA32H
DIS_BUF_U13DATA33H
DIS_BUF_U14DATA34H
DIS_BUF_U15DATA35H
DIS_BUF_L0DATA36H;LCD下排显示缓冲区
DIS_BUF_L1DATA37H
DIS_BUF_L2DATA38H
DIS_BUF_L3DATA39H
DIS_BUF_L4DATA3AH
DIS_BUF_L5DATA3BH
DIS_BUF_L6DATA3CH
DIS_BUF_L7DATA3DH
DIS_BUF_L8DATA3EH
DIS_BUF_L9DATA3FH
DIS_BUF_L10DATA40H
DIS_BUF_L11DATA41H
DIS_BUF_L12DATA42H
DIS_BUF_L13DATA43H
DIS_BUF_L14DATA44H
DIS_BUF_L15DATA45H
FLAGDATA46H;标识调整状态0-闹钟功能,1-闹钟时,2-闹钟分,3-闹钟秒
;4-年,5-月,6-日,7-时,8-分,9-秒,10-退出调整。
DIS_HDATA47H
DIS_MDATA48H
DIS_SDATA49H
DIS_S0DATA4AH
DIS_S1DATA4BH
DIS_S2DATA4CH
DIS_S3DATA4DH
DIS_S4DATA4EH
DIS_S5DATA4FH
;*********初始化**************
ORG0000H
LJMPSTART
ORG000BH
LJMPTIMER0
ORG001BH
LJMPTIMER1
ORG0100H
START:
MOVSP,#60H
MOVR0,#18H
MOVA,#00H
MEM_INI:
MOV@R0,A
INCR0
CJNER0,#5FH,MEM_INI
LCALLDELAY_5ms;初始化LCD
MOVR0,#38H;设置LCD为16X2显示,5X7点阵,八位数据接口
LCALLLCD_WCMD
LCALLDELAY_5ms
MOVR0,#0CH;设置LCD开显示及光标形式(光标不闪烁,不显示"-")
LCALLLCD_WCMD
LCALLDELAY_5ms
MOVR0,#06H;LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)
LCALLLCD_WCMD
LCALLDELAY_5ms
MOVR0,#01H;清除LCD的显示内容
LCALLLCD_WCMD
LCALLDELAY_5ms
;第一自定义字符:
MOVR0,#40H
LCALLlcd_wcmd;"01000000"第1行地址(D7D6为地址设定命令形式D5D4D3为字符存放位置
MOVR0,#1FH
LCALLlcd_wdat;"XXX11111"第1行数据(D7D6D5为XXX,表示为任意数(一般用000),
MOVR0,#41H
LCALLlcd_wcmd;"01000001"第2行地址
MOVR0,#11H
LCALLlcd_wdat;"XXX10001"第2行数据
MOVR0,#42H
LCALLlcd_wcmd;"01000010"第3行地址
MOVR0,#15H
LCALLlcd_wdat;"XXX10101"第3行数据
MOVR0,#43H
LCALLlcd_wcmd;"01000011"第4行地址
MOVR0,#11H
LCALLlcd_wdat;"XXX10001"第4行数据
MOVR0,#44H
LCALLlcd_wcmd;"01000100"第5行地址
MOVR0,#1FH
LCALLlcd_wdat;"XXX11111"第5行数据
MOVR0,#45H
LCALLlcd_wcmd;"01000101"第6行地址
MOVR0,#0AH
LCALLlcd_wdat;"XXX01010"第6行数据
MOVR0,#46H
LCALLlcd_wcmd;"01000110"第7行地址
MOVR0,#1FH
LCALLlcd_wdat;"XXX11111"第7行数据
MOVR0,#47H
LCALLlcd_wcmd;"01000111"第8行地址
MOVR0,#00H
LCALLlcd_wdat;"XXX00000"第8行数据
;第二个自定义字符:
MOVR0,#48H
LCALLlcd_wcmd;"01001000"第1行地址
MOVR0,#01H
LCALLlcd_wdat;"XXX00001"第1行数据
MOVR0,#49H
LCALLlcd_wcmd;"01001001"第2行地址
MOVR0,#1BH
LCALLlcd_wdat;"XXX11011"第2行数据
MOVR0,#4AH
LCALLlcd_wcmd;"01001010"第3行地址
MOVR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机