单片机课程设计报告

合集下载

单片机 课程设计报告(完成版)

单片机  课程设计报告(完成版)

单片机课程设计报告
题目:音乐门铃
院系:电气信息工程系专业:通信工程
组长:吴楠学号: 20100606019
组员 1 :刘静静学号: 20100606017
组员 2 :张琳娜学号: 20100606018
组员 3 :李元学号: 20100606020
组员 4 :黄智鑫学号: 20100606049
组员 5 :学号:
组员 6 :学号:
指导教师:李宁
2011年01月06日
电气信息工程系课程设计总结报告
PCB原理图
电气信息工程系
单片机课程设计元器件清单指导教师:李宁课题名称:音乐门铃
参考文献:
[1]徐爱钧.单片机原理实用教程[M].北京:电子工业出版社,2009:267-285.
[2]刘焕平.单片机原理及应用[M].北京:北京邮电大学出版社,2008:246-260.
[3]刘南平.单片机实训与开发教程[M].北京:科学出版社,2008:199-209.
[4]吴金戌.8051单片机实践与应用[M].北京:清华大学出版社,2002:242-253.
[5]刘海成.单片机及应用系统设计原理与实践[M].北京:北京航空航天大学出版社,2009:273-281.
[6]杨振江.单片机应用于实践指导[M].西安:西安电子科技大学出版社,2010:378-380.。

单片机课程设计报告电子万年历

单片机课程设计报告电子万年历

单片机课程设计报告电子万年历单片机课程设计报告:电子万年历一、设计简介在本次单片机课程设计中,我们选择了电子万年历作为设计主题。

电子万年历是一种结合了数字电路、单片机技术和实时时钟(RTC)技术的电子产品,它具有显示年份、月份、星期、日、时、分、秒的功能,还可以根据用户的需求进行定时、闹钟、报时等功能。

二、硬件设计我们采用了基于8051内核的单片机作为主控芯片。

该单片机具有丰富的I/O 端口,适于实现各种复杂的输入输出操作。

此外,它还内置了定时器和中断控制器,可以很方便地实现实时时钟功能。

1.显示模块:为了方便用户查看时间信息,我们选用了LCD显示屏作为显示设备。

LCD屏具有功耗低、体积小、显示内容丰富等优点。

2.实时时钟(RTC)模块:我们采用了常用的DS1302芯片作为实时时钟模块。

该芯片可以提供秒、分、时、日、星期、月、年的信息,而且还有可编程的报警功能。

3.按键模块:为了实现人机交互,我们设计了一组按键。

用户可以通过按键来调整时间、设置闹钟等。

4.电源模块:为了保证系统的稳定工作,我们采用了稳定的5V直流电源。

三、软件设计我们采用了C语言编写程序。

程序主要由以下几个部分组成:1.主程序:主程序主要负责读取RTC模块的时间信息,并控制LCD显示屏显示时间。

同时,主程序还要检测按键输入,根据用户的需求进行相应的操作。

2.RTC驱动程序:为了正确地读取和设置DS1302芯片的时间信息,我们编写了相应的驱动程序。

驱动程序包括初始化和读写寄存器两部分。

3.按键处理程序:按键处理程序用于检测按键输入,并根据按键值执行相应的操作。

比如,用户可以通过按键来增加或减少时间,设置闹钟等。

4.LCD显示程序:LCD显示程序用于控制LCD显示屏的显示内容。

在本设计中,我们使用了点阵字符库,将时间信息以字符的形式显示在LCD屏上。

四、测试与验证为了确保我们的电子万年历设计正确无误,我们进行了以下的测试和验证:1.硬件测试:首先,我们对硬件电路进行了测试,确保每个模块都能正常工作。

交通灯单片机课程设计报告

交通灯单片机课程设计报告

课程设计报告:交通灯单片机控制系统1. 设计目的本课程设计旨在让学生通过使用单片机开发一个简单的交通灯控制系统来加深对单片机编程和控制原理的理解。

该系统可以模拟道路上的交通灯,实现红灯、绿灯和黄灯的循环控制,并可以通过按键进行手动控制。

2. 设计原理2.1 交通灯状态交通灯状态包括红灯、黄灯和绿灯,它们按照固定的时间间隔循环切换。

2.2 按键控制设计中使用一个按键用于手动控制交通灯状态切换。

按下按键时,会切换到下一个灯状态。

3. 硬件方案3.1 单片机本设计采用ATmega328P单片机,它具有足够的GPIO引脚用于控制交通灯的LED。

3.2 LED使用红色、黄色和绿色LED模拟交通灯的三种状态。

3.3 按键一个按键连接到单片机的GPIO引脚,用于手动切换交通灯状态。

