版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计报告毕业设计报告 设计题目:设计题目: 简易万年历的设计简易万年历的设计 设计作者: 专业班级/学号: 合作者 1: 专业班级/学号: 合作者 2: 专业班级/学号: 指导教师: 设计时间: 2011-5-20 1 摘要摘要 二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟 表业界的第三次革命。 电子万年历是单片机系统的简单应用。本设计是采用单片机 at89s51 作为系统的 核心,由主控模块、时控模块、显示模块和键盘接口模块共 4 个模块组成。主控芯片 使用低电压、高性能 cmos 8 位微处理器 at89s51 单片机。采用具有涓细电流充电 功能的低功耗实时时钟
2、芯片 ds1302 和通过 2 个 4 位 8 段数码管显示。 关键词:at89s51、数码管、万年历 2 目录目录 摘要.1 引言.4 第一章 总体要求.5 1.1 设计任务及要求.5 1.1.1 设计任务.5 1.1.2 设计要求.5 1.2 系统总体设计.5 1.2.1 控制方面的方案选择.5 1.2.2 显示部份的方案选择.6 1.2.3 系统结构框图设计及说明.6 第二章 系统硬件设计 .6 2.1 晶体振荡器电路.6 2.2 串口通信电路.7 2.3 复位电路.7 2.4 时钟电路.7 2.5 按键部分.8 2.6 at89s51 引脚在本设计中的作用说明.8 第三章 系统软件设计
3、 .9 3.1 公历与星期的换算方法.9 3.2 设计流程图及说明.10 3.3 源程序的编写.11 3 3.3.1 中断程序.11 3.3.2 延时程序.12 3.3.3 读取部分数据.12 3.3.4 数码管显示程序.14 3.3.5 按键程序.15 第四章安装与调试.17 4.1 硬件的安装调试.17 4.2 软件调试.17 4.3 测试结果分析与结论.18 4.3.1 测试结果分析.18 4.3.2 测试结论.18 总结.18 致谢.19 参考文献.20 附录.21 4 引言引言 电子万年历是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越来越 流行,特别是适合在家庭居室、办公室
4、、大厅、会议室、车站和广场等使用,壁挂式 led 数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出 多种功能。它是生活和工作中最常见的一种电子装置,核心部分是电子钟。除了专用 的时钟、计时显示牌外,许多应用系统常常需要带有实时时钟显示,如各种智能化仪 器仪表、工业过程控制系统以及家用电器等。 本设计主要采用 at89s51 单片机作为主控核心,由 ds1302 时钟芯片提供时钟、 数码管动态扫描显示屏显示。at89s51 单片机是由 atmel 公司推出的,功耗小,电压 可选用 46v 电压供电;ds1302 时钟芯片是美国 dallas 公司推出的具有涓细电流 充电功能
5、的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时, 还具有闰年补偿等多种功能,而且 ds1302 的使用寿命长,误差小;数字显示是采用的 8 位数码管来显示,可以同时显示年、月、日、星期、时、分、秒等信息。 5 第一章第一章 总体要求总体要求 1.1 设计任务及要求设计任务及要求 1.1.1 设计任务设计任务 (1) 设计一以单片机为核心控制的万年历,具有多项显示和控制功能; (2)了解单片机版工作原理及整个万年历的程序编写。 1.1.2 设计要求设计要求 (1)能用八段数码管实时显示当前年、月、日、星期、时、分、秒; (2)断电有实时时钟; (3)可以对界面进行切换,对时间
6、进行加的操作; 1.2 系统总体设计系统总体设计 1.2.1 控制方面的方案控制方面的方案选择选择 方案一:可采用 altera 公司的 flex10k 系列 pld 器件。设计起来结构清晰, 各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。 但是考虑到本设计的特点,eda 在功能扩展上比较受局限,而且 eda 占用的资源也 相对多一些。从成本上来讲,用可编程逻辑器件来设计也没有什么优势。 方案二: 16 位单片机有丰富的中断源和时基。它的准确度相当高,并且 c 语言 和汇编兼容的编程环境也很方便来实现一些递归调用。i/o 口功能也比较强大,方便使 用。用 16 位单
7、片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制 播放和识别。这些都方便对设计进行扩展,使设计更加完善。成本也相对低一些。但 是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性 不是很高,而且就需要完成万年历这个不太复杂的设计可以不必用 16 位单片机来完成, 采用 51 单片机既能够实现既定功能,成本也不高。综合考虑最后选择用 51 单片机来 作为中心控制器件。 硬件控制电路主要用了 at89s51 芯片处理器、四位八段数码管显示等。根据各自 芯片的功能互相连接成电子万年历的控制电路。软件控制程序主要有主控程序、电子 万年历的时间控制程序、时间显示及星期
8、显示程序等组成。主控程序中对整个程序进 行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时 间控制程序是电子万年历中比较重要的部分。时间控制程序体现了年、月、日、时、 分、秒及星期的计算方法。时间控制程序主要是定时器 0 计时中断程序每隔 10ms 中断 6 一次当作一个计数,每中断一次则计数加 1,当计数 100 次时,则表示 1 秒到了,秒变 量加 1,同理再判断是否 1 分钟到了,再判断是否 1 小时到了,再判断是否 1 天到了, 再判断是否 1 月到了,再判断是否 1 年到了,若计数到了则相关变量清除 0。先给出一 般年份的每月天数。如果是闰年,第二个月天数不为
9、 28 天,而是 29 天。再用公式 sv1 +(y1/4(y1/100+(y1/400+ d 计算当前显示日期是星期几, 当调节日期时,星期自动的调整过来。闰年的判断规则为,如果该年份是 4 或 100 的 整数倍或者是 400 的整数倍,则为闰年;否则为非闰年。在我们的这个设计中由于只 涉及 100 年范围内,所以判断是否闰年就只需要用该年份除 4 来判断就行了。 1.2.2 显示部份的方案选择显示部份的方案选择 方案一:液晶显示方式;液晶显示效果出众,但是在显示时,屏幕会有明显的闪 烁。而且存储空间有限,大大影响了电子万年历的性能。 方案二:相比液晶显示,采用八段数码管既经济实惠,在效果
10、上也显示的比较稳 定,操作比较液晶显示来说虽然略显繁琐,但总体也可以做到比较人性化。 所以,两者比较下,最后选择 led 数码管做显示部分。 1.2.3 系统结构框图设计及说明系统结构框图设计及说明 图 1-2-3 为电子万年历的系统方框图,本系统由主控制器 at89s51、时钟电路、 键扫描电路、显示电路等组成的。 图 1-2-3 电子万年历电路系统构成框图 第二章第二章 系统硬件设计系统硬件设计 2.1 晶体振荡器电路晶体振荡器电路 晶体振荡器电路给数字钟提供一个频率稳定准确的 32768hz 的方波信号,可保证 数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶
11、体荡器电路。 时钟控制 主控模块 at89s51 芯片 键盘接口模块 显示模块 7 2.2 串口通信电路串口通信电路 max232 芯片是美信公司专门为电脑的 rs-232 标准串口设计的单电源电平转换芯 片,使用+5v 单电源供电。本设计中采用 max232cpe 来做串口通信,连接电脑将程 序从电脑上烧写进系统版。 2.3 复位电路复位电路 设计中复位电路当系统与电脑连接时将程序指针指向 0000h,就是将程序从头开 始运行,这个电路是防止程序乱码时进行按键复位,恢复系统正常运作。电阻给电容 充电,电容的电压缓慢上升直到 vcc,没到 vcc 时芯片复位脚近似低电平,于是芯 片复位,接近
12、vcc 时芯片复位脚接近高电平,于是芯片停止复位,复位完成。 2.4 时钟电路时钟电路 内部时钟电路是指在 xtal1 和 xtal2 引脚上外接定时元件,内部振荡电路就产 生自激振荡。定时元件通常石英晶体和电容组成的并联谐振回路,晶体振荡器选择 32768khz,电容采用 30pf。如图 2-4; 图 2-4 ds1302 的时钟电路 ds1302 是美国 dallas 公司推出的一种高性能、低功耗的实时时钟芯片,附加 31 字节静态 ram,采用 spi 三线接口与 cpu 进行同步通信,并可采用突发方式一次 传送多个字节的时钟信号和 ram 数据。实时时钟可提供秒、分、时、日、星期、月和
13、 年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.55.5v。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供 了对后背电源进行涓细电流充电的能力。ds1302 用于数据记录,特别是对某些具有特 殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用 8 于测量系统中。vcc1:主电源;vcc2:备份电源。当 vcc2vcc1+0.2v 时,由 vcc2 向 ds1302 供电,当 vcc2 vcc1 时,由 vcc1 向 ds1302 供电。sclk:串行时钟,输 入; i/o:三线接口时的双向数据线;ce:输入信号,在读、写
14、数据期间,必须为高。 该引脚有两个功能:第一,ce 开始控制字访问移位寄存器的控制逻辑;其次,ce 提 供结束单字节或多字节数据传输的方法。 2.5 按键部分按键部分 本设计总的用了五个按扭开关作为键盘,其中一个是复位键,还有四个按键,四 个中的其中一个是调整时间增加的键,其它三个是切换年、月、日及时、分、秒的显 示状态并在所切换的显示状态下配合加这个键调整时间。 2.6 at89s51 引脚在本设计中的作用说明引脚在本设计中的作用说明 图 2-6 at89s51 最小系统控制电路 40 个引脚中, 4 组 8 位共 32 个 i/o 口,正电源和地线两根,外置石英振荡器的 时钟线两根,现在对
15、这些引脚的功能加以说明: (1)pin9:reset/vpd复位信号复用脚,当 at89s51 通电,时钟电路开始工作,在 reset 引脚上出现 24 个时钟周期以上的高电平,系统开始复位。而 reset 由高电平 下降为低电平后,系统即从 0000h 地址单元开始执行程序。 (2)pin29:pesn 当访问外部程序存储器时,此脚输出负脉冲选通信号,外部程序 存储器则把指令数据放到 p0 口上,由 cpu 读入并执行。 (3)pin30:ale/prog 地址锁存允许信号端。单片机上电后,ale 引脚不断向外输 出正脉冲信号, ale 信号可以用作对外输出时钟或定时信号。 (4)pin31
16、:ea/vpp程序存储器的内外部选通线,内置有 4kb 的程序存储器,当 ea 为高电平并且程序地址小于 4kb 时,读取内部程序存储器指令数据,而超过 4kb 地址 9 则读取外部指令数据。如 ea 为低电平,则不管地址大小,一律读取外部程序存储器 指令。 第三章第三章 系统软件设计系统软件设计 软件控制程序主要有主控程序、电子万年历的时间控制程序组成。主控程序中对 整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序 和时间控制程序是电子万年历中比较重要的部分。时间控制程序体现了年、月、日、 时、分、秒及星期的计算方法。时间控制程序主要是定时器 0 计时中断程序每隔
17、10ms 中断一次当作一个计数,每中断一次则计数加 1,当计数 100 次时,则表示 1 秒到了, 秒变量加 1,同理再判断是否 1 分钟到了,再判断是否 1 小时到了,再判断是否 1 天到 了,再判断是否 1 月到了,再判断是否 1 年到了,若计数到了则相关变量清除 0。先给 出一般年份的每月天数。如果是闰年,第二个月天数不为 28 天,而是 29 天。闰年的 判断规则为,如果该年份是 4 或 100 的整数倍或者是 400 的整数倍,则为闰年;否则 为非闰年。 3.1 公历与星期的换算方法公历与星期的换算方法 在现行公历中,历年的长度 365 天(平年)或者 366 天(闰年)都不是七的整
18、数倍,所 以日期与星期之间没有明显的对应关系。一般情况下,不看日历牌就无法知道某月某 日是星期几。不过,它们之间还是有一定规律可循的,只要经过简单计算,或者查找 表格,就可以知道与任何日期相对应的星期数。 公式法:设 y 麦示公元年数,d 表示从 1 月 1 日起算的日数。 首先求出 1 月 0 日(即上一年 12 月 31 日)的星期序数,然后与日数 d 相加,其和用 7 除,余数就是答案。为了推导公式,我们想一想,第一年 1 月 0 日的星期序数与第二 年 1 月 0 日的星期序数有什么关系?平年 365 天,等于 52 个星期零 1 天,所以第二年 1 月 0 日的星期序数比第一年的多
19、l,但这个 l 已包含在 y 中了,因为第二年的年数 y 比第一年大 1;闰年 366 天,等于 52 个星期零二天,所以第二年 1 月 0 日的星期序数 等于第一年(闰年)的星期序数加 2,除了 y 中包含的 1 外,还需加修正值 1。根据这些 道理我们可以推得三个公式,将式中 s 用 7 除,余数就表示星期几。 从公元 1900 年 1 月 1 日到公元 2101 年 1 月 1 日之间这 201 年,可用公式: s y1900 + (y1901)/4 + d 方括号表示取商的整数部分,对于 1900 年1904 年 这五年方括号值为 0。这个公式是这样来的:1900 年 1 月 0 日(
20、即 1899 年 12 月 31 日) 10 是星期天。这年是平年,以后直到 2100 年前都是每隔 4 年一闰,闰年多出的那一天, 影响到下一年 1 月 0 日的星期序数,并不影响闰年本身,闰年产生的修正值应加到下 一年上去,所以(y1901)/4中,计算时用 190l 而不是 1900。 例:求 2000 年 12 月 31 日是星期几? 2000 年是闰年,从 1 月 1 日算起,12 月 31 日是第 366 天,所以 d366。根据公 式 s20001900 +(20001901)/4+ 366 100 +99/4+ 366 l00 + 24 + 366490 490 为 7 的整数
21、倍,即余数为 0,所以 2000 年 12 月 31 日为星期日。 3.2 设计流程图及说明设计流程图及说明 本设计的软件程序主要完成时间显示和定时输出判断功能。而年月日显示和各时 间单元仅为时间设定时,调定时间设定时等功能全部在中断服务程序中完成。从原理 图中看出,单片机从 p3 口的输出的数据是 bcd 码,各存储单元存储的是二进制数, 也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据 直接送到 p0 口去驱动 led 数码管显示时不能正确表达的,必须在系统内部将要显示 的数据经过 bcd 码行转换后,将各单元数据的段选代码送入 p0 口,送入数码管显示, 软件总
22、体设计如图 3-2-1,3-2-2。 11 调定时开关子程序 读取时间寄存器数据 调显示子程序 送显示缓冲区 判断有按键按下 数据处理 开始 定时开关子程序 取时间寄存器数据 数据处理 取时间开关寄存器数据 按开关条件生成开关数据 开关数据送 p1 口 返回 图 3-2-1 主函数流程图 图 3-2-2 定时开关程序图 按键处理部分:当系统在正常显示状态下要进行调整时,按一下切换键进入按键 处理中断程序,并且此时默认的是调整年,在数码管上显示 n,此时按加按钮可以进 行加减调整,若再按一下切换键,则跳到月上显示 y,同样可以调整加,同样的道理, 进入日(r)、时(s)、分(f)、秒(m)的调整
23、,最后再按一下切换键时退出中断程序,星期 系统自动的调整过来。如图 3-2-3 n n y 开始 扫描按键 是否按键 延时 10ms 是否按键 判断按键值 跳转到键盘处理程序 返回 12 图 3-2-3 按键扫描流程 3.3 源程序的编写源程序的编写 3.3.1 中断程序中断程序 void js_cs(void) tmod=0 x11; /tmod=0 x11 时 t1,t0 都是位定时器 th0=0 x3c; /初值 tl0=0 xaf; /初值 ea=1; et0=1; tr0=1; /tr0 是单片机会响应定时/计数器 0 的启动位,为 1,就启动定 时为 0,就停止定时/计数器 0 的
24、运行。 void time0(void) interrupt 1 /定时器 0 中断 th0=0 x3c; tl0=0 xaf; jishu+; if(jishu=10) sec+; /秒增 1 j=j; /取反 jishu=0; /计数清 0 3.3.2 延时程序延时程序 voiddelay_1ms(void) /延时 lms unsigned i; for(i=0;i1140;i+) ; voiddelay_nms(unsigned char n) /延时 nms unsigned char i; for(i=0;in;i+) delay_1ms(); void delay(unsigne
25、d char n) /延时函数 13 unsigned i=0; for(i=0;in;i+) _nop_(); /延时等待 3.3.3 读取部分数据读取部分数据 void writeds_byte(uchar dat) /函数名:input_byte1302() 功能:实时时钟写入一字 节 /说明:往 ds1302 写入 1byte 数据 uchar i,dat_w; dat_w=dat; for(i=0;i1; /数据右移 sclk=0; _nop_(); /延时等待 sclk=1; sclk=0; uchar readds_byte() uchar i,k; k=0; for(i=0;i
26、1; /将各位数据右移一位,因为先读出的是字节的最低位 if(io) /如果读出的数据是 1 k=k|0 x80; /将一取出,写在 dat 的最高位 sclk=1; /将 sclk 置于高电平,为下降沿读出 _nop_(); /稍微等待 sclk=0; /拉低 sclk,形成脉冲下降沿 sclk=0; return (k);) /将读出的数据返回 void writeds_add(uchar add,uchar dat) /将指令或数据写入对应寄存器 rst=0; / 14 sclk=0; rst=1; writeds_byte(add); writeds_byte(dat/104)|(da
27、t%10); sclk=0; rst=0; uchar readds_add(uchar add) /读出对应寄存器内容 uchar temp,dat1,dat2; rst=0; sclk=0; rst=1; writeds_byte(add); temp=readds_byte(); sclk=0; rst=0; dat1=temp/16; dat2=temp%16; temp=dat1*10+dat2; return (temp); void ds1302_init() /这个是从那个时钟芯片 ds1302 读取和写入数据的。 uchar i,add; add=0 x80; writeds
28、_add(0 x8e,0 x00); /将控制寄存器值设为零, ;最高位 wp=0 允许写 for(i=0;i7;i+) /将七个时间初值写入对应寄存器 writeds_add(add,tab_1302i); /写对应时钟寄存器的值 add+=2; writeds_add(0 x90,0 xa6); writeds_add(0 x8e,0 x80); /写保护,防止干扰影响时间值 void ds1302() uchar i,add=0 x81; writeds_add(0 x8e,0 x00); for(i=0;i7;i+) tab_1302i=readds_add(add); add+=2;
29、 15 writeds_add(0 x8e,0 x80); 3.3.4 数码管显示程序数码管显示程序 void xianshi_67(unsigned char y) /共阳极数码管的两个位数的显示 unsigned char d,c; d=y/10; /求商 c=y%10; /求余 p0=gyc; p0_7=j; p2_0=0; delay(100); p2_0=1; p0=gyd; /就是把一个数字的数码管的编码通过 p0 传递 p0_7=j; p2_1=0; /亮 delay(100); /延时 p2_1=1; /暗 void xianshi_45(unsigned char y) /同
30、上 unsigned char d,c; d=y/10; c=y%10; p0=gyc; p0_7=j; p2_3=0; delay(100); p2_3=1; p0=gyd; p0_7=j; p2_4=0; delay(100); p2_4=1; xianshi_d() p0=0 xff; p0_7=j; p2_2=0; delay(100); p2_2=1; void xianshi_12(unsigned char y) 16 unsigned char d,c; d=y/10; c=y%10; p0=gyc; p2_6=0; delay(100); p2_6=1; p0=gyd; p2
31、_7=0; delay(100); p2_7=1; 3.3.5 按键程序按键程序 main() / key1 是界面切换 key3 是加的操作 key4 是设置时间 js_cs(); ds1302_init(); while(1) /* if(key3=0) delay_nms(5); if(key3=0) number+; if(number=7) number=0; while(key3=0) xianshi_h(tab_13022) ; /调用共阳极数码管的两个位数的显示 xianshi_d(tab_13021) ; /调用共阳极数码管的两个位数的显示 if(number=0) ds13
32、02(); /这个是从那个时钟芯片 ds1302 读取 xianshi_h(tab_13022) ; /共阳极数码管的两个位数的显示 17 xianshi_d(tab_13021) ; /共阳极数码管的两个位数的显示 if(number=1) xianshi_d(tab_13021); if(key4=0) /判断 key4 是否按下,有加 1,判断溢出,数据写回芯片 里 delay_nms(5); if(key4=0) tab_13021+; /自加 if(tab_13021=60) /判断是否溢出 tab_13021=0; tab_13020=0; ds1302_init(); /写入数据
33、 ds1302(); /读出数据 while(key4=0) xianshi_d(tab_13021); /调用共阳极数码管的两个位数的显示 第四章安装与调试第四章安装与调试 4.1 硬件的安装调试硬件的安装调试 原理图的设计:选择主控芯片;在 protel99se 软件中画出原理图。印刷电路板 的制作:本系统中,用手工布板;按照电路图连接有关引脚。腐蚀板的制作:打印出 印刷电路版图;将印刷出来的油纸与刚好和版图一样大小的板,把油墨用高温器,把 它压到板上再将板放入腐蚀槽腐蚀完就好。钻孔的制作:选择适当的孔针;对板上的 各个引脚孔进行通孔。焊板的制作:把相应的空上装上相应的元件调试及测试(调试
34、 分为硬件调试和软件调试) 硬件调试主要任务是排除硬件故障,包括设计错误和工艺性故障。主要检测硬件 电路是否有短路、断路、虚焊等。用万用表逐步按照电路原理图检查印刷电路板中器 件的引脚,尤其是电源的接线是否正确;检查是否有短路等故障;检查各开关是否能 正常开关,是否连接正确;各限流电阻是否短路等。确定无误后就开始调试。接上电 18 源,看一下电源的指示灯有没有亮,如果亮了就说明有电源输入,再检测一下单片机 的电源脚(40 号脚)是否有电源,如果有适当的电压说明电源部分没有问题。在硬件 调试时也可以先在芯片中烧一个简单的显示程序,看一下显示部分能不能正常工作。 如数码管显示不正常,有断码时要检查
35、一下数码管的管脚有没有虚焊。 4.2 软件调试软件调试 确定硬件没有错误后,根据原理,连接图编写无误后先在仿真器上仿真一下,看下 程序是否按自己编写的效果显示出来。一开始程序经董金灯还有向其他同学请教编写 好以后,用仿真器试用了以下,万年历不能按照正常现象从数码管上的显示出来,原 以为是在编写程序中出了问题,才不能工作,找了比较懂软件的同学请教后,都说软 件没问题,唯一缺点就是只能显示当年,比如说只能显示今年 2011,不能往后加了, 其他都很好显示出来。经过观察,才知道是时钟芯片 ds1302 出了点问题,后来换上之 后果然可以正常显示了。 4.3 测试结果分析与结论测试结果分析与结论 4.
36、3.1 测试结果分析测试结果分析 (1) 在测试中遇到发光二极管、led 数码管为不显示时,首先使用万用表对电路进 行测试,观察是否存在漏焊,虚焊,或者元件损坏. (2) led 数码管显示不正常,还有亮度不够,首先使用万用表对电路进行测试,观 察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。 4.3.2 测试结论测试结论 经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能 力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强. 同时对所学的知识得到很大的提高与巩固.。 总结总结 历经了几个月的奋战,紧张而又充实的毕业设
37、计终于完成了。回想这段日子的经 历和感受,我感慨万千,在这次课程设计的过程中,我拥有了无数难忘的回忆和收获。 选好红外防盗报警器的方案,是一大难题。因此我们经过上网,图书馆借书查找 资料,选了几个方案,经过老师的指点,我们把它们仿真了,筛选之后,仿真能行的, 19 我们再次请教老师,确定了方案,接下来就是画原理图和 pcb 图,这个过程让我学到 了许多,加深了对画图软件 protel99se 的熟悉与应用,画好图之后就是制板了,之 中,有出现打印图纸不清晰,磨板不光滑,汗孔缺了的错误,导致印在铜板上的原理 图不完整,白花了我们时间,制好板之后,我们按照清单,买好了元器件,并焊好了 板,经过调试
38、,失望的是没有任何效果,经过检查,方知里面的热释电红外传感器的 不适用,而该元器件不好买到,由于时间关系,我们经过老师的同意,换了课题-简易 万年历的设计,经过查找资料,制板,写程序,仿真,调试,完成了设计,然而万年 历功能不多,这是我们设计的一大遗憾。 通过这次毕业设计,使我懂得了,做任何事一定要细心,恒心,耐心,并有责任 心,只有自己努力了,动手了,才是自己的成果。 致谢致谢 自从接受课题到现在完成毕业设计论文,衷心的感谢我的指导许莉娅老师给予了精 心的指导和热情的帮助,尤其在毕业设计的前期准备阶段和本人的数据库的设计阶段,导 师提出许多宝贵的设计意见,在最后的测试修改阶段老师在百忙之中抽
39、出时间为我们提 供了必要的帮助,这样使得我们得以顺利的完成毕业设计开发工作,在短暂的几个月的相 处时间里,老师渊博的知识,敏锐的思路和实事求是的工作作风给我留下了深刻的印象,这 将使得我终身受益,谨此向老师表示衷心的感谢和崇高的敬意.。 20 参考文献参考文献 1 张勇基于at89c2051单片机的时钟日历系统j 郑铁科技通讯,2005.3. 2 魏立峰,王宝兴单片机原理与应用技术m 北京:北京大学出版社,2006. 3 余永权、黄英 单片机在控制系统中的应用m 电子工业出版社,2003.3 4 邓红、张越 单片机实验与应用设计教程m冶金工业出版社,2004.5 5 胡健 单片机原理及接口技术
40、实践教程m 机械工业出版社,2004.8 21 附录附录 #include #include #define uchar unsigned char #define uint unsigned char sbit p2_0 = p20; sbit p2_1 = p21; sbit p2_2 = p22; sbit p2_3 = p23; sbit p2_4 = p24; sbit p2_5 = p25; sbit p2_6 = p26; sbit p2_7 = p27; sbit p3_7 = p37; sbit p0_7 = p07; sbit p1_0 = p10; sbit p1_1 =
41、 p11; sbit p1_2 = p12; sbit p1_3 = p13; 22 sbit p3_0 = p17; sbit key1 = p32; sbit key2 = p33; sbit key3 = p34; sbit key4 = p35; sbit rst=p13; sbit io=p12; sbit sclk=p11; unsigned char gy=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90; unsignedchar sec=0,jishu=0,j=0,x=0,min=19,hour=23,nu
42、mber=0,d_hour=20,d_min=20,number1=0,number 2=0; uchar tab_13027=0,42,15,29,7,2,11; void ds1302(); void writeds_byte(uchar); uchar readds_byte(); void ds1302_init(); void writeds_add(uchar,uchar); uchar readds_add(uchar); void js_cs(void) tmod=0 x11; th0=0 x3c; tl0=0 xaf; ea=1; et0=1; tr0=1; void tim
43、e0(void) interrupt 1 ;定时中断 23 th0=0 x3c; tl0=0 xaf; jishu+; if(jishu=10) sec+; j=j; jishu=0; voiddelay_1ms(void) ;延时 1ms unsigned i; for(i=0;i1140;i+) ; voiddelay_nms(unsigned char n) ;延时 n ms unsigned char i; for(i=0;in;i+) delay_1ms(); void delay(unsigned char n) unsigned i=0; for(i=0;in;i+) _nop_
44、(); void writeds_byte(uchar dat) ;写字节 24 uchar i,dat_w; dat_w=dat; for(i=0;i1; sclk=0; _nop_(); sclk=1; sclk=0; uchar readds_byte() ;读字节 uchar i,k; k=0; for(i=0;i1; if(io) k=k|0 x80; sclk=1; _nop_(); sclk=0; 25 sclk=0; return (k); void writeds_add(uchar add,uchar dat) ;写地址 rst=0; sclk=0; rst=1; writ
45、eds_byte(add); writeds_byte(dat/104)|(dat%10); sclk=0; rst=0; uchar readds_add(uchar add) ;读地址 uchar temp,dat1,dat2; rst=0; sclk=0; rst=1; writeds_byte(add); temp=readds_byte(); sclk=0; rst=0; dat1=temp/16; dat2=temp%16; temp=dat1*10+dat2; return (temp); void ds1302_init() ;初始化 1302 26 uchar i,add;
46、add=0 x80; writeds_add(0 x8e,0 x00); for(i=0;i7;i+) writeds_add(add,tab_1302i); add+=2; writeds_add(0 x90,0 xa6); writeds_add(0 x8e,0 x80); void ds1302() uchar i,add=0 x81; writeds_add(0 x8e,0 x00); for(i=0;i7;i+) tab_1302i=readds_add(add); add+=2; writeds_add(0 x8e,0 x80); void xianshi_67(unsigned char y) unsigned char d,c; d=y/10; c=y%10; p0=gyc; p0_7=j; p2_0=0; 27 delay(100); p2_0=1; p0=gyd; p0_7=j; p2_1=0; delay(100); p2_1=1; void xianshi_45(unsigned char y) unsigned char d,c; d=y/10; c=y%10; p0=gyc; p0_7=j; p2_3=0; delay(100); p2_3=1; p0=gyd; p0_7=j; p2_4=0; delay(100); p2_4=1; xiansh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东铝业职业学院单招职业适应性测试必刷测试卷附答案
- 2026年广西交通职业技术学院单招职业适应性考试必刷测试卷新版
- 2026年湖南外贸职业学院单招职业适应性测试题库及答案1套
- 2026年郑州工商学院单招职业适应性考试题库及答案1套
- 2026年桂林信息工程职业学院单招职业技能测试题库新版
- 2026年山西职业技术学院单招职业技能考试必刷测试卷及答案1套
- 2026年潇湘职业学院单招职业技能考试题库新版
- 2026年榆林职业技术学院单招职业技能测试题库及答案1套
- 2026年山西体育职业学院单招职业技能测试必刷测试卷必考题
- 2026年甘肃省庆阳地区单招职业倾向性测试题库新版
- 绵阳介绍-简单英语
- 集体备课培训材料课件
- 实验室危险源、风险点重点排查项目表
- 供应链可持续发展与企业社会责任管理
- 卫生部修订病历书写基本规范(全文)
- 体育中国2023章节测试答案-体育中国超星尔雅答案
- 设备销售人员提成方案
- GB/T 8642-2002热喷涂抗拉结合强度的测定
- 辽宁盘锦浩业化工“1.15”泄漏爆炸着火事故警示教育
- 式叉摩那尼戒本
- 安徽师范大学2023年616马克思主义基本原理考研真题(回忆版)
评论
0/150
提交评论