基于某单片机地创新《向“日”葵》课程设计

上传人:痛*** 文档编号:86371557 上传时间:2022-05-07 格式:DOC 页数:29 大小:182.50KB
收藏 版权申诉 举报 下载
基于某单片机地创新《向“日”葵》课程设计_第1页
第1页 / 共29页
基于某单片机地创新《向“日”葵》课程设计_第2页
第2页 / 共29页
基于某单片机地创新《向“日”葵》课程设计_第3页
第3页 / 共29页
资源描述:

《基于某单片机地创新《向“日”葵》课程设计》由会员分享,可在线阅读,更多相关《基于某单片机地创新《向“日”葵》课程设计(29页珍藏版)》请在装配图网上搜索。

1、word电子科技大学某某学院机电一体化控制器课程设计说明书姓 名:谢伟军学 号:院 别:机电工程学院 专 业:机械设计制造与其自动化 题 目:向“日葵X保军指导教师:X保军评阅教师: 2013年 6 月目 录1、课程设计目的42、本课程设计的背景知识43、课程设计内容44、工具/准备工作55、设计步骤与原理55.1 单片机控制系统原理.55.2 单片机主机系统电路.55.2.1时钟电路.65.2.2复位电路.65.2.3按键.75.3.1数据采集处理电路.75.3.2 红外传感器的物理摆放位置.75.3.3 红外传感器的驱动组.85.4温度检测电路.85.5时钟模块.95.6液晶模块.95.7

2、步进电机驱动.96 系统软件设计.106.1温度采集.106.2电机驱动. 136.3时钟读取. 156.4诺基亚5110驱动. 186.5主程序. 247、设计结果与分析278、总结与心得体会289、对本设计过程与方法、手段的改良建议2810、参考文献2811、评价(教师)291、 课程设计目的1) 通过正确地应用单片机或微型计算机等控制器,培养解决工业领域控制、工业检测等领域具体问题的初步能力。2) 通过所做课题,熟悉单片微机应用系统开发、研制的过程,软硬件设计的方法、工作内容、工作步骤,完成机电一体化控制器设计。3) 加强进展根本技能训练,例如组成系统、编程、调试、查阅资料、绘图、编写说

3、明书等;理论联系实际,提高动手能力和分析问题、解决问题的能力,训练根本的工程能力。2、 本课程设计的背景知识在现代,人们生活上的消费不仅仅是生活必需品上的消费,随着人们生活水平的提高,在精神娱乐、家居以与办公环境的消费比例也逐步提高。一个好的家居环境和办公环境自然能给人们带来好的心情。随着时代的进步,各种家居摆设层出不穷,一批批生活小玩意涌向市场。然而一批批的静态的摆设远远不能满足人们的需求,一些循环动作的玩意也人们也是司空见惯。本小组就想要一种智能的充满活力的居家办公装饰品,向“日葵,人就是那朵花心中的太阳。当然此作品不只是用于家居办公的摆设,也可以用于商店、酒店等用于欢迎顾客和欢送顾客的一

4、个工具、甚至可以用于跟踪侦查与检测。3、 课程设计内容 本论文主要研究单片机控制的向人,分别对人方向的定位以与通过电机控制花朵面向人,附加一些时间以与温度的lcd显示如果要更进一步可以给花增加一个脾气系统;面向控制技术与系统设备的软、硬件各个局部进展了研究。主要内容如下: 1.根据红外传感器的特点对人体所在方向进展定位。 2.通过定位所得的信息进展对步进电机的控制,使之面向人。3. Lcd显示当前温度以与时间。4、 工具/准备工作 万用表,单片机实验板,选购人体或外传感器,单片机,三极管,诺基亚5110液晶,时钟芯片ds1302,温度芯片ds18b20杜邦线等等。5、 设计步骤与原理5.1 单

5、片机控制系统原理5.2 单片机主机系统电路AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能S八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了本钱,提高了系统的性价比。 单片机系统图 单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。

