单片机课程设计 温度测量控制系统设计电子钟设.docx

上传人:啊飒飒 文档编号:10619665 上传时间:2021-05-26 格式:DOCX 页数:24 大小:472.85KB
返回 下载 相关 举报
单片机课程设计 温度测量控制系统设计电子钟设.docx_第1页
第1页 / 共24页
单片机课程设计 温度测量控制系统设计电子钟设.docx_第2页
第2页 / 共24页
单片机课程设计 温度测量控制系统设计电子钟设.docx_第3页
第3页 / 共24页
单片机课程设计 温度测量控制系统设计电子钟设.docx_第4页
第4页 / 共24页
单片机课程设计 温度测量控制系统设计电子钟设.docx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《单片机课程设计 温度测量控制系统设计电子钟设.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 温度测量控制系统设计电子钟设.docx(24页珍藏版)》请在三一文库上搜索。

1、单片机课程设计报告目录一、设计目的 1二、设计要求 1三、设计内容 2四、设计步骤 3 1、硬件设计 3 1)系统硬件总框图 3 2)原理图设计 4 3)硬件单元设计 4 2、软件设计 10 1)程序流程图 10 2)keilc51编程平台 11 3)程序清单 11五、焊接与调试 22 1)软件调试步骤 22 2)烧录程序步骤 23 3)调试 23六、设计总结 24七、参考文献 24单片机课程设计报告一、 设计的目的1) 进一步熟悉和掌握单片机的结构及工作原理;2) 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术;3) 了解有关电路参数的计算方法培养综合运用单片机课程课题及有关选修课

2、程的基本知识去解决实际问题的基本训练;4) 掌握单片机的接口技术及相关外围芯片的外特性,控制方,从而加深对该课程知识的理解;5) 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。二、 设计要求1、总体要求(1) 独立完成设计任务(2) 绘制系统硬件总框图(3) 绘制系统原理电路图(4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5) 制定编写调试方案,编写用户操作使用说明书(6) 写出设计工作小结。对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教

3、训,总结收获和今后研修方向。2、 具体要求本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。三、 设计内容软件编程是本次工程实践的重要环节。在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任

4、务主要包括以下几点:1)、熟悉Keil C51编程平台及相关编程软件 2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调 3)、编写、调试LED流水灯(循环显示)程序并进行软硬件联调 4)、编写、调试键盘扫描子程序并进行软硬件联调 5)、编写、调试数码管动态扫描程序并进行软硬件联调 6)、电子钟设计(包括键盘、时钟、显示等) 7)、温度测量控制系统设计(包括键盘、显示、控制、报警等)其中前五个内容是后两个内容的基础,主要是编制一些子程序,为后继的整个系统设计打下基础。电子钟设计一个简单的单片机编程设计,要求电子钟软件程序必须具备键盘扫描、数码管显示、时钟以及日历、秒表和闹钟功能。 温

5、度测量与控制系统设计是一种非常简单而又应用普遍的温度控制系统、他包括温度采集、信号转换、单片机处理以及控制、报警等部分。要求学生采用声光报警方式。四、 设计步骤1、 硬件设计1) 、系统硬件总框图系统设计总框图此次课程设计的电子钟是由AT89C52单片机、时钟电路、报警电路,LED流水灯电路,动态数码管显示电路、音乐电路等组成。运用汇编语言来控制单片机AT89C52来实现LED流水灯、报警器、动态数码显示、电子音乐等功能,并在此基础上综合运用上述功能,实现电子钟的设计(包括键盘、时钟、显示等),温度测量控制系统(包括键盘、显示、控制、报警等)。并且本设计中的AT89C52单片机是整个工作过程的

6、核心,它控制了脉冲时序的产生,显示信号的发送控制显示LED的选择。同时用AT89C52单片机来制作电子时钟其最大的好处就是可最大的调整时钟使其准确度更高。2)、原理图设计3)、硬件单元设计 (1)、nep555e模块用施密特触发器构成的多谐振荡器555定时器可构成多谐振荡器,是一种性能较好的时钟源。调节电位器RW1,使在555输出端3获得频率为5060Hz的矩形波信号,当基本RS触发器Q为1时,门5开启,此时脉冲信号通过门5作为计数脉冲加于计数器的计数输入端CP。(2)、AT89C52模块AT89C52模块AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦

7、写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央 处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52 提供以下标准功能:8字节FLASH闪速存储器,256字竹内部RAM , 32个I/O口线,3个16 位定时计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。空闲方式停止CPU 的工作,但允许RAM

8、,定时计数器串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.AT89C52各管脚功能如下:VCC:供电电压;GND:接地;P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。;P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流;P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流;P3口:P3口管脚是8个带内部上

9、拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入;P3口管脚功能: 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(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许输出电

10、平用于锁存地址的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。(3)、DS1302模块DS1302的RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置

11、为低电平,则会终止此次数据传送,I/O引脚变为高阻态。DS1302的引脚及内部结构如图1所示,引脚功能如图所示。DS1302 包括时钟/日历寄存器和31 字节(8 位)的数据暂存寄存器,数据通信仅通过一条串行输入输出口。实时时钟/日历提供包括秒、分、时、日期、月份和年份信息。闰年可自行调整,可选择12 小时制和24 小时制,可以设置AM、PM。(4)、数码管显示数码管显示图数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过

12、长的话,数码管显示时将产生闪烁现象。(5)、时钟控制时钟电路图石英晶体振荡器是利用石英晶体的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片,在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。HMOS型MCS-51外部时钟源的接发:在XTLA1和XTLA2两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自激振荡器。其发出的时钟脉冲直接送入片内定时控制部件,其中C电容对频率有微调作用。(6)、扬声器蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产

13、生磁场来驱动振动膜发声的。因此需要一定的电流才能驱动它,单片机IO口输出的电流较小,其TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。程序中通过改变单片机对应IO口输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变其占空比,也可以控制蜂鸣器的声音大小。可以有两种驱动方式,即用PNP或NPN三极管电流放大电路驱动。本电路通过一个PNP三极管9012来放大驱动蜂鸣器,当输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制IO口输出的电平来使蜂鸣器发出声

14、音和关闭,从而实现各种可能音响的产生。(6)、LED显示本次课程设计中,“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,单片机可工作。要用外加电源和分压电阻来控制低电平驱动点亮,因为单片机不能直接高电平驱动LED灯。如图D1-D8和R1、R2以及R6-R11连接到单片机IO口,当P1口某脚变低时相应LED发光。实现LED灯的闪烁,只需利用编程方法依次从低位到高位逐个变为低电平,等待少许时刻再变高即可。(7)、键盘键盘电路图在MCS-51系列单片机的指令系统中设有散转指令JMP A+DPTR,可看成是专门配合键入程序是整个应用程序的核心部分。键盘的操作,无论是按键或键盘都是利用机械

15、触点的合、断作用。一个电压信号通过机械触点的闭合、断开过程。由于机械触点的弹性作用,在闭合及断开瞬间均有抖动过程,会出现一系列负脉冲。抖动时间的长短,与开关的机械特性有关,一般为510ms。一组按键或键盘都要通过I/O口线查询按键的开关状态。且独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。2、 软件设计1) 、程序流程图开始取系统时间并转二进制为ACSII码将时间存入显示缓冲区显示时间和界面调用延时子程序返回DOS程序结束调用清屏子程序C键按下?ESC键按下?否是是否调用时间修改程序读键盘输入值2)、keilc51编程平台Keil

16、C51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。3) 、程序清单T_R Bit P3.4 ;实时时钟复位线引脚 T_C Bit P3.2 ;实时时钟时钟线引脚 T_I Bi

17、t P3.3 ;实时时钟数据线引脚 SEC EQU 30H MIN EQU 31H H EQU 32H D EQU 33H MON EQU 34H W EQU 35H Y EQU 36H ORG 0000H LJMP start ORG 001bH AJMP INTT1 ORG 0030HSTART: LCALL KEY AJMP START ;*蜂鸣器*KEY0: SETB P3.4 LCALL DELAY LCALL DELAY CLR P3.4 LCALL DELAY LCALL DELAYSETB P3.4LCALL DELAYLCALL DELAYCLR P3.4LCALL DELA

18、YLCALL DELAYSETB P3.4LCALL DELAYLCALL DELAYCLR P3.4RET ;*流水灯*KEY1: MOV R2,#2REB: MOV R1,#8 MOV A,#0AFHLOOPB: MOV P2,A RL A LCALL DELAY DJNZ R1,LOOPB DJNZ R2,REB RET;*日期* KEY2: CLR T_R CLR T_C MOV SP,#60H ;修改堆栈 MOV SEC,#00H ;初始时间设为10:00:00 MOV MIN,#00H MOV H,#10H MOV D,#18h ;初始日期设为08年1月18日第一周 MOV MON

