




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
家用多功能定时器的设计 专业年: 电子信息工程 学 号: 7 学生姓名: 廖义忠 指导教师: 谢勇勤 报告完成日期 2014 年 5 月28 日 第1章 绪论1.1 系统背景 1.1.1 单片机的电子技术 单片机是将CPU、RAMROM定时器/计数器以及输入输出(I/O)接口等计算机的主要部件集成在一块的集成电路芯片,作为微机系统它还可以实现模/数转换、脉宽调制、计数器捕获/比较逻辑、高速I/O口和WDT各种控制功能。通过在MCS-51系列的单片机中增设了全双工串行口I/O、片内数据存储器采用寻址范围为256kb的8位地址、均有四种工作方式的2个16位的定时/计数器、增加了中断系统、增设了颇具特色的布尔处理机、让单片机具有较强的指令寻址和运算功能这些技术,使单片机拥有了完善的外部并行总线(AB、DB、CB)具有多机识别功能的串行通信接口,规范了功能单元的特殊功能寄存器控制模式及适应控制器特点的布尔处理系统和指令系统,位发展具有良好兼容性的新一代单片机奠定了良好的基础。单片机被广泛地应用在各种领域。例如用来作家用电器中如洗衣机、电冰箱、微波炉、电饭煲、电视机、录像机以及其他视频音像设备的控制器;在办公室中用作大量通信、信息的承载体,比如磁盘驱动、打印机、复印机、电话等;它还可以来构成电子秤、收款机、仓储安全检测系统、空气调节系统等冷冻保鲜系统等的专用系统;在工业中,像工业过程控制、过程监制以及机电一体化控制等系统都是以单片机为核心火多网络系统;它还可以构成一些智能仪表与集成智能传感器传统的控制电路,实现一些像存储、数据处理、查找、判断、联网和语音功能等智能化功能,还可以构成一些电子系统中的集中显示系统、动力检测控制系统、自动驾驶系统、通信系统以及运行监视器等的冗余网络系统。 1.1.2 定时器介绍 人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。 1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀门。 定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多,家用电器都安装了定时器来控制开关或工作时间。1.2 设计要求 主要内容和任务:完成单片机最小系统板设计与制作,在此基础上通过编程设计家用多路定时控制器。目标:通过编写程序,使单片机最小系统具有正常数字钟功能,包括时间校正,具有至少三路定时开关控制功能,每路定时时间可以任意设置。第2章 系统电路设计2.1 设计框架介绍按键输入电路:对定时器输入定时时间、时钟时间,并对其调整。时钟电路:给单片机一个时钟信号,让其工作。复位电路:使单片机为初始状态,并从初态开始工作。数码管 :显示时间或者其它。2.2 系统硬件单元电路设计2.2.1 复位电路设计复位操作有上电自动复位、按键电平复位和外部脉冲复位三钟方式,本次实验用的是按键电平复位,利用电容的充放电公式来选择所需的电容、电阻,能保证复位信号高电平持续时间大于2个机器周期。2.2.2 时钟电路设计该时钟电路是由晶体振荡器和两个微调电容组成的。在单片机芯片内部有一个高增益反相放大器,其输入端为引脚XTAL1,其输出端为引脚XTAL2。只需要在片外通过XTAL1和XTAL2引脚跨接晶体振荡器或在引脚与地之间加接微调电容,形成反馈电路,振荡器即可工作。由于该晶振使用的是12MHZ的晶体,因此它的时钟周期是0.167us,机器周期为1us。2.2.3 按键电路设计本课程设计要用数码管显示数字钟、定时时间。这就需要键盘来设定,键盘可以分为独立连接式和矩阵式。本实验用的是矩阵式。为了减少所以的I/O口,利用三八译码器来实现12个键盘的连接。对于这种矩阵式的键盘连接,扫描时依次将行线置为低电平,即在置某根行线为低电平时,其它都线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。注意在按键时一定要调延时子程序来消除抖动。2.2.4 数码管显示电路设计实验中所用的数码管为共阴极数码管,当给其引脚加入高电平时,数码管中对应的那一段就亮。2.3 系统硬件总电路第3章 系统软件设计3.1 系统软件流程图主程序在执行时,通过单片机内部中断对程序不断的扫描判断、刷新显示,当有键按下时,将数字钟中的时间与定时时间相比较,然后根据比较程序显示状态,并且还要延时消除抖动,之后进行按键处理,从而显示不同的状态,如此周期循环。3.2 系统程序设计#include#define uchar unsigned char#define uint unsigned int/*定义管脚*/sbit RELAY=P10;sbit LED1=P11;sbit LED2=P12;sbit LED3=P13;sbit LED4=P14;sbit LED5=P15;sbit LED6=P16;sbit LED7=P17;sbit Line1=P21;sbit Line2=P20;/*定义缓冲区及初始化*/uchar data TimeTab6=0x06,0x5b,0x4f,0x66;uchar data Tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar data TimeTab14,TimeTab24;/*定义参数及初始化*/char hour=12,minute=34,second=0,h=0,m=0,h1=0,m1=0;char second1;char flag=0,flag1=0,flag2=0;uchar Keyno=0;uchar num=0,count=0;uchar STATE=0;/*延时子函数*/void Delay( uint x) /自定义延时约0.1ms uint t; while(-x)for(t=0;t120;t+) ; /*/* 刷新缓冲区子程序 */*/void RefreshTab(void)if(flag=0)TimeTab0=Tabhour/10; TimeTab1=Tabhour%10; TimeTab2=Tabminute/10; TimeTab3=Tabminute%10;if(flag=1) TimeTab10=Tabh/10; TimeTab11=Tabh%10; TimeTab12=Tabm/10; TimeTab13=Tabm%10; if(flag=2)TimeTab20=Tabh1/10; TimeTab21=Tabh1%10; TimeTab22=Tabm1/10; TimeTab23=Tabm1%10; if(flag=4)TimeTab0=0x00; TimeTab1=0x00; TimeTab2=Tab(50-second1)/10; TimeTab3=Tab(50-second1)%10;/*/* 按键处理子程序 */*/void Key_Process(void)switch(STATE)case 0: if(Keyno=1)STATE=1;break;case 1: if(Keyno=2)hour+;if(hour=24)hour=0;if(Keyno=3)hour-;if(hour=-1)hour=23;if(Keyno=1)STATE=2;break;case 2: if(Keyno=2)minute+;if(minute=60)minute=0;if(Keyno=3)minute-;if(minute=-1)minute=59;if(Keyno=1)STATE=3;flag=1;break;case 3: if(Keyno=2)h+;if(h=24)h=0;if(Keyno=3)h-;if(h=-1)h=23;if(Keyno=1)STATE=4;break;case 4: if(Keyno=2)m+;if(m=60)m=0;if(Keyno=3)m-;if(m=-1)m=59;if(Keyno=1)STATE=5;flag=0;break;case 5: if(Keyno=1)STATE=6;flag=2;break;case 6:if(Keyno=2)h1+;if(h1=24)h1=0;if(Keyno=3)h1-;if(h1=-1)h1=23;if(Keyno=1)STATE=7;break;case 7: if(Keyno=2)m1+;if(m1=60)m1=0;if(Keyno=3)m1-;if(m1=-1)m1=59;if(Keyno=1)STATE=8;flag=0;break;case 8:if(Keyno=4)STATE=9;flag=3; break;case 9:if(Keyno=5)STATE=10;second1=20;flag=4;if(Keyno=1)STATE=0;flag=0;break;case 10:if(Keyno=1)STATE=0;flag=0;break;case 11:if(Keyno=1)STATE=0;flag=0;break;case 12:if(Keyno=1)STATE=0;flag=0;break;default:break;/*/* 数码管显示子程序 */*/void SEG_Display(void) if(flag=0) P0=TimeTabnum; if(flag=1) P0=TimeTab1num; if(flag=2) P0=TimeTab2num; if(flag=3) P0=0x49; if(flag=4) P0=TimeTabnum; /*红绿灯*/void hlhd(void)if(second1=50&STATE=10) STATE=11;second1=45;if(second1=50&STATE=11) STATE=12;second1=30;if(second1=50&STATE=12) STATE=10;second1=20; /*/ /* 比较函数 */*/void compare(void)if(h=hour)if(m=minute)STATE=4;if(minute=m+2)STATE=0; if(h1=hour)if(m1=minute)STATE=6;if(minute=m1+2)STATE=0;/*/* LED显示子程序 */*/void LED_Display(void)switch(STATE) case 0: LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;break;case 1: LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;break;case 2: LED3=1;LED2=0;LED4=0;LED5=0;LED6=0;LED7=0;break;case 3: LED4=1;LED2=0;LED3=0;LED5=0;LED6=0;LED7=0;break;case 4: LED4=1;LED2=0;LED3=0;LED5=0;LED6=0;LED7=0;break;case 6: LED5=1;LED2=0;LED3=0;LED4=0;LED6=0;LED7=0;break;case 7: LED5=1;LED2=0;LED3=0;LED4=0;LED6=0;LED7=0;break;case 8: LED2=1;LED3=1;LED4=1;LED5=0;LED6=0;LED7=0;break;case 9: LED2=1;LED3=1;LED4=1;LED5=0;LED6=0;LED7=0;break;case 10: LED2=0;LED3=1;LED4=0;LED5=0;LED6=0;LED7=0;break;case 11: LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;break;case 12: LED2=0;LED3=0;LED4=1;LED5=0;LED6=0;LED7=0;break;default: break; /*/* 主程序 */*/void main(void)P1=0x00;EA=1;TMOD |=0x01;/定时器0计时50ms in 12M crystal TH0=0x3C; /初值TL0=0xB0;ET0=1;TR0=1;TMOD |=0x10; /定时器1用于动态扫描TH1=0xFa; /初值TL1=0xF0;ET1=1;TR1=1; while(1)RefreshTab();LED_Display();compare();hlhd(); if(!Line1|!Line2)Delay(200);Key_Process();/*/* 定时器0中断用于计时 */*/void Timer0(void) interrupt 1TH0=0x3C; /重新赋值50ms溢出TL0=0xB0;count+;if(count=10) LED1=LED1; if (count=20) count=0; second+;if(flag=4)second1+; /秒加1 if(second=60) second=0; minute+; /分加1 if(minute=60) minute=0; hour+; /时加1 if(hour=24) hour=0; /*/* 定时器1中断扫描显示+键值判断 */*/void Timer1(void) interrupt 3 TH1=0xFa; /定时2ms显示下一个数码管TL1=0xF0;switch(num)case 0: P2=0x0f;if(!Line1)Keyno=1;if(!Line2)Keyno=6;SEG_Display();break;case 1: P2=0x1f;if(!Line1)Keyno=4;if(!Line2)Keyno=5;SEG_Display();break;case 2: P2=0x2f;if(!Line1)Keyno=3;if(!Line2)Keyno=12;SEG_Display();break;case 3: P2=0x3f;if(!Line1)Keyno=7;if(!Line2)Keyno=8;SEG_Display();break;case 4: P2=0x4f;if(!Line1)Keyno=2;if(!Line2)Keyno=9;SEG_Display();break;case 5: P2=0x5f;if(!Line1)Keyno=10;if(!Line2)Keyno=11;SEG_Display();break;default: break;num+; if(num=6)num=0;第4章 实验结果和分析4.1 实验使用的仪器设备电脑,PTOTEUS软件,KEIL软件,电烙铁,吸锡器,钳子,直流电源,电阻,电容等基本元器件。4.2测试结果分析程序烧录到单片机中后,将其接到+5V左右的直流电源中,并开始按键实现时间控制或调整,设置多路定时时间,每路定时时间有起始时间和终止时间。当设定好每路时间段后,按键恢复时钟状态并开始计时。当到了指定的时间后,LED灯便会开始亮直至定时时间结束。具体的显示情况如下:通过按shift键来改变电路状态
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吃饭游戏活动方案
- 各大银行京东活动方案
- 合唱活动线上活动方案
- 合肥酒楼促销活动方案
- 同城火锅活动方案
- 同心聚会活动方案
- 名人讲座活动方案
- 名师义教活动活动方案
- 后续消费冲动活动方案
- 吕氏宗亲活动方案
- 中国航天(航天科普知识)PPT
- GB/T 27806-2011环氧沥青防腐涂料
- GB/T 17949.1-2000接地系统的土壤电阻率、接地阻抗和地面电位测量导则第1部分:常规测量
- 梦幻西游古龙服务端安装教程
- 《出生医学证明》单亲母亲情况声明
- 4配电柜安全风险点告知牌
- 旋挖机操作手知识试卷含参考答案
- GB∕T 22590-2021 轧钢加热炉用耐火浇注料
- 大件运输管理制度
- Q∕GDW 11445-2015 国家电网公司管理信息系统安全基线要求
- 材料科学基础 第2章 晶体结构
评论
0/150
提交评论