单片机课程设计-以智能温度计为主的多功能任务设计.doc_第1页
单片机课程设计-以智能温度计为主的多功能任务设计.doc_第2页
单片机课程设计-以智能温度计为主的多功能任务设计.doc_第3页
单片机课程设计-以智能温度计为主的多功能任务设计.doc_第4页
单片机课程设计-以智能温度计为主的多功能任务设计.doc_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

班级: 电气3073 姓名:* 学号:3072110303 课题: 以智能温度计为主的多功能系统设计单片机原理及应用课程设计任务课题: 以智能温度计为主的多功能任务设计 班级 电气3073 学号 3072110303 学生姓名 指导教师 淮阴工学院电子与电气工程学院目 录一、课程设计目的2二、设计要求32.1总体要求32.2 具体要求3三、设计内容及方法33.1设计准备43.2功能设计及系统总体设计4四、硬件电路总体设计44.1 硬件总框图44.1.1 主控电路44.1.2 按键控制扫描模块54.1.3 ds1820温度显示模块64.1.4 数码管显示模块74.1.5 led显示模块84.1.6 扬声器模块8五、 软件流程框图10六、 完整的程序清单及注释126.1主程序清单:12七、调试情况及小结157.1 硬件调试157.2 软件调试157.3 软硬件调试16七、设计总结16八、参考文献16一、课程设计目的单片机原理及应用课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生通过综合的系统设计,熟悉应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。通过课程设计,应能加强学生如下能力的培养:(1) 独立工作能力和创造力;(2) 综合运用专业及基础知识,解决实际工程技术问题的能力;(3) 查阅图书资料、产品手册和各种工具书的能力;(4) 工程绘图的能力;(5) 编写技术报告和编制技术资料的能力。二、设计要求2.1总体要求(1) 独立完成设计任务(2) 绘制系统硬件总框图(3) 绘制系统原理电路图(4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5) 制定编写调试方案,编写用户操作使用说明书(6) 写出设计工作小结。对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,2.2 具体要求本次工程实践主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。 软件编程是本次工程实践的重要环节。在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点: 1)、熟悉keil c51编程平台及proteus 仿真; 2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调; 3)、编写、调试led流水灯(循环显示)程序并进行软硬件联调; 4)、编写、调试键盘扫描子程序并进行软硬件联调;5)、编写、调试数码管动态扫描程序并进行软硬件联调 。3 具体课题:本题属于多功能任务设计,基于本实验室所提供的电路模板,具体题目如下:1、 以智能温度计为主的多功能任务设计;2、 以智能速度里程表为主的多功能任务设计;3、 以多功能数字电子钟为主的多功能任务设计;4、 以lcd点阵字符显示屏为主的多功能任务设计;5、 以交通灯控制的多功能任务设计。课题名字的多功能任务的含义是:要求每个同学所设计的电路和程序必须实现4个功能,电路提供四个按键,要求同学们能编写、调试对应的键盘扫描子程序,从而实现,当按下a按键,实现蜂鸣器或继电器动作,当按下b按键,实现led流水灯(循环显示),当按下c按键,实现数码管动态扫描显示(显示内容可以自己确定),前3个功能,对于每个课题都是相同,只有最后一个按键不同,其功能取决于所选课题名称,即当按下d按键,要求实现相应课题的最主要的功能,例如,对于“以智能温度计为主的多功能任务设计”的课题,当按下该课题所对应的d按键,就要实现显示温度的功能,其余类似。三、设计内容及方法 单片机原理及其应用课程设计通常选择一般常见、常用的简单应用装置或对象进行微机控制。所涉及的系统可以实际制作,也可以实验室模拟,具体步骤:3.1设计准备认真研究设计任务书,明确设计要求、条件、内容、和步骤;通过阅读有关资料,了解设计对象;复习课程有关内容,熟悉有关单元电路的设计方法和设计步骤;搜集、分析、消化相关资料、软件等,掌握微型计算机应用系统软件的设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等。3.2功能设计及系统总体设计要求学生有创新精神和创新意识,分析所掌握的资料,了解设计对象的功能。在充分考虑功能设计后,进行总体设计,以功能、结构为标,制定总体方案,规划硬、软件功能分配等;初步确定关键元器件地选择。四、硬件电路总体设计 4.1 硬件总框图以单片机为主的主控 电 路按键控制扫描模块ds1820温度显示模块数码管显示模块led显示模块扬声器模块控制原理:该设计以单片机为主控电路,分别控制5个工作模块:按键控制模块、实时时钟模块、数码管显示模块、led显示模块、扬声器模块。按键控制模块由单片机p1.4-p1.7口控制。温度显示由ds1302完成,由单片机int0、int1、t0口控制。数码管显示由led显示模块由p0口和p1.0-p1.3控制。led模块由p2口控制。扬声器由t0口控制。4.1.1 主控电路本次课程设计中主要是设计一个以作息时间控制为主的多功能控制系统。该设计中我们主控电路部分采用了单片机at89c52芯片来实现这些功能,at89c52是一个低电压,高性能cmos的8位单片机,片内含8kb的可反复擦写的flash只读程序存储器和256b的随机存取数据存储器(ram)。其引脚如下图所示: vcc:供电电压。gnd:接地。p0口(p0.0-p0.7):p0口来控制数码管的段选,以显示相应的数值。p1口 (p1.0-p1.7):p1口用来控制数码管的位选,以达到动态显示的效果。p2口 (p2.0-p2.7):p2口来控制led的亮灭。 p3口 (p3.0-p3.7):p3.0为rxd(串行输入口),p3.1为txd(串行输出口),p3.2为/int0(外部中断0),p3.3为/int1(外部中断1),p3.4为t0(记时器0外部输入),p3.5为t1(记时器1外部输入),p3.6为/wr(外部数据存储器写选通),p3.7为/rd(外部数据存储器读选通)。 xtal1(19 脚)和xtal2(18 脚)为振荡器输入输出端口,外接12mhz 晶振。rst/vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。vcc(40 脚)和vss(20 脚)为供电端口,分别接+5v电源正负端。p0p3 为可编程通用i/o 脚,其功能用途由软件定义。 4.1.2 按键控制扫描模块 按键用于控制数码显示、led显示、扬声器等模块的工作。通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。设计中使用单个按键实现单个功能,属于较为简单的控制方式. 按键输入电路使用4个按键分别与单片机的平p1.4、p1.5、p1.6、p1.7分别连接,以完成按键控制。4.1.3 ds1820温度显示模块 ds18b20“一线总线”数字化温度传感器同ds1820一样,ds18b20支持“一线总线”接口,测量温度范围为-55+125摄氏度。在-10+85摄氏度范围内,ds18b20的精度为正负0.5摄氏度,ds1822的精度较差,为正负2摄氏度。现场温度直接以“一线总线”的数字方式传输,可大大提高系统的抗干扰性,因此它适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制等。ds18b20内部结构主要有四部分组成:64位光刻rom、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。ds18b20的管脚排列为:dq为数字信号输入/输出端;gnd为电源地;vdd为外接供电电源输入端。dallas18b201 2 3gnd dq vdd4.1.4 数码管显示模块设计中采用四位共阳极数码管,共阳极是指其公共端接正极,通过单片机at89c52的p1口控制其位选,以达到动态显示的效果,再通过p0口,控制其段选以显示相应的数值。在其位选控制部分,采用了一个9012型三极管,要求当p1口输出低电平时,位选成功。 数码管显示电路硬件电路中,数码管显示的小时和分.小时通过按键2控制,分通过按键3控制。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的i/o端口进行驱动,或者使用如bcd码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用i/o端口多,如驱动5个数码管静态显示则需要5840根i/o端口来驱动,要知道一个89s51单片机可用的i/o端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。4.1.5 led显示模块 led(light emitting diode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。led的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是p型半导体,在它里面空穴占主导地位,另一端是n型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“p-n结”。当电流通过导线作用于这个晶片的时候,电子就会被推向p区,在p区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是led发光的原理。而光的波长也就是光的颜色,是由形成p-n结的材料决定的。 led显示电路本次设计中通过按键1来控制其流水显示,打开电源后按下按键1,流水灯模块有效。电路中led为共阳极,故控制流水灯显示的p2口应为低电平时才有效。从原理图中可以看出,如果要让接在p2.0口的led1亮起来,那么只要把p2.0口的电平变为低电平就可以了;相反,如果要接在p2.0口的led1熄灭,就要把p2.0口的电平变为高电平;同理,接在p2.1p2.7口的其他7个led的点亮和熄灭的方法同led1。因此,要实现流水灯功能,我们只要将发光二极管led1led8依次点亮、熄灭,8只led灯便会一亮一暗的做流水灯了。我们首先把要显示流水花样的数据建在一个以tab为标号的数据表中,然后通过查表指令“movca,a+dptr”把数据取到累加器a中,然后再送到p1口进行显示。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。4.1.6 扬声器模块要求扬声器能够发出连续,断续的声音及音乐,我们可以选择一个蜂鸣器来实现这些功能。蜂鸣器电路图:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。下面我们以电磁式蜂鸣器为例来说明它的工作原理:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声,当输出高电平时,三极管截止,蜂鸣器的两引脚间的直流电压接近于0v,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,使蜂鸣器的两个引脚间获得将接近+5v的直流电压,这样蜂鸣器的电流形成回路,发出声音在这个设计中是通过p3.4口控制其发声的。由于p3.4与ds1302是连在一起的,故只要ds1302工作,就可以设定使扬声器发出声音。4.2 硬件总电路图五、 软件流程框图yyyyp1口置初值0f0h调用蜂鸣器发声程序调用led显示子程序调用温度程序keya按下?keyb按下?keyc按下?keyd按下?调用数码管显示子程序开始n图1 主程序流程图 ny开始循环时间的初值设置p3.4端口输出设置延时0.2sp3.4端口取反延时0.2s循环结束?返回主程序 图 2 蜂鸣器程序流程图图3 流水灯程序流程图图4 时间显示流程图初始化调用显示子程序1s到2初次上电?读出温度值温度计算处理显示数据刷新发温度转换开始命令图5 ds18b20温度计主程序流程图 主程序的主要功能是负责温度的实时显示,读出并处理ds18b20的测量温度值,温度测量每1s测量一次。六、 完整的程序清单及注释6.1主程序清单:org 0000hajmp mainorg 0100hmain:mov sp,#60h mov p1,#0f0hjnb p1.4,k1checkjnb p1.5,k2checkjnb p1.6,k3checkjnb p1.7,k4checksjmp main。蜂鸣器。k1check: ;去抖动,按下keya,跳转到keya子程序jb p1.4,keyasjmp keyakeya:mov sp,#70h ;给堆栈指针赋初值mov r2,#0ffffh ;蜂鸣器响声计数start0:setb p3.4 ;p3.4口置高电平lcall delay ;调用延时子程序clr p3.4 ;p3.4口取反lcall delaydjnz r2,start0 ;判断计数是否结束,否跳到start0处sjmp main ;返回主程序delay: ;延时子程序 mov r7,#02delay0:mov r6,#12delay1:mov r5,#75djnz r5,$djnz r6,delay1djnz r7,delay0ret。流水灯。k2check: ;去抖动,按下keyb,跳转到keyb子程序jb p1.5,keybsjmp keybkeyb:mov sp,#80hmov r2,#18h ;led循环闪亮三次mov a,#0feh ;a中赋初始值loop:mov p2,a ;流水灯闪亮lcall delay3rl a ;a中初值左移djnz r2,loopmov a,#0ffh ;三次结束后,熄灭所以led灯mov p2,asjmp main ;返回主程序delay3: ;延时子程序 mov r7,#20delay4:mov r6,#125delay5:mov r5,#255djnz r5,$djnz r6,delay5djnz r7,delay4ret。数码管显示。;数码显示子程序k3check: ;去抖动,按下keyc,跳转到keyc子程序jb p1.6,keycsjmp keyckeyc: mov dptr,#dig_code;显示秒 mov p1,#11110111b mov a,min anl a,#0fh movc a,a+dptr mov p0,a lcall dis_delay mov p1,#11111011b mov a, min swap a anl a,#07h movc a,a+dptr mov p0,a lcall dis_delay;显示分 mov p1,#11111101b mov a,h anl a,#0fh movc a,a+dptr mov p0,a lcall dis_delay mov p1,#11111110b mov a,h swap a anl a,#03h movc a,a+dptr mov p0,a lcall dis_delay ret 。温度控制程序。k4check: ;去抖动,按下keyd,跳转到keyd子程序jb p1.7,keydsjmp keyd 。常数定义。keyd:timel equ 0e0htimeh equ 0b1htemphead equ 36h。工作内存定义。bitst data 20htimeisok bit bitst.1temponeok bit bitst.2templ data 26htemph data 27htemphc data 28htemplc data 29h。引脚定义。tempdin bit p3.7。中断向量区。org 0000hljmp startorg 000bhljmp t0it。系统初始化。 org 100hstart: mov sp,#60hclsmem: mov r0,#20hmov r1,#60hclsmem1: mov r0,#00h inc r0 djnz r1,clsmem1 mov tmod,# 00100001b mov th0,#timel mov tl0,#timeh sjmp initerror: nop ljmp start nopinit: nop setb et0 setb tr0 setb ea mov psw,#00h clr temponek ljmp main。t0中断服务程序。t0it: push psw mov psw,#10h mov th0,#timeh mov tl0,#timel inc r7 cjne r7,#32h,t0it1 mov r7,#00h setb timeisok t0it1: pop psw reti。主程序。main: lcall disp1 jnb timeisok,main clr timeisok jnb temponeok,main2 lcall readtemp1 lcall convtemp lcall dispbcd lcall disp1main2: lcall readtemp setb temponeok ljmp main。子程序。reset ds18b20。initds18b20: setb tempdin nop nop clr tempdin mov r6,#0a0h djnz r6,$mov r6,#0a0h djnz r6,$setb tempdinmov r6,#3chloop1820: mov c,tempdin jc initds1820out djnz r6,loop1820 mov r6,#64h djnz r6,$ sjmp initds1820ret initds1820out: setb tempdin ret。读ds18b20程序,从中读出一个字节的程序。readds1820: mov r7,#08h setb tempdin nop nopreadds1820loop: clr tempdin nop nop nop setb tempdin mov r6,#07h djnz r6,$ mov c,tempdin mov r6,#3ch djnz r6,$ rrc a setb tempdin djnz r7,readds1820loop mov r6,#3ch djnz r6,$ ret。写ds18b20程序从中写一个字节程序。writeds182: mov r7,#08h setb tempdin nop nopwriteds1820lop: clr tempdin mov r6,#07h djnz r6,$ rrc a mov tempdin,c mov r6,#34h djnz r6,$ setb tempdin djnz r7,writeds1820lop ret。read temp。readtemp: lcall initds1820 mov a,#0cch lcall writeds1820 mov r6,#34h djnz r6,$ mov a,#44h lcall writeds1820 mov r6,#34h mov r6,$ retreadtemp1: lcall initds1820 mov a,#0cch lcall writeds120 mov r6,#34h djnz r6,$ mov a,#0beh lcall writeds1820 mov r6,#34h djnz r6,$ mov r5,#09h mov r0,#temphead mov b,#00hreadtemp2: lcall readds1820 mov r0,a inc r0readtemp21: lcall crc8cal djnz r5,readtemp2mov a,bjnz readtempoutmov a,temphead+0mov templ,amov a,temphead+1mov temph,areadtempout: ret。处理温度bcd码子程序。convtemp: mov a,temph anl a,#80h jz tempc1clr cmov a,templcpl aadd a,#01hmov templ,amov a,temphcpl aaddc a,#00hmov temph,amov temphc,#0bh sjmp tempc11tempc1: mov temphc,#0ahtempc11: mov a,temphc swap a mov temphc,a mov a,templ anl a,#0fhmov dptr,#tempdottabmovc a,a + dftrmov templc,amov a,templanl a,#0fhswap amov templ,amov a,temphanl a,#0fhswap aorl a,templlcall hex2bcd1mov templ,aanl a,#0f0hswap aorl a,temphcmov temmphc,amov a,templanl a,#0fhswap aorl a,templcmov templc,amov a,r7jz tempc12anl a,#0fhswap amov r7,amov a,temphcanl a,#0fhorl a,r7mov temphc,atempc12: ret。小数部分码表。tempdottab: db 00h,01h,01h,02h,03h,03h,04h,4h,05h,06h db 06h,07h,08h,08h,09h。显示区bcd码温度值刷新子程序。dispbcd: mov a,templcanl a,#0fhmov 70h,amov a,templcswap aanl a,#0fhmov 71h,amov a,temphcanl a,#0fhmov 72h,amov a,temphcswap aanl a,#0fhm

温馨提示

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

评论

0/150

提交评论