4. 软件方案4.1 控制逻辑编写单片机程序,实现交通灯状态的循环切换和按键控制逻辑。

4.2 定时器使用定时器来控制交通灯状态切换的时间间隔。

4.3 中断配置按键的中断,以便在按下按键时进行状态切换。

5. 实施过程连接硬件组件,包括LED、按键和单片机。

编写单片机程序,包括交通灯状态切换逻辑、定时器配置和按键中断处理。

编译并烧录程序到单片机。

运行程序,观察交通灯的状态切换和按键控制是否正常。

6. 测试结果经过测试,交通灯控制系统能够正常运行。

交通灯状态按照预定的时间间隔循环切换,同时按下按键可以手动切换状态,符合设计要求。

7. 问题解决在实施过程中,遇到了一些问题,如硬件连接错误和程序逻辑错误。

通过仔细检查和调试,成功解决了这些问题。

8. 总结本课程设计使我深入了解了单片机编程和控制系统的原理,通过实际动手操作,更好地掌握了这些概念。

设计交通灯控制系统是一个有趣且教育性的项目,我对单片机编程有了更深入的理解,这对我的学习和职业发展都有所帮助。

这个示例课程设计报告可以作为参考,你可以根据具体的课程设计要求和硬件平台的不同来进行调整和扩展。

万年历单片机课程设计报告

万年历单片机课程设计报告

1 任务和设计要求首先要学会安装软件, 要熟悉会使用。

