收藏 分销(赏)

单片机优秀课程设计温度测量控制新版系统标准设计电子钟设.docx

上传人:w****g 文档编号:2687509 上传时间:2024-06-04 格式:DOCX 页数:25 大小:442.77KB
下载 相关 举报
单片机优秀课程设计温度测量控制新版系统标准设计电子钟设.docx_第1页
第1页 / 共25页
单片机优秀课程设计温度测量控制新版系统标准设计电子钟设.docx_第2页
第2页 / 共25页
单片机优秀课程设计温度测量控制新版系统标准设计电子钟设.docx_第3页
第3页 / 共25页
单片机优秀课程设计温度测量控制新版系统标准设计电子钟设.docx_第4页
第4页 / 共25页
单片机优秀课程设计温度测量控制新版系统标准设计电子钟设.docx_第5页
第5页 / 共25页
点击查看更多>>
资源描述

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、 具体要求此次工程实践校内部分关键以单片机为基础,进行单片机软件编程,目标是为了提升学生软件编程和系统设计能力,整个设计系统包含两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接对应元器件,掌握元器件分辨和元器件作用和应用场所即可,另外对所焊接电路还需要进行仔细检验,判定是否有焊接错误地方或短路地方,对出现异常情况要能够依据现象判别原因,并含有处理问题能力,从而切实提升学生硬件电子电路分析、判定能力。三、 设计内容软件编程是此次工程实践关键步骤。在为期两周工程实践中,将占据关键时间,学生要完成软件编程任务关键包含以下几点:1)、熟悉Keil C51编程平台及相关编程

4、软件 2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调 3)、编写、调试LED流水灯(循环显示)程序并进行软硬件联调 4)、编写、调试键盘扫描子程序并进行软硬件联调 5)、编写、调试数码管动态扫描程序并进行软硬件联调 6)、电子钟设计(包含键盘、时钟、显示等) 7)、温度测量控制系统设计(包含键盘、显示、控制、报警等)其中前五个内容是后两个内容基础,关键是编制部分子程序,为后继整个系统设计打下基础。电子钟设计一个简单单片机编程设计,要求电子钟软件程序必需含有键盘扫描、数码管显示、时钟和日历、秒表和闹钟功效。 温度测量和控制系统设计是一个很简单而又应用普遍温度控制系统、她包含温度采集

5、、信号转换、单片机处理和控制、报警等部分。要求学生采取声光报警方法。四、 设计步骤1、 硬件设计1) 、系统硬件总框图系统设计总框图此次课程设计电子钟是由AT89C52单片机、时钟电路、报警电路,LED流水灯电路,动态数码管显示电路、音乐电路等组成。利用汇编语言来控制单片机AT89C52来实现LED流水灯、报警器、动态数码显示、电子音乐等功效,并在此基础上综合利用上述功效,实现电子钟设计(包含键盘、时钟、显示等),温度测量控制系统(包含键盘、显示、控制、报警等)。而且本设计中AT89C52单片机是整个工作过程关键,它控制了脉冲时序产生,显示信号发送控制显示LED选择。同时用AT89C52单片机

6、来制作电子时钟其最大好处就是可最大调整时钟使其正确度更高。2)、原理图设计3)、硬件单元设计 (1)、nep555e模块用施密特触发器组成多谐振荡器555定时器可组成多谐振荡器,是一个性能很好时钟源。调整电位器RW1,使在555输出端3取得频率为5060Hz矩形波信号,当基础RS触发器Q为1时,门5开启,此时脉冲信号经过门5作为计数脉冲加于计数器计数输入端CP。(2)、AT89C52模块AT89C52模块AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes可反复擦写Flash只读程序存放器和256 bytes随机存取数据存放器(RAM),器件采取ATMEL企业高密度、

7、非易失性存放技术生产,兼容标准MCS-51指令系统,片内置通用8位中央 处理器和Flash存放单元,功效强大AT89C52单片机可为您提供很多较复杂系统控制应用场所。AT89C52 提供以下标准功效:8字节FLASH闪速存放器,256字竹内部RAM , 32个I/O口线,3个16 位定时计数器,一个6向量两级中止结构,一个全双工串行通信口,片内振荡器立即钟电路。同时,AT89c52可降至OHz静态逻辑操作,并支持两种软件可选节电上作模式。空闲方法停止CPU 工作,但许可RAM,定时计数器串行通信口及中止系统继续工作。掉电方法保留RAM 中内容,但振荡器停止工作并严禁其它全部部件工作直到下一个硬

8、件复位.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个带内部上拉电阻双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入;P3口管脚功效: P3

9、.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:当访问外部存放器时,地址锁存许可输出电平用于锁存地址地位字节。/PSEN:外部程序存放器选通信号。在由外部程序存放器取指期间,每个机器周期两次/PSEN有效。但在访问外部

