




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、苏州市职业大学课程设计说明书名称motor speed control2011年6月13日至2011年6月17日共1周院 系 电子信息工程系班 级姓 名系主任教研室主任指导教师苏州市职业大学课程设计任务书课程名称:微控制器应用 课程设计起讫时间:院 系:班 级:指导教师:系主任:、课程设计课题moto speed control二、课程设计耍求在规定的吋间内,用c语言完成程序的编写,然后把程序载入到butterfly 实验板进行调试,最终实现由微控制器控制的风扇的转动。其中,课程设计报告应包含以下内容:1、课程设计说明书2、课程设计任务书3、目录4需求分析5、设计过程6、运行结果7、程序代码8
2、、心得体会9、参考文献三、课程设计工作量从2011年6月13日到6月17日,共一周时间,24学时。四、课程设计说明书内容(有指导书的可省略)1、课程设计名称2、时间3、院系、班级、姓名4、系主任、教研室主任、指导老师需求分析6、课程设计目的7二、设计过程72.1 motor speedcontrol 工作原理 72.2结构分析82.3 实训步骤11三、运行结果12四、源程序代码144. 1 demonstratoic 程序144 2 pc_comm.c 程序17五、心得任会22六、参考文献23需求分析微控制器的发展趋势:一方面,若是以不同微控制器的销售数冃来看, 可以发现几个趋势,首先是8位微
3、控制器长期居微控制器市场的主要 份额,并在2007年以后开始略有动摇。8位微控制器的出货数口以 往皆占整体微控制器出货数目的七至八成以上,自2007年以后,8 位微控制器的龙头地位渐渐下滑,其出货数目占整体微控制器市场的 比重在2010年后将下滑至七成以下。第二是我们可以观察到在非8位微控制器的高阶微控制器领域 应用中,32位微控制器持续取代16位元微控制器的趋势相当明显, 32位微控制器在2006年首度超越16位微控制器,市占率稳居笫二, 同时其出货数目将持续上升,到了 2010年,32位微控制器将有机会 达到32. 62%的市占率,成为另一个重要的微控制器应用领域。32位微控制器的逐渐兴起
4、主要是由于各项家电与消费电子产品 需要更多更强大的功能,而更复杂的影音应用、智能判断与控制领域 也需要效能更强大的处理器,因此32位微控制器将逐渐取代目前的 16位微控制器是可以确定的趋势。、课程设计目的在规定的时间内,用c语言完成程序的编写,然后把程序载入到 butterfly实验板进行调试,最终实现由微控制器控制的风扇的转动。二、设计过程2. 1 motor speed control 工作原理微程序控制器的t作原理:是依据读來的机器指令的操作码找 到与之对应的一段微程序的入口地址,并按市指令具体功能所确定的 次序,逐条从控制存储器中读出微指令,以“驱动”计算机各功能部 件正确运行。微程序
5、控制的基本思想,就是仿照通常的解题程序的方法,把 操作控制信号编成所谓的“微指令”,存放到一个只读存储器里.当 机器运行时,一条又一条地读出这些微指令,从而产生全机所需耍的 各种操作控制信号,使相应部件执行所规定的操作。2. 2结构分析to portd pin 1 4 n2d pin 2 to +3v gn d 亍 w1 ip115330 ohm to 4n28 pin 11 n4oo12.2k ohm from 4n28pin5 to tip1 15 pin 1at*i 4n28 pin 4 to 9v gndft /v人jotor b to 9v gndmotor a to tip11 5
6、 pin 29vgnd+5 to tip115 pin 3figu re 19: motor speed < ontrol bread board l.abclcdfigure 20: motor speed < on trol 1 lurdware电动机基座市泡沫板和胶带做成来支持电动机,电动机基座正左下角被使用来支持槽型光耦,这个抠图将用于下一个项冃车轮模式位于书木 “c progrogramming for microcontrollers附 录6把它打印出来,把它贴了一块坚固的薄硬纸板。我把一些电工胶 带,在电机轴的径向削减相同的中心,在车轮上。它工作。这个抠图 将用于下一
7、个项目槽型光耦及其电路图一个9v的电动机,一个9v的电池,一个9v的电池连接器,一个4n28光隔离器,一个tip115功率品体管,一个150ohm电阻, 还有一个2.2k的电阻。马达可以用泡沫芯板切割下来组成和黏贴来 作为底部,左边直立部分用于下一个工程来做光导体。风扇部分类似 于车轮的模式在课木的附录6,剪下來贴在一张比较坚实的薄硬纸板 上 用电胶带贴在轴上,使得轮子中心部分沿着径向是可滑动的,工 作的。用一个光隔离器来隔离电机功率电路从而帮助减少在蝴蝶效应 中产生爆炸的可能性。光绝缘体是一个类似于光隔离器的装置,它有 一个空中通道在ir灯发光二极管和ir检测晶体管之间。她这个不 透明的对象
8、通过二极管和检测器导致晶体管熄灭因此电流“中断”。 我们可以把晶体管联结到蝴蝶效应的引脚和检测器的中断上。如果你拼凑电机基地,使车轮通过在光导体槽旋转时,每次开放通 行证。晶体管的开启和关闭时冋槽已经过去。2.3实训步骤(1)启动运行programmers软件做相应设计,如图: 打开控制程序pc_comm.c和makefile文件,按相应步骤进行编译.(3) 编译无误后,打开avr studio 4软件,如图:* §trxe cisabted査找范囲文件名qp:文件类型:mw projectwelcome to avr studio 4open project file or obj
9、ect file| 口 t3 s ej- s-o c*en-cn$tf«toch derrionstrato'.hqrr以effe£|pc_conmchl pc.corrm hdrexxvilut b3fed pbjrist<500(4) 在上图中打开pc_comm.cof文件,装入给定程序模板,运行演示;(5) 运行成功1、运行结果如图所示,风扇转动,按复位键后风扇停止转动.四、源程序代码4. 1 demonstrator.c 程序/ demonstrator, c motor speed control versioninclude "pc co
10、min. h"#include "demonstrator, h"unsigned char milliseconds = 0;unsigned int second = 0; / count to 1000 and trigger one second event unsigned int speed 二 0; / ir detector count per secondunsigned int lastspeed 二 0; / ir detector count per secondvoid initializer()/ calibrate the oscil
11、lator:osccal calibration();/ initialize the usartusartinito ;/ set for pin change on ptnboddrb 二(1 << pinbo); / set pin 0 to outputportb = (1 << pinbo); / set pin 0 to enable pulluppcmsko = (1 « pinbo); /eifr = (1 « 7); / flag for pcint 15-8eimsk = (1 « 7); / mask for pcin
12、t15-8ddrb = 0x00; / set portb for inputportb = oxff; / enable pullup on for input/ set portd for outputddrd 二(1 << pindo); / set pin 0 to outputportd = (1 << pindo); / set pin 0 to enable pullupmilliseclnit (127) ; / 50% duty cycle lkllz signal/ say hellosendstring(/zrpc_comni. c ready t
13、o communicate. r?,);/ identify yourself specificallysendstring(z,you are talking to the motor speed control demo. r);sendstring(,setxxx to set spccdr);void parseinput(char s)/ parse first characterswitch (s0)case ' s':if( (sl =,e') && (s2 = 't')parse_set (s);break;case
14、39; ct :if ( (s 1二二'e') && (s 2 = ' m') && (s3二二'o') && (s4二二'?') sendstringcyou are talking to the motor speed control demo. rz,); break;default:sendstring(,zryou sent:' );sendchar(soj);sendstring ( - i don't understand. r,z); break;s0
15、二;int parse_set(char s)char set11;unsigned char i = 3, j = 0;while( (si != '0') && (j = 11)if( (si 二'0') && (si 二'9')set j+ = si+;elsesendstring(error - parse_set received a non integer: “); sendchar(sij);sendchar r );return 0;setj二0'if(j>4)/ must be &l
16、t; 256sendstring(''error - parse_set number too large"); return 0;elseset_speed(atoi(set);return 1;void set speed(int count)char speed 11;sendstring(,zsetting the compare timer count to: “); itoa(count, speed, 10);sendstring(speed);sendchar (' r );milliseclnit (count);/*the usart in
17、it set the system oscillator to 2 mhz. we set the timero prescaler to clk/8 which gives a 250 khz input to the timer/counter. a compare of 250 throws an interrupt every millisecond*/void milliseclnit(unsigned char count)/ enable timero compare interrupt t1msk0 = (1«oc1eoa);/ sets the compare va
18、lue setocroa(count);/ set pwm phase correct mode, clk/8 prescalertccroa = (0«focoa) (0«wgm01) (1«wgmoo) (1«cso1);void setocroa(unsigned char count) / sets the compare value ocroa 二 count;/ interrupt occurs twice per mi hi sec, timed for pwm signal(sig_output_compareo)/ toggle por
19、td pin 0辻(portd &= 1) cbi (portd, 0);else sbi(portd, 0);4. 2 pc_commc 程序/ pc_comm. c#include ''demonstrator h#include "pc comin. h"int main(void)char string64;unsigned char count 二 0;/ run the initialization routincs initializer();/begin forever chatting with the pc for(;)/ che
20、ck to see if a character is waitingif( ischaravailableo = 1 )/ if a new character is received, get itstringcount+ = receivechar();/ receive a packet up to 64 bytes longif(stringcount-l = 1 n )/ ilyperterminal string ends with rn stringcount-2 = '0 ; /convert to a stringparseinput (string); strin
21、g0二'0'count = 0;else if (count > 64)counl = 0;string0 = ' 0'sendstring(,zerror - received > 64 characters);return 0;char ischaravailableo/ does the rxo bit of the usart status and control register/ indicate a char has been received?if ( (ucsroa & (0x80) ) return 1;else retu
22、rn 0;char receivechar()/ return the char in the udro register return udro;void sendchar(char data)int i = 0;/ to send data with the usart put the data in the usart data register udro 二 data;/ check to see if the global interrupts are enabledif (sreg & 0x80)/ wait until the byte is sent or we cou
23、nt out while ( !(ucsr0a&0x40) && (i<10000)i+;else / wait until the byte is sentwhile( !(ucsr0a&0x40);/ clear the txcflagucsr0a=ucsr0a|0x40;void sendstring(char s)int i = 0;while(i < 64) / don,t get stuck if it is a bad stringif( si = ' 0' ) break; / quit on string termi
24、nator sendchar(si+);void usartinito/ increase the osc订lator to 2 mhz for the 19200 baudrate:clkpr = (1<<clkpce);/ set clock prescaler change enable/ set prescaler = 4, inter rc 8mhz / 4 = 2mhzclkpr 二(1«clkps1);/ set the usart baudrate registers for 19200l'brroh = 0;/(unsigned char) (b
25、audrate>>8);l'brrol 二 12;/(unsigned char)baudrate;/ enable 2x speed changeucsroa 二(l«u2x0);/ enable receiver and transmitterucsrob 二(1«rxeno) | (1«txeno) | (o«rxcieo) | (o«udrieo);/ set the usart to asynchronous at 8 bits no parity and 1 stop bit ucsroc = (o«l
26、mselo) | (o«upmoo) (o«usbso) | (3«ucsz00) | (0«ucpolo);/ enable interruptssei();/ setup the interrupt mask and flagspcmsk1 = (1«pinb6) eifr = (1«pcif1);eimsk = (1«pcie1);(1«pinb4);/ set pin-change interrupt mask/ clear external intterupt flag 1/ enable externa
27、l interrupt 1/calibrate the internal osccal byte, using the external/32,768 khz crystal as referencevoid osccal_calibration(void)unsigned char calibrate = 0;/false;int temp;unsigned char templ;clkpr 二(1<<clkpce);/ set clock prescaler change enable/ set prescaler = & inter rc 8mhz / 8 = imh
28、zclkpr 二(1«clkps1) | (1«clkpso);timsk2 = 0;/disable 0cie2a and t0ie2assr 二(1«as2):/select asynchronous operation of timer2 (32,768khz)0cr2a 二 200;/ set timer2 compare valuet1msk0 = 0;/ delete any interrupt sourcestccr1b = (1«cs1o);tccr2a = (l«cs20);/ start timerl with no pre
29、scaling/ start timer2 with no presealingwhile(assr & 0x01)(assr & 0x04);/wait for tcn2cb and tcr2ub to becleared/ wait for external crystal to stabilise for(int i = 0; i < 10; i+)_delay_loop_2 (30000);while(!calibrate)cli(); / mt disable interrupt();/ disable global interruptt1fr1 = oxff;/ delete t1fr1 flagstifr2 = oxff;/ delete tifr2 flagstcnt1h 二 0;tcnt1l = 0;tcnt2 二 0;/ c1 ear timerl counter/ clear limer2 counterwhile ( ! (t1fr2 &&(1«ocf2a);/ wait for timer2 compareflagtccr1b = 0; / stop timerlsei(); / _enable_interrupt();/ enable global interruptif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届安徽省高三下学期鼎尖预测大联考政治试卷(原卷版+解析版)
- 爱国卫生运动工作实施方案(28篇)
- 农村社区农业产业化合作协议
- 语言学与文化研究专项练习题集
- 组织管理的纺织工程师考试试题及答案
- 浙江国企招聘2025宁波高新区投资管理集团有限公司及下属子公司招聘36人笔试参考题库附带答案详解
- 2025天津市武清区国有资产经营投资有限公司招聘13人笔试参考题库附带答案详解
- 2025四川华丰科技股份有限公司招聘客服经理等岗位6人笔试参考题库附带答案详解
- 离婚协议书住址
- 环卫一体化提升项目实施方案分析
- 2025新人教版英语七年级下不规则动词表
- 呼吸机湿化的护理
- 大学英语(二)知到智慧树章节测试课后答案2024年秋海南经贸职业技术学院
- 2025年四川宜宾市翠屏区考调事业单位工作人员13人历年高频重点提升(共500题)附带答案详解
- 建材行业购销合同范本
- 小学生宪法宣讲课件
- 广东省云浮市(2024年-2025年小学六年级语文)统编版小升初模拟((上下)学期)试卷及答案
- 幼儿园中班美术活动《美丽的花朵》课件
- 地坪塌陷维修施工方案
- 【MOOC】太极拳初级-浙江大学 中国大学慕课MOOC答案
- 饲料厂管理制度大全
评论
0/150
提交评论