初B岑川.docx
- 文档编号:6016109
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:21
- 大小:258.85KB
初B岑川.docx
《初B岑川.docx》由会员分享,可在线阅读,更多相关《初B岑川.docx(21页珍藏版)》请在冰豆网上搜索。
初B岑川
第五届自动化智能控制大赛
设计与总结报告
赛题:
初级组B题
旋转模拟时钟
参赛队员:
岑川
卓锦森
奚达昱
电子与信息学院
08信息工程4班
目录
一、方案论证与比较3
1.1题目概要3
1.2选题分析4
二、系统的具体设计及实现6
2.1设计总框图:
6
2.2硬件设计:
7
各模块主要元件:
7
各模块主要电路:
7
2.3Pcb排版图:
10
2.4软件设计:
10
三、结果及分析14
3.1基本功能部分14
3.2发挥功能部分14
附录一、完整的系统原理图15
附录二、完整的系统源代码16
附录三、小组成员分工及时间安排25
一、方案论证与比较
1.1题目概要
B题旋转模拟时钟
1.设计任务
任务:
利用一列LED灯,在旋转的同时点亮部分LED灯,通过视觉残留原理,形成一个模拟的指针式时钟。
可以用电机带动旋转,LED灯个数及安装方法不限,要求效果可以识别。
1
注:
图片仅供讲解图上使用,不限定此方案.
2.设计要求
1.基本要求:
1)可以显示时针、分针、秒针,以及相应的刻度。
时钟可以正常工作。
2)时钟显示稳定清晰。
3)时间可以调整。
2.扩展要求:
1)增设定时指针,时针与定时指针重合则发声提示。
2)调节时间的时候,模拟真实时钟(秒针停,分针、时针动)
3)可以显示年月日(数字式或者模拟小表盘)
4)其他
1.2选题分析
选题:
旋转模拟时钟
原因:
很帅,利用视觉延迟效果把动变成静,很能体现矛盾转化的哲学观点,所以我们小组喜欢,能够锻炼软硬件综合能力与创新能力配合开发能力。
1.3方案论证
转动部分:
方案一:
小型电动机麻烦,比较难以连结电路板
方案二:
小型电风扇把扇页拆了后很好很强大,能够稳定地带板转动
采用单片机:
方案一、利用我们原开发板的mega8体积小,功能强大,带有一个16位高精度的定时器,有输入捕获功能,而s52没有,带有比较匹配输出,正好满足稳定显示时钟的需要,性价比高,现在市面上8、9块。
方案二、用贴片mega8体量更轻盈,转动更方便
方案三、s52单片机性能不出色
电源部分:
风扇座选用12V直流稳压电源供电,板选用一节5号电池供电,方便替换,使用耐久。
LED部分:
由于要挤在一块豆腐大的板上,因此选用贴片LED
升压模块:
采用泉芯电子技术有限公司的升压芯片,QX2302。
其外围需要元件很少,就可以实现1.2-3.3V的升压电路。
其电路如下图:
图表1
下载器部分:
沿用原有的开发板下载器
光电开关部分:
由于要获取固定每一周的转动时间,以调整LED的亮灭,因此要用光电传感器每一圈捕获一个信号,这个光电传感器我们粘附在板上,用一个档隔物粘附于风扇底座的一条杠上。
粘胶部分:
用胶条溶解,很牢固。
软件部分:
编程用iccavr7.14版原理图绘制部分用altiumdesignerWinter09都是对口的软件,很好用。
调时间之控制部分:
方案一:
简单按键控制板在转动,连线不现实,舍弃
方案二:
红外控制简单易用,在市面上有现成的NEC制式遥控,结合单片机的解码程序,可实现许多拓展功能。
二、系统的具体设计及实现
2.1设计总框图:
红外控制
程序控制,延时
ATmega8单片机及其电路板
风扇
输出引脚直接连LED
捕获
光电传感器
2.2硬件设计:
总系统用一块单片机控制芯片,用了mega8的全部三个端口和定时器计数器2和三,具体看原理图。
各模块主要元件:
光电传感器:
ITR9707一端为红外发光二极管,一端为接收红外的三极管,平时照射时输出低电平,每挡隔时输出低电平。
图表2
遥控器:
淘宝上买了一个现成的遥控器。
NEC编码。
红外接收管:
1838
各模块主要电路:
上电复位电路
二极管是为了关闭时放电作用
图表3
升压模块:
图表4
升压芯片QX2302一个小电感还有一个肖特基二极管,几个电容就完成升压作用,输入电压范围在1.2~3.3V左右,稳定输出在4V,因为单片机工作电压是3—5V,一个电池不够,所以要升压
有两个升压芯片,一个给光电传感器的输入端,又给蜂鸣器提供电压,另一个负责单片机跟LED显示部分,因为芯片的最大负载电流只有100——200mA左右,所以一个芯片不够带动所有负载,两个可以增加稳定性,减少电压波动。
红外模块:
由红外遥控器级接收芯片1838组成,芯片串上10Ω的限流电阻与升压芯片高低相连,输出引脚直接经电阻连接到单片机外部中断引脚。
由于单片机内部有上拉电阻20K左右,不必再加上拉电阻。
INT0输入端接一个102的陶瓷电容,能够有效的排除干扰触发中断。
图表5
蜂鸣器模块:
图表6
2.3Pcb排版图:
图表7
2.4软件设计:
主程序流程图:
图表8
主程序用捕获中断计算周期,同时将周期计算之后得出精确的一秒时间。
用了定时器1的16位计数定时器。
在8M的晶振8分频的情况下,分辨率为1us。
初始化程序:
/**********************************************************/
CLI();
inku();//数组初始化
DDRB|=0x3a;//BIT(5)|BIT(4)|BIT(3)|BIT
(1);设为输出
DDRD|=0xf8;//BIT(3)|BIT(4)|BIT(5)|BIT(6)|BIT(7);11111000
DDRC|=0x3f;//BIT(5)|BIT(4)|BIT(3)|BIT
(2)|BIT
(1)|BIT(0);
PORTD|=BIT
(2);
TCCR2=0x03;//定时器2的预分频32
TIMSK|=BIT(5);//开定时器溢出中断
TCCR1B|=BIT(6)|BIT
(1);
SREG|=BIT(7);//
MCUCR|=BIT(0);//int0外部中断
SEI();
/***************************************************/
ICP计算时间部分程序
/***************************************************/
ti2=ICR1;
if(ti2 { ti1=65536-ti1; w=ti2+ti1; } elsew=ti2-ti1;//得出周期 ti1=ti2; count=count+w; if(count>1000000)//1000000 { if(! sa)se--;//如果时间够一秒,指针移动 count=count-1000000; } /***************************************************/ 定时器2的定时显示中断部分程序 /****************************************************/ TCNT2=255-((w-230)/480)+9;//定时器2初值 ft3=TCNT1; if((w*(fback-1)/120)>TCNT1)w-=5; if((w*(fback-1)/120) /****************************************************/ 总程序框图: 图表9 红外线遥控的程序包含在头文件IRS_KEY.h。 初始化定义包含在declare.h. 三、结果及分析 3.1基本功能部分 计时: 用旋转闪烁的LED实现一个模拟表盘,指针按秒动,每60秒分针跳一格,每60分钟时针跳一格。 日期显示: 在表盘的一侧用数字显示当前日期 显示效果很好,清晰稳定。 在刚开始时有点闪烁,电机转了一定时间,画面稳定下来。 而且调节电机转速也能够保持稳定。 3.2发挥功能部分 时间调整: 红外线遥控器调时间,按menu键进入时间调整状态,则整个画面呈现闪烁状,然后秒针停止跳动,有几个按键,可以五分钟五分钟地调分针,一分钟一分钟地调分针,一小时一小时地调时针,均为可加可减。 还可以调整日期。 再按menu键退出调时间状态。 转速显示: 按一个键可以显示当前风扇的转速,单位: 转/秒 附录一、完整的系统原理图 附录二、完整的系统源代码 /***************************************************************** 红外部分头文件IRS_KEY.h2010-5-13 ********************************************************/ #ifndefIRS_KEY unsignedcharirsdata[4]; voidkey(); #pragmainterrupt_handlerINT: 2 voidINT() { unsignedchari,ia; TCNT0=0; TCCR0=0x05;//8M,1024 while(! (PIND&(1<<2))) {delay3(10); if(TCNT0>80) return; } TCCR0=0x00; TIMSK|=BIT(6);// if(TCNT0<70)return; TCNT0=0; TCCR0=0x05; while((PIND&(1<<2))) {delay3(10); if(TCNT0>40)return; } for(i=0;i<4;i++){ for(ia=0;ia<8;ia++){ TCNT0=0; TCCR0=0x05; while(! (PIND&(1<<2))){ delay3(10); if(TCNT0>25)return; } TCNT0=0; while((PIND&(1<<2))){ delay3(10); if(TCNT0>25)return; } //day++; TCCR0=0x00; irsdata[i]>>=1; if(TCNT0>8) irsdata[i]|=0x80; } } PORTB|=BIT (1);//BEEPON delay3(500); fla=1; TIFR|=BIT(0); PORTB&=~BIT (1);//BEEPOFF } voidkey(){ if(fla){ switch(irsdata[2]){ case1: sa=~sa; break; case0: break; case14: if(sa){mi-=5; if(mi<=-1){mi=mi+60; hr--; if(hr==-1)hr=11; } } break; case13: if(sa){ mi+=5; if(mi>=60){mi=mi-60; hr++; if(hr==12)hr=0; } }break; case9: if(sa){ mi+=1; if(mi>=60){mi=mi-60; hr++; if(hr==12)hr=0; } } break; case10: if(sa){ mi-=1; if(mi<=-1){mi=mi+60; hr--; if(hr==-1)hr=11; } } break; case6: if(sa){ hr--; if(hr<=-1)hr=11; } break; case5: if(sa){ hr++; if(hr>=12)hr=0; }break; case4: day++; break; case8: day--; break; default: fla=0; } fla=0; } } #endif /************************************************************/ 初始定义头文件DECLEAR.h /************************************************************* #ifndefDECLEAR #defineuintunsignedint #defineIRSPIND2 volatileunsignedintw,ti2,ti1,ft3,mark1,mark2=0; volatileintmi=1; volatileintse=2; volatileinthr=0; volatileintfback,fla,sa,wc=0; volatileunsignedlongsum,count=0; intku; uintday=7; unsignedchardaD[10][5]={{0x1f,0x5f,0x5f,0x5f,0x1f}, {0xbf,0xbf,0xbf,0xbf,0xbf}, {0x1f,0xdf,0x1f,0x7f,0x1f}, {0x1f,0x7f,0x1f,0x7f,0x1f}, {0x7f,0x7f,0x1f,0x5f,0x5f}, {0x1f,0x7f,0x1f,0xdf,0x1f}, {0x1f,0x5f,0x1f,0xdf,0x1f}, {0x7f,0x7f,0x7f,0x7f,0x1f}, {0x1f,0x5f,0x1f,0x5f,0x1f}, {0x1f,0x7f,0x1f,0x5f,0x1f} }; unsignedchardaB[10][5]={ {0xff,0xff,0xff,0xff,0xff}, {0xf7,0xf7,0xf7,0xf7,0xf7}, {0xc7,0xbf,0xc7,0xf7,0xc7}, {0xcf,0xf7,0xc7,0xf7,0xc7}, {0xf7,0xf7,0xc7,0xd7,0xd7}, {0xc7,0xf7,0xc7,0xdf,0xc7}, {0xc7,0xd7,0xc7,0xdf,0xc7}, {0xf7,0xf7,0xf7,0xf7,0xc7}, {0xc7,0xd7,0xc7,0xd7,0xc7}, {0xc7,0xf7,0xc7,0xd7,0xc7}};//日期显示 unsignedcharpak[120]; #endif **************************************************************/ /*********************************************************** 主函数LED.c ***********************************************************/ #include #include #include"DECLAR.h" #include"IRS_KEY.h" //显示函数 unsignedchardiplay(intdi,intsecond,intmunite,inthour,uintda){ intdio=di/2; if(di==second*2) { PORTC=0x00; PORTB=0x00; PORTD&=0x1f;//00011111 } if(di==munite*2){ PORTC=0x00; PORTB=0x00; PORTD&=0xdf;//10111111 } if(dio==hour*5+mi/12) PORTC=0x00; } //调用显示函数 diot(intdi){ PORTD&=pak[di]; diplay(di,se,mi,hr,day); delay1(); PORTD=0xf8;PORTB=0x38;PORTC=0xff; } #pragmainterrupt_handlerICP: 6 voidICP() { SEI(); ti2=ICR1; if(ti2 { ti1=65536-ti1; w=ti2+ti1; } elsew=ti2-ti1; ti1=ti2; count=count+w; if(count>1000000)//1000000 { if(! sa)se--; count=count-1000000; } ku=8;//µ÷ÕûλÖà fback=0; wc++; GICR&=~BIT(6); if(wc%63>=25||sa)GICR|=BIT(6); TIFR|=BIT(6); TCNT2=235; if((! sa)||wc%12>8) TIMSK|=BIT(6); if(se==-1){ mi--;day++; if(mi==-1){mi=59;hr--;} if(hr==-1) hr=11; se=59;} GIFR|=BIT(6);//ÇåÍⲿÖÐ¶Ï } #pragmainterrupt_handlerms: 5 voidms() { TCNT2=255-((w-230)/480)+9; ft3=TCNT1; if((w*(fback-1)/120)>TCNT1)w-=5;// if((w*(fback-1)/120) fback++; if(ku==120)ku=0; if(ku==7){ TIMSK&=~BIT(6);// PORTC=0x00; PORTC=0xff; } diot(ku); ku++; TIFR|=BIT(6); GIFR|=BIT(6); } voiddelay1() { inti; for(i=0;i<30;i++); } voiddelay2() { inti; for(i=0;i<145;i++); } voiddelay3(unsignedintk) { intj; for(j=0;j ; } voidinday(uintdata){ intpo; unsignedchartemp; for(po=86;po<91;po++){ pak[po]&=daD[data%10][po-86]; temp=daD[data%10][po-86]&0xe0;//¸ß3λ pak[po]|=temp; } } voidinku(){ for(ku=0;ku<120;ku++){ if(ku%10==8&&ku! =88) pak[ku]=0xe7;//11100111 elseif(ku%2==0) pak[ku]=0xef;//11101111 elsepak[ku]=0xff; if(ku==117||ku==119)pak[ku]=0xbf; if(ku==118)pak[ku]=0x87; if(ku==58||ku==28)pak[ku]=0x67; } inday(day); } voidmain() { CLI(); inku(); DDRB|=0x3a;//BIT(5)|BIT(4)|BIT(3)|BIT (1); DDRD|=0xf8;//BIT(3)|BIT(4)|BIT(5)|BIT(6)|BIT(7);11111000 DDRC|=0x3f;//BIT(5)|BIT(4)|BIT(3)|BIT (2)|BIT (1)|BIT(0); PORTD|=BIT (2); TCCR2=0x03; TIMSK|=BIT(5);//T1ÉèÖà TCCR1B|=BIT(6)|BIT (1); SREG|=BIT(7);//×ÜÖÐ¶Ï MCUCR|=BIT(0);//int0ϽµÑØ PORTC=0xff; PORTD=0xf8; SEI();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 岑川