10、数据存放器时,这两次有效/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存放器(0000H-FFFFH),不管是否有内部程序存放器。XTAL1:反向振荡放大器输入及内部时钟工作电路输入。XTAL2:来自反向振荡器输出。(3)、DS1302模块DS1302RST是复位/片选线,经过把RST输入驱动置高电平来开启全部数据传送。当RST为高电平时,全部数据传送被初始化,许可对DS1302进行操作。假如在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。DS1302引脚及内部结构图1所表示,引脚功效图所表示。DS1302 包含时钟/日历寄存器和31

11、 字节(8 位)数据暂存寄存器,数据通信仅经过一条串行输入输出口。实时时钟/日历提供包含秒、分、时、日期、月份和年份信息。闰年可自行调整,可选择12 小时制和24 小时制,能够设置AM、PM。(4)、数码管显示数码管显示图数码管不一样位显示时间间隔能够经过调整延时程序延时长短来完成。数码管显示时间间隔也能够确定数码管显示时亮度,若显示时间间隔长,显示时数码管亮度将亮些,若显示时间间隔短,显示时数码管亮度将暗些。若显示时间间隔过长话,数码管显示时将产生闪烁现象。(5)、时钟控制时钟电路图石英晶体振荡器是利用石英晶体压电效应制成一个谐振器件,它基础组成大致是:从一块石英晶体上按一定方位角切下薄片,

12、在它两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就组成了石英晶体谐振器。其产品通常见金属外壳封装,也有用玻璃壳、陶瓷或塑料封装。HMOS型MCS-51外部时钟源接发:在XTLA1和XTLA2两端跨接晶体或陶瓷振荡器,和内部反相器组成稳定自激振荡器。其发出时钟脉冲直接送入片内定时控制部件,其中C电容对频率有微调作用。(6)、扬声器蜂鸣器发声原理是电流经过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声。所以需要一定电流才能驱动它,单片机IO口输出电流较小,其TTL电平基础上驱动不了蜂鸣器,所以需要增加一个电流放大电路。程序中经过改变单片机对应IO口输出波形频率,就

13、能够调整控制蜂鸣器音调,产生多种不一样音色、音调声音。另外,改变其占空比,也能够控制蜂鸣器声音大小。能够有两种驱动方法,即用PNP或NPN三极管电流放大电路驱动。本电路经过一个PNP三极管9012来放大驱动蜂鸣器,当输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,这么蜂鸣器电流形成回路,发出声音。所以,我们能够经过程序控制IO口输出电平来使蜂鸣器发出声音和关闭,从而实现多种可能音响产生。(6)、LED显示此次课程设计中,“程序语言”经过“翻译”软件“翻译”成单片机所需二进制代码,单片机可工作。要用外加电源和分压电阻来控制低电平驱动点亮,因为单片机不能直

14、接高电平驱动LED灯。图D1-D8和R1、R2和R6-R11连接到单片机IO口,当P1口某脚变低时对应LED发光。实现LED灯闪烁,只需利用编程方法依次从低位到高位逐一变为低电平,等候少许时刻再变高即可。(7)、键盘键盘电路图在MCS-51系列单片机指令系统中设有散转指令JMP A+DPTR,可看成是专门配合键入程序是整个应用程序关键部分。键盘操作,不管是按键或键盘全部是利用机械触点合、断作用。一个电压信号经过机械触点闭合、断开过程。因为机械触点弹性作用,在闭合及断开瞬间全部有抖动过程,会出现一系列负脉冲。抖动时间长短,和开关机械特征相关,通常为510ms。一组按键或键盘全部要经过I/O口线查

15、询按键开关状态。且独立式按键电路配置灵活,软件结构简单,但每个按键必需占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。2、 软件设计1) 、程序步骤图开始取系统时间并转二进制为ACSII码将时间存入显示缓冲区显示时间和界面调用延时子程序返回DOS程序结束调用清屏子程序C键按下?ESC键按下?否是是否调用时间修改程序读键盘输入值2)、keilc51编程平台KeilC51是美国KeilSoftware企业出品51系列兼容单片机C语言软件开发系统,和汇编相比,C语言在功效上、结构性、可读性、可维护性上有显著优势,所以易学易用。用过汇编语言后再使用C来开发,体会愈加深刻。KeilC51软件提

16、供丰富库函数和功效强大集成开发调试工具,全Windows界面。另外关键一点,只要看一下编译后生成汇编代码,就能体会到KeilC51生成目标代码效率很之高,多数语句生成汇编代码很紧凑,轻易了解。在开发大型软件时更能表现高级语言优势。3) 、程序清单T_R Bit P3.4 ;实时时钟复位线引脚 T_C Bit P3.2 ;实时时钟时钟线引脚 T_I Bit 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 001b

17、H 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 DELAYLCALL DELAYSETB P3.4LCALL DELAYLCALL DELAYCLR P3.4RET ;*流水灯*KEY1: MOV R2,#2REB: MOV R1,#8 MOV A,#0AFHLOOPB: MOV P2,A RL A

18、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 ;初始日期设为1月18日第一周 MOV MON,#01H MOV W,#01H MOV Y,#08H LCALL SETDS1302 LCALL GET1302 LCALL DISPLAY MOV R3,#25 MOV TMOD,#01H MOV TH0,#70H ;置定时器初值(定时40ms)

