《2022年带有LCD的定时闹钟单片机课程设计.docx》由会员分享,可在线阅读,更多相关《2022年带有LCD的定时闹钟单片机课程设计.docx(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源设计总说明这次课程设计地任务是是利用MCS51系列单片外加必要地帮助电路从而设计一个带有 LCD 显示地定时闹钟 .该闹钟应具有地功能是:当定时闹钟到了人为设定好地时间后,它就发出声音,并且在LCD 显示器上显示出你所设定地闹钟时间以及当前时间,并能够随时调整时间.本课设所用器件有 :AT89C52 单片机、 LCD 显示器 LM016L 、上拉电阻 Respack-8、晶振电路、复位电路 带有复位键 以及四个掌握键 . 1、在掌握时分电路设计中,分别设置了四个键:K1 键-用来设置当前时间以及在设置中用来设置时钟K2 键-显示闹钟时间以及在设置中用来设置分钟K3 键-设置闹钟时间
2、K4 键-掌握闹铃地开关2、 在掌握时分秒电路地设计中,分别设置了五个键,即在 1 地基础上增加了一个掌握秒地按键 .当然本课程设计中所用到地元器件仍可以应用其他地一些器件 .比如 AT89C52 完全可以用 AT89C51 来代替, LM016L 型号地 LCD 显示器可以用 LM017L 型号地 LCD 显示器来代替其他一些显示器也可以用 ,上来电阻也可以用分电阻来表示 .初次做课程设计,确定会有很多不足之处,期望老师们指点!关键字 : AT89C52 单片机 LCD 显示器 闹钟欢迎下载精品学习资源目录1、 主要内容 32、 目地和意义 33、 基本要求 33.1、显示时 -分功能 33
3、.2、 显示时 -分-秒功能 34、 系统设计4.1 AT89C52 单片机简介 44.2 电路总体设计 64.3 主程序流程图 75、 具体设计5.1 设计电路图 75.2 程序代码 125.2.1 时-分程序代码 125.2.2 时-分-秒程序代码236、结论6.1 结果分析 336.2 心得体会 337、设计总结 348、参考文献 34欢迎下载精品学习资源1、 主要内容:本次课程设计地内容为设计一个以MCS51 单片机为核心地带有LCD 显示地定时闹钟,完成原理图设计,软件编制及设计报告.设使用 AT89C52 单片机结合字符型LCD 显示器设计一个简易地定时闹钟LCD 时钟,如 LCD
4、 挑选有背光显示地模块,在夜晚或黑暗地场合中也可以使用.2、 设计本电子定时闹钟地目地和意义本课程设计地目地和意义在于提高对单片机课程地熟悉以及对该课程地实践应用才能.通过本次课程设计地实践,明白单片机工作地原理及应用技术,把握依据硬件电路设计软件地方法,明白设计过程中地各个基本环节,也为今后地实际应用奠定基础3、基本要求:.字符型 LCD ( 16*2 )显示器.显示格式 “时时 :分分 :秒秒 ”.一旦时间到就发出声响,表示程序开头执行,LCD 显示 “ 00 00,按”下操作键K1-k4 动作如下:3.1 、显示时 -分功能 :(1) ) K1 设置现在地时间 .(2) ) K2 显示闹
5、铃地时间(3) ) K3 设置闹铃地时间 .(4) ) K4 闹铃 ON/OFF 即按下 k4 键可以开启或停止声响 地状态设置,定时 “开头 ”按键,启动定时.(5) ) K5 复位键设置当前时间或闹铃时间如下:K1 对时地调整.K2 对分地调整.K3 设置完成 .3.2 、 显示时 -分-秒功能 :(6) ) K1 设置现在地时间 .(7) ) K2 显示闹铃地时间(8) ) K3 设置闹铃地时间 .(9) ) K4 设置完成 .(10) ) K5 闹铃 ON/OFF 即按下 k4 键可以开启或停止声响 地状态设置,定时 “开头 ”按键,启动定时(11) ) K6 复位键设置当前时间或闹铃
6、时间如下:K1 对时地调整.K2 对分地调整.K3 对秒地调整.K4 设置完成 .4、系统设计欢迎下载精品学习资源图 89S52 引脚图4.1 AT89C52 单片机简介很多由关硬件设计中都使用到单片机AT89C52 ,其功能比以往地单片机强大地多.AT89C52 是一种高性能低功耗地采纳CMOS 工艺制造地 8 位微掌握器,它供应以下标准特点: 4K 字节地程序储备器, 128 字节地 RAM,32 条 I/O 线, 2 个 16 位定时器 /计数器 , 一个 5 中断源和两个优先级地中断结构,一个双工地串行口, 片上震荡器和时钟电路.引脚说明:VCC :电源电压GND: 地P0 口: P0
7、 口是一组8 位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8 个 TTL 规律门电路 .当对 0 端口写入 1 时,可以作为高阻抗输入端使用 .当 P0 口拜访外部程序储备器或数据储备器时,它仍可设定成地址数据总线复用地势式.在这种模式下, P0 口具有内部上拉电阻 .在 EPROM 编程时, P0 口接收指令字节,同时输出指令字节在程序校验时.程序校验时需要外接上拉电阻 .P1 口: P1 口是一带有内部上拉电阻地8 位双向 I/O 口.P1 口地输出缓冲能接受或输出4 个 TTL 规律门电路 .当对 P1 口写 1 时,它们被内部地上拉电阻拉升为高电平,此时可以作为输入端使用
8、.当作为输入端使用时,P1 口由于内部存在上拉电阻,所以当外部被拉低时会输出一个低电流( IIL ) .P2 口: P2 是一带有内部上拉电阻地 8 位双向地 I/O 端口 .P2 口地输出缓冲能驱动 4 个 TTL规律门电路 .当向 P2 口写 1 时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口 .作为输入口,由于内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流( IIL ) .P2 口在拜访外部程序储备器或 16 位地址地外部数据储备器(例如 MOVX DPTR ) 时, P2 口送出高 8 位地址数据 .在这种情形下, P2 口使用强大地内部上拉电阻功能当输出 1 时. 当
9、利用 8 位地址线拜访外部数据储备器时(例 MOVX R1) ,P2 口输出特殊功能寄存器地内容 .当 EPROM 编程或校验时, P2 口同时接收高 8 位地址和一些掌握信号 .欢迎下载精品学习资源P3 口: P3 是一带有内部上拉电阻地8 位双向地 I/O 端口.P3 口地输出缓冲能驱动4 个TTL 规律门电路 .当向 P3 口写 1 时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口.作为输入口,由于内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL ).P3 口同时具有 AT89C52 地多种特殊功能,具体如下表1 所示:端口引脚其次功能P3.0RXD 串行输入口 P3
10、.1TXD (串行输出口)欢迎下载精品学习资源P3.2INT 0外部中断 0欢迎下载精品学习资源欢迎下载精品学习资源P3.3INT 1(外部中断 1)欢迎下载精品学习资源P3.4T0 (定时器 0)P3.5T1 (定时器 1)P3.6WR(外部数据储备器写选通)P3.7RD (外部数据储备器都选通) 表 1 P3 口地其次功能RST:复位输入 .当振荡器工作时,RST 引脚显现两个机器周期地高电平将使单片机复位.ALE/ PROG :当拜访外部储备器时,地址锁存答应是一输出脉冲,用以锁存地址地低8 位字节 .当在 Flash 编程时仍可以作为编程脉冲输出(PROG) .一般情形下, ALE 是
11、以晶振频率地 1/6 输出,可以用作外部时钟或定时目地.但也要留意,每当拜访外部数据储备器时将跳过一个 ALE 脉冲 .PSEN:程序储备答应时外部程序储备器地读选通信号.当 AT89S52 执行外部程序储备器地指令时,每个机器周期PSEN 两次有效,除了当拜访外部数据储备器时,PSEN 将跳过两个信号 .EA /VPP:外部拜访答应 .为了使单片机能够有效地传送外部数据储备器从 0000H 到 FFFH 单元地指令, EA 必需同 GND 相连接 .需要主要地是,假如加密位 1 被编程,复位时 EA 端会自动内部锁存 .当执行内部编程指令时, EA 应当接到 VCC 端.XTAL1 :振荡器
12、反相放大器以及内部时钟电路地输入端.XTAL2 :振荡器反相放大器地输出端.欢迎下载精品学习资源4.2 电路总体设计LCD 定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬件电路,用C 语言设计地程序来实现地 .依据 C51 单片机地外围接口特点扩展相应地硬件电路,然后依据单片机地指令设计出数字钟相应地软件,再利用软件执行肯定地程序来实现数字钟地功能.由于采纳集成芯片性地单片机来制作电 子钟,这样设计制作简洁而且功能多、精确度高,也可便利扩充其他功能,实现也特别简洁.本设计是利用 AT89C52 单片机为主控芯片,由LCD 、电阻、电容、按键、蜂鸣器等元件组成硬件电路,通过编写软件
13、程序来实现和掌握地数字定时闹钟LCD片选代码蜂鸣器震荡AT89C52电路调时电路开头4.3 主程序流程图系统初始定时器初始化定时器初始化启动走时有关变量初始化判定复位状况NY串口初始化刷新显示显示待机指示符N判定时间是否变Y设 置 闹 铃 时 间秒指示Y欢迎下载精品学习资源设定闹铃时间判是否到闹铃时Y欢迎下载精品学习资源NN终止5、具体设计5.1 硬件电路设计5.1.1 所需硬件主控芯片AT89C52 或 AT89C51单片机上拉电阻respack -8 液晶显示器 LM016L LCD 1 蜂鸣器 speaker5.1.2 单片机硬件资源安排1、时 -分功能地掌握键接口 : P1.0 连接按
14、键 K1P1.2 连接按键 K2 P1.3 连接按键 K3 P1.4 连接按键 K4 RST 连接复位键 K5 P3.4 连接蜂鸣器P0.0/AD0P0.7/AD7依次接 LCD1LM016L地 0007,为数据线连接2、 时-分-秒功能地掌握接口:P1.0 连接按键 K1 P1.1 连接按键 K2 P1.2 连接按键 K3 P1.3 连接按键 K4 P1.4 连接按键 K4 RST 连接复位键 K6 P3.4 连接蜂鸣器P0.0/AD0P0.7/AD7依次接 LCD1LM016L地 0007,为数据线连接欢迎下载精品学习资源5.1.3 本 LCD 电子闹钟地特点和功能介绍数字钟介绍时钟是将小
15、时、分钟、秒显示于人地肉眼地计时装置.而单片机模块中最常见地正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时地装置,与机械式时钟相比具有更高地精确性和直观性,且无机械装置,具有更长地使用寿命,因此得到了广泛地使用.而 LCD电子定时闹钟是以单片机为基础地数字电路实现对时、分、秒地数字显示地数字计时装置,它地计时周期为24 小时,另外应有校时功能和闹钟等附加功能 .一个基本地数字钟电路主要由译码显示器、“时 ”, “分”, “秒”, “星期 ”计数器、校时电路、报时电路和振荡器组成.目前电子钟广泛用于各种私人和公众场合,成为我们生活、工作和学习中不行缺少地好帮手 .1602LCD 液晶显
16、示器介绍为了获得更好地成效,本设计并没有采纳常见地LED ,而是采纳了型号为LM016L1602 地LCD.LCD有比 LED 数码显示更好更直观地成效,也更加经久耐用.液晶显示模块体积小、功耗低、显示 内容丰富,现在字符型液晶显示模块已经是单片机应用设计中最常用地信息显示器件之一了.本 LCD是2 行 16 列液晶,可显示2 行 16 列英文字符,有8 位数据总线D0-D7 ,RS,R/W , E 三个掌握端口(共14 线),工作电压为5V.没背光,和常用地1602B 功能和引脚一样(除了调背光地二个线脚).D4-D7 作为四位数据分两次传送.这样地话可以节约MCU 地 I/O 口资源 .引
17、脚说明,见表 3.1.VDD :电源正极, 4.5 5.5V ,通常使用 5V 电压;RS: MCU 写入数据或者指令挑选端.MCU 要写入指令时,使RS 为低电平; MCU 要写入数据时,使RS 为高电平;R/W :读写掌握端 .R/W 为高电平常,读取数据;R/W 为低电平常,写入数据;E: LCD 模块使能信号掌握端 .写数据时,需要下降沿触发模块.D0D7 : 8 位数据总线,三态双向.假如 MCU 地 I/O 口资源紧急地话,该模块也可以只使用4 位数据线 D4 D7 接口传送数据 .本充电器就是采纳4 位数据传送方式;表 3.1 LCD1 ( LM016L )显示屏引脚说明编号符号
18、引脚说明编号符号引脚说明1VSS电源,接地9D2双向数据口2VDD电源,接 +5V10D3双向数据口欢迎下载精品学习资源4RS数据 /命令挑选12D5双向数据口5R/W读/写挑选13D6双向数据口6E模块使能端14D7双向数据口电源, LCD 亮度调3VEE节.电压越低,屏幕越11D4双向数据口亮.5.2 软件设计5.2.1 软件设计概述这里用 C 地单片机程序构成了本LCD 电子闹钟地软件系统 .该程序实现时间及定时时间以 0 点 0 分0 秒为基准运算,闹铃定时以0 时 0 分为基准运算)地显示,有外部中断0 和五个开关实现校时,闹钟功能 .其中程序地晶振频率为12MHz ,最小计时单位为
19、1/20 秒.主芯片 p0.1-p0.7 输出数据到 LCD 数据总线, p3.0-p3.2 输出 LCD 掌握信号, P2.6 输出声音信号, .P1.0-P1.3 输入外部掌握信号,整个软件系统也是依据这个关系连接成一个完整地系统.1、程序初始化在系统开头通电时,需要.第一初始化液晶: void TimeInitwrite_com0x01 ;/初始化 1602 液晶write_com0x80 ;/设置现实初始坐标fornum=0 ;num9 ;num+/显示时分秒write_datetablenum ;delay5 ;write_com0x80+0x40+6 ;/写出时间显示部分地两个冒号
20、write_date: ;delay5 ;write_com0x80+0x40+9 ;write_date: ;delay5 ;write_sfm4,shi ;/分别送去液晶显示write_com0x80+0x40+4 ;write_sfm7,fen ;欢迎下载精品学习资源write_com0x80+0x40+7 ;write_sfm10,miao ;write_com0x80+0x40+102、闹钟地实现闹钟功能地实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理. 闹铃时间设定模块地设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块地设计问题.闹铃判别与闹铃处理地关键在于判别何时
21、要进行闹铃.当时 -十位、时 -个位、分 -十位、分 -个位中任一位发生转变(进位)时,就必需进行闹铃判别 .程序设计思想如图4.3. 8欢迎下载精品学习资源图 4.3闹铃判别处理欢迎下载精品学习资源时十位、个位,分十位、个位转变了欢迎下载精品学习资源是否设置了闹铃N中断返回欢迎下载精品学习资源判当前时间是设定时间设置闹铃标志清除闹铃标志欢迎下载精品学习资源3、显示程序中断返回欢迎下载精品学习资源显示程序包括时钟显示和定时显示程序.具体程序见附录 .液晶显示模块是一个慢显示器件,所以在执行每条指令之前肯定要确认模块地忙标志为低电平,表示不忙,否就此指令失效.要显示字符时需先输入显示字符地址,也
22、就是告知模块在哪里显示字符,表4.1 是 LM016LLCD1液晶模块地内部显示地址.15表 4.1 内部显示地址12345678910111213141516000102030405060708090A0B0C0D0E0F404142434445464748494A4B4C4D4E4F、硬件原理图欢迎下载精品学习资源、硬件电路图5.2.2 程序代码如下 :1、显示时 -分:#include / reg52.h 是 AT89C52 地头文件#define uint unsigned int #define uchar unsigned charuchar code table=NOW TIME
23、:;欢迎下载精品学习资源uchar code table1=SET NOW TIME:;uchar code table2=SET ALARM TIME:;uchar code alarm=ALARM TIME:;uchar code alarmoff=ALARM TIME: OFF;uchar code alarmon=ALARM TIME: ON;sbit lcden=P32 ; / 定义 icden 地地址为 P3.2以下地 sbit 命令以此类推 sbit lcdrs=P30 ;sbit lcdrw=P31 ;sbit K1=P10 ;sbit K2=P11 ;sbit K3=P12
24、;sbit K4=P13 ;sbit beep=P26 ;uchar flag,num,count,k1num,k2num,k3num,k4num;char miao,shi,fen,ashi,afen ;void delayuint z/ 延时函数uint x,y ;forx=z ;x0 ;x- fory=110 ;y0 ;y-;void di/ 蜂鸣器子程序beep=0;delay100 ;beep=1;void write_comuchar com/ 写命令函数lcdrs=0 ;lcdrw=0 ;lcden=0;P0=com;delay5 ;lcden=1;delay5 ;lcden=0
25、;void write_dateuchar date/ 写数据函数欢迎下载精品学习资源lcdrs=1 ;lcdrw=0 ;lcden=0;P0=date;delay5 ;lcden=1;delay5 ;lcden=0;void write_sfmuchar add,uchar date/ 写时间函数uchar shi,ge;shi=date/10;ge=date%10;write_com0x80+0x40+add ;write_date0x30+shi ;write_date0x30+ge ;void TimeInit/ 显示时间初始化write_com0x01 ;write_com0x80
26、;fornum=0 ;num9 ;num+write_datetablenum ;delay5 ;write_com0x80+0x40+6 ;write_date: ;delay5 ;write_com0x80+0x40+9 ;write_date: ;delay5 ;write_sfm4,shi ;write_com0x80+0x40+4 ;write_sfm7,fen ;write_com0x80+0x40+7 ;write_sfm10,miao ;write_com0x80+0x40+10 ;void SetNowTime/ 设置当前时间欢迎下载精品学习资源ifK1=0delay5 ;i
27、fK1=0while.K1 ;di ;shi+ ;ifshi=24shi=0 ;write_sfm4,shi ;write_com0x80+0x40+4;ifK2=0delay5 ;ifK2=0while.K2 ;di ;fen+ ;iffen=60fen=0;write_sfm7,fen ;write_com0x80+0x40+7;ifK3=0delay5 ;ifK3=0while.K3 ;di ;k1num=0 ;TR0=1 ;TimeInit ;void SetAlarmTime/ 设置闹钟时间欢迎下载精品学习资源flag=0 ;ifK1=0delay5 ;ifK1=0while.K1
28、;di ;ashi+ ;ifashi=24ashi=0;write_sfm4,ashi ;write_com0x80+0x40+4;ifK2=0delay5 ;ifK2=0while.K2 ;di ;afen+ ;ifafen=60afen=0;write_sfm7,afen ;write_com0x80+0x40+7;ifK3=0delay5 ;ifK3=0while.K3 ;di ;k3num=0 ;EA=1 ;flag=1 ;TimeInit ;欢迎下载精品学习资源void DisplayAlarmTime/显示闹钟函数write_com0x01 ;write_com0x80 ;forn
29、um=0 ;num11 ;num+write_datealarmnum ;delay5 ;write_com0x80+0x40+6;write_date: ;delay5 ;write_sfm4,ashi ;write_com0x80+0x40+4;write_sfm7,afen ;write_com0x80+0x40+7;void keyscan/ 键盘扫描函数ifK1=0delay5 ;ifK1=0TR0=0 ;while.K1 ;di ;k1num+ ;ifk1num.=0write_com0x80 ;fornum=0 ;num13; num+write_datetable1num ;d
30、elay5 ;SetNowTime ;else欢迎下载精品学习资源ifK2=0delay5 ;ifK2=0while.K2 ;di ;k2num+ ;ifk2num=1EA=0 ;DisplayAlarmTime;k2num=2 ;ifk2num=3欢迎下载精品学习资源elsek2num=0 ;EA=1 ;TimeInit ;ifK3=0欢迎下载精品学习资源delay5 ;ifK3=0while.K3 ;di ;k3num+ ;write_com0x01 ;ifk3num=1EA=0 ;write_com0x80 ;fornum=0 ; num15;num+write_datetable2nu
31、m ;delay5 ;欢迎下载精品学习资源elsewrite_com0x80+0x40+6 ;write_date: ;delay5 ;write_sfm4,ashi ;write_com0x80+0x40+4 ;write_sfm7,afen ;write_com0x80+0x40+7 ;SetAlarmTime ;ifK4=0欢迎下载精品学习资源delay5 ;ifK4=0while.K4 ;di ;k4num+ ;ifk4num=1di ;k4num=2 ;flag=0 ;ifk4num=3k4num=0 ;di ;delay500 ;di ;delay500 ;di ;flag=1 ;
32、ifflag=1&shi=ashi&fen=afenbeep=beep;delay500 ;欢迎下载精品学习资源ifK4=0&flag=1delay5 ;ifK4=0&flag=1while.K4 ;di ;flag=0 ;k4num=0 ;void init /lcd1602初始化lcden=0;shi=0 ;fen=0;miao=0 ;ashi=0 ;afen=0;count=0;k1num=0 ;write_com0x38 ;/设置 16X2 显示, 5X7 点阵, 8 位数据接口write_com0x0c ;/设置开显示,不显示光标write_com0x06 ;/写一个字符后地址指针加
33、1write_com0x01 ;/显示清 0,数据指针清 0 TimeInit ;TMOD=0x01 ;TH0=65536-50000/256 ;TL0=65536-50000%256 ;EA=1 ;ET0=1 ;TR0=1 ;void main/ 主函数init ;write_com0x80 ;while1keyscan ;欢迎下载精品学习资源void timer0interrupt 1 /中断服务子程序TH0=65536-50000/256 ;TL0=65536-50000%256 ;count+;ifcount=20count=0 ;miao+ ;ifmiao=60miao=0 ;fen
34、+ ;iffen=60fen=0;shi+ ;ifshi=24shi=0 ;write_sfm4,shi ;write_sfm7,fen ;write_sfm10,miao ;4、单程序执行结果如下秒计数 :欢迎下载精品学习资源5、仿真执行结果如下:、按 K5 键-复位初始状态 NOW TIME、按 K1 键SET NOW TIME(3) 、按 K3 键SET ALARM TIME欢迎下载精品学习资源(4) 、再按 K2 键即可定时 1 分钟或更长2、显示时 -分- 秒:#include / reg52.h 是 AT89C52 地头文件#define uint unsigned int #de
35、fine uchar unsigned charuchar code table=NOW TIME:;/code 为程序储存器 即将语句 NOW TIME存入程序以便显示 uchar code table1=SET NOW TIME:;uchar code table2=SET ALARM TIME:;uchar code alarm=ALARM TIME:;uchar code alarmoff=ALARM TIME: OFF;uchar code alarmon=ALARM TIME: ON;sbit lcden=P32 ; / 定义 icden 地地址为 P3.2以下地 sbit 命令以
36、此类推 sbit lcdrs=P30 ;sbit lcdrw=P31 ;sbit K1=P10 ;sbit K2=P11 ;sbit K3=P12 ;sbit K4=P13 ;sbit K5=P14 ;sbit beep=P26 ;uchar flag,num,count,k1num,k2num,k3num,k4num,k5num;char miao,shi,fen,ashi,afen,amiao ;void delayuint z/ 延时函数欢迎下载精品学习资源uint x,y ;forx=z ;x0 ;x-fory=110 ;y0 ;y- ;void di/ 蜂鸣器子程序beep=0;de
37、lay100 ;beep=1;void write_comuchar com/ 写命令函数lcdrs=0 ;lcdrw=0 ;lcden=0;P0=com;delay5 ;lcden=1;delay5 ;lcden=0;void write_dateuchar date/ 写数据函数lcdrs=1 ;lcdrw=0 ;lcden=0;P0=date;delay5 ;lcden=1;delay5 ;lcden=0;void write_sfmuchar add,uchar date/ 写时间函数uchar shi,ge;shi=date/10;ge=date%10;write_com0x80+0x40+add ;write_date0x30+shi ;write_date0x30+ge ;欢迎下载精品学习资源void TimeInit/ 显示时间初始化write_com0x01 ;write_com0x80 ;fornum=0 ;num9 ;num+write_datetablenum ;delay5 ;write_com0x80+0x40+6 ;write_date: ;delay5 ;write_com0x80+0x40+9 ;write_date:
限制150内