2 系统设计系统框图3 硬件设计3.1 电路原理图3.2 主要单元电路3.3 元件清单4 软件设计4.1 程序流程图4.2程序清单TIME_WEEK DATA 52H TIME_YEAR DATA 5DH TIME_MONTH DATA 5EH TIME_DATA DATA 5FH YEARH DATA 36HYEAR DATA 35H MONTH DATA 34HDAY DATA 33HHOUR DATA 32H MINUTE DATA 31HSEC DATA 30HAAA BIT P3.0BBB BIT P3.1AA BIT P3.3BB BIT P3.4CC BIT P3.5BL BIT P3.2BZ1 BIT 21H.0 TIMES DATA 20H COM DATA P1 ORG 0000HLJMP START ORG 0003H RETIORG 000BH LJMP INTT0ORG 0013H RETIORG 001BH RETIORG 0023H RETISTART:MOV R0,#30H MOV R7,#9 CLEETE:MOV @R0,#00H INC R0DJNZ R7,CLEETE MOV TIMES,#00H MOV TMOD,#01H MOV TL0,#0C0H MOV TH0,#63H MOV SEC,#0MOV MINUTE,#0H MOV HOUR,#0H MOV DAY,#01H MOV MONTH,#01H MOV YEAR,#01H MOV YEARH,#20H SETB EASETB ET0SETB TR0MOV R4,#19 START1:CALL DISPJNB AA,SETMM1 JMP START1 SETMM1:CALL SETMMJMP START1 SETMM:CALL DISPCALL DISPJB AA,SETMM0 SETMM2:JNB AA,SETMM3CLR ET0CLR TR0MOV SEC,#0MOV TIMES,#01H MOV R0,#MINUTE SETMM4:NOPINC22:CALL OFFLCALL INC11CALL DISPJB AA,INC22CALL DISPJB AA,INC22INC R0MOV A,TIMESRL AMOV TIMES,AJNB TIMES.5, SETMM4 SETMM12:JNB AA , SETMM11 SETMM0:SETB TR0SETB ET0RETSETMM11:CALL DISPJMP SETMM12 SETMM3:CALL DISPJMP SETMM2INC11:MOV R3,#40INC111:MOV A,@R0JB BB,INC17ADD A,#1DA ACALL INC000INC13:JNB BB , INC14INC17:MOV @R0,A CALL DISP DJNZ R3,INC111RETINC14:CALL DISP JMP INC13 OFFL:MOV 22H,@R0 MOV R6,#10 OFF1:MOV R7,#10OFF2:MOV @ R0, # 0AAH CALL DISPDJNZ R7 , OFF2DJNZ R6 , OFF1MOV @ R0 , 22H RETINC000:JB TIMES.0, INC001 JB TIMES.1, INC002 JB TIMES.2, INC003 JB TIMES.3, INC004 JB TIMES.4, INC005 JMP INCOUTINC005:CJNE A, #99H, INCOUT MOV A,#00H JMP INCOUT INC004:CJNE A, # 13H, INCOUT MOV A,#01H JMP INCOUTINC003:CJNE A,# 32H ,INCOUT MOV A,#01H JMP INCOUT INC002:CJNE A,#24H,INCOUT MOV A,#00H JMP INCOUT INC001:CJNE A,# 60H , INCOUT MOV A,#00H INCOUT:RETINTT0:PUSH ACC PUSH PSWORL TL0,#0C0HMOV TH0,#63H DJNZ R4 , CLKE111 JMP LOOP11 CLKE111:JMP CLKELOOP11:MOV R4,#19H MOV A,SECADD A,#1DA AMOV SEC,A CJNE A, #60H , CLKE99 MOV SEC,#0 MOV A,MINUTE ADD A,#1DA AMOV MINUTE,A CLK0:CJNE A, # 60H, CLKE MOV MINUTE,#0 MOV A,HOURADD A,#1DA AMOV HOUR,ACJNE A, # 24H, CLKE MOV HOUR,#0 MOV A,DAYADD A,#1DA AMOV DAY,A MOV A,MONTH INC AMOVC A, @A + PC SJMP CLK1DB 31H,28H,31H DB 30H,31H,30H DB 31H,31H,30H DB 00H,00H,00H DB 00H,00H,00H DB 31H,30H,31H CLK1:CLR CSUBB A,DAYJNC CLKEMOV A,MONTH CJNE A,#2,CLK3MOV A,YEAR ANL A,#13HJNB ACC.4,CLK2ADD A,#2CLK2:ANL A,#3JNZ CLK3MOV A,DAY XRL A,#29HJZ CLKECLK3:MOV DAY,#1 MOV A,MONTH ADD A,#1DA AMOV MONTH,A CJNE A,#13H,CLKE MOV MONTH,#1 MOV A,YEAR ADD A,#1DA AMOV YEAR,A CLKE99:CALL CONVERT CLKE:POP PSW POP ACC RETIDISP:PUSH PSW PUSH ACC MOV 23H,R0 DISP99:MOV R1,#40H MOV R0,#30H MOV R2,#9 DISP1:MOV A,@R0ANL A,#0FHMOV @R1,AMOV A,@R0SWAP AANL A,#0FHINC R1MOV @R1,ADJNZ R2,DISP2 CALL DISPLAYMOV R0,23HPOP ACCPOP PSWRETDISP2:INC R1INC R0JMP DISP1 DISPLAY:MOV R1,#40HMOV R5,#19SETB AAAPLAY:SETB BBBNOPCLR BBBCLR AAAMOV A,@R1MOV DPTR,#TAB MOVC A,@A+DPTR MOV COM,ACALL DL1MSMOV COM,#0FFHDJNZ R5,PLAY1CLR BBBSETB AAARETPLAY1:INC R1JMP PLAYTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0A3H,8EH,0ABH DL1MS:MOV 25H,R7MOV 24H,R6MOV R7,#20DS1:MOV R6,#10DJNZ R6,$DJNZ R7,DS1MOV R7,25HMOV R6,24HRETSTART_YEAR EQU 01 CONVERT_YEAR DATA 5CH CONVERT_MONTH DATA 38H CONVERT_DATE DATA 37H TEMP_BYTE1 DATA 57H TEMP_BYTE2 DATA 58H TEMP_BYTE3 DATA 59H TEMP_BYTE4 DATA 5AH TEMP_BYTE5 DATA 5BH CONVERT:MOV A, YEARMOV TIME_YEAR,AMOV A,MONTHMOV TIME_MONTH,AMOV A,DAYMOV TIME_DATA,AMOV A,TIME_YEARMOV B,#16DIV ABMOV CONVERT_YEAR,B MOV B,#10MUL ABADD A,CONVERT_YEARMOV CONVERT_YEAR,AMOV A,TIME_MONTHJNB ACC.4,CON_02CLR ACC.4ADD A,#10CON_02:MOV CONVERT_MONTH,A MOV A,TIME_DATAMOV B,#16DIV ABMOV CONVERT_DATE,BMOV B,#10MUL ABADD A,CONVERT_DATEMOV CONVERT_DATE,AMOV DPTR,#MONTH_DATAMOV A,CONVERT_YEARCON_06:CLR CSUBB A,#START_YEARMOV B,#3MUL ABADD A,DPLMOV DPL,AMOV A,BADDC A,DPHMOV DPH,AMOV A, #2MOVC A, @A+DPTRCLR ACC.7MOV B, #32DIV ABMOV TEMP_BYTE1,AMOV TEMP_BYTE2,BMOV TEMP_BYTE3,#0MOV A,CONVERT_MONTH CJNE A,#10,CON_08CON_08:JC CON_09MOV TEMP_BYTE3,#1CON_09:MOV A,CONVERT_YEAR ANL A,#03HJNZ CON_10MOV A,CONVERT_MONTH LCALL GET_RUN_DAYS_LOW SJMP CON_12CON_10:MOV A,CONVERT_MONTH LCALL GET_DAYS_LOWCON_12:MOV B,CONVERT_DATE DEC BADD A,BMOV TEMP_BYTE4,AJNC CON_14INC TEMP_BYTE3CON_14:MOV A,TEMP_BYTE1 LCALL GET_DAYS_LOWDEC AADD A,TEMP_BYTE2MOV TEMP_BYTE5,AMOV A,CONVERT_MONTHCJNE A,TEMP_BYTE1,CON_20 MOV A,CONVERT_DATECJNE A,TEMP_BYTE2,CON_20 CON_20:JC CON_22LJMP CON_60CON_22:MOV A,CONVERT_YEAR JNZ CON_24MOV A,#100CON_24:DEC AMOV CONVERT_YEAR,A MOV A,DPLCLR CSUBB A,#3MOV DPL,AJNC CON_26DEC DPHCON_26:MOV A,TEMP_BYTE5 CLR CSUBB A,TEMP_BYTE4MOV TEMP_BYTE3,AMOV CONVERT_MONTH,#12 CLR F0CLR AMOVC A,@A+DPTRANL A,#0F0HSWAP A;MOV TEMP_BYTE4,AJZ CON_30MOV A, #2MOVC A , @A+DPTRMOV C, ACC.7MOV A, #1MOVC A, @A+DPTRRLC ASJMP CON_34CON_30:MOV A, #1MOVC A, @A+DPTRCON_34:MOV TEMP_BYTE5, A CON_40:MOV A, TEMP_BYTE5 RRC AMOV TEMP_BYTE5, AJC CON_42MOV B, #29SJMP CON_44CON_42:MOV B, #30CON_44:MOV A, TEMP_BYTE3 CLR CSUBB A, BJZ CON_46JNC CON_50CPL AINC ACON_46: INC AMOV B, #10DIV ABSWAP AORL A, BMOV CONVERT_DATE, A MOV A, CONVERT_MONTH MOV B, #10DIV ABSWAP AORL A, BMOV CONVERT_MONTH, A MOV A, CONVERT_YEAR MOV B, #10DIV ABSWAP AORL A, BMOV CONVERT_YEAR, A CALL WEEKRETCON_50:MOV TEMP_BYTE3, A JB F0, CON_52DEC CONVERT_MONTHCON_52:MOV A, CONVERT_MONTH CJNE A, TEMP_BYTE4, CON_54CPL F0CON_54:SJMP CON_40CON_60:MOV A, TEMP_BYTE4CLR CSUBB A, TEMP_BYTE5MOV TEMP_BYTE4, AJNC CON_62DEC TEMP_BYTE3CON_62:MOV CONVERT_MONTH, #1 CLR AMOVC A, @A+DPTRMOV TEMP_BYTE5, AANL A, #0F0HSWAP AXCH A, TEMP_BYTE5CLR F0ANL A, #0FHMOV TEMP_BYTE1, AMOV A, #1MOVC A, @A+DPTRMOV TEMP_BYTE2, AANL A, #0F0HORL A, TEMP_BYTE1SWAP AMOV TEMP_BYTE1, AMOV A, #2MOVC A, @A+DPTRMOV C, ACC.7MOV A, TEMP_BYTE2ANL A, # 0FHSWAP AMOV ACC.3, CMOV TEMP_BYTE2, ACON_70:MOV A, TEMP_BYTE2 RLC AMOV TEMP_BYTE2, AMOV A, TEMP_BYTE1RLC AMOV TEMP_BYTE1, AJC CON_72MOV B, #29SJMP CON_74CON_72:MOV B, #30CON_74:MOV A, TEMP_BYTE4CLR CSUBB A,BJNC CON_78MOV B, AMOV A, TEMP_BYTE3JZ CON_76DEC TEMP_BYTE3MOV TEMP_BYTE4, BSJMP CON_80CON_76:MOV A, TEMP_BYTE4 LJMP CON_46CON_78:MOV TEMP_BYTE4, ACON_80:MOV A, CONVERT_MONTH CJNE A, TEMP_BYTE5, CON_82 CPL F0JNB F0, CON_82SJMP CON_70CON_82:INC CONVERT_MONTH SJMP CON_70GET_DAYS_LOW:MOVC A, @A+PCRETDB 0,31,59,90,120,151,181,212,243,17,48,78 GET_RUN_DAYS_LOW:MOVC A, @A+PCRETDB 0,31,60,91,121,152,182,213,244,18,49,79 MONTH_DATA:DB 04DH,04AH,0B8H;2001DB 00DH,04AH,04CH;2002DB 00DH,0A5H,041H;2003DB 025H,0AAH,0B6H;2004DB 005H,06AH,049H;2005DB 07AH,0ADH,0BDH;2006DB 002H,05DH,052H;2007DB 009H,02DH,047H;2008DB 05CH,095H,0BAH;2009DB 00AH,095H,04EH;2010DB 00BH,04AH,043H;2011DB 04BH,055H,037H;2012 DB 00AH,0D5H,04AH;2013 DB 095H,05AH,0BFH;2014 DB 004H,0BAH,053H;2015 DB 00AH,05BH,048H;2016 DB 065H,02BH,0BCH;2017 DB 005H,02BH,050H;2018 DB 00AH,093H,045H;2019 DB 047H,04AH,0B9H;2020 DB 006H,0AAH,04CH;2021 DB 00AH,0D5H,041H;2022 DB 024H,0DAH,0B6H;2023 DB 004H,0B6H,04AH;2024 DB 069H,057H,03DH;2025 DB 00AH,04EH,051H;2026 DB 00DH,026H,046H;2027 DB 05EH,093H,03AH;2028 DB 00DH,053H,04DH;2029 DB 005H,0AAH,043H;2030 DB 036H,0B5H,037H;2031 DB 009H,06DH,04BH;2032 DB 0B4H,0AEH,0BFH;2033DB 004H,0ADH,053H;2034 DB 00AH,04DH,048H;2035 DB 06DH,025H,0BCH;2036 DB 00DH,025H,04FH;2037 DB 00DH,052H,044H;2038 DB 05DH,0AAH,038H;2039 DB 00BH,05AH,04CH;2040 DB 005H,06DH,041H;2041 DB 024H,0ADH,0B6H;2042 DB 004H,09BH,04AH;2043 DB 07AH,04BH,0BEH;2044 DB 00AH,04BH,051H;2045 DB 00AH,0A5H,046H;2046 DB 05BH,052H,0BAH;2047 DB 006H,0D2H,04EH;2048 DB 00AH,0DAH,042H;2049 DB 035H,05BH,037H;2050 DB 009H,037H,04BH;2051 DB 084H,097H,0C1H;2052 DB 004H,097H,053H;2053 DB 006H,04BH,048H;2054 DB 066H,0A5H,03CH;2055DB 00EH,0A5H,04FH;2056 DB 006H,0B2H,044H;2057 DB 04AH,0B6H,038H;2058 DB 00AH,0AEH,04CH;2059 DB 009H,02EH,042H;2060 DB 03CH,097H,035H;2061 DB 00CH,096H,049H;2062 DB 07DH,04AH,0BDH;2063 DB 00DH,04AH,051H;2064 DB 00DH,0A5H,045H;2065 DB 055H,0AAH,0BAH;2066 DB 005H,06AH,04EH;2067 DB 00AH,06DH,043H;2068 DB 045H,02EH,0B7H;2069 DB 005H ,02DH, 04BH; 2070 DB 08AH, 095H, 0BFH; 2071 DB 00AH, 095H, 053H; 2072 DB 00BH, 04AH, 047H; 2073 DB 06BH, 055H, 03BH; 2074 DB 00AH, 0D5H, 04FH; 2075 DB 005H, 05AH, 045H; 2076 DB 04AH, 05DH, 038H; 2077DB 00AH, 05BH, 04CH; 2078 DB 005H, 02BH, 042H; 2079 DB 03AH, 093H, 0B6H; 2080 DB 006H, 093H, 049H; 2081 DB 077H, 029H, 0BDH; 2082 DB 006H, 0AAH, 051H; 2083 DB 00AH, 0D5H, 046H; 2084 DB 054H, 0DAH, 0BAH; 2085 DB 004H, 0B6H, 04EH; 2086 DB 00AH, 057H, 043H; 2087 DB 045H, 027H, 038H; 2088 DB 00DH, 026H, 04AH; 2089 DB 08EH, 093H, 03EH; 2090 DB 00DH, 052H, 052H; 2091 DB 00DH, 0AAH, 047H; 2092 DB 066H, 0B5H, 03BH; 2093 DB 005H, 06DH, 04FH; 2094 DB 004H, 0AEH, 045H; 2095 DB 04AH, 04EH, 0B9H; 2096 DB 00AH, 04DH, 04CH; 2097 DB 00DH, 015H, 041H; 2098 DB 02DH, 092H, 0B5H; 2090DB 00DH, 053H, 049H; 2100 TIME_WEEK1 DATA 52H WEEK:MOV A, TIME_YEARMOV B, #16DIV ABMOV TEMP_BYTE1, BMOV B, #10MUL ABADD A, TEMP_BYTE1MOV TEMP_BYTE1, AMOV A, TIME_MONTHJB ACC.7, GETW02MOV A, #100ADD A, TEMP_BYTE1MOV TEMP_BYTE1, AMOV A, TIME_MONTHCLR ACC.7GETW02: JNB ACC.4, GETW04 ADD A , #10CLR ACC.4GETW04: MOV TEMP_BYTE2,AMOV A, TIME_DATAMOV B, #16DIV ABMOV TEMP_BYTE3, BMOV B, #10MUL ABADD A, TEMP_BYTE3MOV TEMP_BYTE3, AMOV A ,TEMP_BYTE1ANL A, #03HJNZ GETW10MOV A, TEMP_BYTE2CJNE A, #3,GETW06GETW06: JNC GETW10DEC TEMP_BYTE3GETW10: MOV A,TEMP_BYTE2 LCALL GET_CORRECTADD A, TEMP_BYTE1MOV B, #7DIV ABMOV A, TEMP_BYTE1ANL A, #0FCHRR ARR AADD A, BADD A, TEMP_BYTE3 MOV B, #7DIV ABMOV A, BCJNE A, #0,OUTOUT MOV B, #8 OUTOUT:MOV TIME_WEEK, B RETGET_CORRECT: MOVC A, @A+PC RETDB 0,3,3,6,1,4,6,2,5,0,3,5 END5 系统仿真及调试6 仿真结果及分析上图为运行时的显示, 左边两个数码管显示器显示的是年、月、日, 中间的显示的是时、分、秒, 右边显示的是农历日期以及星期。

