




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 绪论21.1系统背景22.1 系统总体设计框架结构32.2 系统硬件单元电路设计31 .时钟电路设计32 .复位电路设计33 .按键电路设计42.3 系统硬件总电路5第三章 系统软件设计53.1 系统软件流程图53.2 系统程序设计71.系统主程序72.定时中断子程序7 3.按键处理子程序.8 4.数码管显示子程序.9 5.刷新缓冲子程序.11第四章 实验结果和分析.123.1 实验使用的仪器设备123.2 测试结果分析12黄 冈 师 院 物 科 院单片机技术课程设计报告项目名称: 家用多功能定时器设计与制作 专业年级: 电子信息工程2009级 学 号: 200922240232 学生
2、姓名: 杨瑶 指导教师: 冯 杰 报告完成日期:2011年06月24日 第一章 绪论1.1系统背景 单片机的电子技术特征以及应用 单片机是将CPU、RAMROM定时器/计数器以及输入输出(I/O)接口等计算机的主要部件集成在一块的集成电路芯片,作为微机系统它还可以实现模/数转换、脉宽调制、计数器捕获/比较逻辑、高速I/O口和WDT各种控制功能。通过在MCS-51系列的单片机中增设了全双工串行口I/O、片内数据存储器采用寻址范围为256kb的8位地址、均有四种工作方式的2个16位的定时/计数器、增加了中断系统、增设了颇具特色的布尔处理机、让单片机具有较强的指令寻址和运算功能这些技术,使单片机拥有
3、了完善的外部并行总线(AB、DB、CB)具有多机识别功能的串行通信接口,规范了功能单元的特殊功能寄存器控制模式及适应控制器特点的布尔处理系统和指令系统,位发展具有良好兼容性的新一代单片机奠定了良好的基础。单片机被广泛地应用在各种领域。例如用来作家用电器中如洗衣机、电冰箱、微波炉、电饭煲、电视机、录像机以及其他视频音像设备的控制器;在办公室中用作大量通信、信息的承载体,比如磁盘驱动、打印机、复印机、电话等;它还可以来构成电子秤、收款机、仓储安全检测系统、空气调节系统等冷冻保鲜系统等的专用系统;在工业中,像工业过程控制、过程监制以及机电一体化控制等系统都是以单片机为核心火多网络系统;它还可以构成一
4、些智能仪表与集成智能传感器传统的控制电路,实现一些像存储、数据处理、查找、判断、联网和语音功能等智能化功能,还可以构成一些电子系统中的集中显示系统、动力检测控制系统、自动驾驶系统、通信系统以及运行监视器等的冗余网络系统。课题设计的要求这次课题,我们主要是完成单片机最小系统板设计与制作,然后再此基础上编程实现家用多路定时器,使该定时器还具有校准时间、至少可以三路定时开关控制,并且自定时间,还可以自主在其中加入其他功能,如日历、秒表、简易计算器等。2.1 系统总体设计框架结构时钟电路 家用定时器复位电路数码管显示电路按键电路 时钟电路用来计时,显示正确的时间,按键电路用来调整时间、控制数码管的显示
5、和设置多路定时,复位电路用来将电路初始化,数码管显示时间,用led灯的变化来显示电路不同的状态和定时的效果。2.2 系统硬件单元电路设计1 .时钟电路设计时钟电路由振荡器及定时发生器及地址锁存允许信号ALE组成。所用的时钟电路用的是12Mhz的晶振,它的振荡周期约为0.0833µs,时钟周期是1/6µs,机器周期是1µs 2 .复位电路设计 复位操作有上电自动复位、按键电平复位和外部脉冲三 种复位方式,本次使用的是按键电平复位。它是通过使复位端经电阻与Vcc电源接通而实现的,使用的电阻大小为10K,电容大小为10µf ,能保证复位信号高电平持续时间大于2
6、个机器周期。 3 .按键电路设计 矩阵式键盘,当键位上有键压下时,产生中断请求,CPU响应中断,执行中断服务程序,判断键位上压下的键的键号,继而做出相应的处理。4.数码管显示电路 显示块是由若干发光二极管组合而成的,一般的“8”字型显示块由a、b、c、d、e、f、g、h8个发光二极管组成,GND接1时均不亮,字位输出口和字形输出口采用高电压驱动。2.3 系统硬件总电路第三章 系统软件设计 3.1 系统软件流程图定时部分的流程图2.按键处理程序流程图3. 数码管显示程序流程图 程序复位 设置多路定时时间初始化数码管显示 中断?初始化时间及中断设置、键盘扫描中断处理按键扫描显示时间3.2 系统程序
7、设计 1.系统主程序void main(void) P1=0x00; 将P1接口初始化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();settime();if(LEDS1) LED7=1; 到达定时时,LED7灯亮else LED7=0; 7灯
8、熄灭if(!Line1|!Line2)Delay(200);Key_Process(); 2.定时中断子程序void Timer0(void) interrupt 1 TH0=0x3C; /重新赋值50ms溢 TL0=0xB0;count+;if(count=10) LED1=LED1; if (count=20) count=0; second+; /秒加1if(second=60) second=0; minute+; /分加1if(minute=60) minute=0; hour+; /时加1if(hour=24) hour=0; void Timer1(void) interrupt
9、 3TH1=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;i
10、f(!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;3.按键处理子程序 void Key_Process(void) switch(STATE) case 0: if(Keyno=1)STATE=1;break;
11、 case 1:if(Keyno=1) STATE=2;按Shift后,跳到Case2执行程序if(Keyno=4) STATE=4;按Shift+4键后,跳到Case4执行程序if(Keyno=5) STATE=8;按Shift+5键后,跳到Case8执行程序if(Keyno=6) STATE=12;按Shift+6键后,跳到Case12执行程序 break; case 2:if(Keyno=2)hour+;if(hour=24)hour=0; 2键加时 if(Keyno=3)hour-;if(hour=-1)hour=23; 3键减时if(Keyno=1)STATE=3;break; Sh
12、ift键跳到Case3执行程序case 3:if(Keyno=2)minute+;if(minute=60)minute=0;2键加分if(Keyno=3)minute-;if(minute=-1)minute=59;3键减分if(Keyno=1)STATE=0;break; Shift键回到初始状态/第一路定时case 4:if(Keyno=2)hour1+;if(hour1=24)hour1=0;2键加时if(Keyno=3)hour1-;if(hour1=-1)hour1=23;3键减时if(Keyno=1)STATE=5;break;按Shift,跳到Case5执行程序 case 5:
13、if(Keyno=2)minute1+;if(minute1=60)minute1=0;2键加分if(Keyno=3)minute1-;if(minute1=-1)minute1=59;3键减分if(Keyno=1)STATE=6;break;按Shift,跳到Case5执行程序case 6:if(Keyno=2)hour2+;if(hour2=24)hour2=0;2键加时if(Keyno=3)hour2-;if(hour2=-1)hour2=23;3键减时if(Keyno=1)STATE=7;break;按Shift,跳到Case7执行程序case 7:if(Keyno=2)minute2
14、+;if(minute2=60)minute2=0;2键加分if(Keyno=3)minute2-;if(minute2=-1)minute2=59;3分减分if(Keyno=1)STATE=0;break;按Shift,回到初始状态 /第二路定时case 8:if(Keyno=2)hour3+;if(hour3=24)hour3=0;2键加时if(Keyno=3)hour3-;if(hour3=-1)hour3=23;3键减时if(Keyno=1)STATE=9;break;按Shift键,跳到case9case 9:if(Keyno=2)minute3+;if(minute3=60)min
15、ute3=0;2键加分if(Keyno=3)minute3-;if(minute3=-1)minute3=59;3键减分if(Keyno=1)STATE=10;break;按Shift键,跳到case10case 10:if(Keyno=2)hour4+;if(hour4=24)hour4=0;2键加时 if(Keyno=3)hour4-;if(hour4=-1)hour4=23;3键减时if(Keyno=1)STATE=11;break;按Shift键,跳到case11case 11:if(Keyno=2)minute4+;if(minute4=60)minute4=0;2键加分 if(Ke
16、yno=3)minute4-;if(minute4=-1)minute4=59;3键减分 if(Keyno=1)STATE=0;break;按Shift键,恢复初始状态 /第三路定时 case 12:if(Keyno=2)hour5+;if(hour5=24)hour5=0;2键加时if(Keyno=3)hour5-;if(hour5=-1)hour5=23;3键减时 if(Keyno=1)STATE=13;break;按Shift键,跳到case11case 13:if(Keyno=2)minute5+;if(minute5=60)minute5=0;2键加分if(Keyno=3)minut
17、e5-;if(minute5=-1)minute5=59;3键减分if(Keyno=1)STATE=14;break;按Shift键,跳到case14case 14:if(Keyno=2)hour6+;if(hour6=24)hour6=0;2键加时if(Keyno=3)hour6-;if(hour6=-1)hour6=23;3键减时if(Keyno=1)STATE=15;break; 按Shift键,跳到case15case 15:if(Keyno=2)minute6+;if(minute6=60)minute6=0;2键加分if(Keyno=3)minute6-;if(minute6=-1
18、)minute6=59;3键减分if(Keyno=1)STATE=0;break; 按Shift键,恢复初始状态default: break;4.数码管显示子程序void SEG_Display(void) switch(STATE) case 0: case 1: case 2: case 3:P0=TimeTabnum;break; case 4: case 5:P0=SetTabnum;break; 第一路定时,设置初始时间 case 6: case 7:P0=EndTabnum;break; 第一路定时,设置终止时间 case 8: case 9:P0=SetTabnum+4;brea
19、k; 第二路定时 ,设置初始时间 case 10: case 11:P0=EndTabnum+4;break; 第二路定时, 设定终止时间 case 12: case 13:P0=SetTabnum+8;break; 第三路定时,设定起始时间 case 14: case 15:P0=EndTabnum+8;break;第三路定时,设定终止时间 default: break; void LED_Display(void) switch(STATE)case 0: LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;break; 灯均不亮case 1: LED2=1;LED3=0
20、;LED4=0;LED5=0;LED6=0;break; 2灯亮case 2: LED2=1;LED3=1;LED5=0;LED4=0;LED6=0;break; 2、3灯亮case 3: LED2=1;LED4=1;LED3=0;LED5=0;LED6=0;break;2、4灯亮 case 4:LED2=1;LED5=1;LED3=0;LED4=0;LED6=0;break;2、5灯亮case 5: LED2=1;LED6=1;LED3=0;LED4=0;LED5=0;break;2、6灯亮case 6: LED3=1;LED4=1;LED2=0;LED3=0;LED5=0;break;3、
21、4灯亮case 7: LED3=1;LED5=1;LED2=0;LED4=0;LED5=0;break;3、5灯亮 case 8: LED3=1;LED6=1;LED2=0;LED4=0;LED5=0;break;3、6灯亮case 9: LED4=1;LED5=1;LED2=0;LED3=0;LED6=0;break;4、5灯亮case 10:LED4=1;LED6=1;LED3=0;LED2=0;LED5=0;break;4、6灯亮case 11:LED5=1;LED6=1;LED4=1;LED2=0;LED3=0;break;5、6灯亮 case 12: LED2=1;LED3=1;LE
22、D4=1;LED5=0;LED6=0;break;2、3、4灯亮case 13: LED2=1;LED3=1;LED5=1;LED4=0;LED6=0;break;2、3、5灯亮case 14: LED2=1;LED3=1;LED6=1;LED4=0;LED5=0;break;2、3、6灯亮case 15: LED3=1;LED4=1;LED5=1;LED2=0;LED6=0;break;3、4、5灯亮 default: break;void settime(void) if(!STATE) if(hour=hour1&&minute=minute1) LEDS1=1;当到了所
23、定时间,7灯亮 if(hour=hour2&&minute=minute2) RELAY=1;LEDS1=0;到了指定时间,7灯灭 if(hour=hour3&&minute=minute3) LEDS1=1;当到了所定时间,7灯亮 if(hour=hour4&&minute=minute4) RELAY=1;LEDS1=0; 到了指定时间,7灯灭 if(hour=hour5&&minute=minute5) LEDS1=1;当到了所定时间,7灯亮 if(hour=hour6&&minute=minute6) RE
24、LAY=1;LEDS1=0; 到了指定时间,7灯灭5. 刷新缓冲区子程序void RefreshTab(void) switch(STATE) case 0:case 1:case 2:case 3:TimeTab0=Tabhour/10; TimeTab1=Tabhour%10; TimeTab2=Tabminute/10; TimeTab3=Tabminute%10;break;/第一路定时 case 4:case 5:SetTab0=Tabhour1/10; SetTab1=Tabhour1%10; SetTab2=Tabminute1/10; SetTab3=Tabminute1%10
25、;break;case 6:case 7:EndTab0=Tabhour2/10; EndTab1=Tabhour2%10; EndTab2=Tabminute2/10; EndTab3=Tabminute2%10;break; /第二路定时case 8:case 9:SetTab4=Tabhour3/10; SetTab5=Tabhour3%10; SetTab6=Tabminute3/10; SetTab7=Tabminute3%10;break;case 10:case 11:EndTab4=Tabhour4/10; EndTab5=Tabhour4%10; EndTab6=Tabmin
26、ute4/10; EndTab7=Tabminute4%10;break;/第三路定时 case 12: case 13:SetTab8=Tabhour5/10; SetTab9=Tabhour5%10; SetTab10=Tabminute5/10; SetTab11=Tabminute5%10;break; case 14: case 15:EndTab8=Tabhour6/10; EndTab9=Tabhour6%10; EndTab10=Tabminute6/10; EndTab11=Tabminute6%10;break;default:break; 第四章 实验结果和分析3.1 实验使用的仪器设备 在实验中使用到了直流稳压电源和电脑,使用Keil.c编译程序,并将程序烧录到单片机中。3.2 测试结果分析程序烧录到单片机中后,将其接到+5V左右的直流电源中,并开始按键实现时间控制或调整,设置多路定时时间,每路定时时间有起始时间和终止时间。当设定好每路时间段后,按键恢复时钟状态并开始计时。当到了指定的时间后,LED灯便会开始亮直至定时时间结束。具体的显示情况如下表所示: 调整时间 状态Led
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论