6、MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比拟稳定,实际使用中常采用这种方式,如图3所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反响元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。 图中外接晶体以与电容C2和C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30P左右,晶振频率选12M oRESET 为了初始化单片机内部的某些特殊功能存放器,必须采用复位的方式,复位后可使CPU与系

7、统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口存放器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的存放器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。图中R9和Cl组成上电复位电路,其值R取为1KQ, C取为22uF. 电机复位按键用于电机复位初始化。 上

8、图为人体红外传感器模块原理图,调节滑动电阻可以调节测量距离以与是否重复触发。5.3.2 红外传感器的物理摆放位置红外传感器的摆放为4摆成一个正方形。用于感应人所在的方位。如图,这种摆放方式能感应出摆个方位的不同,增加传感器的数量可以感应可多方位,如下列图,在非常接近传感器的4个角的方位上要有4个盲区。但盲区非常小一般人不会如此接近传感器,所以可以忽略。5.3.3 红外传感器的驱动组 Ds18b20采用一线制通信,检测的最小变化值为0.5度,是一款性价比拟高的传感器。 时钟芯片有两个电源端,一个是工作电源,一个是保存数据和掉点时工作的电源 。 诺基亚5110是一款性价比拟高的液晶显示器,操作简单

9、。内部电路如下:采用的是单片的SPI通信,占用端口少。减速电机28BYJ-48是一个5线4向电机,采用ULM2003A驱动,8拍信号可以很准确的控制其角度。6、 系统软件设计sbit DQ=P14;/函数功能:将DS18B20传感器初始化,读取应答信号bit Init_DS18B20(void)bit flag; /储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,DQ = 1; /先将数据线拉高 for(time=0;time2;time+); /略微延时约6微秒 DQ = 0; /再将数据线从高拉低,要求保持480960us for(time=0;time200;ti

10、me+); /略微延时约600微秒 DQ = 1; /释放数据线将数据线拉高 for(time=0;time10;time+) ; /延时约30us释放总线后需等待1560us让 flag=DQ; /让单片机检测是否输出了存在脉冲DQ=0表示存在 for(time=0;time200;time+); /延时足够长时间,等待存在脉冲输出完毕 return (flag); /返回检测成功标志/函数功能:从DS18B20读取一个字节数据unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /储存读出的一个字节数据fo