51单片机课程设计报告

51单片机课程设计报告

51单片机课程设计报告一、课程目标知识目标:1. 理解51单片机的硬件结构、工作原理及其功能特点;2. 学会使用51单片机的指令系统进行程序设计;3. 掌握51单片机与外围电路的接口技术,能实现简单的硬件控制功能;4. 了解51单片机在嵌入式系统中的应用及发展趋势。

技能目标:1. 能够运用C语言编写51单片机的程序,实现基础控制功能;2. 能够运用仿真软件对51单片机程序进行调试,分析并解决简单问题;3. 能够设计简单的51单片机硬件系统,进行电路连接和功能测试;4. 培养学生的动手能力、创新能力和团队协作能力。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情;2. 培养学生严谨、务实的科学态度,提高自主学习能力;3. 培养学生关注社会发展,了解科技在生活中的应用,增强社会责任感;4. 培养学生团队合作精神,尊重他人意见,善于沟通交流。

课程性质:本课程为实践性较强的电子技术课程,以51单片机为核心,结合硬件和软件,培养学生的实际操作能力和创新能力。

学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但实践经验不足。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力和解决问题的能力。

通过课程学习,使学生能够独立完成简单的51单片机控制系统设计。

二、教学内容根据课程目标,教学内容分为以下几个部分:1. 51单片机硬件结构及原理- 熟悉51单片机的内部结构、引脚功能;- 掌握51单片机的工作原理及性能特点。

