利用单片机实现作息时间控制系统
利用单片机实现作息时间控制系统
摘要本设计详细介绍了利用AT89C52单片机设计时间控制器的方法。
该时间控制器是以AT89C52单片机为核心,扩展一片XICOR公司的X5045组成的小系统,控制一路继电器:可以设定一天中的时间,设定继电器的开启时间和关闭时间,可以清除不需要的定时,能够紧急启动:所有的设定均通过键盘实现,按键具有连击功能,每个状态都有指示灯提示。
我们设计的作息时间控制是用单片机实现的,是为了更好的对时间控制智能化。
时间控制器包括硬件和软件。
硬件部分包括继电器,存储器和显示器接口芯片。
软件部分,主要是主程序设计。
软硬件结合在一起,先调试子程序,然后逐级叠加调试,最后系统调试通过。
时间控制系统可以准确的显示时间,在定时时间到时发出悦耳的铃声提醒同学们按时上下课。
关键词:单片机,控制,时间AbstractDesign details of the AT89C52 single-chip design time using the method of the controller. The time controller is based on AT89C52 single-chip microcomputer as the core, extending the company's X5045 1 XICOR small systems, control relays all the way: You can set the time of day, set to open relay time and closing time, you can removal of unnecessary time, to an emergency start: All the settings are to achieve through the keyboard, function keys with the batter, each state has prompted indicator. We designed the schedule control is achieved with single-chip is a better time for intelligent control. Time controller, including hardware and software. Hardware components, including relays, memory and display interface chip. Software, primarily the design of the main program. Combination of hardware and software, debugging subroutine first, and then overlay level debugging, the adoption of the final system test. Time control system can accurately display the time in the regular time when musical tones to remind students of the school on time.Key words: single-chip microcomputer, control, time前言目前,我国单片机的应用领域主要是工业生产过程控制,数据采集与处理、实时控制及优化控制,主流机型是8位微机。
单片机系统作息时间控制器程序
单片机系统作息时间控制器程序单片机系统作息时间控制器程序#include "reg52.h"#include#define THCO 0xee#define TLCO 0x0#define u8 unsigned charunsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阳极数码管,0-9段码表unsigned char Data_Buffer[6]={0,0,0,0,0,0};//6位数码管unsigned char Hour=6,Min=49,Sec=50;//实时时间unsigned char N_Hour=6,N_Min=50;//闹钟时间unsigned char M_Min=0,M_Sec=0;M_Hour=0;//秒表时间unsigned char Ring_time = 5; //响铃长度unsigned char Mode=0;//按键次数//MODE, 0:实时时钟;1:修改小时;2:修改分钟,3:修改闹钟小时,4:修改闹钟分钟,5:启停闹钟u8Tim[][2]={{6,50},{7,0},{7,25},{8,20},{8,30},{9,15},{9,25},{10,10 },{10,30},{11,15},{11,25},{12,10},{ 13,20},{13,30}, {14,15},{14,25},{15,10},{16,30},{17,0},{17,50},{18,0},{21,30},{23,0}};bit Z_Ring=0;//整点报时标志bit N_Ring =0 ;//启动闹铃标志,1:启动bit Brush_flag=0;//更新数码管标志sbit P10=P1^0; //四个数码管的位码口定义sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit P14=P1^4;sbit P15=P1^5;bit qq=0;sbit K_Mode=P2^0; //按键定义sbit K_UP=P2^1;sbit K_DN=P2^2;sbit K_Net=P3^2;sbit LED1=P2^3; //四个指示灯sbit LED2=P2^4;sbit LED3=P2^5;sbit LED4=P2^6;sbit Clock_Ring = P3^0; //蜂鸣器的位码口定义static unsigned char Bit=0; //静态变量,退出程序后,值保留static unsigned char count=0,K_count=0,M_count;static unsigned char time_n=0;void miaobiao();//秒表函数static unsigned char MB=0;//秒表开启标志static unsigned char MBFW=0;//秒表复位void ring_play(); //声音播放函数void ring_delay(unsigned char x); //声音延时void Z_ring();//整点报时函数void Zring();//整点报时/*************************************************************/ void ring_delay(unsigned char n) //声音延时125*n 毫秒{unsigned char i=125,j;do {do{for (j=0; j<230; j++) _nop_();}while(--i);}while(--n);}/*************************************************************/ void ring_play() //声音播放{Clock_Ring=0;ring_delay(1);Clock_Ring=1;}/*************************************************************/ void Zring()//整点报时{if(Z_Ring==1)//整点报时标志位{ring_delay(4);ring_play(); //播放音乐一次Z_Ring=0;}}/*************************************************************/ void ring()//闹钟{int i =0 ;for(i = 0 ;i <= 23; i++){if(Tim[i][0] == Hour && Tim[i][1] == Min &&Sec<=10)//闹钟相等N_Ring=1; //biaozhiwei }if(N_Ring==1)//闹铃启动{ring_delay(4);ring_play(); //播放音乐一次N_Ring=0;}}/*************************************************************/ void look()//数码管显示{if(Brush_flag==1)//更新数码管显示{Brush_flag=0;if(Mode<=2) //实时时间{Data_Buffer[0]=Hour/10;Data_Buffer[1]=Hour%10;Data_Buffer[2]=Min/10;Data_Buffer[3]=Min%10;Data_Buffer[4]=Sec/10;Data_Buffer[5]=Sec%10;}else if(Mode<=4) //闹钟时间{Data_Buffer[0]=N_Hour/10;Data_Buffer[1]=N_Hour%10;Data_Buffer[2]=N_Min/10;Data_Buffer[3]=N_Min%10;Data_Buffer[4]=M_Sec/10;Data_Buffer[5]=M_Sec%10;}else if(Mode<=5)//秒表时间{ Data_Buffer[0]=M_Hour/10;Data_Buffer[1]=M_Hour%10;Data_Buffer[2]=M_Min/10;Data_Buffer[3]=M_Min%10;Data_Buffer[4]=M_Sec/10;Data_Buffer[5]=M_Sec%10;}}}/*************************************************************/ void main()//主函数{TMOD=0x11; //定时器0初始化TH0=THCO;TL0=TLCO;Clock_Ring=1;TR0=1;ET0=1;EA=1; //开中断TR1=0;ET1=1;while(1){Zring();ring();look();if(Mode==5){miaobiao();}}}/*************************************************************/ void jisuan()//时间计算{count++;if(count>=200) //秒计时,定时器定时5ms,计200次为一秒{ Brush_flag=1; //更新数码管显示count=0;Sec++;if(Sec>=60){Sec=0;Min++;if(Min>=60) //时间计时{Min=0; Hour++;if(Hour>=24)Hour=0;}}}}/*************************************************************/ void del()//显示位操作与小数点处理{Bit++;if(Bit>=6)Bit=0;P1|=0xff; //先关位码P0=Duan[Data_Buffer[Bit]]; //开段码if(count<100&&Bit==1)P0|=0x80;//0.5S中间小数点亮,之后灭,不断循环if(count<100&&Bit==3)P0|=0x80;switch(Bit) //送位码{case 0: P10=0;break;case 1: P11=0;break;case 2: P12=0;break;case 3: P13=0;break;case 4: P14=0;break;case 5: P15=0;break;}}/*************************************************************/ void key()//键盘处理{if(K_Mode==0||K_UP==0||K_DN==0||K_Net==0) //有键按下{K_count++;if(K_count>=30) //消抖处理{if(N_Ring == 1)//闹铃启动{N_Ring = 0;return;}K_count=0;Brush_flag=1;if(K_Mode==0) //修改Mode,{Mode++;if(Mode>=6)Mode=0;if(Mode==0){LED1=1;LED2=1;LED3=1;LED4=1;}//实时时间else if(Mode==1){LED1=0;} //修改小时else if(Mode==2){LED1=1;LED2=0;}//修改分钟else if(Mode==3){LED2=1;LED3=0;}//修改小时else if(Mode==4){LED3=1;LED4=0;}//修改分钟else if(Mode==5){LED4=0;LED3=0;}//秒表}else if(K_UP==0){if(Mode==1) //实时时间小时加{ Hour++; if(Hour>=24)Hour=0; }else if(Mode==2)//实时时间分钟加{ Min++; if(Min>=60)Min=0; }else if(Mode==3)//闹钟时间小时加{ N_Hour++; if(N_Hour>=24)N_Hour=0; } else if(Mode==4)//闹钟时间分钟加{ N_Min++; if(N_Min>=60)N_Min=0; } else if(Mode==5){MBFW=1;}}else if(K_DN==0){if(Mode==1) //小时减{if(Hour==0)Hour=23;else Hour--;}else if(Mode==2) //分钟减{if(Min==0)Min=59;else Min--;}else if(Mode==3) //小时减{if(N_Hour==0)N_Hour=23;else N_Hour--;}else if(Mode==4) //分钟减{if(N_Min==0)N_Min=59;else N_Min--;}else if(Mode==5){MB=!MB;}}if(Mode==3||Mode==4){Tim[qq][0]=N_Hour;Tim[qq][1]=N_Min;}}}else K_count=0;}/*************************************************************/ void timer0() interrupt 1 //中断{TH0=THCO;TL0=TLCO;jisuan();del();key();}/*************************************************************/ void miaobiao()//秒表函数{if (MBFW==1){M_count=0;M_Sec=0;Brush_flag=1;M_Min=0;Brush_flag=1;M_Hour=0;Brush_flag=1; MBFW=0;}else{if(MB==1){M_count++;if(M_count>=20){M_count=0;M_Sec++;Brush_flag=1;if(M_Sec>=100){M_Sec=0;M_Min++;Brush_flag=1; //更新数码管显示} if(M_Min>=60){M_Min=0;M_Hour++;Brush_flag=1;if(M_Hour>=60){M_Hour=0; Brush_flag=1;M_Min=0; Brush_flag=1;M_Sec=0; Brush_flag=1; }}}}}}。
基于单片机的作息时间控制器设计参考文献
基于单片机的作息时间控制器设计参考文献作息时间控制器是一种能够根据人们的作息时间需求自动控制开关的设备,通常用于智能家居系统或办公环境。
在这篇文章中,我将根据您提供的主题——基于单片机的作息时间控制器设计参考文献,从理论和实践两个方面进行全面评估,并撰写一篇有价值的中文文章。
一、引言基于单片机的作息时间控制器设计是智能家居系统中的重要组成部分,它能够根据人们的作息时间需求自动控制照明、电器等设备的开关,提高生活的便利性和舒适度。
本文将从单片机技术、作息时间控制理论与实践等方面进行探讨,旨在为相关领域的设计和研究提供参考。
二、单片机技术在作息时间控制器设计中的应用1. 单片机概述单片机是一种集成了微处理器、存储器和输入输出设备的微型计算机系统,其小巧灵活的特点使其在作息时间控制器设计中得到了广泛的应用。
通过编程控制单片机的输入输出口,可以实现对作息时间控制器的精准控制。
2. 单片机在作息时间控制器设计中的优势(1)精确控制:单片机具有精准的计时和控制功能,能够准确地实现根据时间设定的开关控制。
(2)灵活性:单片机可以根据用户的需求进行编程,实现各种复杂的时间控制模式,满足不同场景下的作息时间需求。
(3)节能环保:通过单片机控制作息时间器,可以有效地节约能源,降低能源浪费。
三、作息时间控制理论与实践1. 作息时间控制理论作息时间控制理论是基于人体生理和心理特点,结合现代生活的节奏和需求,制定出的时间管理原则和方法。
在作息时间控制器设计中,理论的指导作用不可忽视。
2. 作息时间控制器实践案例(1)基于单片机的作息时间控制器硬件设计:通过对各种传感器和执行器的选择与搭配,实现对照明、空调等设备的自动控制;(2)基于单片机的作息时间控制器软件设计:利用单片机的编程功能,实现对时间的准确监测和控制,创建各种时间控制模式。
四、个人观点和总结回顾基于单片机的作息时间控制器设计是一项将理论与实践相结合的工程项目,需要综合考虑单片机技术、作息时间控制理论与实践等多方面的知识。
基于单片机的作息时间控制器设计
单片机原理及系统课程设计专业:电气工程及其自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014 年1 月13 日单片机原理及系统课程设计报告基于单片机的作息时间控制器设计1. 课程设计目的(1)进一步熟悉和掌握单片机的最小系统结构及其工作原理。
(2)掌握单片机的接口技术和键盘扫描、数码管显示的原理及拓展使用方法。
(3)通过课程设计,提高综合运用所学知识的能力,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。
2. 设计方案及原理本设计是作息时间控制器,设计其实现的功能主要有:使用4位七段显示器来显示当前的时间,由LED闪动作为秒计数表示,显示格式为“时分”,并可显示日期,显示格式为“月日”,年份单独显示。
由4个按键来作功能设置,可以设置现在的日期、时间及定时设置时间,一旦设置的时间到则作出相应动作:发光二极管闪亮,同时播放音乐。
单数码管显示模块片机最按键控制模块小系闹钟模块统系统方框图图13. 硬件设计3.1单片机AT89C52提供以下标准功能:8K字节FLASH闪存,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
3.2 按键控制模块按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。
按键控制模块主要有由四个按键1单片机原理及系统课程设计报告组成:K1、K2、K3、K4、。
其中K1的功能是模式切换键;K2的作用是加一;K3的作用是闹钟使能;K4的作用是减一。
K1KKK按键控制模23.3 数码管显示模块时间显示模块主要由四位七段数码管来显示,配合按键控制模块的校正与设定时间,相应的显示。
基于单片机的校园作息时间系统控制
基于单片机的校园作息时间系统控制
校园作息时间系统控制可以使用单片机来实现。
具体步骤如下:
1. 设计电路:设计一个电路,通过单片机控制要显示的时间、
切换时间区间、自动切换时间、亮度等功能。
2. 编写程序:使用C、Assembly等编程语言编写单片机程序,
实现校园作息时间系统控制功能。
3. 烧录程序:将编写好的程序通过编程器烧录到单片机芯片中。
4. 测试验证:将芯片插入到实验板中,将开发板与电脑连接,
通过串口调试工具测试程序是否运行正常,验证控制功能是否正确。
5. 改进优化:对程序中出现的问题进行调试和优化,达到更好
的控制效果。
总结:基于单片机的校园作息时间系统控制可以实现自动切换
时间、显示当前时间等功能,是一种便捷、高效的控制方式。
基于单片机的校园作息时间控制系统资料
图2系统部分原理图图3键盘接口原理图图 4 显示部分原理图图5输出部分原理图DS12887的功能及工作原理DS12887是一个DALLAS公司生产的实时时钟芯片,它把时钟芯片所需的晶振电路和外部锂电池等相关电路都集成与芯片内部,具有低功耗、工作稳定、功能集成度高、计时精确、与各种微处理器接口简便、在没有外接电源情况下可正常工作10年等一系列优点。
它主要由振荡电路、分频电路、周期中断、方波选择电路14字节时钟和控制单元、114字节非易失RAM、十进制、二进制加法器、总线接口电路、电源和写保护单元、内部锂电池等部分组成。
图 6 DS12887的引线端子排列图各引线端子功能分配如下:Ucc、GND——直流电源(+5V)电压,当Ucc低与 4.25V时读写禁止,当Ucc低与3V 时,电源切换至内部锂电池。
MOT——(模式选择):MOT接Ucc为MOTROLA方式,MOT接GND为INTEL方式。
SQW——方波输出。
AD0~AD7——双向数据/地址复用线。
AS——(地址选通输入)用于实现信号分离,在AS信号的下降沿把地址锁入DS12887。
DS——数据选通或读输入。
R/W——读写输入。
CS——片选输入。
IRQ——中断申请输入。
RESET——复位输入。
DS12887利用AS(地址选通信号),可以对总线分时复用的微处理器实现简便的接口。
从00H—09H 10个单元为时钟、日历及闹钟单元,其内容可由程序写入或读出。
其初始值在芯片初始化时由程序写入,其值可用BIN值(二进制数,编程时写作16进制数)或BCD值,这由寄存器B的DM位(b2)决定。
时钟初始化时,寄存器B的SET位(b7)必须置1,采用每天12H或24h制有寄存器B的24/12位(b1)决定。
在12h制时,时字节的最高位为1表示下午(PM)。
在各单元的内容写完之后,将寄存器B的SET位清0,时钟即开始运行。
这三个闹钟单元有两种用法。
①根据写入到三个闹钟单元的时分秒值,每天产生闹中断一次;②在各闹钟单元写入“自由”码=0C0~0FFH,即最高两位为“1”时为“自由”状态。
基于单片机的作息时间控制器设计参考文献
文章标题:基于单片机的作息时间控制器设计参考文献在当今社会中,人们的生活节奏越来越快,作息时间管理成为了一项越来越重要的关注点。
而基于单片机的作息时间控制器设计正是一个应对这一挑战的解决方案。
本文将从深度和广度的角度,对基于单片机的作息时间控制器设计进行综合评估,并为读者提供有价值的参考文献。
一、引言基于单片机的作息时间控制器设计是以单片机为核心的一种智能化时间管理系统,旨在帮助人们合理安排作息时间,提升生活质量。
本文将围绕这一主题展开探讨,并提供深入的参考文献。
二、单片机技术在作息时间控制中的应用1. 单片机技术的基本原理及特点单片机是一种集成了微处理器、内存和I/O接口的芯片,具有体积小、功耗低、成本低等特点,适用于作息时间控制器的设计。
2. 基于单片机的作息时间控制器设计原理基于单片机的作息时间控制器设计主要包括硬件设计和软件设计两个方面,其中硬件设计包括时钟电路、显示模块等,软件设计包括时间设置、定时功能等。
3. 单片机技术在作息时间控制中的优势相比传统的作息时间控制器,基于单片机的设计具有更高的稳定性、更大的灵活性和更丰富的功能,能够更好地满足人们对作息时间管理的需求。
三、基于单片机的作息时间控制器设计的发展现状1. 相关领域的研究现状当前,基于单片机的作息时间控制器设计已经在家居领域、办公场所等得到了广泛的应用,并逐渐向智能化、网络化方向发展。
2. 研究热点和难点在基于单片机的作息时间控制器设计领域,研究人员主要关注于提升系统的稳定性、完善用户体验、降低成本等方面,同时也面临着软硬件协同设计、能耗管理等难点。
四、基于单片机的作息时间控制器设计的关键技术和挑战1. 关键技术在基于单片机的作息时间控制器设计中,关键技术包括低功耗设计、嵌入式系统设计、数据通信技术等,这些技术的应用将直接影响到系统的性能和稳定性。
2. 挑战基于单片机的作息时间控制器设计面临着功耗管理、通信协议兼容性等挑战,同时在用户需求多样化和市场竞争激烈的情况下,如何设计出满足市场需求的作息时间控制器也是一个巨大的挑战。
基于单片机的校园作息时间的控制系统
基于单片机的校园作息时间的控制系统摘要校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。
如上下课打铃及扩音设备的开与关、教学楼照明的定时开与关、学生宿舍灯及校园路灯的定时开关的控制。
该控制系统是采用AT89S52单片机来实现对上述开关量的控制,利用DS12887时钟芯片来提供时钟信息,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。
关键词:作息时间控制; AT89S52; DS12887AbstractThe school timetable in control system is mainly used for the school, to 24 hours to switch off automatic cycle of a control. class and class as a bell and amplifying the open and shut, open and teaching the timing and dormitory campus students and the timing of the light switch in the control.The control system is adopted at89s52 monolithic integrated circuits to switch to the amount of control and use ds12887 the chip to provide the information, there are six digital tube, can live time, the system input keyboard have to modify the real-time the clock, the system simple, reliable, cheap, to control the time accurately and system of its small size, etc.Key word:the daily timetable control at89s52 ds12887目录第1章作息时间控制钟系统设计 (3)1.1系统整体设计 (3)1.2 控制钟时刻分析表 (4)第二章硬件总体设计及各部分说明 (5)2.1 控制钟硬件设计 (5)2.2 单片机控制部分 (5)2.3 键盘部分 (6)2.4 显示部分 (6)2.4响铃及扩音部分 (7)第三章时钟芯片功能介绍 (9)第四章作息时间控制钟程序设计 (13)4.1程序流程图 (13)4.2 源程序清单 (1)参考文献 (1)致谢词 (2)附录I (3)附录II ................................................. 错误!未定义书签。
单片机控制作息时间
表1.1 作息时间控制表时间事件动作6:00 宿舍通电,教室灯开D1亮、D2亮8:00 第一节上课铃响LS1响,延时15S 8:45 第一节下课铃响LS1响,延时15S 8:55 第二节上课铃响LS1响,延时15S 9:40 第二节下课铃响LS1响,延时15S 10:00 第三节上课铃响LS1响,延时15S 10:45 第三节下课铃响LS1响,延时15S 10:55 第四节上课铃响LS1响,延时15S 11:40 第四节下课铃响LS1响,延时15S 14:30 第五节上课铃响LS1响,延时15S 15:15 第五节下课铃响LS1响,延时15S 15:25 第六节上课铃响LS1响,延时15S 16:10 第六节下课铃响LS1响,延时15S 16:30 第七节上课铃响LS1响,延时15S 17:15 第七节下课铃响LS1响,延时15S 17:25 第八节上课铃响LS1响,延时15S 18:10 第八节下课铃响LS1响,延时15S19:30 第九节上课铃响路灯开LS1响,延时15SD3亮20:15 第九节下课铃响LS1响,延时15S 20:25 第十节上课铃响LS1响,延时15S 21:10 第十节下课铃响LS1响,延时15S 23:00 宿舍灯熄灭,路灯熄灭,教室等灭D1灭、D2灭、D3灭#include<REG52.H>#define uint unsigned int#define uchar unsigned charuchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//***************************************************************************** ********sbit K1=P1^4;sbit K2=P1^5;sbit K3=P1^6;sbit K4=P1^7;sbit sd=P3^6;sbit BEEP=P3^7;uchar m=5,h=20,sec=58,cnt=0,x,y,qian,bai,shi,ge;uchar set_h=12;uchar set_m=58;uchar month=7;uchar day=5;uchar th0_f;uchar tl0_f;uint year=2010;void delay(uchar t);//延时函数void scankey(void); //按键扫描函数void init(void); //初始化函数void display(void);//显示函数void set_time(void);//设定时间显示辅助函数void set_day(void); //设定日期显示辅助函数void m_choose(void); //月份选择函数void bianhuan(void); //年份显示辅助函数void bianhuan1(void);//时间显示辅助函数changedata(uchar *song,uchar *diao,uchar *jie);音乐符号串解释函数void play(uchar *songdata);//奏乐函数//世上只有妈妈好uchar code mamahao[]={"6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|""2.3_55_6_|321-|5.3_2_1_,6_1_|,5--"};uchar code freq[36*2]={0xA9,0xEF,//00220HZ ,1 //00x93,0xF0,//00233HZ ,1#0x73,0xF1,//00247HZ ,20x49,0xF2,//00262HZ ,2#0x07,0xF3,//00277HZ ,30xC8,0xF3,//00294HZ ,40x73,0xF4,//00311HZ ,4#0x1E,0xF5,//00330HZ ,50xB6,0xF5,//00349HZ ,5#0x4C,0xF6,//00370HZ ,60xD7,0xF6,//00392HZ ,6#0x5A,0xF7,//00415HZ ,70xD8,0xF7,//00440HZ 1 //120x4D,0xF8,//00466HZ 1# //130xBD,0xF8,//00494HZ 2 //140x24,0xF9,//00523HZ 2# //150x87,0xF9,//00554HZ 3 //160xE4,0xF9,//00587HZ 4 //170x3D,0xFA,//00622HZ 4# //180x90,0xFA,//00659HZ 5 //190xDE,0xFA,//00698HZ 5# //200x29,0xFB,//00740HZ 6 //210x6F,0xFB,//00784HZ 6# //220xB1,0xFB,//00831HZ 7 //230xEF,0xFB,//00880HZ `10x2A,0xFC,//00932HZ `1#0x62,0xFC,//00988HZ `20x95,0xFC,//01046HZ `2#0xC7,0xFC,//01109HZ `30xF6,0xFC,//01175HZ `40x22,0xFD,//01244HZ `4#0x4B,0xFD,//01318HZ `50x73,0xFD,//01397HZ `5#0x98,0xFD,//01480HZ `60xBB,0xFD,//01568HZ `6#0xDC,0xFD,//01661HZ `7 //35};//******************************//音乐符号串解释函数changedata(uchar *song,uchar *diao,uchar *jie) {uchar i,i1,j;char gaodi;uchar banyin;uchar yinchang;//Òô³¤uchar code jie7[8]={0,12,14,16,17,19,21,23};*diao=*song;for(i=0,i1=0;;){gaodi=0;banyin=0;yinchang=4;if((*(song+i)=='|') || (*(song+i)==' ')) i++;switch(*(song+i)){case ',': gaodi=-12;i++;break;case '`': gaodi=12;i++;break;}if(*(song+i)==0){*(diao+i1)=0;*(jie+i1)=0;return;}j=*(song+i)-0x30; i++;j=jie7[j]+gaodi;yinc: switch(*(song+i)){case '#':i++;j++;goto yinc;case '-':yinchang+=4;i++;goto yinc;case '_':yinchang/=2;i++;goto yinc;case '.':yinchang=yinchang+yinchang/2;i++;goto yinc;}*(diao+i1)=j;*(jie+i1)=yinchang;i1++;}}//****************************************** //奏乐函数void play(uchar *songdata){uchar i,c,j=0;uint n;uchar diaodata[40];uchar jiedata[40];changedata(songdata,diaodata,jiedata);TR1=1;for(i=0;diaodata[i]!=0;i++) {tl0_f=freq[diaodata[i]*2];th0_f=freq[diaodata[i]*2+1];for(c=0;c<jiedata[i];c++){for(n=0;n<24;n++){scankey();if(y==0) {TR1=0;return;}display();}}TR1=0;for(n=0;n<500;n++);TR1=1;}TR1=0;}void time0(void) interrupt 1{TH0=0x3c;TL0=0xb0;cnt++;if(y==1&&(set_h==h&&set_m==m))sd=~sd;else sd=1;if(cnt==20){sec++;cnt=0;if(sec==60){sec=0;m++;if(m==60){m=0;h++;if(h==24){h=0;day++;switch(month){case 1:if(day==32){month++;day=1;}break;case 2:if(year%4==0){if(day==30){month++;day=1;}}else{if(day==29){month++;day=1;}}break;case 3:if(day==32){month++;day=1;}break;case 4:if(day==31){month++;day=1;}break;case 5:if(day==32){month++;day=1;}break;case 6:if(day==31){month++;day=1;}break;case 7:if(day==32){month++;day=1;}break;case 8:if(day==32){month++;day=1;}break;case 9:if(day==31){month++;day=1;}break;case 10:if(day==32){month++;day=1;}break;case 11:if(day==31){month++;day=1;}break;case 12:if(day==32){month++;day=1;}break;}if(month==13){month=1;year++;}}}}if(x==0)bianhuan1();}}timer1() interrupt 3{TL1=tl0_f;TH1=th0_f; //调入预定值BEEP=~BEEP; //取反音乐输出IO}void main(void){init();while(1){display();scankey();if(y==1&&(set_h==h&&set_m==m))play(mamahao);else BEEP=0;}}void init(void){BEEP=0;TMOD=0x11;TH0=0x3c;TL0=0xb0;ET0=1;TR0=1;ET1=1;TR1=0;EA=1;}void display(void){P2=0xfe;P0=a[qian];if(x%2==1&&cnt>=10)P0&=0x00;delay(20);P2=0xfd;P0=a[bai];if(x%2==1&&cnt>=10)P0&=0x00;else if(x==0&&cnt>=10)P0|=0x80;delay(20);P2=0xfb;P0=a[shi];if(((x%2==0&&x!=0)||x==7)&&cnt>=10)P0&=0x00;delay(20);P2=0xf7;P0=a[ge];if(((x%2==0&&x!=0)||x==7)&&cnt>=10)P0&=0x00;delay(20);}void m_choose(void){switch(month){case 1:if(day==32)day=1;else if(day==0)day=31;break;case 2:if(year%4==0){if(day==30)day=1;else if(day==0)day=29;}else{if(day==29)day=1;else if(day==0)day=28;}break;case 3:if(day==32)day=1;else if(day==0)day=31;break;case 4:if(day==31)day=1;else if(day==0)day=30;break;case 5:if(day==32)day=1;else if(day==0)day=31;break;case 6:if(day==31)day=1;else if(day==0)day=30;break;case 7:if(day==32)day=1;else if(day==0)day=31;break;case 8:if(day==32)day=1;else if(day==0)day=31;break;case 9:if(day==31)day=1;else if(day==0)day=30;break;case 10:if(day==32)day=1;else if(day==0)day=31;break;case 11:if(day==31)day=1;else if(day==0)day=30;break;case 12:if(day==32)day=1;else if(day==0)day=31;break;}}void set_time(void){qian=set_h/10;bai=set_h%10;shi=set_m/10;ge=set_m%10;}void set_day(void){qian=month/10;bai=month%10;shi=day/10;ge=day%10;}void bianhuan(void){qian=year/1000;bai=year%1000/100;shi=year%100/10;ge=year%10;}void bianhuan1(void){qian=h/10;bai=h%10;shi=m/10;ge=m%10;}void scankey(void){if(K1==0){delay(20);if(K1==0){while(K1==0);x++;if(x==3)set_time();else if(x==5)set_day();else if(x==7)bianhuan();else if(x==8){x=0;bianhuan1();} }}if(K2==0){delay(20);if(K2==0){while(K2==0);switch(x){case 0:break;case 1:h++;if(h==24)h=0;bianhuan1();break;case 2:m++;if(m==60)m=0;bianhuan1();break;case 3:set_h++;if(set_h==24)set_h=0;set_time();break;case 4:set_m++;if(set_m==60)set_m=0;set_time();break;case 5:day++;m_choose();set_day();break;case 6:month++;if(month==13)month=1;set_day();break;case 7:year++;bianhuan();break;}}}if(K3==0){delay(20);if(K3==0){while(K3==0);y++;if(y==2)y=0;}}if(K4==0){delay(20);if(K4==0){while(K4==0);switch(x){case 0:break;case 1:h--;if(h==255)h=23;bianhuan1();break;case 2:m--;if(m==255)m=59;bianhuan1();break;case 3:set_h--;if(set_h==255)set_h=23;set_time();break;case 4:set_m--;if(set_m==255)set_m=59;set_time();break;case 5:day--;m_choose();set_day();break;case 6:month--;if(month==0)month=12;set_day();break;case 7:year--;bianhuan();break;}}}}void delay(uchar t) //延时0.1毫秒 {uchar i;do{for(i=0;i<23;i++);;;} while(t--);}附2:系统原理图 XTAL218XTAL119ALE 30EA 31PSEN 29RST 9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52234567891RP1RESPACK-8LS1SPEAKERR1200模式切换加一使能闹钟减一D1LED-RED R21k Q1NPN K1K2K3K4C133pF X1CRYSTAL C233pFC310uF R310k。
单片机作息时间的控制系统
济源职业技术学院毕业设计题目单片机作息时间的控制系统系别电气工程系专业应用电子技术班级电技0801班姓名李芳学号********指导教师李春光日期2010年12月设计任务书设计题目作息时间的控制设计要求:(1)作息时间能控制电铃。
(2)作息时间能启动和关闭放音机,使用6位七段显示器来显示现在的时间。
(3)显示格式为“时分秒”从左到右依次显示。
(4)具有按键来作功能设置,可以设置现在的时间及显示定时设置时间一旦时间到则发出一阵声响,同时继电器启动,可以控制放音机开。
设计进度要求:第一周:领取题目,分析设计题目原理及设计思路。
第二周:去图书馆查阅资料,制定大纲。
第三周:编写程序,拟定论文。
第四周:上机调试程序,验证实验效果。
第五周:根据设计要求,进行编排电子稿。
第六周:由指导教师审核,进行更改指正。
第七周:交正规电子稿,由指导教师评阅。
第八周:进行毕业论文答辩。
指导教师(签名):摘要本设计详细介绍了利用AT89C51单片机设计时间控制器的方法。
该时间控制器是以AT89C51单片机为核心,扩展一片XICOR公司的X5045组成的小系统,控制一路继电器:可以设定一天中的时间,设定继电器的开启时间和关闭时间,可以清除不需要的定时,能够紧急启动:所有的设定均通过键盘实现,按键具有连击功能,每个状态都有指示灯提示。
我们设计的作息时间控制是用单片机实现的,是为了更好的对时间控制智能化。
时间控制器包括硬件和软件。
硬件部分包括继电器,存储器和显示器接口芯片。
软件部分,主要是主程序设计。
软硬件结合在一起,先调试子程序,然后逐级叠加调试,最后系统调试通过。
时间控制系统可以准确的显示时间,在定时时间到时发出悦耳的铃声提醒同学们按时上下课。
关键词:单片机,控制,时间目录摘要 (II)1 总体设计方案 (1)2 硬件电路设计 (2)2.1AT89C51单片机简介 (2)2.2LED动态显示接口 (5)2.3按键部分 (7)2.4中断的控制 (8)3 软件设计 (9)3.1主程序的设计 (9)3.2中断服务程序设计 (10)3.3查时子程序流程图 (12)3.4按键子程序流程图 (12)4 调试过程 (14)致谢 (17)参考文献 (18)附录A (19)1 总体设计方案本设计题目是单片机作息时间的控制,根据设计要求,单片机作息时间的控制要实现时、分、秒的正常显示。
单片机课程作息时间控制设计报告
单片机课程作息时间控制设计报告1. 引言单片机是现代电子技术的重要组成部分,在工业自动化、电子产品控制等领域都有广泛应用。
本次设计目的是通过单片机实现课程作息时间的自动控制,以解决学校师生在课程安排上的繁琐和误差问题。
2. 设计方案2.1 系统功能本系统通过采集外部的时间信息,并通过单片机进行处理和控制,最终实现对学校课程作息时间的自动控制。
2.2 硬件设计本系统的硬件设计主要包括单片机、时钟模块和显示模块。
单片机负责控制整个系统的运行以及与外部硬件的交互,时钟模块提供系统需要的准确时间信息,显示模块用于显示当前的时间和课程信息。
2.3 软件设计本系统的软件设计主要包括时间采集模块、时间处理模块和课程控制模块。
时间采集模块负责从时钟模块获取当前的时间信息,时间处理模块用于处理时间数据,课程控制模块根据时间数据决定当前课程的状态和下一节课的时间。
3. 工作流程3.1 初始化系统启动时,单片机初始化各个硬件模块,并从时钟模块获取当前的时间信息。
3.2 时间采集单片机通过时钟模块定时采集当前的时间信息,并将其存储在内部存储器中。
3.3 时间处理时间处理模块从内部存储器中读取当前的时间信息,并根据预设的课程时间表以及当前的时间,确定当前课程的状态(上课、下课或休息)。
3.4 课程控制课程控制模块根据当前课程的状态,通过单片机控制相关设备的开关,实现对课程作息时间的控制。
4. 技术难点4.1 时间信息的准确获取为了保证系统的准确性,需要选择一款精度较高的时钟模块,并采用合适的算法来处理时间数据。
4.2 课程时间表的灵活性不同学校的课程安排可能不同,因此需要设计一个灵活可变的课程时间表,以适应不同学校的需求。
5. 结论通过单片机实现课程作息时间的自动控制,可以提高学校课程安排的效率,减少学生和老师的繁琐操作。
本设计报告详细介绍了系统的硬件和软件设计,以及系统的工作流程和技术难点。
在实际应用中,可以根据具体需求进行相应的改进和调整,以满足不同学校的需求。
单片机课程设计-作息时间控制器
河南理工大学—电子设计综合训练报告作息时间控制器姓名:学号:专业班级:指导老师:所在学院:2010 年7 月2 日本设计是作息时间控制器,由单片机最小系统、按键模块、数码管显示模块、闹钟模块组成。
采用单片机AT89S52与12MHZ晶振相连;通过按键K1、K2、K3、K4控制时间的校正、闹钟时间设定;数码管显示模块用来显示时间,显示格式为“时分”,并能够根据需要显示年、月、日,由数码管小数点闪动作为秒计数;闹钟模块进行到时提醒并作出相应动作:发光二极管闪亮,同时播放音乐。
本设计中,利用单片机定时器设计时间计时处理,采用单片机内部的T0 定时器溢出中断来实现,工作在T1 方式下,定时50 微妙,则连续中断20 次即为一秒,得到了我们所需时间的最小单位秒,60 秒为一分,60 分为一小时,24 小时为一天,1、3、5、7、8、10、12 月为31 天,4、6、9、11 月为30 天,闰年二月为29 天,非闰年二月为28 天,12 个月为一年。
采用这种时间设计思想来进行时间设置。
在整个系统的设计中,单片机的P0 口输出显示信号,P1 口按键输入控制、P2 口用来扫描,为动态显示、P3 口闹钟模块。
该设计用C51 编写程序,由于汇编语言的移植性比较差,而C 语言则比较灵活。
许多子函数都可以直接移植过去。
摘要 (1)目录 (2)1概述 (1)1.151 单片机简介 (1)1.2设计要求及功能 (1)1.3本设计实现的功能 (1)2系统总体方案及硬件设计 (2)2.1系统总体方案框图 (2)2.2按键控制模块 (3)2.3时间显示模块 (4)2.4闹钟模块 (4)3软件设计 (5)3.1系统软件设计思想 (5)3.2系统主程序 (5)3.3中断子程序 (6)3.4按键扫描子程序 (8)4Proteus 软件仿真 (9)4.1Proteus 软件简介 (9)4.2Proteus 软件仿真 (9)5课程设计体会 (13)参考文献: (14)附1:源程序代码 (15)附2:系统原理图 (25)1 概述1.1 51 单片机简介单片微型计算机简称单片机,即把组成微型计算机的各个功能部件,如中央处理器、随机存储器、只读存储器、I/O接口电路、定时器/计数器以及串行通信接口等集成在一块芯片上,构成一个完整的微型计算机。
基于单片机可编程作息时间控制器设计与制作
基于单片机可编程作息时间控制器设计与制作一、引言现代社会人们的生活节奏越来越快,工作压力、学习任务等加大,导致很多人的作息时间不规律。
而良好的作息时间对人的身心健康非常重要。
因此,设计一款基于单片机的可编程作息时间控制器就变得很有必要。
二、设计方案本设计方案采用基于单片机的可编程作息时间控制器,通过预设时间段,控制灯光和蜂鸣器的开关,提醒人们要进行休息或工作。
1.硬件设计(1)主控芯片选择本设计采用单片机AT89C52作为主控芯片,该芯片采用8位的CMOS单片机,并具有丰富的IO口和存储器。
(2)时钟电路设计为了保证控制器的时钟准确性,设计了一个由晶振和电容构成的时钟电路。
晶振的频率暂定为12MHz,电容选择合适的值以满足电路的要求。
(3)人机交互部分该作息时间控制器通过LCD屏幕和按键进行人机交互。
选择了常见的1602液晶屏,并接入按键进行数据输入。
(4)输出部分通过继电器控制灯光和蜂鸣器的开关。
根据设定的时间段,通过电流驱动继电器吸合或断开,控制相应设备的开关状态。
(5)电源部分整个作息时间控制器采用5V电源供电,并设计了稳压电路,保证主控芯片工作电压的稳定。
2.软件设计(1)时钟设置通过单片机的定时器进行时钟设置,包括时钟的启动和停止,时钟的频率调整等。
(2)数据输入通过按键进行数据的输入,包括设定时间段的起始时间和结束时间,以及设定每个时间段的作息状态。
(3)定时器中断使用定时器中断来实现时间的自动循环更新,根据设定的时间段和当前时间,判断当前处于何种作息状态,并控制输出部分的灯光和蜂鸣器。
(4)LCD显示通过LCD屏幕来实现时间的显示和友好的界面交互,便于用户对时间的设置和查看。
三、制作过程1.硬件制作按照设计方案中的硬件部分进行元件的布局和焊接,在焊接时注意保持元件间的间距,避免短路等问题。
2.软件编程根据设计方案中的软件部分,使用C语言进行单片机的编程,实现时钟的设置、数据的输入、定时器的中断、LCD的显示等功能。
基于单片机的作息时间控制系统(完整版)(优.选)
目录一、引言-----------------------------------------------------------------31.1单片机的作息时间控制系统设计的目的和意义------------------------31.2方案比较--------------------------------------------------------3二、整体设计方框图-------------------------------------------------------4三、模块电路设计---------------------------------------------------------53.1.单片机核心控制模块---------------------------------------------53.2键盘模块--------------------------------------------------------73.3实时时钟模块---------------------------------------------------123.4数据存储模块---------------------------------------------------143.5温度传感器模块------------------------------------------------3.6红外模块------------------------------------------------------3.7电机模块------------------------------------------------------3.8显示模块------------------------------------------------------3.9外围驱动模块--------------------------------------------------四、单片机软件系统设计--------------------------------------------------154.1系统实现工作流程-----------------------------------------------4.2系统流程图-----------------------------------------------------4.3系统源程序-----------------------------------------------------五、元件明细表----------------------------------------------------------16六、整机电路图----------------------------------------------------------196.1 整体原理图-----------------------------------------------------196.2 整体PCB图-----------------------------------------------------206.3整体PCB 3D图--------------------------------------------------七、总结与致谢----------------------------------------------------------24八、参考文献------------------------------------------------------------24一、引言1.1单片机作息时间控制系统设计的目的和意义随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。
毕业设计—简单单片机作息时间控制系统
简单数控作息时间控制系统设计1.系统设计要求该时钟控制器有4位LED数码显示器,具有基本时钟(显示当前时间的小时及分钟)功能,通过外扩继电器、光电耦合器或国体继电器还可实现多点、多路电气设备的控制。
该控制器可广泛应用于学校、工厂和机关的自动打铃、电视、路灯、室内照明及其他对象控制,也可用于家庭或学生寝室进行时间指示及多点时间提醒。
2.硬件电路硬件电路如图所示。
电路采用单片机A T89C51,显示器采用四联共阴极LED数码显示器。
其中字段由串入并出的移位寄存器74LS164控制,74LS164的串行数据输入端由P1.4控制,移位脉冲由P1.5提供;宇位由P1.0~P1.3控制,Pl.0~P1.3对应控制L4~L1。
SW1~Sw3用来迸行时间校准及控制时间点的设定。
LEDl~LED8用来模拟被控对象。
另有铃响信号输出(铃响信号驱动蜂鸣器发声)。
图作息时间控制系统3.设计要求(l)时间校对在任何时候均可通过按压SW2和SW3按钮进行时间校准。
每按动一下SW2,小时自动加1;持续按住不放,小时将自动连续加1。
当小时指示为24时,再加1将自动回零。
每按动一下SW3,分钟自动加l:持续按住SW3按钮不放,分钟将自动连续加1。
当分钟指示为59时,再按动SW3,分钟将变为00。
(2)控制时间设定需要设定控制时间点时,应首先按Swl按钮,然后再按动Sw2和SW3,使指示时间与要求时间一致,再按Sw1按钮进入“控制码”(控制对象)设置状态,按Sw3进行对象切换,最后按Sw2保存时间点;也可以按SW1取消本次设定。
如此可设定多个控制时间点。
在正常状态按下SW1不放,然后再按Sw3按钮可删除所有的控制时间点。
4.实训考核要求软件采用MCS-51汇编语言编写,使用T0产生50ms时基信号,通过软计数器产生时、分、秒信号。
主程序已给出,请按图连线正确并编写有关的子程序。
5.评分标准:1)连线不正确、子程序基本思路不清晰<60分2)连线基本正确、子程序基本思路清晰60-69分3)连线正确、子程序基本思路清晰完整70-85分4)连线正确、子程序思路清晰完整86-100分参考程序如下:;****************************************************************** ;实训7.asm;作息时间控制系统;************************头文件************************************ SDATA BIT P1.4 ;定义74LS164串行移位数据端SCLK BIT P1.5 ;定义74Is164串行移位时钟端DIS EQU Pl ;定义字形口Control EQU P0 ;控制输出Swl EQU P3.2Sw2 EQU P3.3Sw3 EQU P3.4Ms EQU 10H ;定义50ms计数器Secs EQU 11H ;定义秒计数器Minute EQU 12H ;定义分钟计数器Hour EQU 13H ;定义时计数器T-Minute EQU 18H ;定义定时分单元T-Hour EQU 19H ;定义定时时单元TControl EQU 1AH ;定义控制码单元;******************************************************************* ORG 0000HLJMP Main;******************************************************************* ORG 000BHLJMP T0INT;******************************************************************* Main∶MOV SP,#70H ;将栈区设置在70H~7FHMOV IE,#10000010B ;允许T0中断MOV TMOD,#01H ;T0定时方式1MOV Ms,#20 ;50ms单元初值,使20×50ms=1sMOV secs,#0MOV Minute,#0MOV Hour,#12H ;开机显示12∶00MOV T-MinuteMOV T-Hour,#6MOV B,#20HCLR F0MOV R0,,#80MOV TH0,#0B0HSETB TR0LOOP:MOV R1,#MinuteLCALL SplitLCALL DISPLCALL VerifyNOPLCALL setupMOV A,secsCJNE A,#5,$+3JNC LOOPLCALL CompareSJMP LOOP;****************中断服务程序***********;***********************************Compare:;***************************************************** CLP1: INC R0 ;指向分CLP2∶INC R0 ;指向控制码MOV A,@R0JNZ CLP3RET;***************************************************** CPL3:INC R0 ;指向下一个时间的开始CJNE R0,#6FH,$+3JC NextTime;***************************************************** Verify:;***************************************************** VLP3:;***************************************************** Setup:;***************************************************** sLP2:;********************************************* sTORE:MOV R1,BCJNE Rl,#6AH,$+3JC STLP1MOV R1,#20HMOV B,RlSTLP1: MOV @R1,T-HourINC R1MOV @R1.T-MinuteINC R1MOV @R1,TComtrolINC RlMOV B,R1RET;***********************************************Split: MOV R0,#14H ;分个位显示缓冲单元MOV A,@RlANL A,#0FH ;取分个位MOV @R0,AINC Ro ;指向分+位显示缓冲单元MOV A,@R1SwAP AANL A,NlFH ;取分十位MOV @R0,AINC R0 ;指向时个位显示缓冲单元INC R1MOV A,@R1ANL A,#0FH ;取时个位MOV @R0,AINC R0 ;指向时十位显示缓冲单元MOV A,@R1SwAP AANL A,#0FH ;取时十位MOV @R0,ARET*********************************************************DISP∶PUSH 00HMOV R0,#14H ;显示缓冲区首地址MOV R2,#11111110B ;对应个位的字位码MOV DPTR,#WordTab ;送字形表首地址JNB F0,DISP0DJNZ R7,DISP1CPL F1MOV R7,#6SJMP DISP1DISP0:CLR F1DISP1: ORL DIS,#00001111B ;关显示器MOV R3,#20DJNZ R3,$ ;延时40 usMOV A,@R0 ;取待显示数字MOVC A,@A+DPTR ;查宇形WordOut: MOV R3,#8 ;传送字形码到74LS164 MOV SDATA,C ;送数椐到数据口SETB SCLK ;产生时钟CLR SCLKDJNZ R3.NEXTB ;继续送下一位INC R0JB F1,HIDEMOV A,R2 ;取字位码ANL DIs,AHIDE:MOV R3,#5 ;延时lmsMOV R4,#100DJNZ R4,$DJNZ R3,$-4MOV A,R2 ;修改字位码RL AMOV R2,AJB ACC.4,DISP1DExit: POP 00HRET;-------------------------------------------------------------------------------- WordTab: DB 3FH,06H,5BH,4FH ;"0","1","2","3"DB 66H,6DH,7DH,07H ;"4","5","6","7"DB 7FH,6FH,77H,7CH ;"8","9","A","B"DB 39H,5EH,79H,71H ;"C","D","E","F"DB 40H,38H ;"-","L"END;--------------------------------------------------------------------------------。
基于单片机的作息时间控制器设计
基于单片机的作息时间控制器设计
基本思路:
作息时间控制器可以分为两个部分:硬件部分和软件部分。
硬件包括单片机、时钟模块、显示模块、按键模块和继电器模块,软件则是以单片机为核心开展的程序设计。
1. 硬件部分的设计
单片机的选择:根据具体需求选择适合的单片机,通常采用8051系列单片机,如STC89C52。
因为这种单片机具有可编程性强、集成度高、性能稳定等优点。
时钟模块的选择:由于作息时间控制器需要精确计时,需要选用高精度的DS1302时钟模块。
显示模块的选择:通常采用大屏幕液晶显示屏,方便用户查看时间。
按键模块的选择:按键模块一般采用矩阵按键,方便用户选择需要设置的时间。
继电器模块的选择:用于控制开关机,一般选用5V继电器。
2. 软件部分的设计
(1) 初始界面设计:控制器初始界面需要显示当前时间、日期和上下午。
(2) 按键扫描算法:根据不同按键的输入数据,采用按键扫描算法对输入进行处理并进行响应操作。
(3) 设置起始时间和结束时间:根据用户设置的起始时间和结束时间,计算相应的时间差,并把时间差发送给继电器控制模块。
(4) 定时查询计算当前时间: 通过定时查询时钟模块,计算当前时间,在LCD屏幕上显示出来。
(5) 控制继电器开关:软件需要对继电器模块进行控制,控制器需要根据设置的起始时间和结束时间,给继电器模块发送控制信号,实现自动开关机。
以上就是基于单片机的作息时间控制器设计的基本思路,具体实现需要根据具体要求进行详细设计和开发。
学校作息时间控制系统设计(单片机应用)
MOV R7,#08H
CLR F0
MOV P1,#0F0H
MA1:MOV A,#00H
MOV @R0,A
INC R0
DJNZ R7,MA1 ;清0
MOV R1,#75H
MOV @R1,#0AH
MOV R1,#72H
MOV @R1,#0AH
MOV TMOD,#01H
MOV TL0,#0DCH;0DCH
A0-A10为地址线;CE是片选线;OE是读允许线;WE是写允许线
控制逻辑如下表所示:
CE
OE
WE
方式
D0-D7
H
*
*
未选中
高阻
L
LH读Fra bibliotekDoutL
H
L
写
Din
L
L
L
写
Din
8、8255。8255共有40个引脚,采用双列直插式封装,各引脚功能如下:
D0--D7:三态双向数据线,与单片机数据总线连接,用来传送数据信息。
ORG 0000H
MSTART: AJMP MAIN
ORG 000BH
AJMP WATCH
ORG 0013H
LJMP INTT0
ORG 0100H
MAIN: MOV SP,#44H
MOV 21H,#77H;调时间时从第8位开始
MOV 24H,#00H
MOV 25H,#00H
MOV 26H,#00H ;时分秒存储
1、芯片简介
1、74LS373。74LS373是带有三态门的八D锁存器,当使能信号线OE为低电平时,三态门处于导通状态,允许1Q-8Q输出到OUT1-OUT8,当OE端为高电平时,输出三态门断开,输出线OUT1-OUT8处于浮空状态。G称为数据打入线,当74LS373用作地址锁存器时,首先应使三态门的使能信号OE为低电平,这时,当G端输入端为高电平时,锁存器输出(1Q-8Q)状态和输入端(1D-8D)状态相同;当G端从高电平返回到低电平(下降沿)时,输入端(1D-8D)的数据锁入1Q-8Q的八位锁存器中。当用74LS373作为地址锁存器时,它们的G端可直接与单片机的锁存控制信号端ALE相连,在ALE下降沿进行地址锁存。
基于单片机的作息时间控制器系统设计课程
基于单片机的作息时间控制器系统设计课程第一步是系统的需求分析。
在这个任务中,学生需要了解人们在日常生活中的作息规律,并确定系统的主要功能和特点。
学生需要设计一个可以根据设定时间点自动控制不同设备的系统,比如定时开关灯、开关窗帘、调节室内温度等。
在需求分析的过程中,学生需要考虑不同的需求,比如工作日和休息日的时间表不同等。
第二步是系统的硬件设计。
学生需要选择合适的单片机以及其他必要的传感器和执行器。
学生需要学习如何连接和配置这些硬件设备,并学会使用适当的编程语言来控制它们。
学生还需要设计电源电路以供系统运行,并考虑系统的稳定性和安全性。
第三步是系统的软件设计。
学生需要学习如何编写单片机的程序,以实现所需的功能。
学生需要掌握基本的编程概念和语法,并学会如何使用特定的开发环境和库。
学生需要编写可以读取时间的程序,并在设定的时间点执行相应的操作。
学生还需要考虑灵活性问题,比如能否通过手机或者电脑远程控制系统。
最后一步是系统的测试和调试。
学生需要使用合适的测试方法和工具来验证系统的功能和性能。
学生需要学习如何查找和修复软硬件问题,并考虑如何提高系统的可靠性和稳定性。
通过这门课程的学习,学生可以了解到基于单片机的系统设计的基本原理和方法。
学生通过设计和实现作息时间控制器系统,不仅可以提高自己的实践能力,还可以培养自己的创新思维和解决问题的能力。
在进一步研究基于单片机的作息时间控制器系统设计课程中,学生还可以学习更多的相关知识和技能。
一方面,学生可以学习更深入的电子技术知识。
他们可以了解电子元器件的工作原理和特性,学会使用不同的传感器来检测环境参数,比如温度、湿度和光照强度等。
他们还可以学习如何设计合适的电路来保护系统免受电压干扰和过载等问题的影响。
此外,学生还可以了解电源电路和通信接口的设计,以满足系统的需求。
另一方面,学生可以学习更高级的编程技术。
他们可以学习如何使用C语言来编写更复杂的程序,并学会使用编程工具来调试代码和优化性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本设计详细介绍了利用AT89C52单片机设计时间控制器的方法。
该时间控制器是以AT89C52单片机为核心,扩展一片XICOR公司的X5045组成的小系统,控制一路继电器:可以设定一天中的时间,设定继电器的开启时间和关闭时间,可以清除不需要的定时,能够紧急启动:所有的设定均通过键盘实现,按键具有连击功能,每个状态都有指示灯提示。
我们设计的作息时间控制是用单片机实现的,是为了更好的对时间控制智能化。
时间控制器包括硬件和软件。
硬件部分包括继电器,存储器和显示器接口芯片。
软件部分,主要是主程序设计。
软硬件结合在一起,先调试子程序,然后逐级叠加调试,最后系统调试通过。
时间控制系统可以准确的显示时间,在定时时间到时发出悦耳的铃声提醒同学们按时上下课。
关键词:单片机,控制,时间AbstractDesign details of the AT89C52 single-chip design time using the method of the controller. The time controller is based on AT89C52 single-chip microcomputer as the core, extending the company's X5045 1 XICOR small systems, control relays all the way: You can set the time of day, set to open relay time and closing time, you can removal of unnecessary time, to an emergency start: All the settings are to achieve through the keyboard, function keys with the batter, each state has prompted indicator. We designed the schedule control is achieved with single-chip is a better time for intelligent control. Time controller, including hardware and software. Hardware components, including relays, memory and display interface chip. Software, primarily the design of the main program. Combination of hardware and software, debugging subroutine first, and then overlay level debugging, the adoption of the final system test. Time control system can accurately display the time in the regular time when musical tones to remind students of the school on time.Key words: single-chip microcomputer, control, time前言目前,我国单片机的应用领域主要是工业生产过程控制,数据采集与处理、实时控制及优化控制,主流机型是8位微机。
单片机应用带来了巨大的经济效益,提高了效率,降低了成本,提高了产品质量,推动着生产力的发展。
本次设计主要介绍单片机在作息时间控制方面的应用实例,加深了对单片机的理解,进一步开拓视野,为今后应用微机解决生活工作实际问题起了一个入门的作用。
通过本次设计,我掌握了解决问题的思路和方法.我们最终选用了ATMEL 公司的AT89C52单片机。
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内臵通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C52单片机适用于许多较为复杂控制应用场合。
通过本次设计使自己分析问题和解决问题的能力大为提高,以后遇到实际问题能够触类旁通,得心应手作为嵌入式系统主控单元——单片机,其软件往往是一个微观的实时操作系统,且大部分是为某种应用而专门设计的。
系统程序有实时过程控制或实时信息处理的能力,要求能够及时响应随机发生的外部事件并对该事件做出快速处理。
而分时操作系统却是把CPU的时间划分成长短基本相同的时间区间,即“时间片”,通过操作系统的管理,把这些时间片依次轮流地分配给各个用户运用。
单片机的运用范围非常的广泛,它的发展前景非常的美好,只要我们更加努力的去开发研究,单片机一定会成为人们工作生活中最好的助手!目录摘要.................................................................................................................................................... 1ABSTRACT................................................................................................................................................ 2前言.. (1)目录..................................................................................................................................................... - 1 -第1章绪论. (1)1.1课题的提出及意义 (1)1.2设计的任务及要求 (1)第2章总体方案设计 (2)2.1芯片比较 (2)2.1.1 单片机选型 (2)2.1.2显示器接口芯片的选择 (2)2.1.3存储器的选择 (6)2.1.4 继电器的选择 (7)2.2总体设计及系统原理 (9)第3章硬件设计 (10)3.1单片机部分 (10)3.1.1 AT89C52 (10)3.1.2 单片机硬件资源分配 (13)3.2存储器部分 (14)3.3显示部分 (23)3.4电源与复位电路部分 (24)3.4.1 电源部分 (24)3.4.2复位电路 (24)3.5电铃和继电器部分 (25)3.6按键部分 (26)第 4 章软件设计 (27)4.1主程序设计 (27)4.2子程序设计 (29)第5章系统安装与调试 (31)5.1软件调试 (31)5.2系统调试 (31)第6章结论 (32)致谢 (33)参考文献 (34)第1章绪论1. 1 课题的提出及意义单片机作息时间控制实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,实现代学校必不可少的设备。
1. 2 设计的任务及要求1.作息时间能控制电铃2.作息时间能启动和关闭放音机单片机作息时间控制的功能如下:使用4位七段显示器来显示现在的时间。
显示格式为“时分”由LED闪动来作秒计数表示具有4个按键来作功能设臵,可以设臵现在的时间及显示定时设臵时间一旦时间到则发出一阵声响,同时继电器启动,可以控制放音机开启和关闭。
第2章总体方案设计2. 1 芯片比较2.1.1 单片机选型当今单片机厂商琳琅满目,产品性能各异。
常用的单片机有很多种:Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列、Microchip公司的PIC系列、Zilog 的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。
我们最终选用了ATMEL公司的AT89C52单片机。
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内臵通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C52单片机适用于许多较为复杂控制应用场合。
2.1.2显示器接口芯片的选择LED显示器接口芯片的选择常用的显示器接口芯片有CD4511,CD4513,MC14499,8279,MAX7219,74HC164等,它们的功能有:1.CPU接受来自键盘的输入数据,并作预处理;2.数据显示的管理和数据显示器的控制。
CD4511是BCD 锁存,7段译码,驱动器,但在显示6和9时,显示为b和q,不是很好看。
CD4513是BCD锁存,7段译码,驱动器(消隐),但现在市面上不好买。
MC14499为串行输入BCD码——十进制译码驱动器,用它来构成单片机应用系统的显示器接口,可以大大减少I/O口线的占用数量。
但是,由片内震荡器经过四分频的信号,经位译码后只能提供4个位控信号,使信号的采集受到限制;并且,MC19944的价格偏高,也不经济。
同样,8279为INTEL公司生产的通用键盘/显示器接口芯片,其内部设有16*8显示数据RAM,若采用8279管理键盘和显示器,可以减少软件程序,从而减轻主机的负担,但我们同时也发现,由于其功能比较强大,不可避免将会使外围设备与操作过程复杂化,同时价格比较贵。
对比一下MAX7219和74HC164其占用资源少,且不需复杂的驱动电路。
但MAX7219虽然比较好用,且一片能驱动四个数码管,但对于我们设计的系统来说,不需要很多数码管,此外MAX7219相对74HC164的价格也比较贵,所以我们最终选用74HC164,下面对MAX7219作一下介绍。
1、特点:(1) 采用3线串行接口传送数据;(2) 内部有8字节显示静态RAM和6个特殊功能寄存器,相当于14个字节的RAM单元。