11、r (i=0;i8;i+) DQ =1; _nop_(); / 先将数据线拉高 /等待一个机 DQ = 0; _nop_(); /单片机从DS18B20读书据时,将数据线从 DQ = 1; /将数据线人为拉高,为单片机检测DS18B20的输出 for(time=0;time=1; if(DQ=1) dat|=0x80; /如果读到的数据是1,如此将1存入datelsedat|=0x00;/如果读到的数据是0,如此将0存入dat for(time=0;time8;time+); /延时3us,两个读时序之间 return(dat); /返回读出的十六进制数据/函数功能:向DS18B20写入一个字

12、节数据WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i8; i+) DQ =1; _nop_(); / 先将数据线拉高 DQ=0; /将数据线从高拉低时即启动写时序 DQ=dat&0x01; /利用与运算取出要写的某位二进制数据, for(time=0;time10;time+);/延时约30us, DQ=1; /释放数据线 for(time=0;time=1; /将dat中的各二进制位数据右移1位 for(time=0;time255) TH+; /如果低8位大于255,向高8位进1 TN=TH*16+TL/16; /实

13、际温度值=(TH*256+TL)/16,即: TD=(TL%16)*10/16; /计算温度的小数局部,TN=TH*16+TL/16; /实际温度值=(TH*256+TL)/16,即: TD=(TL%16)*10/16; /计算温度的小数局部,将余数乘以10再除以16wd=TN+TD/10.0;if(flag=1)wd=-wd;return wd; /(wd%1)*10为小数位unsigned char dj=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09;void ys(unsigned int z)unsigned int x;unsigned int y;

14、for(x=z;x0;x-)for(y=114;y0;y-);/ 电机程序void djzd(unsigned char k,bit c) /转过的角度=K*16*360/128,c代表正反转unsigned char i,j,temp; if(c=1)for(j=0;j(k*16);j+)for(i=0;i8;i+)P1=dji;ys(5);Elsefor(j=0;j0;i-)temp=i-1;P1=djtemp;ys(5);sbit rst=P37;sbit clk=P33;sbit din=P34;/函数功能:延时假如干微秒void delaynus(unsigned char n) u

15、nsigned char i; for(i=0;in;i+);/函数功能:向1302写一个字节数据void Write1302(unsigned char dat) unsigned char i; SCLK=0; /拉低SCLK,为脉冲上升沿写入数据做好准备 delaynus(2); /稍微等待,使硬件做好准备 for(i=0;i=1; /将dat的各数据位右移1位,准备写入下一个数 /函数功能:根据命令字,向1302写一个字节数据void WriteSet1302(unsigned char Cmd,unsigned char dat) RST=0; /禁止数据传递 SCLK=0; /确保

16、写数居前SCLK被拉低 RST=1; delaynus(2); /启动数据传输 Write1302(Cmd); /写入命令字 Write1302(dat); /写数据 SCLK=1; /将时钟电平置于高电平状态 RST=0; /禁止数据传递 /函数功能:从1302读一个字节数据 unsigned char Read1302(void) unsigned char i,dat;delaynus(2); /稍微等待,使硬件做好准备for(i=0;i=1; if(DATA=1) /如果读出的数据是1 dat|=0x80; /将1取出,写在dat的最高位 SCLK=1; delaynus(2); /将

17、SCLK置于高电平,为下降沿读出 SCLK=0; delaynus(2); /拉低SCLK,形成脉冲下降沿 i=dat/16; i=i*10+dat%16; return i; /将读出的数据返回 /函数功能:根据命令字,从1302读取一个字节数据unsigned char ReadSet1302(unsigned char Cmd) unsigned char dat; RST=0; /拉低RST SCLK=0; /确保写数居前SCLK被拉低 RST=1; /启动数据传输 Write1302(Cmd); /写入命令字 dat=Read1302(); /读出数据 SCLK=1; /将时钟电平置

18、于状态 RST=0; /禁止数据传递 return dat; /将读出的数据返回/*函数功能: 1302进展初始化设置*/ void Init_DS1302(void) unsigned char flag; WriteSet1302(0x8E,0x00); /根据写状态存放器命令字,WriteSet1302(0x80,0x30); /根据写秒存放器命令字,写入秒的初始值WriteSet1302(0x82,0x17); /根据写分存放器命令字,写入分的初始值WriteSet1302(0x84,0x08); /根据写小时存放器命令字,写入小时的初始值WriteSet1302(0x86,0x01)

19、; /根据写日存放器命令字,写入日的初始值WriteSet1302(0x88,0x07); /根据写月存放器命令字,写入月的初始值WriteSet1302(0x8c,0x13); /根据写年存放器命令字,写入年的初始值WriteSet1302(0x8a,0x1); /根据写年存放器命令字,写入年的初始值WriteSet1302(0x90,0xa5); /打开充电功能 选择2K电阻充WriteSet1302(0x8E,0x80); /根据写状态存放器命令字,写入保sbit rst=P37;sbit clk=P33;sbit din=P34;sbit DQ=P14;void delay_1us(v

20、oid) unsigned int i; for(i=0;i1000;i+); void xdc(unsigned char dcc,bit k)/K=0写命令,k=1写数据unsigned char i;ce=0; /片选选通if(k=0) /命令dc=0;else dc=1;/数据for(i=0;i8;i+)if(dcc&0x80)din=1;elsedin=0;clk=0;dcc=dcc1;/放在这里的主要原因是等待一点时间clk=1;ce=1; /写入完成后禁止写入void LCD_clear(void) unsigned int i; xdc(0x0c,0); xdc(0x80, 0

21、); for (i=0; i504; i+) xdc(0, 1); /函数功能:5110初始化void csh5110(void) rst=0; / 产生一个让LCD复位的低电平脉冲 delay_1us(); rst=1; ce=0; / 关闭LCD delay_1us(); ce=1; / 使能LCD delay_1us();xdc(0x21, 0);/ 使用扩展命令设置LCD模式 xdc(0xBF, 0);/ 设置液晶偏置电压 可调节屏幕的比照度 xdc(0x06, 0);/ 温度校正 xdc(0x13, 0);/ 1:48 xdc(0x20, 0);/ 使用根本命令,V=0,水平寻址 L

22、CD_clear(); / 清屏 xdc(0x0c, 0);/ 设定显示模式,正常显示ce=0; / 关闭LCD /函数功能:设置LCD坐标函数void LCD_set_XY(unsigned char X, unsigned char Y) xdc(0x40 | Y, 0); / column xdc(0x80 | X, 0); / row /函数功能:显示英文字符void LCD_write_char(unsigned char c,unsigned char h,unsigned char l) unsigned char line;c=c-32;LCD_set_XY(h,l); for

23、 (line=0;line6;line+) xdc(zfbcline,1);/显示小四汉字void hz(unsigned char *c,unsigned char h,unsigned char l)unsigned char line;LCD_set_XY(h,l); for (line=0;line16;line+) xdc(cline,1);LCD_set_XY(h,l+1); for (line=16;line32;line+) xdc(cline,1);/显示小五汉字void xshz(unsigned char *c,unsigned char h,unsigned char

24、l)unsigned char line;LCD_set_XY(h,l); for (line=0;line12;line+) xdc(cline,1);LCD_set_XY(h,l+1); for (line=12;line24;line+) xdc(cline,1);/整个屏幕显示void display(uchar n,uchar y,uchar r,uchar s,uchar f,uchar z,char wd) unsigned char ka; hz(zhou1,0,0); hz(xingqi+(z-1)*32,16,0);ka=n/10;LCD_write_char(ka+48,

25、32,0);ka=n%10;LCD_write_char(ka+48,38,0);LCD_write_char(/,44,0);ka=y/10;LCD_write_char(ka+48,50,0);ka=y%10;LCD_write_char(ka+48,56,0);LCD_write_char(/,62,0);ka=r/10;LCD_write_char(ka+48,68,0);ka=r%10;LCD_write_char(ka+48,74,0);ka=s/10;LCD_write_char(ka+48,32,1);ka=s%10;LCD_write_char(ka+48,38,1);LCD

26、_write_char(:,44,1);ka=f/10;LCD_write_char(ka+48,50,1);ka=f%10;LCD_write_char(ka+48,56,1);if(wd0)LCD_write_char(-,48,5);wd=-wd;ka=wd/10;LCD_write_char(ka+48,60,5);ka=wd%10;LCD_write_char(ka+48,66,5); LCD_write_char(C,78,5); LCD_write_char(124,72,5);xshz(hai,0,2); xshz(fu,12,2); xshz(wei,26,2); xshz(

27、xiong,38,2); xshz(wei,52,2); xshz(jun,64,2); xshz(xiang,0,4); xshz(ri,12,4); xshz(kui,24,4);/6.5主程序 void main()csh5110(); /液晶初始化ReadyReadTemp(); /温度初始化Init_DS1302();dusj();display(n,y,r,s,f,z,wd1); IT0=1; EX0=1; EA=1;while(1)if(ks)dusj();display(n,y,r,s,f,z,wd1);a1=P2&0x0f;P3=P2;for(i2=0;i214;i2+) /

28、查表找出人的方位,0初始位置,1+ 45度 if(biaoi2=a1)break;a2=i2;if(a2=8&a=12)a2=(a2-12)*6;elsea2=a2;a2=a2+8;switch(a2-a)case 1:djzd(1,0);a2=a2-8;a=a2;break;case 2: djzd(2,0);a2=a2-8;a=a2; break;case 3: djzd(3,0);a2=a2-8;a=a2; break;case 4: djzd(4,0);a2=a2-8;a=a2; break;case 5: djzd(3,1); a2=a2-8;a=a2; break;case 6:

29、djzd(2,1); a2=a2-8;a=a2;break;case 7: djzd(1,1); a2=a2-8;a=a2; break;case 8: break;case 9: djzd(1,0); a2=a2-8;a=a2; break;case 10: djzd(2,0);a2=a2-8;a=a2; break;case 11: djzd(3,0);a2=a2-8;a=a2; break;case 12: djzd(4,0); a2=a2-8;a=a2; break;case 13: djzd(3,1); a2=a2-8;a=a2;break;case 14: djzd(2,1); a

30、2=a2-8;a=a2; break;case 15: djzd(1,1);a2=a2-8;a=a2; break; default:break; void aaaa() interrupt 0 /电机位置初始化程序unsigned char i1;while(!p32)for(i1=0;i18;i1+)P1=dji1;ys(5);ks=1;EA=0;7、 设计结果与分析设计结果,电机在初始化位置后能根据人体红外传感器检测出人的位置从而改变转向并面向人。由于传感器模块的电路决定了红外传感器在感应人体进入区域时有最低5S的输出时间,造成单片机判断上有一定的困难,在人体方位确定下来后单片机能在5s

31、后对人的位置能有个准确的判断,在传感器输出完毕后有一个封存时间,这封存时间是红外传感器应用的一个很大的优点,其最初目的是为了减少干扰,但在这里的应用确成为了一个缺点。对人位置的判断也通过程序对人的判断得到一定的改良,但是仍不能消除传感器自身特性的影响。传感器摆放成一个正方形,能测出八方人的位置,由于他120度以上的检测角决定了4个传感器的摆放位置以与检测方向的多少。 诺记5110显示当前的温度时间,诺基亚5110液晶显示了时钟芯片的年月日分时周,但是没有显示秒,因为电机不是一种快速反响的的器件,在电机转动工程中有可能存在超过1s的转动,所以秒的显示在这里会出现一定的误差,意义不大。文字的显示在

32、此程序有两种字体,一种的小四16*16,一种是小五12*12,数字与符号的显示采用6*8的字符 。这样在排版上具能跟美观,而且比拟标准,降低的程序的复杂性。 温度传感器DS18B20是一总线通信,对时间要求比拟严格,不同的晶振在通信时要在程序改下不同的数据。8、 总结心得和体会 通过本学期的单片机课程设计学习研究,从而了解到,首先要有自己小组上独特创意上的设计,要切合自身的实践能力不过高要求自己且严格约束自己。为更好的将理论教学与实践相结合,成功完成试验要求,需要我们对单片机应用系统设计的各种方法有所了解,通过小组成员之间的兴趣进展分工合作,培养成员之间的合作精神,节省时间更大效益的完成。熟悉

33、电子系统设计的全过程;提高对设计课题的分析能力、编程能力与解决实际问题的综合能力。通过本次课程实际的学习,让我们了解到的自身的一些不足。对于根底知识掌握的不够结实,特别是对于单片机的前项结构设计应用理解与程序编写的不够,反映出模拟电路掌握的不好;对外界硬件认识和市场不了解,使得前期选择硬件有些分歧;在学习中实践少,导致完成设计过程中,动手能力差,时常在一些细节方面有失误;根底知识不够扎实,导致在程序编写上,常常遇到问题。通过本次试验,根据实践得出问题是做系统的一个很重要的能力,善于对程序运行的一些现象去找出问题发现问题,加强实践能力,获得更多的实践经验。9、 对本设计的方法与改良的建议改良,参加脾气系统,让花有脾气,不同时间不同脾气有不同的面向。10、 参考文献1景东升.单片机自动灌溉控制系统研究、设计与应用.学位论文.农业工程大学,1994 2武庆生,仇梅.单片机原理与应用.电子科技大学出版,1998,12 3朱定华.单片机原理与接口技术.电子工业,2001,44X瑞新.单片机原理与应用教程.机械工业,2003,75吴普特,牛文全,郝宏科.现代化高效节水灌溉设施.化学工业,2002b,511、评价(教师)报告评分:指导教师签字:29 / 29

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!