2. 51单片机指令系统与编程- 学习51单片机的指令集,理解各指令的功能和使用方法;- 掌握C语言在51单片机编程中的应用。

3. 51单片机外围接口技术- 学习51单片机与常见外围电路(如LED、LCD、键盘等)的接口技术;- 掌握外围设备的控制原理及编程方法。

4. 仿真软件的使用- 学习使用Keil、Proteus等仿真软件进行51单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。

单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。

二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。

2.软件设计通过C语言编写单片机程序,用于实现时钟功能。

3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。

(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。

(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。

(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。

三、实验结果经过调试,电子时钟的各项功能都能够正常实现。

在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。

在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。

四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。

通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。

在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。

单片机万年历课程设计报告

单片机万年历课程设计报告

单片机万年历课程设计报告一、课程设计目标本课程设计旨在帮助学生掌握单片机应用基础知识,学习并完成万年历电路的设计和代码编写。

通过这个实践,学生将会深入理解单片机在实际生活中的应用,同时提升自己的程序设计和解决问题的能力。

二、课程设计内容1. 万年历电路的原理和设计本次课程设计要求学生完成一个万年历电路的设计,包括硬件电路和程序设计。

在电路设计中,学生需要考虑到显示器、时钟模块、日期模块和温湿度传感器等部分的连接和调试。

在程序设计方面,学生需要实现万年历的功能,包括显示当前日期和时间、自动确定闰年、节假日提示等。

2. 单片机基本原理和应用实践在万年历电路设计之前,本课程将会对单片机基本原理进行介绍,包括单片机内部结构、芯片选型和I/O口控制等。

另外,还将介绍单片机在各种应用场景中的应用实践,如遥控、电脑控制、机器人和智能家居等。

3. 问题解决和困难克服在学生完成万年历电路设计的过程中,难免会遇到各种问题和困难。

本课程将对学生进行相关的实用技巧和方法讲解,帮助他们解决问题和克服难关。

三、课程设计流程1. 单片机基础知识介绍(2学时)讲解单片机内部结构及其原理,并介绍单片机应用实践2. 万年历电路设计(12学时)对万年历的硬件和软件进行介绍,包括连接显示器和外设、编写程序等3. 问题解决(2学时)介绍学生应对问题的技巧和方法,并帮助他们克服电路设计中的问题和难点四、课程设计评价标准1. 设计成果设计成果的好坏是课程设计的重要衡量标准之一,包括电路的设计完整性、软件功能实现等方面。

2. 实践能力课程设计是一种实践性强的学习形式,学生需要通过实践来掌握知识,因此他们的实践能力成为衡量标准之一。

3. 团队合作在课程设计的过程中,学生要协同工作,完成一个大型的项目,因此团队合作能力是衡量标准之一。

4. 学习的态度学习态度是衡量标准之一,包括学生在课程设计中的主动性、积极性和责任感等方面。

五、总结通过这个万年历课程设计,学生不仅学会了单片机应用的基础知识,还掌握了实际项目开发的方法和技巧。

单片机课程设计实验报告+基于单片机的数字时钟+含完整实验代码

单片机课程设计实验报告+基于单片机的数字时钟+含完整实验代码

单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。

功能要求:a)计时并显示(LED)。

由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。

b)时间调整功能。

利用4个独立按钮,实现时钟调整功能。

这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。

c)定闹功能。

