《万年历的设计与制作(基于单片机).pdf》由会员分享,可在线阅读,更多相关《万年历的设计与制作(基于单片机).pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 湖 北 理 工 学 院 电气与电子信息工程学院 智能电子产品设计与制作 设计题目:万年历的设计与制作 专业班级:学 号:姓 名:指导教师:李玉平 王海华 设计时间:2012/5/282012/6/10 设计地点:K2407 智能电子产品设计与制作课程设计成绩评定表 姓 名 学 号 专业班级 课程设计题目:课程设计答辩或质疑记录:1、2、成绩评定依据:实物制作(40):课程设计考勤情况(20):课程设计答辩情况(20):完成设计任务及报告规范性(20):最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字:2012 年 6 月 10 日 电气与电子信息工程学院 课程设计报告 I 目 录
2、第一部分 课程设计任务书.1 一、课题名称.1 二、设计目的.1 三、设计内容.1 四、设计要求.1 五、设计进度表.1 六、设计报告.2 七、参考书目.2 第二部分 课程设计.3 一、整体功能要求.3 1、设计任务.3 2、设计要求.3 二、整体方案设计.3 三、硬件设计.4 1、单片机主控制模块的设计.4 2、LCD 显示模块设计.5 3、时间计算模块设计.5 4、实时环境温度检测模块.6 5、报警模块.7 6、设置模块.7 四、软件设计.7 1、程序流程图.7 2、主程序.8 五、调试.19 1、建立工程和仿真图.19 2、keil 软件调试结果.20 3、proteus软件仿真结果.2
3、0 六、实物的组装与调试.21 1.实物的组装.21 2、实物焊接.21 3、调试.21 七、心得体会.23 附录 元件清单.24 参考文献.24 电气与电子信息工程学院 课程设计报告 1 第一部分 课程设计任务书 2011 2012 学年第 2 学期 学生姓名:专业班级:10 应电专 1 指导教师:李玉平、王海华 工作部门:电信教研室 一、课题名称 单片机应用系统设计与制作 二、设计目的 为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的智能电子产品设计与制作课程设计。通过实训使学生在巩固所学知识的基础之上具有初步的单片机系统设计
4、与应用能力。三、设计内容 设计基于 51 单片机的万年历,音乐盒和交通灯系统,在万年历中,用温度传感器采集温度,用 DS1302 实现时钟功能,并以该电路为基础进行编程,用 LED 或 LCD 显示当前温度和时钟。在交通灯系统中,按交通灯的规则为基础,以 51 单片机为核心,设计与制作一智能交通灯。在音乐盒中,以 51 单片机为核心,通过软件实现三首歌曲的播放。四、设计要求 1、设计基于 51 单片机的万年历,音乐盒和交通灯系统,在这三个要求中任选一题。2、在万年历中,用温度传感器采集温度,用 DS1302 实现时钟功能,并以该电路为基础进行编程,用 LED 或 LCD 显示当前温度和时钟。3
5、、在交通灯系统中,按交通灯的规则为基础,以 51 单片机为核心,设计与制作一智能交通灯。4、在音乐盒中,以 51 单片机为核心,通过软件实现三首歌曲的播放。6、编写课程设计的总结。五、设计进度表 序号 设计内容 所用时间 1 布置任务,学习传感器和 LED 或 LCD 的工作原理以及硬件电路设计 3 天 2 完成系统程序设计 3 天 3 制作电路板 1 天 4 答辩、撰写设计报告书 3 天 合 计 10 天 电气与电子信息工程学院 课程设计报告 2 六、设计报告 课程设计报告的基本内容至少包括封面、正文、附录三部分。课程设计报告要求统一格式,字体工整规范。1、封面 封面包括“单片机应用系统设计
6、与制作课程设计报告”、班级、姓名、学号以及完成日期等。2、正文 正文是实践设计报告的主体,具体由以下几部分组成:(1)课程设计题目;(2)课程设计任务与要求;(3)设计过程(包括设计方案、设计原理、创新点以及采用的新技术等);(4)方案的比较与论证;(5)硬件电路设计,各个模块的设计与器件的选择;(6)软件程序的设计与调试;(7)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法;技术实现技巧和创新点;作品存在的问题和改进设想等);3附录 附录 1:系统设计原理图 附录 2:系统硬件元器件清单 附录 3:系统的程序 七、参考书目 1 李朝青.单片机原理及接口技术(简明修订版).杭州:北
7、京航空航天大学出版社,1998 2 李广弟.单片机基础.北京:北京航空航天大学出版社,1994 3 阎石.数字电子技术基础(第三版).北京:高等教育出版社,1989 4 廖常初.现场总线概述J.电工技术,19995 徐仁贵等编著.单片微型计算机应用技术.北京:机械工业出版社.2001 年 2 月第 1 版 6 张毅刚等编著.单片机原理及应用.北京:高等教育出版社.2004 年 1 月第 1 版 电气与电子信息工程学院 课程设计报告 3 第二部分 课程设计 一、整体功能要求 1、设计任务 利用单片机、时钟芯片 DS1302、温度传感器 DS18B20、1602 液晶等实现日期、时间、温度的显示即
8、一个简单的万年历。2、设计要求 (1)通过 DS1302 能够准确的计时,时间可调并在液晶上显示出来。(2)通过 DS18B20 能够实时、准确的检测当前环境温度。(3)利用 AT89C52 单片机自身功能实现闹钟及温度报警的功能。二、整体方案设计 本系统以 AT89S52 单片机为控制核心,通过与 DS1302 和 DS18B20 通信获取实时时间和实时环境温度,并将得到的数据通过1602 液晶显示出来,同时通过相应的按键调整相应的值。因此本设计可分为一下模块:单片机主控制模块、显示模块、实时时间计算模块、实时环境温度采集模块、报警模块、设置模块(时间设置模块、最高温度设置模块、闹钟设置模块
9、)。图 1 万年历系统设计框图 DS1302 时钟电路 储存器 复位电路 晶振电路 系统电源 供电设计 AT89C51单片机 LM016L 液 晶显示模块 电气与电子信息工程学院 课程设计报告 4 图 2 电路原理图 三、硬件设计 1、单片机主控制模块的设计 图3 AT89C52引脚图 AT89C52是一个低电压,高性能 CMOS 8位单片机,片内含8k bytes 的可反复擦写的 Flash 只读程序存储器和256 bytes 的随机存取数据存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51指令系统,电气与电子信息工程学院 课程设计报告 5 片
10、内置通用8位中央 处理器和 Flash 存储单元,功能强大的 AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash 存储器结合在一起,特别是可反复擦写的 Flash 存储器可有效地降低开发成本。2、LCD 显示模块设计 1602 液晶也叫 1602 字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个 5X7 或者 5X11
11、 等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用。1602 的驱动电路带有 11 条指令,可以很方便的控制液晶的现实效果如:清屏、左移右移、光标显示。而且 1602 显示的字符在下一条指令为到来之前不会改变,也就是能够维持显示的字符,1602 液晶占用的系统资源也少。3、时间计算模块设计 DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加 31 字节静态 RAM,采用 SPI 三线接口与 CPU 进行通信,并可采用突发方式一次传送多个字节的时钟信号和 RAM 数据。实时时钟可提供
12、秒、分、时、日、星期、月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。图4 DS1302引脚介绍 电气与电子信息工程学院 课程设计报告 6 各引脚的功能为:8、Vcc1:备用电池端;1、Vcc2:5V 电源。当 Vcc2Vcc1+0.2V 时,由 Vcc2向 DS1302供电,当 Vcc2 Vcc1时,由 Vcc1向 DS1302供电。7、SCLK:串行时钟,输入;6、I/O:数据输入输出口;5、CE/RST:复位脚 2 3、X1、X2 是外接晶振脚
13、(32.768KHZ 的晶振)4、地(GND)4、实时环境温度检测模块 DS18B20是美国 DALLAS 公司生产的数字温度传感器,采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。测量温度范围宽,测量精度高,在使用中不需要任何外围元件,支持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温,供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满
14、足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。因此非常适合本系统使用。DS18B20 单线数字温度传感器,测量温度范围宽,测量精度高。其测量范围为-55 至+125 ;在-10至+85C 范围内,精度为 0.5C。DS18B20 还具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。图5 DS18B20管脚介绍 电气与电子信息工程学院 课程设计报告 7 DS18B20的管脚排列 1.GND 为电源 地;2.DQ 为数字信号输入输出端;3.VDD 为外接供电电源输入端,在寄生电源接线方式时接
15、地。5、报警模块 报警模块采用单片机输出一定频率的方波从而使蜂鸣器发出声音,只要编写相应的程序即可实现发出不同频率的声音。6、设置模块 因设置模块只需编写相应的程序外加相应的按键即可实现。四、软件设计 软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C 语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用 C52编写。1、程序流程图 图 6 主程序流程框图 电气与电子信息工程学院 课程设计报告 8 2、主程序#include#include#define uchar unsigned char#de
16、fine uint unsigned int sbit RS=P20;/数据/命令选择端 sbit RW=P21;/读/写选择端 sbit E=P22;/1602 使能 sbit IO=P10;/DS1302 数据口 sbit SCLK=P11;/DS1302 串行时钟 sbit RST=P12;/DS1302 时钟复位脚 sbit DQ=P13;/DS18B20 温度 sbit K1=P33;/功能 sbit K2=P34;/增加 sbit K3=P35;/减少 sbit K4=P36;/确定 sbit K5=P37;/取消 sbit led=P24;/温度报警 sbit buzz=P23;
17、/蜂鸣器报警 uchar data LCD_DSY_BUFFER1=20 -;uchar data LCD_DSY_BUFFER2=:;uchar data Temp_BUFFER8;char*week=SUN,MON,TUS,WEN,THU,FRI,SAT;uchar days=0,31,28,31,30,31,30,31,31,30,31,30,31;uchar data DateTime7;/秒、分、时、日、月、周、年 uchar Adjust_Index=-1;/时钟调节标志 uint tvalue;/温度值 uchar tflag;/温度正负标志 /微妙延时程序(约为 10us(小于
18、)void delayus(uint us)while(us-);/毫秒延时程序 void delayms(uint ms)uint i,j;for(i=ms;i0;i-)for(j=110;j0;j-);/写 LCD 命令寄存器 void Write_LCD_Command(uchar cmd)RS=0;RW=0;P0=cmd;电气与电子信息工程学院 课程设计报告 9 E=1;delayms(5);E=0;/写 LCD 数据寄存器 void Write_LCD_Data(uchar dat)RS=1;RW=0;P0=dat;E=1;delayms(5);E=0;/显示字符串 void LCD
19、_ShowString(uchar x,uchar y,uchar*str)uchar i=0;if(y=0)Write_LCD_Command(0 x80|x);else if(y=1)Write_LCD_Command(0 xc0|x);for(i=0;i16&stri!=0;i+)Write_LCD_Data(stri);/刷新 LCD 显示缓冲区 void Refresh_LCD_BUFFER()LCD_DSY_BUFFER12=DateTime6/10+0 x30;LCD_DSY_BUFFER13=DateTime6%10+0 x30;LCD_DSY_BUFFER15=DateTim
20、e4/10+0 x30;LCD_DSY_BUFFER16=DateTime4%10+0 x30;LCD_DSY_BUFFER18=DateTime3/10+0 x30;LCD_DSY_BUFFER19=DateTime3%10+0 x30;LCD_DSY_BUFFER20=DateTime2/10+0 x30;LCD_DSY_BUFFER21=DateTime2%10+0 x30;LCD_DSY_BUFFER23=DateTime1/10+0 x30;LCD_DSY_BUFFER24=DateTime1%10+0 x30;LCD_DSY_BUFFER26=DateTime0/10+0 x30;
21、LCD_DSY_BUFFER27=DateTime0%10+0 x30;/LCD 初始化 void Initialize_LCD()E=0;Write_LCD_Command(0 x38);Write_LCD_Command(0 x0c);Write_LCD_Command(0 x06);电气与电子信息工程学院 课程设计报告 10 Write_LCD_Command(0 x01);/向 DS1302 中写入一字节(上升沿写入)void Write_Byte_TO_DS1302(uchar x)uchar i;for(i=0;i=1;/右移一位 /从 DS1302 中读取一字节(下降沿读取)uc
22、har Get_Byte_FROM_DS1302()uchar i,dat=0 x00;for(i=0;i=1;return dat/16*10+dat%16;/将读出的 BCD 码值转化为十进制/从 DS1302 的指定地址读取一字节数据 uchar Read_Data(uchar addr)uchar dat;RST=0;SCLK=0;RST=1;Write_Byte_TO_DS1302(addr);/先写地址在读取 dat=Get_Byte_FROM_DS1302();RST=0;SCLK=1;return dat;/向指定的地址写入一字节数据 void Write_DS1302(uch
23、ar add,uchar num)RST=0;电气与电子信息工程学院 课程设计报告 11 SCLK=0;RST=1;Write_Byte_TO_DS1302(add);/先写地址再写数据 Write_Byte_TO_DS1302(num);RST=0;SCLK=1;/读取当前日期时间 void GetDateTime()uchar i,addr=0 x81;/读取秒地址开始(地址最高位 10 表示要读/写 clock数据,/最低位表示是读(1)还是写(0)for(i=0;i7;i+)DateTimei=Read_Data(addr);addr+=2;/禁止涓流充电 void denot()Wr
24、ite_DS1302(0 x8e,0 x00);/写控制字节,取消写保护 Write_DS1302(0 x90,0 x8b);/禁止涓流充电 Write_DS1302(0 x8e,0 x80);/加保护/写改动后的数据到 DS1302 中 void SetDateTime()uchar i;Write_DS1302(0 x8e,0 x00);/写控制字节,取消写保护 for(i=0;i7;i+)Write_DS1302(0 x80+2*i,(DateTimei/104)|(DateTimei%10);Write_DS1302(0 x8e,0 x80);/加保护/判断是否为闰年 uchar Is
25、LeapYear(uint y)if(y%4=0&y%100!=0)|(y%400=0)return 1;else return 0;/根据设定的日期自动刷新星期 void RefreshWeekday()uint i,d,w=5;/已知 1999.12.31 是周五 for(i=2000;i2000+DateTime6;i+)d=IsLeapYear(i)?366:365;w=(w+d)%7;电气与电子信息工程学院 课程设计报告 12 for(d=0,i=1;idaysDateTime4)DateTime3=daysDateTime4;RefreshWeekday();break;case
26、4:/月 01-12 if(x=1)DateTime4+;if(DateTime4=13)DateTime4=1;else DateTime4-;if(DateTime4=0)DateTime4=12;days2=IsLeapYear(2000+DateTime6)?29:28;if(DateTime3daysDateTime4)DateTime3=daysDateTime4;RefreshWeekday();电气与电子信息工程学院 课程设计报告 13 break;case 3:/日 days2=IsLeapYear(2000+DateTime6)?29:28;if(x=1)DateTime3
27、+;if(DateTime3daysDateTime4)DateTime3=1;else DateTime3-;if(DateTime3=0)DateTime3=daysDateTime4;if(DateTime3daysDateTime4)DateTime3=daysDateTime4;RefreshWeekday();break;case 2:/时 if(x=1)DateTime2+;if(DateTime2=24)DateTime2=0;else DateTime2-;if(DateTime2=0 xff)DateTime2=23;break;case 1:/分 if(x=1)DateT
28、ime1+;if(DateTime1=60)DateTime1=0;else DateTime1-;电气与电子信息工程学院 课程设计报告 14 if(DateTime1=0 xff)DateTime1=59;break;case 0:/秒 if(x=1)DateTime0+;if(DateTime0=60)DateTime0=0;else DateTime0-;if(DateTime0=0 xff)DateTime0=59;break;/复位,初始化 DS18B20 void dsreset()do DQ=1;/DQ 复位 delayus(4);/延时 DQ=0;/DQ 拉低 delayus(
29、75);/精确延时 480us960us DQ=1;/拉高 delayus(5);while(DQ=1);delayus(50);/最少 480us /读一个字节函数 uchar tmpread(void)uchar i=0;uchar dat=0;for(i=8;i0;i-)DQ=0;/给脉冲信号 dat=1;DQ=1;/给脉冲信号 if(DQ)dat|=0 x80;delayus(4);/延时30us 电气与电子信息工程学院 课程设计报告 15 return(dat);/写一个字节函数 void tmpwritebyte(uchar dat)uint i;uchar j;bit testb
30、;for(j=1;j1;if(testb)/写“1“DQ=0;i+;i+;DQ=1;i=8;while(i0)i-;else /写”0 DQ=0;i=8;while(i0)i-;DQ=1;i+;i+;/开始获取温度并转换 void TempChang()dsreset();delayms(1);tmpwritebyte(0 xcc);/*跳过读序列号*/tmpwritebyte(0 x44);/*启动温度转换*/获取温度并转换 Get_Temp()uchar a,b;dsreset();delayms(1);tmpwritebyte(0 xcc);/*跳过读序列号*/tmpwritebyte(
31、0 xbe);/*读取温度*/a=tmpread();b=tmpread();tvalue=b;电气与电子信息工程学院 课程设计报告 16 tvalue=8;tvalue=tvalue|a;if(tvalue=0 x040)&(tvalue=0 x00)for(c=0;c=310)tcount+;/单片机没执行到此需要约 0.2s;if(tcount=2)tcount=0;led=1;else led=1;if(Adjust_Index=-1)GetDateTime();Refresh_LCD_BUFFER();LCD_ShowString(0,0,LCD_DSY_BUFFER1);LCD_S
32、howString(0,1,LCD_DSY_BUFFER2);LCD_ShowString(11,0,weekDateTime5-1);/中断 0 服务程序 void int0()interrupt 0 if(K1=0)delayms(100);if(K1=0)while(!K1);电气与电子信息工程学院 课程设计报告 18 if(Adjust_Index=-1|Adjust_Index=0)Adjust_Index=7;Adjust_Index-;if(Adjust_Index=5)Adjust_Index=4;/跳过星期的调整,自行刷新 switch(Adjust_Index)case 6
33、:Write_LCD_Command(0 x8f);/写N Write_LCD_Data(0 x4e);break;case 4:Write_LCD_Command(0 x8f);/写Y Write_LCD_Data(0 x59);break;case 3:Write_LCD_Command(0 x8f);/写R Write_LCD_Data(0 x52);break;case 2:Write_LCD_Command(0 x8f);/写S Write_LCD_Data(0 x53);break;case 1:Write_LCD_Command(0 x8f);Write_LCD_Data(0 x
34、46);/写F break;case 0:Write_LCD_Command(0 x8f);Write_LCD_Data(0 x4d);/写M break;else if(K2=0&Adjust_Index!=-1)/加 delayms(100);if(K2=0)while(!K2);DateTime_Adjust(1);else if(K3=0&Adjust_Index!=-1)/减 delayms(100);if(K3=0)while(!K3);DateTime_Adjust(-1);电气与电子信息工程学院 课程设计报告 19 else if(K4=0&Adjust_Index!=-1)/
35、确定 delayms(100);if(K4=0)while(!K4);SetDateTime();Adjust_Index=-1;Write_LCD_Command(0 x8f);/去除标志位 Write_LCD_Data(0 x20);else if(K5=0&Adjust_Index!=-1)/取消 delayms(100);if(K5=0)while(!K5);Adjust_Index=-1;Write_LCD_Command(0 x8f);/去除标志位 Write_LCD_Data(0 x20);五、调试 1、建立工程和仿真图(1)打开 proteus 软件,新建一个工程,然后在工作窗
36、口内画好原理图并保存。(2)打开 keil 软件新建一个工程,选择所用单片机的型号,然后新建一个文件保存为.c 文件并添加到工程中去,开始写源程序,写好后编译生成 Hex 文件。(3)将生成的 Hex 文件下载到单片机内,观察结果,并调试,观察数码管上是否有相应正确的变化。若结果不正确,思考问题的所在,修改源程序,继续调试,直到观察到正确的运行结果。电气与电子信息工程学院 课程设计报告 20 2、keil 软件调试结果 图 7 C 程序调试结果 3、proteus 软件仿真结果 图 8 仿真结果 电气与电子信息工程学院 课程设计报告 21 六、实物的组装与调试 1.实物的组装 由于班上每组同学
37、设计题目,所以采取的是手工焊接。于是我自己画 pcb 板,可是一上午过去了,还是画不好,下午只好根据已画的 pcb 及原理图来对元器件进行摆放和布局,这对电路板最后的走线增添了一定的难度。2、实物焊接 小小的板,在我们的不懈努力下终于焊好了。焊接电路如下图。图 9 焊接实物图 3、调试 电路焊接完成后,插上 usb 线,加上 5v 电压,只有电源供电的指示灯亮着,而显示器没有任何反应。于是,开始排查电路中那个模块出现了问题。首先当然想到的是显示器总存在着虚焊的点。利用万用表,测着每个引脚与接地短的电压,发现了果然有几个点存在着虚焊现象。排除这一问题后,加上电压,显示器亮了,却没有显示日期。结果
38、发现 AT89C51 芯片没有加载程序。将其改正后,电路基本上实现了我们所需的日期和温度的显示功能。电气与电子信息工程学院 课程设计报告 22 当我们尝试着让每个键是否能正常调时时,发现全部按键按下没有什么反应。刚开始想着是否是按键出现了问题,利用万用表检测,发现按键工作状态是对的。最终将问题锁定在了74HC08芯片上,结果发现少接了一根线。接好后,按键都能正常调时了。经过不懈的努力我们的万年历终于做成功了。调试结果如下图:图 10 调试实物图 电气与电子信息工程学院 课程设计报告 23 七、心得体会 本次课程设计是做一个多功能的电子万年历。经过一学期的学习后,应用起Proteus软件时便显得
39、得心应手,对程序的编译,以及生成相应的 hex 文件,将汇编源程序加载等也能熟练掌握。而且通过此次做电子万年历使我对单片机更加感兴趣了,虽然我还没有能力自己编写复杂的程序,但我将会在以后的学习中更加深入地学习它。通过这两周的课程设计,我学到了不少的知识。把以前没有学好的模拟电路的知识进行了补充和加强,这使我受益匪浅。并加深了我对于单片机和数字电路的认识,相信在今后的学习和工作中我会做的越来越好。通过查阅大量的资料,我获得了以前在课堂上学不到的东西,我想这对于以后的毕业设计,或者工作也好,都是很有帮助的。通过本次课程设计,我更进一步地熟悉了芯片的结构并掌握了各芯片的工作原理和其具体的使用方法。调
40、试过程是一个考验人耐心的过程。当时,显示器就是不显示日期,在检查了多次电路之后,还是没找到到问题。最后在请教老师后,才知道是显示器的对比度没有调整好。经过不懈的努力,我们的万年历终于成功制作出来了。经过这次课程设计,让我懂得了要熟练地掌握课本上的知识,按部就班脚踏实地去做事,这样才能及时解决实际中出现的问题。电气与电子信息工程学院 课程设计报告 24 附录 元件清单 器件 规格 数量 备注 电阻 R1 10K 1 电阻 R2 300 1 电阻 R5 4.7k 1 电容 C1、C2 22pF 2 电容 C3 10uF 1 CAP-ELEC 单片机 U1 AT89C51 1 带底座 U2 DS13
41、02 1 带底座 U4 DS18B20 1 带底座 与门 U5 AND-5 1 带底座 红色发光二极管 D1 LED-RED 1 按键开关 K1-K5 BUTTON 5 晶振 X1 CRYSTAL 1 12MHz 晶振 X2 CRYSTAL 1 32768Hz 液晶显示器 LCD1 LM016L 1 带底座 上拉电阻 RP1 RESPACK-8 1 10K 可调电阻 RV1 POT-LIN 1 10K 万能电路板 9*12 1 USB 母接头 1 USB 线 1 两端都为 USB 接口 直流电源 B1 3V 1 表 1 元件清单 参考文献【1】.张靖武.周灵彬.单片机原理、应用与PROTEUS仿真。【2】.江志红.51 单片机技术与应用系统开发案例精选。【3】.周润景.基于 PROTEUS的 51 单片机设计与仿真。【4】.王守中.51 单片机开发入门与典型实例。【5】.张齐.朱宁西.单片机系统设计与开发。【6】.周立功单片机开发网。【7】.天津锐志单片机开发网。【8】.维纳电子 DS18B20 温度传感器中文 PDF 资料。【9】.ATMEL 公司 AT89S52 单片机中文 PDF 资料。【10】.长沙太阳人电子有限公司通用型 1602 液晶 PDF 资料。