19、,#01H MOV W,#01H MOV Y,#08H LCALL SETDS1302 LCALL GET1302 LCALL DISPLAY MOV R3,#25 MOV TMOD,#01H MOV TH0,#70H ;置定时器初值(定时40ms) MOV TL0,#00H SETB TR0 ;启动定时器0LP1: JBC TF0,LP2 ;查询计数溢出 SJMP LP1 ;未到40 ms继续计数LP2: MOV TH0,#0B8H ;重新置定时器初值 MOV TL0,#00H LCALL DISPLAY ;显示 DJNZ R3,LP1 ;未到1 S继续循环 LCALL GET1302 ;每

20、过1s从DS1302读取一次时间 MOV r3,#25 SJMP LP1;数码显示子程序DISPLAY: 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

21、 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 ;显示延时5ms子程序DIS_DELAY: PUSH PSW MOV R7,#10D1: MOV R6,#248D2: DJNZ R6,$ DJNZ R7,D1 POP PSW RET;设置DS1302初始时间,并启动计时SETDS1302: CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,#8EH ;写控制命令字 LCALL INPUTBY

22、TE MOV B,#00H ;写保护关闭 LCALL INPUTBYTE SETB T_C NOP CLR T_R MOV R0,#SEC ;内存中的时间首地址 MOV R1,#80H ;DS1302中的时间首地址 MOV R7,#7 ;字节数SETLOOP: CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,R1 ;写命令字 LCALL INPUTBYTE MOV A,R0 ;设置时间 MOV B,A LCALL INPUTBYTE INC R0 INC R1 INC R1 SETB T_C NOP CLR T_R NOP DJNZ R7,SETLOOP

23、CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,#8EH LCALL INPUTBYTE MOV B,#80H ;开写保护 LCALL INPUTBYTE SETB T_C NOP CLR T_R NOP RET;从DS1302读取时间GET1302: MOV R0,#SEC MOV R1,#81H ;DS1302中读时间的首地址 MOV R7,#7GETLOOP: CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,R1 LCALL INPUTBYTE ;写命令字 LCALL OUTPUTBYTE ;读时间 MOV R0

24、,A ;将从DS1302中读取的时间从内存中保存 INC R0 ;修改地址指针 INC R1 INC R1 SETB T_C NOP CLR T_R NOP DJNZ R7,GETLOOP RET;向DS1302写一个字节INPUTBYTE: MOV R4,#8INPUTLOOP: MOV A,B RRC A MOV B,A MOV T_I,C SETB T_C NOP NOP NOP CLR T_C DJNZ R4,INPUTLOOP RET;从DS1302读一个字节OUTPUTBYTE: CLR a CLR c MOV R4,#8OUTPUTLOOP: NOP NOP MOV C,T_I

25、RRC A SETB T_C NOP NOP NOP CLR T_C DJNZ R4,OUTPUTLOOP RETKEY: MOV P1,#0F0H MOV A,P1 MOV B,A ACALL DELAY MOV A,P1 CJNE A,B,DO CJNE A,#0E0H,K1 AJMP KEY0K1: CJNE A,#0D0H,K2 AJMP KEY1K2: CJNE A,#0B0H,K3 AJMP KEY2K3: CJNE A,#070H,DO AJMP KEY3DO: RETDELAY: MOV R6,#200DL1: MOV R5,#250 DJNZ R5,$ DJNZ R6,DL1

26、 RETDEL1: MOV R7,#02 DL2:MOV R6,#0FFH DJNZ R6,$ DJNZ R7,DL2 RETDELAYY1:MOV R7,#02DELAY10:MOV R4,#187DELAY11:MOV R3,#248 DJNZ R3,$ DJNZ R4,DELAY11 DJNZ R7,DELAY10 DJNZ R5,DELAYY1 RETkey3: MOV SP,#60H MOV TMOD,#10H SETB ET1 SETB EA SETB TR1START0:clr p3.4 MOV 30H,#00HNEXTT:MOV A,30H MOV DPTR,#TABLE MO

27、VC A,A+DPTR MOV R2,A JZ ENDD ANL A,#0FH MOV R5,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR1 AJMP DD1SING:DEC A MOV 22H,A RL A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV TH1,A MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL1,A MOV 20H,A SETB TR1DD1: LCALL DELAYY INC 30H AJMP NEXTTENDD:CLR TR1 AJMP START

