1、第二章 原理分析2.1 温度控制器的结构运用protues软件进行仿真,keil软件与其调试2.2 各电路的原理分析本设计采用上电按钮复位电路:首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被电路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,单片机芯片正常工作。其中电阻R2决定了电容充电的时间,R2越大则充电时间长,复位信号从VCC回落到0V的时间也长。本设计晶振电路采用12M的晶振。晶振的作用是给单片机正常工作提供稳定的时钟信号。单片机的晶振并不是只能用12M,只要不超
2、过20M就行,在准许的范围内,晶振越大,单片机运行越快,还有用12M的就是好算时间,因为一个机器周期为1/12时钟周期,所以这样用12M的话,一个时钟周期为12us,那么定时器计一次数就是1us了,电容范围在20-40pF之间,这里连接的是22pF的电容。机器周期=10*晶振周期=12*系统时钟周期电路接法:三极管选定PNP型,基极B连接5V电压,发射极E连接一个1K左右的电阻后接I/O口,集电极C连接蜂鸣器后接地。单片机在复位后的个I/O口是高电平,此时三极管是截止的,编写程序使选定的I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,从而发出滴滴的响声。其中电阻R
3、1在电路里起分压限流的作用,PNP三极管起到模拟开关的作用。第三章 原理图绘制3.1原理图设计的一般步骤1. 创建一个工程文档:file, new, project, pcb project (创建工程文档很重要,为后面原理图的检错,产生网络表和PCB 设计奠定基础,否则不能进行设计);2.创建一个原理图文件:file, new, schematic,并且保存全部文件;3.设置图纸的大小:右击图纸,options, document options, standard styles 选择图纸大小;4.放置元件图符号:libraries, 选择miscellaneous devices 原理图库
4、,寻找原理图元件图符号,并且,注意元件的封装(一般都带有封装,没有的话,可以按TAB键进行选择合适的封装后再放置元件,这样每放一个元件,就有相应的封装了),可以先放置好一类符号元件,然后放另外一类的元件,直至一一放完所有的元件,例如,放置完所有的电阻元件等等);在放置元件图符号时,对于已经装载的库中没有的,或找不到的元件,必须查找。查找元件图:点击原理图纸空白处,在弹出的下拉菜单中,选择find component, 在libraries search 中,输入要查找的元件名称,选中clear existing query, scope 中,选择libraries on path, path
5、定位于安装2004 的文件夹,按查找即可进行查找中;5.给元件规划流水号(系统给元件自动编号,注意一般不手动编号,否则容易发生错误!):tools, annotate quiet (如果没有规划好,可以复位后重来规划:tools, resetdesignators);6.元件布局与电气连接:手工拖放布局。布局的优劣以方便电气连接为佳(电气连接有两种方式:用导线连接和NET 连接。导线连接一定要从元件脚端点开始连线,连接不能重叠,否则会出来多余的点),放置导线与网络电气连接;7.检查错误:右击原理图的空白处,workspace panels, design compilers, compilee
6、rrors,在弹出的compile errors 卡上没有错误,说明编译通过。保存全部文档;8.元件的选择,旋转,删除、排列和元件相关参数的修改等等在元件的布局或修改时,经常要用到;9.产生网络表:design, netlist for document, protel. 项目文件夹中可以看到网络表文件,打开,可以看到元件的说明与电路原理图的电连接网络情况;10.保存并且打印输出原理图纸。3.2 元件库的设计libraries, 选择miscellaneous devices 原理图库,寻找原理图元件图符号,并且,注意元件的封装;5.给元件规划流水号:tools, annotate quiet
7、;第四章 PCB图的绘制1.创建一个PCB 文档:file, new, PCB,SAVE ALL;2.PCB 参数设置:右击PCB 的空白处,选择options, board options, 选择测量单位;在keep outlayer 层,选择place, dimension, dimension 画标尺的长度,以规划电路版的长宽大小,再选择place, line, 画版的大小;再右击PCB 的空白处,选择design, rules,在弹出的卡中点击routing, width 进行设置连接导线的宽度,和布线板层的层数routing layers,单面板,只选择bottom layer, 双
8、面板,还要选择top layer;3.将原理图中各元件的电气连接关系,导入PCB 文档中各元件封装的连接关系,为元件布局的连线提供保证。步骤:在PCB 文档中,选择design, update schematicin PCB project. prj pcb, 在弹出的confirm 中选择YES, 在弹出的 differencesbetween schematic document and PCB document 卡中右击,点击update all in PCBdocument, 再点击create engineering change order, 再点击validate changes
9、,STATUS 栏全部打勾后,说明基本没有问题,最后点击execute changes, 在PCB板中导入了连接;4.将元件选中并拖入PCB 板框内,检查元件的封装是否合适后,手工布局。布局时要用到元件封闭的选择、旋转、排列和封装的更换与查找。为布线提供良好的环境,使布线布通的概率提高,尽量少用跳线;5.规划焊盘的大小与打孔孔径大小:选择相似的焊盘:右击该焊盘,find similarobjects, 在弹出的卡中,在该焊盘尺寸的X 和Y 座标栏中选择SAME, 点击OK,再在Inspector 卡中,修改X 和Y 座标相关焊盘参数和hole size 参数后,点击左键,系统即会对相关参数进行
10、修改。6.手工布线:对哪层布线前,就要先选择该层后进行布线:interactively routeconnections;7.保存并且输出PCB 板图;总结:通过这次课程设计对EDA设计有了更深的了解。在设计的时候会出现些错误,培养了自己运用科学的方法分析问题、解决问题的能力。第五章 软件的设计本课程设计使用的软件为keil,通过不断的调试,最后完成了软件的设计:#include#define uchar unsigned char #define uint unsigned intsbit DQ =P20 ;/18B20数据线引脚sbit sp=P21; /蜂鸣器端口sbit d1=P22;
11、 /继电器sbit led1=P23; /上限温度指示sbit led2=P24; /正常温度指示sbit led3=P25; /下限温度指示sbit SET=P30;uchar dispbuf4; /显示缓冲区 uchar temper2;/存放温度 uchar code table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,;uchar code table1= /只定义个位带小数部分0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;void delay(uint z) /延时函数u
12、int x,y; for(x=z;x0;x-) for(y=110;yy-);void delay1(uint z)/小延时,用于对DS18B20的操作 while(z-); void reset(void) /复位操作 uchar x=0; DQ = 1; delay1(8); /稍做延时10us DQ = 0; delay1(80); /精确延时 大于 480us /拉高总线 delay(14); x=DQ; delay1(20);uchar readbyte(void) /从DS18B20读一字节 uchar i=0; uchar dat=0; for (i=8;ii-) dat=1;/
13、0000 0001/1000 0000/0100 0000/. DQ = 1; if(DQ) /判断数据线dq是0还是1 dat|=0x80; /或,如果dat为1则为1,为0则为0 delay1(4); return(dat);void writebyte(unsigned char dat) /向DS18B20写一字节uchar i=0; i i-) DQ = dat&0x01;/ 0000 0001 发送1 delay1(5); /延时45usvoid readtemp(void) /CPU读取温度值 uchar a=0,b=0; reset(); writebyte(0xCC); /
14、跳过序列号 writebyte(0x44); / 启动温度转换 writebyte(0xBE); /读9个寄存器,前两个为温度 a=readbyte(); /低位 b=readbyte(); /高位 temper0=a&0x0f; a=a4; /低位右移4位,舍弃小数部分 temper1=b5) /设置上线 d1=1; led1=0; led3=1; led2=1; sp=1; delay(1); sp=0; else if(dispbuf03)/设置下线 led3=0; led1=1; else /设置正常状态 d1=0; led2=0;void main() uchar i; uchar
15、temp; float backbit; uchar counter; counter=5; sp=1; for(i=0;ii+) dispbufi = 0; while(1) /温度测量频率没有必要太高,太高反而影响数码显示 /所以用计数器加以控制 if(SET=0) d1=0; sp=0; delay(2000); dowhile(SET=0); if(counter- = 0) readtemp(); counter = 2; / readtemp();/读18B20 backbit = temper0;/换成浮点数 backbit = backbit * 6.25;/乘以0.0625*
16、100 temp = backbit; /取低2位整数部分 dispbuf3 = temp%10 ; temp = temp/10; dispbuf2 = temp%10 ; temp = temper1; /取整数部分 dispbuf1 = temp%10; dispbuf0= temp%10; saomiao();通过本次课程设计,逐渐的掌握了keil、protues、dxp等软件的应用方法及温度传感器DS18B20的读取和写入。进一步的了解51单片机的应用。在模拟仿真的过程中,学到了在课堂上不会学习到的知识,有的时候虽然原理是可行的,但是,在实际当中却相差很远,比如蜂鸣器、电机的使用,虽
17、然说在原理仿真上是可行的,但是在实际过程中要考虑它的功率以及驱动电流。此外在制作的PCB的时候要考虑诸多的因素,之前要考虑封装的可行性,再到后来的板子大小,器件的布局,布线的方法等等。总而言之,经过老师的严格要求下,使我有了制作PCB的基本经验,对今后的自己制作以及毕业设计有很大的帮助。附录:温度控制器仿真图:温度控制器原理图:温度控制器PCB:温度控制器网络表:8SEG-LED1LED SHUMA YINSHUMA_YIN8SEG-LED20.5INCH-DISP8SEG-LED38SEG-LED412MBCY-W2/D3.1XTALB1RB5-10.5MotorC1RAD-0.3CapC2
18、C3RB7.6-15Cap Pol1D1LEDD2D3D4K1DIP-P5/X1.65Relay-SPDTLS1PIN2SpeakerP1HDR1X4USBQ1BCY-W3/E42N3906Q2R1AXIAL-0.4Res2R2R3R4R5R6RP1SIP9RESPACK 8COMMONS1SPST-2SW-PBS2U1DIP-40AT89C52U2PR35DS1820(VCCB1-1C3-1P1-4Q1-1Q2-1R4-1RP1-1S1-2U1-31U1-40U2-3)P1.38SEG-LED4-9U1-4P1.28SEG-LED3-9U1-3P1.18SEG-LED2-9U1-2P1.08
19、SEG-LED1-9U1-1Net12M_112M-1C1-2U1-19Net12M_212M-2C2-2U1-18NetB1_2B1-2D4-ANetD1_KD1-KR3-2NetD2_KD2-KR4-2NetD3_KD3-KR5-2NetD4_KD4-KK1-3NetK1_5K1-5Q1-3NetLS1_1LS1-1Q2-3NetQ2_2Q2-2R6-1NetR1_1R1-1R2-2U1-9NetR1_2R1-2S1-1NetR3_1R3-1R5-1NetS2_2S2-2U1-10GNDC1-1C2-1C3-2K1-1K1-4LS1-2P1-1R2-1S2-1U1-20U2-1D78SEG-LED1-88SEG-LED2-88SEG-LED3-88SEG-LED4-8RP1-9U1-32D68SEG-LED1-78SEG-LED2-78SEG-LED3-78SEG-LED4-7RP1-8U1-33D58SEG-LED1-68SEG-LED2-68SEG-LED3-68SEG-LED4-6RP1-7U1-348SEG-LED1-58SEG-LED2-58SEG-LED3-58SEG-LED4-5RP1-6U1-358SEG-LED1-48SEG-LED2-48SEG-LED3-48SEG-LED4-4RP1-5U1-368SEG-LED1-38SE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1