版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021年基于单片机地可编程作息时间控制器设计 扬州大学能源与动力工程学院 题 目: 可编程作息时间控制器设计 课 程: 单片机原理及应用课程设计 专 业: 电气工程及其自动化 班 级: 姓 名: 学 号: 第 一 部 分 任 务 书 ?单片机原理及应用?课程设计任务书 一、课题名称 详见?单片机课程设计题目(一)?:主要是软件仿真,利用Proteus软件进行仿真设计并调试; ?单片机课程设计题目(二)?:主要是硬件设计,利用单片机周立功实验箱进行设计并调试。 二、课程设计目的 课程设计是课程教学中的一项重要内容,是到达教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握
2、课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。 ?单片机原理及应用?是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及应用课程设计的目的是让学生在理论学习的根底上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的根底。通过单片机硬
3、件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的根本技能,逐步熟悉开展科学实践的程序和方法。 三、课程设计内容 设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。 1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。 2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。 3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。 4. 调试:在单片机EDA仿真软
4、件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。 四、课程设计要求 设计一个以单片机为核心的可编程作息时间控制器:按照给定的时间模拟控制,实现播送、上下课打铃、灯光控制(屏幕显示),同时具备日期和时钟显示。五、进度安排 序号 内容 天数 4 Proteus仿真,或在周立功实验箱上调试 2 七、课程设计报告内容: 总结设计过程,写出设计报告,设计报告具体内容要求如下: 1.课程设计的目和设计的内容。 2.课程设计的要求。 3.控制系统总框图及系统工作原理。 4.控制系统的硬件电路连接图,电路的原理。 5.软件设计流程图及其说明。 6.电路设计,软件编程、调试
5、中遇到的问题及分析解决方法。 7.实验结果及其分析。 8.体会。 第 二 部 分课程设计报 目 录 1 课题简介1 1.1 课题目的1 1.2 课题要求1 2 可编程作息时间控制器方案设计1 2.1 系统总体介绍1 2.2 系统整体框图1 2.3系统工作原理1 3可编程作息时间控制器硬件电路及芯片介绍2 3.1 AT89C51单片机2 3.2 1602LCD液晶显示器3 3.3 其他重要元件4 3.4 硬件电路设计图5 4 可编程作息时间控制器软件编程设计5 4.1 系统初始化5 4.2 系统时间校正6 4.3 系统时间设定7 4.4 作息时间设定7 4.5 响铃处理9 4.6 逻辑控制10
6、4.7 1602LCD液晶显示11 5 实验与结果分析11 5.1 实验的调试11 5.2 实验的结果12 5.3 实验的问题14 6 小结与体会15 1 课题简介1.1 课题目的 由单片机AT89C51芯片和LCD显示器,辅以必要的的电路,构成一个可编程作息时间控制器。电子钟采用采用单片机来完成,LCD显示“时,“分,LED闪动来做秒计数,定时时间到能发出相应的提示,从而能够实现作息时间控制。现在是自动化高度兴旺的时代,特别是电子类产品都是靠内部的控制电路来实现对产品的控制,到达自动运行的目的,这就需要我们这里要做的设计中的电器元件及电路的支持。1.2 课题要求 在keil uVision
7、和proteus上编写软件完成设计。 以AT89C51单片机为核心结合字符型LCD显示器的可编程作息时间控制器。 按照给定的时间模拟控制,实现播送、上下课打铃、灯光控制(屏幕显示),同时具备日期和时钟显示。 上机调试程序。 写出设计报告。2 可编程作息时间控制器方案设计2.1 系统总体介绍 可编程作息时间控制器是由简单的一路闹钟的根底上增加至四路可调闹钟,从而实现依次执行作息时间的提醒任务。系统主要是由时间程序和闹钟程序所构成,由显示模块、时钟模块以及闹钟模块三大局部组成。其中时钟运算模块要对时、分、秒的数值进行操作,并且秒算到60时,要自己清零并向分进1;分算到60时,要自己清零并向时进1,
8、时算到24时,要清零,这样,才能循环记时。并在不同状态下使得四个按键有着不同的功能,从而实现系统时间的调整,同时可以在不同状态下可以调整闹钟的时间。当定时到达时LCD将显示出现在的闹钟是哪一路,响铃一分钟,并可以通过按键提前结束闹钟,恢复到时间显示状态。2.2 系统整体框图 使用AT89C51单片机结合字符型LCD显示器设计一个简易的可编程作息时间控制器,假设LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。程序执行后工作指示灯LED闪动,表示程序开始执行,同时显示系统时间。作息时间控制器是由4路可调闹钟组成,从而实现打铃等功能。当四路闹钟中的任一路到时,均会点亮灯、打铃。其中操作键K
9、1K4的功能分别为:设置限制的时间/时的调整、显示闹钟设置的时间/分的调整、设置闹钟的时间/设置完成、闹钟更换。3可编程作息时间控制器硬件电路及芯片介绍 系统主要是由AT89C51单片机、1602LCD液晶显示器以及其他重要元件组成,按键作为系统的控制输入端,可以进行时间、闹钟等内容的设定,并通过液晶显示器显示出时间等内容。3.1 AT89C51单片机 本设计的核心硬件就是8051芯片,这里选择了AT89C51,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM?Falsh Programmable and Erasable Read Only Memory)的低电压,高性
10、能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图3.1 AT89C51引脚图引脚及其功能: P0口:P0口为一个8位漏级开路双 向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,
11、此时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口输出地址的高八
12、位。在给出地址“1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下所示: P3口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部
13、中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个A
14、LE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 EA/VPP:当/EA保持低电平时,那么在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施
15、加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 P1.0口接K1按键,P1.1口接K2按键,P1.2口接K3按键,P1.3口接K4按键,P2.0口接RS口,P2.1口接RW口,P2.2口接E口,P2.3口接发光二极管D2阳极,P2.4口接发光二极管D1阳极,P2.5口接电阻R3,P3口的8个口依次和LCD的数据口D0D7.3.2 1602LCD液晶显示器 LM016L 液晶模块采用HD44780 控制器。HD44780 具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。LM016L 与单片机MCU(Micro
16、controller Unit)通讯可采用8 位或者4 位并行传输两种方式。HD44780 控制器由两个8 位存放器、指令存放器(IR)和数据存放器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)。IR 用于存放指令码,只能写入不能读出;DR 用于存放数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM 读出的数据。BF 为1 时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。DDRAM 用来存储显示的字符,能存储80 个字符码。CGROM 由8 位字符码生成5*
17、7 点阵字符160 种和5*10 点阵字符32 种,8 位字符编码和字符的对应关系,可以查看参考文献3中的表4。CGRAM 是为用户编写特殊字符留用的,它的容量仅64 字节。可以自定义8 个5*7 点阵字符或者4 个5*10 点阵字符。AC 可以存储DDRAM 和CGRAM的地址,如果地址码随指令写入IR,那么IR 自动把地址码装入AC,同时选择DDRAM 或者CGRAM 单元。LM016L 液图3.2 LCD1602引脚图晶模块的引脚功能见表: 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会
18、产生“鬼影,使用时可以通过一个10K的电位器调整比照度。 第4脚:RS为存放器选择,高电平时选择数据存放器、低电平时选择指令存放器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 将respack-8的1口接电源,28口顺序和P3口相连接,并和LCD的数据口D1D7相接,VSS接地,VDD接电源,VEE接滑动变阻器,RS
19、口接P2.0口,RW口接P2.1口,E口接P2.2口。3.3 其他重要元件图3.3 独立式键盘 (1)独立式键盘的接口电路:在单片机应用系统中,有时只需要几个简单的按键向系统输入信息。这时,可将每个按键接在一根I/O接口线上,这种方式的连接称为独立式键盘。每个独立式按键单独占有一根 I/O接口线,每根I/O接口线的工作状态不 会影响到其他 I/O接口线 。这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大。故只在按键数量不多时采用这种按键电路。在此电路中,按键输入都采用低电平有效。上拉电阻保证了按键断开时,I/O接口线有确定的高电平。当I/O接口内
20、部有上拉电阻时,外电路可以不配置上拉电阻。 蜂鸣器:将蜂鸣器的一端电源,另一端接至晶闸管集电极,当需要闹钟响时,P2.5将发出有规律的电平使得晶闸管导通,从而使得蜂鸣器发出声响。 respack-8:上拉电阻 键K1K4分别与单片机的P1.0P1.3口相接。3.4 硬件电路设计图图3.4 系统整体电路图 将respack-8的1口接电源,28口顺序和P3口相连接,并和LCD的数据口D1D7相接。发光二极管D1和P2.4口相连接用以显示秒计时,发光二极管和P2.3口相连接用以显示闹钟时的播送,按键K1K4分别与单片机的P1.0P1.3口相接,以实现按键的多功能使用。 4 可编程作息时间控制器软件
21、编程设计 可编程作息时间控制器软件编程主要包括系统初始化、系统时间校正、系统时间设定、作息时间设定、响铃处理、逻辑控制以及1602LCD液晶显示,整个程序中响铃的合理处理以及显示局部是核心局部,只有处理好闹钟的及时响应才会使得整个可编程作息时间控制器按照预定的设计进行工作,同时各个模块逻辑上合理分配又将是整个功能实现的根底。4.1 系统初始化 sbit K1P10; sbit K2P11; sbit K3P12; sbit K4P13; sbit rsP20; sbit rwP21; sbit lcdenP22; sbit LED2P23; sbit ledP24; sbit beepP25;
22、 TH065536-50000/256; TL065536-50000%256; 此段程序主要是是定义电路的外部接口,包括K1K4按键,LCD的rs口、rw口、播送控制端LED2、发光二极管控制端led以及蜂鸣器控制端beep。将定时器0的工作模式选择为工作方式1,同时给定时器装初值,并且开始计数。4.2 系统时间校正 图4.1 系统时间校正流程图 程序: TH065536-50000/256; TL065536-50000%256; aa+; ifaa20 aa0; miao+; ifmiao60 miao0; fen+; iffen60 fen0; shi+; ifshi24 shi0;w
23、rite_sfm9,shi; write_sfm12,fen; 首先初始化时定时器开始工作,当计时时间到时进入中断效劳,由于方式1没有自动装初值的功能,因此需再次装入初值,每一次所定的时间为50ms,通过软件计数的方法,当计数到达20次时刚好1秒钟,如果计数不到20次,那么再次给定时器装入初值,直到计数到达20次,把计数初值清零,并再次向计数器装初值,重复执行之前操作,同时分加一,并显示,如果分为60时那么不显示,先清零然后将时加一,再显示分,如果时不是24时,那么直接通过LCD显示出来,如果时刚好为24时,那么现需要清零,然后在用LCD显示出来。4.3 系统时间设定 图4.2 改变小时流程图
24、 图4.3 改变分钟流程图程序: ifK10 while!K1 TR00; ifK10 shi+; ifshi24 shi0; ifK20 while!K2; fen+; iffen60 fen0; ifK30 TR01; 当K1被按下时,那么修改系统的的时间,同时定时器停止工作。开始时,光标停留在分钟上,当再次按下K1时,光标将会跳到小时并且小时位的时间将会加一,如果时位的数等于24时,那么自动清零,从零开始再往上加,如果按下K2键按下那么分钟自动加一 ,如果分钟到达60时那么自动清零,从零开始往上加,并通过LCD显示出此时的状态。当按下K3键时,那么退出系统时间的更改,并启动定时器工作,开
25、始通过LCD在第二行显示出修改后的时间。此程序主要的作用就是通过人为的方法来设定系统的时间,使得系统时间满足实际需要。4.4 作息时间设定图4.4 改变闹钟定时小时流程图 图4.5 改变闹钟定时分钟流程图 程序: ifK30while!K3;write_sfm12,fen1;write_sfm9,shi1;ifK20write_sfm12,fen1;write_sfm9,shi1;while!K2;write_sfm12,fen;write_sfm9,shi;ifK10while!K1;shi1+;ifshi224 shi10;write_sfm9,shi1;ifK20while!K2;fen
26、1+;iffen160fen10;write_sfm12,fen1;ifK30write_sfm12,fen; write_sfm9,shi; 由于可编程时间控制器是由四路闹钟构成的,所以只要通过逻辑上的先后顺序便可以实现,并且这四路闹钟设定上都是相同的,因此在这里将四路闹钟选择其中的第一路做介绍。当通过K4键进入闹钟设定电路后,如果处于播送的闹钟时间设定时,此时如果没有按下任何开关键,LCD将显示此时的闹钟标志“GB并且再其后面显示现在的系统时间,在没有按下K3键之前,如果按下K2键,那么LCD将显示此处闹钟时间,并且在其前面有此路标志,如“GB,松开按键K2时,LCD将显示之前的状态;如果
27、按下首次按下K3键,那么开始修改闹钟的时间,此时光标在分钟上闪烁,此时按下K2键那么修改闹钟的分钟,如果分等于60时,那么自动清零,否那么继续往上加;如果按下K1键那么修改闹钟的小时,如果小时数等于24,那么自动清零,否那么继续往上加。当第二次按下K3键,那么完成次闹钟的设定,并显示之前的状态,如果继续按K4键那么切换到下一路闹钟 ,也可以进行上述的操作,或者返回系统时间界面。4.5 响铃处理 图4.6 响铃处理流程图程序: iffenfen1&&shishi1|fenfen2&&shishi2|fenfen3&&shishi3| fenfen4
28、&&shishi4&&flag21iffenfen1&&shishi1&&flag21 iffenfen1&&shishi1&&flag20|fen-1fen1&&shishi1&&flag40 iffenfen2&&shishi2&&flag21iffenfen2&&shishi2&&flag20|fen-1fen2&&shishi2&&flag40 iffenfen3&
29、amp;&shishi3&&flag21 iffenfen3&&shishi3&&flag20|fen-1fen3&&shishi3&&flag40 iffenfen4&&shishi4&&flag21 iffenfen4&&shishi4&&flag20|fen-1fen4&&shishi4&&flag40 ifK40&&flag30 当四个定时闹钟任意一路到达时,在没有按下响铃终止键K4时,f
30、lag2都等于1,此时闹钟响起,同时使得flag3等于0。在闹钟响闹完一个周期后将继续向下执行,并且根据以后程序的判定是哪一路闹钟在响闹,执行这一路所要求的内容,但是不管哪一路时间到都会响铃并且灯闪,不同的是根据判断选择出时间到的那一路并通过LCD显示出来闹钟时间及某路闹钟;此时假设按下K4键,那么使得flag2等于0,当进行是否闹钟响闹时将会不在响应,也就是闹钟被手动关闭,从而不需要一定要响铃一分钟后在关闭闹钟,实现手动关断闹钟的功能。当闹钟关断过后将及时跳出,并且使得LCD显示当前的时间。使得可编程时间控制器能够在响铃时能够显示当前的闹铃及时间,同时可以手动关断闹铃,并且当闹铃关断过后可以
31、跳出当前显示返回到系统时间。 4.6 逻辑控制 图4.7 逻辑控制流程图程序: while1 ifK40&&flag31 K4num+; ifK4num5 K4num0; ifK4num0 time; flag40; ifK4num1 guangbo; flag41; ifK4num2 shangke; flag41; ifK4num3 xiake; flag41; ifK4num4 dengkong; flag41; clock; 只有当没有一路闹钟响闹时才会执行此程序,因为在闹钟响闹时K4键将会作为闹钟的停止的功能键使用,所以只有在没有闹钟响闹时,K4键才会早为闹钟的更换,
32、同时变量K4num将作为K4键所处的闹钟或者系统时间区别出来,以实现逻辑上的合理。系统刚启动时,按键K4处于系统时间状态,在此状态下可以利用之前所介绍的功能进行所需要的修改,当第一次按下K4键时,就会进入播送定时的控制口,此时可以根据需要修改所要定的时间,并可以显示自己所定的闹钟时间,再次按下K4键时,将会进入上课定时的闹钟,和之前的闹钟一样,可以进行相同的操作,当再次按下K4键时将进入下课闹铃状态,然后将要进入的的是灯光控制定时,此时Knum4为4,当再次按下K4键时,将经过判断清零,重新开始,以此来实现按键K4可以更换闹钟的功能,同时更改闹钟时间的功能。4.7 1602LCD液晶显示 VS
33、S引脚接地,VDD提供电源,VEE接滑动变阻器来控制液晶屏的比照度。RS为存放器选择,高电平时选择数据存放器、低电平时选择指令存放器。R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。程序: void write_comuchar com rs0; rw0; lcden0; P3com; lcden1; lcden0; 液晶写命令函数 void write_dateuchar dat
34、ers1;rw0;lcden0;P3date;lcden1;lcden0; 液晶写数据函数 当需要将内容显示到LCD显示器上之前,首先要向液晶显示器输入写命令函数,有上硬件分析可以得到LCD液晶显示上一排地址从80H8FH,一共16位,下面一排地址从C0HCFH,同样是16位,所以在进行液晶显示之前首先确定要将结果在哪一位上显示,然后在调用液晶写数据函数,只有两者结合使用才会得到想要的结果。5 实验与结果分析5.1 实验的调试 设计要求:一个以单片机为核心的可编程作息时间控制器,能够按照给定的时间模拟控制,实现播送、上下课打铃、灯光控制(屏幕显示),同时具备日期和时钟显示。 首先运用Keil软
35、件编辑程序,按上图要生成目标代码文件,不断地调试程序。 联调:加载目标代码文件 翻开元器件单片机属性窗口,在“Program File栏中添加上面编译好的目标代码文件“;在“Clock Frequency栏中输入晶振频率为11.0592MHz。每一小块程序编写过后都进行联调,这样可以及时观察到自己所编的程序是否符合自己的目的,当出现问题时及时处理,可以防止当有大量问题后无法找出错误的地方,可以提高编程的效率,也有利于最终将程序编写出来。5.2 实验的结果 图5.3 播送定时响闹时 图5.4 上课定时响闹 图5.5 下课定时响闹 图5.6 灯控定时响闹 图5.7 上课定时设定5.3 实验的问题
36、实验中出现问题最多的就是LCD显示,又是显示出乱码,又是是不断闪烁的输入标题,有的那么是光标的来来回回闪烁而不是固定在某一位,这些问题根本上都是由于LCD刷新的问题上,有时候由于逻辑上的先后顺序没有做好,有的完全是由于缺少必要的逻辑区分,使得显示在程序执行的过程中LCD不单单刷新了我所需要的内容,也将我此时不需要的内容也刷新出来,所以屏幕上的内容是闪烁的,因此我加了4个根本变量进行控制,以此来实现所需要的刷新。同时整个延时又是非常重要的,在进行按键设定时这个问题就出现了,有时候按一下会会进行几个需要的操作,使得结果不符合我的要求,所以应用刚开始编写程序时不断适当增加延时使得程序渐渐符合要求。6
37、 小结与体会 通过此次的单片机课程设计让我学到了许多新的知识,让我受益匪浅,其中对1602LCD液晶显示器有了非常深刻的认识。 刚开始分到课题时,我便开始研究这个课题,由于我们的课题是在题目4的根底上改正来的,因此我先研究了一下题目4的要求以及原理,再结合我们的课题让我对这个课题有了一些了解,下午时我们和大多数同学一样先将电路图画了出来,但是当我做完这个课题过后,我很同意老师的意见,不应当立即画电路图,因为我们对整个课题还不是很了解,对于Proteus软件也不懂,结果就是我们用了一下午只画了一张图,而且对于整个课程设计课题的理解毫无帮助。由于我们对课题的理解有困难,不能够将课题所要求的内容完全
38、弄明白,因此我们向李老师寻求帮助,帮我们把我们的课题分析了一下,听过之后我们根本已经理解了这个课题,但是对于具体实施还是没有头路,当我在实验室纠结1602LCD液晶显示器到底是如何工作时,夏老师告诉我Proteus软件中就有相关的例子,于是我便通过自己所找到的资料以及这个例子自学了LCD显示器,由于例子是用c语言写的,所以最终我也选择使用c语言来编写程序,但是在以后我所遇到的困难远远不止这些。首先我要自学相关的c语言,同时我在网上找到了一些相关的资料学习了一下,并结合李老师对课题的分析,让我对这个课题有了自己的思路。首先,我就把我的思路认真的整理下来,然后规划好每一块所要完成的任务,然后再用K
39、eil软件编写出来,在进行联调,每一小步的调试都必须做到没有问题,只有这样在总的联调时不会因为问题太多而做不出来。 在以后的几天里我都在学习和使用c语言,让我对LCD显示器有了更多的认识,但是在整个程序编写过程中问题根本都处在LCD显示上,一遍遍的尝试后总会出现一些问题,曾经我也因为最后的一点点问题想向老师请教,最后自己没有解决的时候甚至想放弃,但是最终我还是坚持下来,并最终完成了程序的根本要求,并且通过了李老师的第一次检查,并对李老师提出的一些不满足的地方进行了修改,但是这些修改在进过之前所设计中遇到的问题来说也挺难得,但是我很快就解决掉了,因为我对自己的程序以及LCD显示器有了好好地认识,
40、从而最后实现了比拟好的结果,当李老师验收过后感到非常的快乐,在此我非常感谢李老师对我设计过程中提供的帮助,以及最后对我设计成果的认可。 虽然在这一周半的课程设计中每时每刻都让我在思考我的课题,同时由于相关网络资源的缺乏曾经使我在用汇编语言还是应用c语言徘徊过,但是当我选择其中一个时我就坚持了下来,并通过不断地努力在不断地更改程序,可以说整个课程设计是非常的痛苦的,因为我曾经想放弃过,但是我最终还是坚持了下来,并通过自己坚持不懈的努力完成此次课题任务。虽然整个课程设计的过程有点痛苦,但是当我看到自己的最终成果时还是很开心,因为我这几天的努力没有白白浪费,培养了我独立思考的能力,提高我的自学以及应
41、用能力,这将是我以后学习生活的非常珍贵的经历。在编写程序的过程中每一块的认真编写才为以后整个程序的完成奠定根底,正如我们在平时的生活中一样,只有不断地积累,才会为以后更大的收获打下坚实的根底,而此次的课程设计就可以当做我的一次小小的积累,可以说这是我大学以来最让我纠结的一次课程设计,也是第一个让我有放弃的念头的课程设计,当我最终调出程序的那一刻让我明白,有时候在那自暴自弃还不如竭尽自己的权力去解决这个问题,在这过程中确实会有许多麻烦,有时会把本来没有的问题弄出来,有时经过一次次的调试还是达不到自己的要求,但是只要我们坚持住,不放弃还是会解决的。 回首这一周多的单片机课程设计,发现自己的程序按模
42、块划分还不是很难,和当初刚刚拿到题目时的各种不明白、各种不懂发现自己真的收获了很多,并且在看看相关类似的课题时能够根本找出根本的设计思路,对于用到602LCD液晶显示器相关的内容能够做出相关 的反响,这个显示器曾经让我绞尽脑汁依旧不懂,曾经让我的程序漏洞百出,但是最终我征服了它,这是我的一大收获。同时在李老师和夏老师的催促下能够按时到达实验室,从而合理的分配和合理使用了课程设计的时间。 最后,我要非常感谢李老师和夏老师在课程设计中提供的帮助,以及李老师最后对我课程设计结果的肯定。 参 考 文 献 1 张毅刚主编,单片机原理及应用,北京:高等教育出版社,2004 2 陈涛编著,单片机应用及C51
43、程序设计,北京:机械工业出版社,2021 3 周润景主编,PROTEUS入门实用教程,北京:机械工业出版社,2007 4 皮大能主编,单片机课程设计指导书,北京:北京理工大学出版社,2021 5 楼然苗主编, 单片机实验与课程设计(Proteus仿真版),浙江:浙江大学出版社, 2021 附录 设计程序#include#define uint unsigned int #define uchar unsigned char Uint i,miao,fen,fen1,fen2,fen3,fen4,shi,shi1,shi2,shi3,shi4,flag1,flag2,flag3,flag4,fl
44、ag5,aa,K1num,K2num,K3num,K4num,N;/K1num-K1按键被按下的标记变量,K2num-K2按键被按下的标记变量,K3num0-K3按键被按下的标记变量uchar code table" H.I.T CHINA "/定义初始上电时液晶默认显示状态uchar code table2" TIME"uchar code Alarm_0" GBDS "uchar code Alarm_1" SKDS "uchar code Alarm_2" XKDS "uchar code
45、 Alarm_3" DKDS "uchar code Alarm_00"GB "uchar code Alarm_11"SK "uchar code Alarm_22"XK "uchar code Alarm_33"DK "uchar code deng" LIGHTING "sbit K1P10;/四个按键sbit K2P11;sbit K3P12;sbit K4P13;sbit rsP20;sbit rwP21; /灯光控制端sbit lcdenP22;sbit LED2
46、P23;/播送控制端sbit ledP24;/发光二极管控制端sbit beepP25;/蜂鸣器控制端void delayuint z/延时函数uint x,y;forxz;x0;x-fory110;y0;y-;void write_comuchar com/液晶写命令函数rs0;rw0;lcden0;P3com;delay5;lcden1;delay5;lcden0;void write_dateuchar date/液晶写数据函数rs1;rw0;lcden0;P3date;delay5;lcden1;delay5;lcden0;void write_sfmuchar add,uchar d
47、ate/液晶写时分秒函数uchar shi,ge;shidate/10;gedate%10;write_com0x80+0x40+add;write_date0x30+shi;write_date0x30+ge;void init/初始化函数uint num;/写液晶的循环控制变量aa0;/中断次数标志K1num0;/K1按键被按下的标记变量K2num0;/K2按键被按下的标记变量K3num0;/K3按键被按下的标记变量K4num0;/K4按键被按下的标记变量flag11;/控制lcd屏刷新的变量flag21;/控制闹钟响闹开启关闭的标记flag31;/控制闹钟响起时,按下K4停止闹钟响闹的标
48、记flag41;/进入闹钟设置时的标记变量flag51;/进入时间设置时的标记变量led1;/发光二极管初始化LED20; /播送初始化rw0; N100;/系统启动时,闹钟时间到发出的声音为连续三次发出“哗的一声miao0;/系统初始化时间fen0;shi7;fen16;/初始化闹钟的时间shi17;fen28;/初始化闹钟的时间shi27;fen310;/初始化闹钟的时间shi37;fen412;/初始化闹钟的时间shi47;beep0;/蜂鸣器初始化lcden0;/液晶使能端初始化write_com0x38;/1602液晶初始化,设置16*2显示。5*7点阵,8位数据接口write_co
49、m0x0c;/设置开显示,不显示光write_com0x06;/写一个字符后地址指针自动加1write_com0x01;/显示清0数据指针清0write_com0x80;/将数据指针定位到第一行,第一个字处fornum0;num15;num+/显示闹钟标示: H.I.T CHINA write_datetablenum;delay10;write_com0x80+0x40+11;/写出时间显示局部的两个冒号write_date':'write_com0x80+0x40+14;write_date' 'write_com0x80+0x40+15;write_dat
50、e' 'write_sfm12,fen;/送去液晶显示秒分时write_sfm9,shi;TMOD0x01;/设置定时器0为工作方式1TH065536-50000/256;/定时器装初值TL065536-50000%256;EA1;/开总中断ET01;/开定时器0中断TR01;void xianshi /系统时间显示write_com0x80+0x40;fori0;i9;i+write_datetable2i;write_com0x80+0x40+11;/写出时间显示局部的两个冒号write_date':'write_com0x80+0x40+14;write_date' 'write_com0x80+0x40+15;write_date' 'write_sfm12,fen;/送去液晶显示秒分时write_sfm9,shi; void time/更改系统时间ifK1num0&&flag31 write_com0x80+0x40;fori0;i9;i+write_datetable2i;ifK10/判断K1按下,那么开始修改时间delay5;flag51;ifK10&&K1num0K1num1;while!K1/判断是否松开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程安全管理培训教材课件
- 工程安全操作规程培训课件
- 工程品质培训课件内容
- 中学校园欺凌事件应急处置预案(三篇)
- 2026年安全生产隐患排查治理资金投入与控制培训试题及答案
- 戈谢病基因治疗的细胞治疗联合方案
- 湖北省咸宁市咸安区2023-2024学年七年级上学期期末文化素质检测英语试题(含答案)
- 慢阻肺疾病负担与肺康复推广策略
- 车辆共享平台合作协议
- 网络安全培训应急响应实战模拟
- 2025-2026学年教科版三年级科学上册期末阶段综合培优卷
- 电子数据取证分析师安全培训水平考核试卷含答案
- 2026中国石油大学(北京)非教师岗位招聘24人笔试模拟试题及答案解析
- 门诊年度总结
- 沈阳盛京军胜农业发展科技有限公司及所属企业2025年面向社会招聘备考题库带答案详解
- 2025年监理工程师考试案例分析(土木建筑)真题答案(完整版)
- 2025 新能源电力交易实战指南
- 血液净化中心(透析室)年度述职报告
- 教科版(2024)二年级科学上册期末综合质量调研卷(含答案)
- 2025年合肥安徽潜晟城市运营管理有限公司公开招聘工作人员考试题库必考题
- 新生儿气道管理临床实践指南(2025版)
评论
0/150
提交评论