版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的课堂信息管理系统控制设计摘要随着科学技术的发展,电子技术的不断更新,越来越多的智能设备被科学家所设计,并应用到人们的生活中,为人们的生活带来了便利。课堂信息管理系统一种应用信息技术的教育教学系统,它能够实现信息的及时共享,便于教学的开展。本设计是课堂信息管理系统。这个系统的核心部件是单片机,外围模块使用红外传感器来实现对教室内人数的检查,检测之后,通过液晶LCD12864进行显示,同时能够计算出勤率,另外通过液晶LCD12864可以展示教师,课程名称,时间等信息。各个模块之间共同协作,完成了课堂信息管理系统的功能。本设计的操作是非常的简单的,而且可靠性较高。关键词:单片机液晶显示人数检测时间模块目录TOC\h\z\t"0,1,2,2,1,2"摘要 绪论课堂信息管理系统一种应用信息技术的教育教学系统,它能够实现信息的及时共享,便于教学的开展。课程信息管理系统一种教育信息化的产品,该系统能够实现将课程信息的公开,便于学生进行教室的查找,同时,其能够实现对于教室人数的统计功能,对于教育教学都是有利的。该系统作为嵌入式系统的一种,是利用单片机进行开发的。在嵌入式的开发系统中,单片机的应用的非常广泛的,进而也使得单片机系统得到了大范围的普及。事实上,单片机系统是应用最多的计算机系统,它被人们应用到了每一个电子产品中。如手机,平板,扫地机器人,空气净化器等,同时也在工业控制领域中得到了极大的应用,像工业生产的流水线,柔性线中,都有大量的应用。因此,单片机系统被人们深入的研究,并为人们的生活所服务。随着整个人类社会经济,科技的不断发展,越来越多的优秀传感器被工程师所设计,并优化之后得到了广泛的普及。在教育教学领域中,课堂信息管理系统所采用的单片机技术和传感器技术就是科技发展的产物,并且随着人们不断的研究,这种系统被人们更加优化,并实现了平台化的设计。本文利用单片机设计该系统,外围模块使用红外传感器来实现对教室内人数的检查,检测之后,通过液晶LCD12864进行显示,同时能够计算出勤率,另外通过液晶LCD12864可以展示教师,课程名称,时间等信息。各个模块之间共同协作,完成了课堂信息管理系统的功能。本设计中,采用的是STC89C52单片机,它是STC公司生产的一款低功耗、超强抗干扰和高速运行的一款单片机,目前在市场上应用十分广泛,结构原理简单,但仍具有很强的抗干扰性和高性能性,内部集成了2个十六位的计数器/定时器,具有计数和定时功能,简单方便,同时还具有串口中断触发、定时器中断触发、外部中断触发等功能,操作简单易学。它的编辑指令代码采用C语言,程序下载方便快捷,且完全兼容传统的8051单片机。其内部具有USART\IO\TIM\FLASH\外部中断等众多功能,其FLASH大小为8K,完全可以存储大型工程的编辑代码文件,同时FLASH还具有掉电存储功能,不易被意外擦除,大容量的存储,可以保存大量内部的特殊变量,省掉额外附加的外部存储芯片,在工作状态下,工作电流非常小,低功耗优势明显,该单片机发展时间较长,相关技术比较成熟稳定,被广泛的应用来开发相关电子产品。1硬件设计1.1单片机电路设计本次设计中选择使用的控制器是8位形式的STC89C51单片机,它是STC公司生产的一款低功耗、超强抗干扰和高速运行的一款单片机,目前在市场上应用十分广泛,结构原理简单,但仍具有很强的抗干扰性和高性能性,内部集成了2个十六位的计数器/定时器,具有计数和定时功能,简单方便,同时还具有串口中断触发、定时器中断触发、外部中断触发等功能,操作简单易学。它的编辑指令代码采用C语言,程序下载方便快捷,且完全兼容传统的8051单片机。其内部具有USART\IO\TIM\FLASH\外部中断等众多功能,其FLASH大小为8K,完全可以存储大型工程的编辑代码文件,同时FLASH还具有掉电存储功能,不易被意外擦除,大容量的存储,可以保存大量内部的特殊变量,省掉额外附加的外部存储芯片,在工作状态下,工作电流非常小,低功耗优势明显,该单片机发展时间较长,相关技术比较成熟稳定,被广泛的应用来开发相关电子产品。STC89C51单片机在与外部电路及各种传感器模块方面,首先突出优势是引脚数量多,具有32个标准IO口,P0.0-P0.7/P1.0-P1.7/P2.0-P2.7/P3.0-P3.7,这些IO引脚具有双向输入输出的功能,实现数据的双向传输,基本满足平时的设计需求。在IO口的功能划分中,有两个IO口INTO/INT1可以作为中断触发用,可以快速响应,进入相应的而中断函数,单片机内部在编辑程序的存储和中间运行数据的缓存方面,配置了128字节大小的RAM存储器。UART通信模块,主要可以作为串口的应用调试和程序的下载烧录。在封装设计方面,STC89C51具有多种形式,适合多种电路设计,在本设计中,采用的是DIP封装。单片机的最小系统电路是单片机工作运行的基本单元电路,最小系统主要包括电路为单片机芯片本身,晶振电路,电源电路和复位电路,晶振电路为单片机的运行提供固定的时钟频率,电源电路则为单片机的运行提供最基本的供电电源,复位电路是单片机在运行过程中,如果发生卡死或者跑飞的错误运行状态时,可以按下复位按键对单片机进行复位重启。单片机最细系统购入图1-1所示,单片机的实物图如图1-2所示。图1-1主控模块电路图图1-2主控模块实物图1.2时钟电路设计本设计中,为了提高系统的实用性,添加了时间功能,利用液晶LCD12864来显示当前的时间。对于时间的精确计时,目前常用的有DS1302时钟芯片,DS12C887实时时钟芯片。这些精确计时的芯片内部都是利用振荡器设计的,实现了微妙级别的准确计时。在本设计中,利用DS1302来进行计时。DS1302是美国DALLAS芯片设计公司面实时时钟设计的一种高性能芯片。他具有低功耗,自带RAM,能够实现年月日,时分秒的精确计时,同时能够自动进行闰年补偿。DS1302的电路图设计如图1-3所示。DS1302实物图如图1-4所示。图1-3时钟模块电路图图1-4时钟模块实物图1.3复位电路设计复位电路包含电阻,电容和按键三部分,单片机RST引脚通过1K的电阻接GND,同时也连接一个0.1F的电容到VCC,此时引脚为低电平,当按下复位按键时,短接电容两端,将RST引脚电平拉为高电平,实现对系统的复位重启。在此设计中,复位电路电路图如图1-5所示,复位电路实物图如图1-6所示:图1-5复位电路电路图图1-6复位电路实物图1.4液晶显示电路设计在本设计中,对于应出勤人数,当前人数,出勤率,课程信息,时间信息的显示,采用的是LCD12864,该显示模块具有的分辨率为128×64,该模块的内部是有8192个16*16点汉字,以及128个16*8点ASCII字符集组成的,进而可以灵活的对汉字,数字,英文进行显示。同时,通过特定的取模工具还能够实现对特殊图形的显示。该模块还有一大特点就是低功耗,其实物图如图3-12所示。液晶LCD12864的基本参数如下:1、 低电压供电,供电电压为3V到5.5V2、 高分辨率,分辨率为128*643、 内置汉字字库,方便进行汉字的显示4、 内置128个16*8的点阵字符,方便显示各种字符5、 2MHZ的时钟晶振,保证了显示的稳定6、 背光方式采用高亮的白色LED灯,通过VO引脚可以调整背光亮度7、 通信方式分为串行和并行,方便进行电路设计和程序开发8、 内置DC-DC模块,无需额外电源。在本系统中,液晶LCD12864与STM32单片机的PAIO和PCIO进行连接,完成数据的通信,RS,RW,EN与单片机的PBIO进行连接,完成数据的通信,进而控制数据显示,在此设计中,液晶显示模块电路图如图1-7所示,液晶显示模块实物图如图1-8所示:图1-7液晶显示模块电路图图1-8液晶显示模块实物图1.5红外传感器电路设计本次设计中,对于人数的检测,本设计中,采用的是红外光电反射传感器,红外光电反射传感器俗称为红外对管,它是人数检测的常用传感器。本设计中,选择使用TCRT5000红外光电反射传感器,它的主要工作原理为模块上的红外发射二极管不断发射红外线,红外接收二极管一直处于实时接受检测状态,当发射出去的红外线反射回来强度不够大或没有反射回来时,光敏三极管一直处于关闭状态,这时的模块输出端一直输出低电平,单片机引脚采集该低电平信号,判断外界状态;当发射出去的红外线反射回来强度足够大或完全被反射回来时,光敏三极管处于饱和状态,此时的模块输出端为高电平,单片机采集该高电平信号。该模块内部采用LM393比较器输出,信号干净,波形好,超过15mA,驱动能力强,在输出端有两路输出,一个模拟量输出,一个数字量输出,模拟量端可输出实时变化的电压波形,而数字输出端可输出0/1电平,检测距离为1mm—8mm,工作电压为3.3V—5V,可直接连接单片机电源和供电电源。设计原理图如下图1-9所示。红外光电反射传感器实物图如下图1-10所示。图1-9红外传感器模块电路图图1-10红外传感器模块实物图1.6按键电路设计在本次设计中,老师可以通过按键来设置出勤人数,进行上课,下课,在输入方面,采用的是电路按键。根据常用的按键型号,在按键的选择上我们使用普通机械按键,按键电路设计是较为简单的,一般是采用直接的独立按键来进行设置的。直接与单片机的P3.4/P3.5引脚相连,当单片机按下或弹起时,单片机通过读取IO口的高低电平状态来判断按键的状态,然后执行相应的按键执行程序。按键设置的电路如图3-8所示。按键实物图如图3-8所示。图1-13:独立按键模块电路图图1-14:独立按键模块实物图1.7电路设计总图电路设计总图,见图1-15:图1-15电路设计总图2软件设计2.1程序总流程设计图2-1系统软件总流程图系统软件流程图如图2-1所示,流程图解析:系统上电之后显示对各个模块进行初始化,然后通过DS1302进行计数,教师设置上课人数,然后红外传感器对人数进行检测,并显示课程信息,当老师按下上课按键之后,系统显示出勤率,按下下课按键之后,系统数据清零。循环主程序如下:voidmain(){unsignedcharpsec=0xAA;//秒备份,初值AA确保首次读取时间后会刷新显示EA=1;//开总中断ConfigTimer0(1);//T0定时1msInitDS1302();//初始化实时时钟init_12864(); //lcd12864初始化 init_12864_dis();//lcd12864初始化显示while(1){ KeyAction();//按键扫描 if(setIndex==0&&flag200ms==1){//每隔200ms且未处于设置状态时,flag200ms=0;GetRealTime(&bufTime);//获取当前时间 if(psec!=bufTime.sec)//检测到时间有变化时刷新显示{RefreshTimeShow(); psec=bufTime.sec;//用当前值更新上次秒数 } } }}本系统中,以STC89C52单片机为核心,包含DS1302时钟模块,液晶LCD12864模块,按键模块,红外检测模块根据本系统设计指定要求的功能,系统结构框架图如图2-2所示:图2-2系统功能模块图2.2人数检测程序设计本设计中,采用红外传感器对人数进行检查,将红外传感的输出引脚连接到单片机的P1.1引脚上,单片机就可以通过读取高低电平实现对人数的检测。表2-1传感器引脚说明引脚说明Vcc正电源OUT输出GND地所以本系统人数检测程序则为: if(jin==0) { Delay(1); if(jin==0) { while(!jin); if(renshu<99)renshu++; str[0]=renshu/10+'0';str[1]=renshu%10+'0';str[2]='\0';write_string(2,6,str); } } if(chu==0) { Delay(1); if(chu==0) { while(!chu); if(renshu>0)renshu--; str[0]=renshu/10+'0';str[1]=renshu%10+'0';str[2]='\0';write_string(2,6,str); } }2.3时钟程序设计DS1302具有如下特点:(1)实时时钟功能。芯片能够计时,并能够实现自动整定年、月、周、日、时、分、秒等信息,计时精度高。(2)内部具有31×8的RAM存储空间,可以用于芯片进行临时存储数据,大大提高通信效率;(3)通信简单,与单片机之间仅需三条连接线就能够实现与单片机之间进行通信。(4)芯片的工作电压范围广,2.5-5.5V都能够使得芯片正常工作;(5)芯片功耗非常低;(6)通信电平与TTL电平相兼容,便于单片机进行通信;(7)芯片的工作温度为消费类级别,范围-40℃到+85℃。由以上特点可以看出,DS1302在实时时钟方面,各方面都比较优秀。通过阅读DS1302芯片手册,可以得出,在DS1302的2、3引脚上需要外接一个32.768K晶振,为DS1302的计时提供时钟脉冲,对于在选取这个晶振时一定要选择精度高的。DS1302采用双电源的方式,其中VCC连接到正5V,VCC2外接正3V(外部纽扣电池),两个电源均为直流电源。这样,当系统正常工作时,使用系统电源供电,当系统断电的时候,采用外部电池进行供电,大大的提高了计时的精度,也可以保证在来电之后,时间准确,不需要再进行调整时间。SCLK,I/O,CE为通信引脚,与单片机进行连接。DS1302的引脚说明如表2-2所示。表2-2时钟芯片引脚说明引脚说明VCC2工作电源GND电源地极VCC1备用电源SCLK时钟信号输出I/O数据输入/输出RST复位信号输出单片机通过SCLK,I/O,CE三个引脚与DS1302进行连接,然后进行通信。首先是初始化,然后发送指令,并读取DS1302内部寄存器的数值,实现数据读取。流程图如图2-3所示。图2-3时钟模块程序设计则时钟芯片头文件程序中宏定义数据地址如下:voidDS1302ByteWrite(unsignedchardat){unsignedcharmask;for(mask=0x01;mask!=0;mask<<=1)//低位在前,逐位移出{if((mask&dat)!=0)//首先输出该位数据DS1302_IO=1;elseDS1302_IO=0;DS1302_CK=1;//然后拉高时钟DS1302_CK=0;//再拉低时钟,完成一个位的操作}DS1302_IO=1;//最后确保释放IO引脚}2.4液晶显示程序设计本系统中,采用液晶LCD12864进行温湿度的显示,作为交互界面。单片机对其操作时,首先进行初始化,然后发送指令,确定要在那个位置进行显示,然后发送信息,显示数据,完成最后的显示,其程序流程图如图2-4所示。图2-4显示程序设计其程显示子程序:voidkebiaoxianshi(unsignedintday){if(day==0) { write_string(1,0,"物理林老师1班"); } elseif(day==1) { write_string(1,0,"化学王老师2班"); } elseif(day==2) { write_string(1,0,"英语孙老师3班"); } elseif(day==3) { write_string(1,0,"马哲杨老师4班"); } }
3实物制作与调试3.1实物制作本本系统中,首先对系统方案进行了设计,然后对原理图进行设计,设计完成之后,对程序进行了设计。在实物设计环节,在实验室中,按照原理图中的元器件电气连接关系,进行了焊接。焊接后的实物图如图3-1,3-2所示。 图3-1实物正面图图3-2实物背面图在焊接的过程中,主要用的工具有万用板,电烙铁,斜口钳,镊子,万用表等。通过利用电烙铁进行焊接,利用万用表测试是否有虚焊和短路的情况,最终实现了系统的焊接。在焊接的过程中,主要用的工具有万用板,电烙铁,斜口钳,镊子,万用表等。通过利用电烙铁进行焊接,利用万用表测试是否有虚焊和短路的情况,最终实现了系统的焊接。在进行实物设计时,需要注意以下几个问题:1、严格按照原理图标注的器件选取,不能弄错型号。2、元器件是否有正负极,对于有正负极的元器件,准确判断。3、焊接的时候,一定不要把元器件以及引脚焊接的短路和断路4、焊接过程中,注意安全,不要烫伤。3.2实物调试在完成系统的硬件与软件程序的设计之后就要对系统的整体运行状态进行测试;首先要做的是对硬件进行测试。包括硬件是否短路,各个模块工作是否正常,传感器的电压是否正确。这里首先要对电源VCC与GND端连接进行测试,采用万用表进行测试观察电压是否是设计的电压范围。测试传感器供电电源是否在器件供电电源范围之内,如果引荐测试正确,没有短路与开路状态,测量的电压也在范围之内说明硬件焊接正确。在硬件测试完成之后就需要将第四章编写的程序进行测试,这里需要分步进行,对应硬件模块的各个部分编写对应的程序,然后将程序下载到设备中进行测试观察设备现象,将每一个模块都需要进行测试,必须确保每一个功能模块都可以运行稳定。当测试完成各个模块之后就需要在程序中编写整体的功能逻辑,这个时候要做的就是主函数主循环中按照想要实现的逻辑进行子程序的分布调用。主程序的逻辑功能编写完成之后做整体的测试,整体测试成功之后进行各个数据实验。通过ISP下载烧录,单片机会进行数据的显示如下图:图3-3上电显示在调试的时候,可以通过按键来设置人数,设置到的人数显示如图3-4所示:图3-4人数设置通过红外检测,可以增加或者是减少人数。如下图:图3-5人数检测按键上课按键之后,系统会显示出勤率,如下图。图3-6出勤率在测试时候遇到人数检测传感器的测试结果不正确,这个时候首先去确定硬件状态,检测硬件的电路不存在问题,这个时候就只需要确定编写的程序是否正确,可以通过互联网去查看器件的使用方法的程序,查看别人是否遇到类似的问题,然后对该功能模块加以解决。
4实验性拓展功能4.1目的和意义课堂信息管理系统不仅仅能够显示出勤率,还能够实现教育教学信息的共享,便于老师进行授课。课堂信息管理系统是随着科技的不断发展,传感器技术,电子控制技术的不断发展,使得这种设备不断的改进,进而实现了自动化的智能控制与信息处理方式。随着整个人类社会经济,科技的不断发展,越来越多的优秀传感器被工程师所设计,并优化之后得到了广泛的普及。在教育教学领域中,课堂信息管理系统所采用的单片机技术和传感器技术就是科技发展的产物,并且随着人们不断的研究,这种系统被人们更加优化,并实现了平台化的设计。课堂信息管理系统控制设计,主要是运用红外传感器采集模块采集人数的信息数据,将采集到的数据传输到主控模块,显示器接收并显示数据。通过人数检测,系统能够实现对人数的显示,上座率的统计。这样便于老师了解当前的学生出勤率,利于进行课程的授课。同时系统还能显示当前的时间,课程以及讲课老师,这样让学生易于知道该教室的讲课情况。课堂信息管理系统能完成对教室人数的实时统计,授课信息的显示、是提高教学质量与方便学生学习生活的关键因素之一。因此研究该系统具有重要的意义。4.2思路与构想本系统以单片机为核心,通过DS1302时钟芯片进行计时,利用液晶LCD12864进行显示,同时通过红外计算人数,并在师按下上课按键之后,进行出勤率的统计,同时能够显示课程名称,授课老师,班级信息。则本试验性功能拓展具体内容为:当系统老师按下上课按键之后,系统自动的进行统计出勤率。4.3设计实现该系统通过红外检测模块对人数进行检查,其中,一个放置于入口处,一个放置于出口处,入口处检测到有人的时候,进行人数加一,当出口处检测到有人的时候,人数减一,然后通过液晶LCD12864进行显示,然后当老师按下上课按键之后,系统自动计算出勤率,并通过液晶进行显示。研究或成果与社会、环境、文化、经济、环保等关系课堂信息管理系统一种应用信息技术的教育教学系统,在教育中,通过利用该系统,可以实现教育的信息号共享,便于教学的开展。课程信息管理系统一种教育信息化的产品,该系统能够实现将课程信息的公开,便于学生进行教室的查找,同时,其能够实现对于教室人数的统计功能,对于教育教学都是有利的。本文利用单片机设计该系统,外围模块使用红外传感器来实现对教室内人数的检查,检测之后,通过液晶LCD12864进行显示,同时能够计算出勤率,另外通过液晶LCD12864可以展示教师,课程名称,时间等信息。各个模块之间共同协作,完成了课堂信息管理系统的功能。当然在使用引用该系统的时候,可以根据实际的需要进行外包装的设计,使得该系统看上去更加的精美,更加融入学校的教育环境中。通过此设备的应用,可以实现出勤率的统计,教育教学信息的共享,进而具有广阔的应用前景。在嵌入式的开发系统中,单片机的应用的非常广泛的,进而也使得单片机系统得到了大范围的普及。事实上,单片机系统是应用最多的计算机系统,它被人们应用到了每一个电子产品中。如手机,平板,扫地机器人,空气净化器等,同时也在工业控制领域中得到了极大的应用,像工业生产的流水线,柔性线中,都有大量的应用。因此,单片机系统被人们深入的研究,并为人们的生活所服务。
总结本系统的实现及安装调试过程如下:首先,在课题设计的初期,通过对任务书中对课堂信息管理系统控制设计的基本要求做了详细的解读。然后对题目进行了查阅资料,通过老师的帮助,查阅网络资料,去图书馆查阅资料,通过几种不同的方案的对比最终总结出了要实现系统的基本方案——将单片机作为本系统的核心内容,将时钟芯片和红外传感器为作为本系统的辅助,来实现本系统的出勤率统计和课程信息展示的功能。在确定本系统的使用方案后,接下来是对系统的总体方案进行了设计,确定了硬件的需求,并对具体所需的元器件进行了对比,选出了最合适的元器件,其中主要的元器件包含如下:STC89C52单片机,LCD12864液晶显示屏,时钟芯片,红外传感器等。然后搭建电路,设计实现该系统功能的电路图。通过学习AltiumDesigner软件,并使用此软件进行电路的设计,首先绘制模块电路图,最后整机电路图组合。有过查阅相关程序,并进行修改利用,然后使用Keil对系统的程序进行了编写,使其实现应有的功能。借来下进行实物的组装和焊接,该过程的实现需要仔细的焊接。并在实物焊接完成之后,下载hex文件进行了调试,完成调试后,该系统最终实现了系统的功能。通过深入对基于单片机的公交车自动报站系统进行理解,学习单片机相关知识,最终完成了以下工作的内容。(1)查阅资料,阅读相关的中英文文献,学习相关的案例,设计出系统方案。(2)根据系统的具体功能要求,选择了合理的元器件,设计出了模块电路图和系统整机电路图,对核心元器件参数调试,实现了系统的最优。(3)设计了系统的程序,利用流程图表述各个模块之间的关系,实现系统功能。(4)焊接实物,最终实现系统的功能。具体实现的功能:1、系统具有时间显示功能,能够显示时间。2、系统具有人数统计功能,能够计算出勤率。3、具有课程信息显示功能,方便学生了解当前的课程。本系统的设计还有很多不足之处,在设计本系统的过程中,由于自身的储备知识的不足,无法将更人性化、更智能化、更便捷话的功能结合到本系统之中,如无法实现与手机之间的联网控制,这将在以后的学习及工作中继续改进升级。参考文献[1]巫春玲,冯志文,钟沈豪,等.基于人脸识别技术的高校课堂自动考勤管理系统[J].智能建筑与城市信息,2020,000(005):20-24.[2]孙沫丽,李倩,颜萌,等.高校教师课堂管理系统的设计与实现[J].电脑知识与技术:学术版,2020,16(24):3.[3]李景富,邱栋.高校课堂自主考勤管理系统设计与实现研究[J].2020.[4]E.O.Badmus、O.P.Odekunle、D.0.Qyewobi.SmartFingerprintBiometricandRFIDTime-BasedAttendanceManagementSystem,2021[5] WangX,XinzhengL,JiangW,etal.DesignofAutomaticUniversityClassroomAttendanceandManagementSystemviaMobilePhoneBasedonBluetoothTechnology[J].TechnologyInnovationandApplication,2019[6]黄广树,余建坤.基于单片机的教室人数自动统计系统设计[J].饮食科学,2017(11X):1.[7]郭华,文陈宽,何巧巧,等.基于单片机的教室人数自动统计系统设计[J].电子技术(上海),2016.[8]陈劲雄,李姿,任兴宝.教室人数实时统计系统的研究与设计[J].黑龙江科技信息,2016,000(005):6-6.[9]王青.基于单片机技术的教室节能控制系统实现路径[J].微型电脑应用,2018,034(009):97-99.[10]李鹏飞,接贵祥.基于LabVIEW与单片机的智能教室控制系统的设计[J].电子制作,2016(1):2.[11]赵建新,肖静,张晓雨,等.自习室智能灯控和人数统计系统设计[J].数码设计(上),2019.
附录一系统程序#include<reg52.h>#include<intrins.h>#include"Delay.h"#include"lcd12864.h"structsTime{//日期时间结构体定义unsignedintyear;unsignedcharmon;unsignedcharday;unsignedcharhour;unsignedcharmin;unsignedcharsec;unsignedcharweek;};bitflag1s;//1s定时标志unsignedcharpsecday=0xAA;//日备份,初值AA确保首次读取时间后会刷新显示unsignedcharflag5s=0;//1s定时标志bitflag200ms=1;//200ms定时标志structsTimebufTime;//日期时间缓冲区unsignedcharsetIndex=0;//时间设置索引unsignedinttianshu=0;unsignedcharT0RH=0;//T0重载值的高字节unsignedcharT0RL=0;//T0重载值的低字节unsignedcharrs_buff[3]; //人数显示缓存unsignedcharrenshu=0; //实到人数unsignedcharyingdao=32; //应到人数unsignedcharchuqinlv=0; //出勤率unsignedcharkebiao=0; //课表unsignedinttmr1=0;voidConfigTimer0(unsignedintms);voidRefreshTimeShow();voidKeyAction();voiddaojishi();voidLedScan();externvoidInitDS1302();externvoidGetRealTime(structsTime*time);externvoidSetRealTime(structsTime*time);/*********************************端口定义**********************************/sbitkey1=P3^2;sbitkey2=P3^3;sbitkey3=P3^4;sbitkey4=P3^5;sbitkey5=P3^6;sbitkey6=P3^7;sbitjin=P1^3;sbitchu=P1^4;/*********************************************************************名称:delay_1ms()*功能:延时1ms函数*输入:q*输出:无***********************************************************************/voiddelay_1ms(unsignedintq){ unsignedinti,j; for(i=0;i<q;i++) for(j=0;j<110;j++);}voidInit_Timer1(void){ TMOD|=0x10; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH1=(65536-10000)/256; //重新赋值10ms TL1=(65536-10000)%256; EA=1;//总中断打开 ET1=1;//定时器中断打开 TR1=1;//定时器开关打开// PT0=1;//优先级打开}voidkebiaoxianshi(unsignedintday){if(day==0) { write_string(1,0,"物理林老师1班"); } elseif(day==1) { write_string(1,0,"化学王老师2班"); } elseif(day==2) { write_string(1,0,"英语孙老师3班"); } elseif(day==3) { write_string(1,0,"马哲杨老师4班"); } }voidmain(){unsignedcharpsec=0xAA;//秒备份,初值AA确保首次读取时间后会刷新显示EA=1;//开总中断ConfigTimer0(1);//T0定时1msInitDS1302();//初始化实时时钟init_12864(); //lcd12864初始化 init_12864_dis();//lcd12864初始化显示while(1){ KeyAction();//按键扫描 if(setIndex==0&&flag200ms==1){//每隔200ms且未处于设置状态时,flag200ms=0;GetRealTime(&bufTime);//获取当前时间 if(psec!=bufTime.sec)//检测到时间有变化时刷新显示{RefreshTimeShow(); psec=bufTime.sec;//用当前值更新上次秒数 } } }}/*将一个BCD码字节显示到屏幕上,(x,y)-屏幕起始坐标,bcd-待显示BCD码*/voidShowBcdByte(unsignedcharx,unsignedchary,unsignedcharbcd){unsignedcharstr[4];str[0]=(bcd>>4)+'0';str[1]=(bcd&0x0F)+'0';str[2]='\0';write_string(x,y,str);}/*刷新日期时间的显示*/voidRefreshTimeShow(){//ShowBcdByte(1,1,bufTime.year);ShowBcdByte(4,0,bufTime.mon);ShowBcdByte(4,2,bufTime.day);ShowBcdByte(4,4,bufTime.hour);ShowBcdByte(4,6,bufTime.min);//ShowBcdByte(2,5,bufTime.sec); }/*刷新当前设置位的光标指示*/voidRefreshSetShow(){switch(setIndex){case1:write_guanbiao(4,0,1);break;case2:write_guanbiao(4,2,1);break;case3:write_guanbiao(4,4,1);break;case4:write_guanbiao(4,6,1);break;default:break;}}/*递增一个BCD码*/unsignedcharIncBcd(unsignedcharbcd){if((bcd&0x0F)<0x09)bcd+=0x01;else { bcd&=0xF0; if((bcd&0xF0)<0x90)bcd+=0x10;else bcd&=0x0F; }returnbcd;}/*递增一个BCD码的高位*/unsignedcharIncBcdHigh(unsignedcharbcd){if((bcd&0xF0)<0x90)bcd+=0x10;elsebcd&=0x0F;returnbcd;}/*递增一个BCD码的低位*/unsignedcharIncBcdLow(unsignedcharbcd){if((bcd&0x0F)<0x09)bcd+=0x01;elsebcd&=0xF0;returnbcd;}/*递减一个BCD码*/unsignedcharDecBcd(unsignedcharbcd){if((bcd&0x0F)>0x00)bcd-=0x01;else { bcd|=0x09; if((bcd&0xF0)>0x00)bcd-=0x10;else bcd|=0x90; }returnbcd;}/*递减一个BCD码的高位*/unsignedcharDecBcdHigh(unsignedcharbcd){if((bcd&0xF0)>0x00)bcd-=0x10;elsebcd|=0x90;returnbcd;}/*递减一个BCD码的低位*/unsignedcharDecBcdLow(unsignedcharbcd){if((bcd&0x0F)>0x00)bcd-=0x01;elsebcd|=0x09;returnbcd;}/*递增时间当前设置位的值*/voidIncSetTime(){switch(setIndex){case1:bufTime.mon=IncBcd(bufTime.mon);break;case2:bufTime.day=IncBcd(bufTime.day);break;case3:bufTime.hour=IncBcd(bufTime.hour);break;case4:bufTime.min=IncBcd(bufTime.min);break; default:break;}RefreshTimeShow();RefreshSetShow();}/*递减时间当前设置位的值*/voidDecSetTime(){switch(setIndex){case1:bufTime.mon=DecBcd(bufTime.mon);break;case2:bufTime.day=DecBcd(bufTime.day);break;case3:bufTime.hour=DecBcd(bufTime.hour);break;case4:bufTime.min=DecBcd(bufTime.min);break;default:break;}RefreshTimeShow();RefreshSetShow();}/*右移时间设置位*/voidRightShiftTimeSet(){if(setIndex!=0){if(setIndex<4) { setIndex++; }else { setIndex=1; }RefreshSetShow();}}/*左移时间设置位*/voidLeftShiftTimeSet(){if(setIndex!=0){if(setIndex>1) { setIndex--; }else { setIndex=4; }RefreshSetShow();}}/*进入时间设置状态*/voidEnterTimeSet(){setIndex=2;//把设置索引设置为2,即可进入设置状态LeftShiftTimeSet();//再利用现成的左移操作移到位置1并完成显示刷新 write_com(0x0f);//显示光标并且闪烁 }/*退出时间设置状态,save-是否保存当前设置的时间值*/voidExitTimeSet(bitsave){setIndex=0;//把设置索引设置为0,即可退出设置状态if(save)//需保存时即把当前设置时间写入DS1302{ SetRealTime(&bufTime); }//init_12864_dis();write_com(0x0c);//关闭光标}/*按键动作函数,根据键码执行相应的操作,keycode-按键键码*/voidKeyAction(){ unsignedcharstr[5]; if(jin==0) { Delay(1); if(jin==0) { while(!jin); if(renshu<99)renshu++; str[0]=renshu/10+'0';str[1]=renshu%10+'0';str[2]='\0';write_string(2,6,str); } } if(chu==0) { Delay(1); if(chu==0) { while(!chu); if(renshu>0)renshu--; str[0]=renshu/10+'0';str[1]=renshu%10+'0';str[2]='\0';write_string(2,6,str); } }if(key1==0) { delay_1ms(10); if(key1==0) { while(!key1); if(setIndex==0)//不处于设置状态时{chuqinlv=renshu*100/yingdao; str[0]=chuqinlv/100+'0';str[1]=chuqinlv/10%10+'0'; str[2]=chuqinlv%10+'0';str[3]='\0';write_string(3,4,str);}else LeftShiftTimeSet(); //向左键,向左切换设置位 } } if(key2==0) { delay_1ms(10); { if(key2==0) while(!key2); if(setIndex==0)//不处于设置状态时{if(yingdao<99)yingdao++; str[0]=yingdao/10+'0';str[1]=yingdao%10+'0';str[2]='\0';write_string(2,2,str);}else IncSetTime();//向上键,递增当前设置位的值 } } if(key3==0) { delay_1ms(10); { if(key3==0) while(!key3); if(setIndex==0)//不处于设置状态时{if(yingdao>0)yingdao--; str[0]=yingdao/10+'0';str[1]=yingdao%10+'0';str[2]='\0';write_string(2,2,str)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届江西省吉水县外国语学校六年级数学第一学期期末复习检测试题含解析
- 2027届河北省衡水市故城县数学六年级第一学期期末质量检测试题含解析
- 吉林省长春市名校联考2026-2027学年数学七年级第一学期期末检测试题含解析
- 四川省成都市青羊区2026年四年级数学第一学期期末统考试题含解析
- 哈巴河县2027届数学四上期末教学质量检测模拟试题含解析
- 涿鹿县2027届数学六上期末学业水平测试试题含解析
- 区商贸物流业发展战略研究报告书
- 2027届四川省巴中市恩阳区数学六年级第一学期期末学业质量监测模拟试题含解析
- 2027届河北省邢台市清河县世纪祥昇小学三上数学期末监测试题含解析
- 张家口市尚义县2027届四年级数学第一学期期末学业质量监测模拟试题含解析
- 人体工程学管理制度(3篇)
- 云南曲靖市马龙区第一中学2025-2026学年高一上学期期中考试数学试卷(含答案)
- 军事通信基础知识
- GB/T 31897.201-2025灯具性能第2-1部分:特殊要求LED灯具
- 专题11 阅读理解一轮复习难点突破2(名师点津+名校模拟)原卷版-2026年高考英语一轮复习知识清单
- 2026春夏淘宝天猫运动户外行业鞋服趋势白皮书
- 挖掘机司机培训考试题及答案
- 天津市控告检察业务竞赛初赛试题含答案
- 丙酮安全培训课件
- 腾讯体育管理体系建设
- 2025年修订版部编版语文七年级上册课后生字词拼音+注释
评论
0/150
提交评论