利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。

d)秒表功能。

最小时间单位0.01秒。

二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。

a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。

b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。

注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。

S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。

电路采用两个滤波电容,给板子一个更加稳定的工作电源。

LED为电源的指示灯,通电后LED灯亮。

2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。

有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。

如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。

低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。

电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。

数码管的阴级由P0口经过电阻限流连接。

例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

扬州大学单片机课程设计报告姓名:徐旸学号:090801121班级:电科0901完成日期:2013年1月16日一.系统结构:设计任务:(1)基于DS18B20的温度测量DS18B20是一个数字式的温度传感器,单片机可以直接读取其转换之后的温度,并在数码管上显示。

设计要求:(1)基于DS18B20的温度测量要求能够在4个数码管上显示实时测量温度。

比如12.34。

实现温度报警功能,假设温度超过20度就报警,并点亮一个LED灯,以此提醒用户。

设计流程:(1)首先理解原理图,分析清楚各个电路部分的功能作用。

(2)认识熟悉各个元器件。

(3)事先在万能板上布好局,放置各个元器件,其中芯片用插座代替放置。

布局要做到美观整齐。

(4)布局完成之后,进行电路焊接。

(5)通电测试,调试程序。

二.硬件原理:1.元器件介绍:(1)发光二级管:长脚为正,短脚为负。