28、0INTT1:PUSH PSW PUSH ACC MOV TL1,20H MOV TH1,21H CPL p3.4 POP ACC POP PSW RETIDELAYY:MOV R7,#02DELAY0:MOV R4,#187DELAY1:MOV R3,#248 DJNZ R3,$ DJNZ R4,DELAY1 DJNZ R7,DELAY0 DJNZ R5,DELAYY RETTABLE: DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H

29、,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00HTABLE1: DW 64260,64400,64524,64580,64684,64777,64820,64898 DW 64968,65030,65058,65110,65157,

30、65178,65217;字符显示码表DIG_CODE: DB 14H,0d7H,4cH,45H,87H,25H,24H,57H,04H,44H END五、 焊接与调试1)、软件调试步骤(1)、从桌面或【开始】菜单选择【程序】Keil Uvision命令,打开此软件,进入Keil Uvision界面。(2)、打开软件后,在Project菜单中选择New Project命令,打开一个新项目。保存此项目,输入工程文件名后,并保存工程文件的目录。(3)、为项目文件选择一个目标器件,即选择8051的类型。在Data base 列表框中选择“ATML 89C52”,确定。(4)、用鼠标对准项目工作区的目标

31、1,点击右键在弹出的菜单中选择“为目标目标1设置选项”。在为“为目标目标1设置选项”中,点击“调试”菜单,在此菜单中可选择使用硬件仿真或软件仿真,若连接实验箱时则选择硬件仿真,点击硬件仿真选项后面的调试选项,在此对话框中选择串口波特率,波特率为38400。(5)、上述设置好后,点击“文件/新建”,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。(6)、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。(7)、开始编译,点击编译连接的图标,对项目文件进行编译。(8)、若编译没有错误后,

32、为工程项目设置软硬件调试环境。2)、烧录程序的步骤(1)、用编辑软件编写程序,使用汇编语言编写的程序文件名后缀(即扩展名)是.ASM,编写的程序为称为源程序。(2)、将源程序用编译软件进行编译,生成扩展名为.OBJ的文件。(3)、通过编程器扩展名为.HEX的可执行文件烧到单片机内。在写入之前还可以进行软件仿真,既在软件上模拟单片机程序原形情况,以便进行调试和修改。3)、调试 按照此次课程设计的要求调试过程如下:按键KEY0,KEY1,KEY2,KEY3分别对应蜂鸣器,LED流水灯,数码管,音乐四个功能。(1)、蜂鸣器测试 通过按按键KEY0,听到蜂鸣器发出“嘀” ,“嘀”的响声;与相应的程序代

33、码相比较,结果正确。(2)、LED流水灯测试 通过按按键KEY1,观察到LED流水灯显示,并循环2次;与相应的程序代码相比较,结果正确。(3)、数码管测试 通过按按键KEY2,观察到数码管从“1000” 开始计时,依次显示“1001” ,“1002” ,“1003” ;与相应的程序代码相比较,结果正确。因为程序要求数码管显示的时间是小时和分钟,所以要观察到数码管的变化要等一分钟的时间。 (4)、 音乐测试 通过按按键KEY3,听到蜂鸣器响起“生日快乐”的音乐;与相应的程序代码相比较,结果正确。六、 设计总结通过此次单片机课程设计进一步熟悉和掌握单片机的结构及工作原理;通过课程设计,掌握以单片机

34、核心的电路设计的基本方法和技术;了解有关电路参数的计算方法培养综合运用单片机课程课题及有关选修课程的基本知识去解决实际问题的基本训练;掌握了单片机的接口技术及相关外围芯片的外特性,控制方,从而加深对该课程知识的理解;通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。通过课程设计中程序的调试,发现了自己的不足并进行了补缺。七、 参考文献1、单片机硬件接口电路及实例解析 谢宜仁主编 电子工业出版社 20092 、单片机原理及C51应用 刘小成, 吴清, 夏春明编著华东理工大学出版社 20093、单片机原理与应用及C51程序设计主编唐颖 北京大学出版社 2008 4、单片机课程设计指导楼然苗, 李光飞编著 北京航空航天大学出版社 2007 5、单片机Keil Cx51应用开发技术王为青, 程国钢编著人民邮电出版社 2007 24 / 24

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1