19、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 ;每过1s从DS1302读取一次时间 MOV r3,#25 SJMP LP1;数码显示子程序DISPLAY: MOV DPTR,#DIG_CODE;显示分钟 MOV P1,#11110111b MOV A,MIN ANL A,#0FH MOVC A,A+D

20、PTR 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 ;显示延时5ms子程序DIS_DE

21、LAY: 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 INPUTBYTE MOV B,#00H ;写保护关闭 LCALL INPUTBYTE SETB T_C NOP CLR T_R MOV R0,#SEC ;内存中时间首地址 MOV R1,#80H ;DS1302中时间首地址 MOV R7,#7 ;字节数SETLOO

22、P: 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 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;从D

23、S1302读取时间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,A ;将从DS1302中读取时间从内存中保留 INC R0 ;修改地址指针 INC R1 INC R1 SETB T_C NOP CLR T_R NOP DJNZ R7,GETLOOP RET;向DS1302写一个字节INPUTBYTE: MOV R4,#

24、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 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

25、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 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,$

26、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 MOVC 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

27、 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 START0INTT1: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,#24

28、8 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,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 82

29、H,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,65178,65217;字符显示码表DIG_CODE: DB 14H,0d7H,4cH,45H,87H,25H,24H,57H,04H,44H END五、 焊接和调试1)、软件调试步骤(1)、从桌面或【开始】菜单选择【程序】Keil Uvision命令,打开此

30、软件,进入Keil Uvision界面。(2)、打开软件后,在Project菜单中选择New Project命令,打开一个新项目。保留此项目,输入工程文件名后,并保留工程文件目录。(3)、为项目文件选择一个目标器件,即选择8051类型。在Data base 列表框中选择“ATML 89C52”,确定。(4)、用鼠标对准项目工作区目标1,点击右键在弹出菜单中选择“为目标目标1设置选项”。在为“为目标目标1设置选项”中,点击“调试”菜单,在此菜单中可选择使用硬件仿真或软件仿真,若连接试验箱时则选择硬件仿真,点击硬件仿真选项后面调试选项,在此对话框中选择串口波特率,波特率为38400。(5)、上述设

31、置好后,点击“文件/新建”,创建源程序文件并输入程序代码。输入好代码后点击“文件/保留”。(6)、把源文件添加到项目中,用鼠标指在目标工作区目标1,点击右键在弹出菜单中选择添加文件到源代码组,在弹出添加文件框中,选择需要添加到项目中文件。(7)、开始编译,点击编译连接图标,对项目文件进行编译。(8)、若编译没有错误后,为工程项目设置软硬件调试环境。2)、烧录程序步骤(1)、用编辑软件编写程序,使用汇编语言编写程序文件名后缀(即扩展名)是.ASM,编写程序为称为源程序。(2)、将源程序用编译软件进行编译,生成扩展名为.OBJ文件。(3)、经过编程器扩展名为.HEX可实施文件烧到单片机内。在写入之

32、前还能够进行软件仿真,既在软件上模拟单片机程序原形情况,方便进行调试和修改。3)、调试 根据此次课程设计要求调试过程以下:按键KEY0,KEY1,KEY2,KEY3分别对应蜂鸣器,LED流水灯,数码管,音乐四个功效。(1)、蜂鸣器测试 经过按按键KEY0,听到蜂鸣器发出“嘀” ,“嘀”响声;和对应程序代码相比较,结果正确。(2)、LED流水灯测试 经过按按键KEY1,观察到LED流水灯显示,并循环2次;和对应程序代码相比较,结果正确。(3)、数码管测试 经过按按键KEY2,观察到数码管从“1000” 开始计时,依次显示“1001” ,“1002” ,“1003” ;和对应程序代码相比较,结果正

33、确。因为程序要求数码管显示时间是小时和分钟,所以要观察到数码管改变要等一分钟时间。 (4)、 音乐测试 经过按按键KEY3,听到蜂鸣器响起“生日愉快”音乐;和对应程序代码相比较,结果正确。六、 设计总结经过此次单片机课程设计深入熟悉和掌握单片机结构及工作原理;经过课程设计,掌握以单片机关键电路设计基础方法和技术;了解相关电路参数计算方法培养综合利用单片机课程课题及相关选修课程基础知识去处理实际问题基础训练;掌握了单片机接口技术及相关外围芯片外特征,控制方,从而加深对该课程知识了解;经过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。经过课程设计中程序调试,发觉了自己不足并进行了补缺。七、 参考文件1、单片机硬件接口电路及实例解析 谢宜仁主编 电子工业出版社 2 、单片机原理及C51应用 刘小成, 吴清, 夏春明编著华东理工大学出版社 3、单片机原理和应用及C51程序设计主编唐颖 北京大学出版社 4、单片机课程设计指导楼然苗, 李光飞编著 北京航空航天大学出版社 5、单片机Keil Cx51应用开发技术王为青, 程国钢编著人民邮电出版社

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服