肖特基二极管5819:灰色圈一极为负。

电解电容:白色区域对应的管脚为负。

(2)J1:电源输入的接口。

(3)J2:和计算机的RS232串口连接。

(4)S1:电源开关,请用万用表来确认常闭和常开管脚。

(5)RJ1:排阻,一共有9个引脚,其中一个引脚与所有电阻的一端相连接,其余8个引脚分别对应8个电阻。

他们的大小分别为470欧。

(6)S2,S3,S4轻触按键:4各管脚有常开和常闭。

一般都是使用对角线的两个引脚。

(7)Q1-Q4:PNP三极管,将三极管有字面正对自己,管脚朝下,从左到右依次为E、B、C(8)S5:四连体的共阳极数码管。

(9)电阻:包括4.7k和470欧两种。

(10)RS232串口,采用DB-9型号的串口。

串口只需用到DB9.2、DB9.3和DB9.5三个信号脚。

2.电路原理图:本次课程设计的电路图包括4个模块:电源电路模块,单片机LED数码管显示电路模块,串口下载电路模块,DS18B20电路和DS1320电路模块。

以下为各个模块的电路原理图:(1)电源电路模块:电源下载电路是用来给整个电路板供电,从J1接入9-15v的电压,从U1的Vout 输出5V电压。

(2)单片机LED数码管显示电路模块:该电路模块通过P0.1接入DS18DATA,接受DS18B20的温度数据,通过P0.3、P0.4、P0.5连接DS1302的SCLK、IO、RST,接受DS1302的时间数据,在经过单片机程序的处理后在共阳极的数码管上显示。

(3)串口下载电路模块:串口下载电路主要由MAX232芯片构成。

串行数据信号线RXD和TXD分别连接单片机的P3.0和P3.1口。

R1IN和T1OUT将连接RS232接口,分别对应2号脚和3号脚。

(4)DS18B20电路和DS1320电路模块:DS18B20是用来产生温度数据,传入单片机中。

电路的连接很简单。

三.软件设计:1.设计思路:温度显示的程序里,把采集进来的数据分解成单个的为保存在数组中,然后再根据值找到对应的数码管显示值。

2.程序流程图:3.软件C51程序:#include <at89x52.h>#include "intrins.h"#define uchar unsigned char#define uint unsigned int#define TEMPSHIW 2 //监控温度#define TEMPGEWI 6#define TEMPXSHU 8uchar codedispcode[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff, 0xff,0xfe};uchar flag = 0;sbit DQ=P0^1; //温度输入口sbit DIN=P2^0; //LED小数点控制sbit LED1=P1^0; //闹铃指示灯sbit LED2=P1^1; //温度报警指示灯//**************温度小数部分用查表法***********//uchar codeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0 x07,0x08,0x08,0x09,0x09};uchar code scan_con[4]={0x7f,0xbf,0xdf,0xef}; //列扫描控制字uchar data temp_data[2]={0x00,0x00}; //读出温度暂放uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //显示单元数据,共4个数据和一个运算暂用/***********显示扫描函数**********/void delay2(uint t){for(;t>0;t--);}///***********显示扫描函数**********/scan(){char k;for(k=0;k<4;k++) //四位LED扫描控制{P2=0xff;P2=dispcode[display[k]];if(k==1){DIN=0;}P3=scan_con[k];delay2(90);P3=0xff;}}/////***********18B20复位函数**********/ow_reset(void){char presence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();DQ=0; //delay2(50); // 550usDQ=1; //delay2(6); // 66uspresence=DQ; // presence=0继续下一步}delay2(45); //延时500uspresence = ~DQ;}DQ=1;}/////**********18B20写命令函数*********///向 1-WIRE 总线上写一个字节void write_byte(uchar val){uchar i;for (i=8; i>0; i--){DQ=1;_nop_();_nop_();DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us DQ = val&0x01; //最低位移出delay2(6); //66usval=val/2; //右移一位}DQ = 1;delay2(1);}///*********18B20读1个字节函数********///从总线上读取一个字节uchar read_byte(void){uchar i;uchar value = 0;for (i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ = 0;_nop_();_nop_();_nop_();_nop_(); //4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); //4us if(DQ)value|=0x80;delay2(6); //66us}DQ=1;return(value);}///***********读出温度函数**********///read_temp(){ow_reset(); //总线复位write_byte(0xCC); // 发Skip ROM命令write_byte(0xBE); // 发读命令temp_data[0]=read_byte(); //温度低8位temp_data[1]=read_byte(); //温度高8位ow_reset();write_byte(0xCC); // Skip ROMwrite_byte(0x44); // 发转换命令}///***********温度数据处理函数**********/void work_temp(){uchar n=0;uchar doth,dotl;uchar flag3=1,flag2=1; //数字显示修正标记if((temp_data[1]&0xf8)!=0x00){temp_data[1]=~(temp_data[1]);temp_data[0]=~(temp_data[0])+1;n=1;flag=1;}//负温度求补码if(temp_data[0]>255){temp_data[1]++;}display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];doth=display[0]/10;dotl=display[0]%10;display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x07)<<4); display[3]=display[4]/100;display[2]=display[4]/10%10;display[1]=display[4]%10;if(!display[3]){display[3]=0x0a;flag3=0;if(!display[2]){display[2]=0x0a;flag2=0;}}//最高位为0时都不显示if(display[2] == 0x0a) //超温报警判断{LED2=1;}else{if((display[2] > TEMPSHIW)){LED2=0;}else if((display[2] == TEMPSHIW) && (display[1] > TEMPGEWI)){LED2=0;}else if((display[2] == TEMPSHIW) && (display[1] == TEMPGEWI) && (display[0] > TEMPXSHU)){LED2=0;}else{LED2=1;}}if(n){display[3]=0x0b;//负温度时最高位显示"-"flag3=0;}}/**************主函数****************/void DS18B20_START(){P3=0xff; //初始化端口P2=0xff;write_byte(0xCC); // Skip ROMwrite_byte(0x44); // 发转换命令while(1){read_temp(); //读出18B20温度数据work_temp(); //处理温度数据scan(); //显示温度值2秒}}void main(){while(1){DS18B20_START();}}四.总结:通过本次课程设计,我更加熟悉了单片机的c51编程,对DS18B20芯片的功能有了比较深入的了解。

相关文档
最新文档