基于at89c51单片机的智能万年历设计_毕业论文设计(编辑修改稿)内容摘要:

1,32H,22H,00H( 2032) 30,55H,02H,71H( 2033) 49,55H,22H,00H( 2034) 38,26H,62H,00H( 2035) 27,13H,64H,60H( 2036) 45,13H,32H,00H( 2037) 34,12H,55H,00H( 2038) 23,10H,53H,51H( 2039) 42,22H,45H,00H( 2040) 31,52H,22H,00H( 2041) 21,52H,44H,21H( 2042) 40,55H,44H,00H( 2043) 29,26H,50H,71H( 2044) 47,26H,64H,00H( 2045) 36,25H,32H,00H( 2046) 25,23H,32H,50H( 2047) 44,44H,55H,00H( 2048) 32,24H,45H,00H( 2049) 22,55H,11H,30H( 2050) 有了算法和数据后就可以设计软件了。 先要根据当前阳历的日期,算出阳历位该年中的第几天。 图 6 所示为计算阳历中任何一天在该年中为第几天的流程图。 计算出阳历总天数后就可以根据它来推算阴历日期。 推算方法是,先用总天数减去春节和元旦的日差,如果结果为 1,则改天正好是春节(因为春节在元旦之后,在计算春节和元旦日差时,假设元旦为 0 天,春节为 n 天,则日差位 n,而前面计算的引力总天数是该天在该年中的第几天,是以元旦为 1 而得到的,与计算春节和元旦日差这种方法相比,其数值少了 1,所以要在原来本应该以 0 作为该天就是春节的依据的基础上加 1,即以 1 作为该天是春节的标志);如果结果小于 1,则引力应该是阳历的前一年;如果结果大于 1,说明阳历和阴历为同一年。 再根据查表所的的该年的阴历的闰月和大小月的信息,就可以推算出该天的阴历日期了。 图 7 所示 为有总天数推算出阴历日期的程序流程图。 红外遥控模块 设计方案 采用单片机进行遥控系统的应用设计,具有编程灵活多样,操作码个数可随意设定等优点。 红外遥控设计是本设计的核心部分,是体现智能的模块之一,因此采用 AT89C2051 芯片作为红外遥控发射部分的控制芯片。 本单片机遥控应用系统采用红外线脉冲个数编码,单片机软件解码,实现了对智能万年历设置的远程控制,使我们更加接近智能的家居生活。 遥控系统电路分遥控发射电路和遥控接收电路两部分组成。 图 9 是该应用系统的遥控设计原理框图及接收控制系统设计 原理框图。 遥控发射器的设计 遥控信息码由 AT89C2051 单片机的定时器 1 中断产生 40KHz红外线方波信号,由 口输出,经过三极管 9013 放大,有红外线发射管发送。 改变电阻R3 的大小可以改变发射距离。 图 10 为遥控发射电路。 遥控采用脉冲个数编码,不同的脉冲个数代表不同的码,最小为 2 个脉冲最 图 6 计算阳历天数程序流程图 大为 17 个脉冲。 为了使接收可靠,第一位码宽为 3ms,其余为 1ms,遥控码数据间隔大于 10ms。 当某 个操作按键按下时,单片机先读出键值,然后根据键值设定遥控码的脉冲个数,在调制成 40KHz 方波有红外线发光管发射出去。 遥控发射器主程序、键扫描程序、遥控码发射程序流程图如图 11 所示。 遥控码的编码格式 遥控码采用脉冲个数编码,不同的脉冲个数代表不同的码,最小为 2 个脉计算阳历天数结束,总天数中的数据位当前日期所在阳历年中第几天 置阳历总天数为 0 当 前 月 为1。 总天数中加入该月天数 月数加 1 与 当 前 月 相同。 当前号数是总天数 总天数中加入号数 Y Y N N 冲,最大为 17 个脉冲。 为了使接受可靠,第一位马宽位 3ms,其余为 1ms,遥 图 7 推算阴历日期的程序流程图 控码数据帧间隔大于 10ms。 当某个操作按键按下时,单片机先读出 键值,然后根据键值设定遥控码的脉冲个数,再调制成 40KHz 方波由红外线发光管发射出去。 端口的输出调制波形如图 8 所示。 遥控接收系统的设计 红外遥控是本设计的核心部分,是体现智能的关键部分之一,因此红外遥控部分也可以让我作为设计者做论文浓重的一笔。 红外遥控接收部分采用38KHZ 的红外接收头,价格低廉,可靠性好。 遥控器发射的红外信号经红外接收处理传给单片机,单片机根据不同的信息码对万年历设置进行操作。 当红外线接收器输出脉冲帧数据时,第一位码的低电平将启动中断程序,实时接收数据帧。 在数据帧 接收时,将对一位(起始位)码的码宽进行验证,若第一位低电平码的脉宽小于 2ms,将作为错误码处理,当间隔位的高电平脉宽大于 3ms 是,结束接收,然后根据累加器 A 中的脉冲个数,执行相应输出口的操作。 图 12 所示为红程序入口 R2 减 1 个月的天数 够减。 下 个 月 为 闰月。 减去闰月天数 月加 1 R3=0。 R2=R2+R3 R3=0 R2=0? 月份为当前正在建的月份的前一个月的最后一天 月份为当前正在减的月份,号数为 R2 中的值 Y N Y N Y N Y N 外线接收器输出的一帧遥控码波形。 显示模块 设计方案 显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路, 图 8 端口输出编码波形图 图 9 单片机 遥控器设计 考虑到一次扫描 21 位数码管显示时会出现闪烁秦光,设计时 21 个数码管分 3 排同时扫描。 显示时采用串行口输出数码段,用 3 片 74LS164 来驱动 3 排数码管,这样一次扫描只需 7ms。 74LS164 内部位 8 个 D 触发器,用以实现数据的串行移位。 74LS164 的特性如表 5 所列,单片机以串行口方式 0(移位寄存器方式)输出数据, 3 片 74LS164AT89C2051单片机 红外发射电路 独立键盘 +5V 电源 U t MENU 键遥控输出波形 t 移位键遥控输出波形 U U t 加 1 键遥控输出波形 U t 语音报时键遥控输出波形 3ms 作为 3 排数码管的串 /并转换显示接口。 74LS164 位 TTL单项 8 位移位寄存器, 10GND9P 3. 58P 3. 47P 3. 36P 3. 25X T A L 14X T A L 23P 3. 12P 3. 01R S T11P 3. 712P 1. 013P 1. 114P 1. 215P 1. 316P 1. 417P 1. 518P 1. 619P 1. 720V C C89 C 20 51V C CS1R S T 10uF10K12M30pF30pFV C C 红外线发射管9013N P N 3M E N U 1S2左移 S3右移 S4加 1 S5减 1 S6V C C 图 10 遥控发射电路 图 11 遥控发射器主程序、键扫描程序、遥控码发射程序流程图 图 12 红外线接收器输出的一帧遥控码波形 可实现串行输入,并行输出。 其中 A、 B 位串行数据输入端,两个引脚按逻辑与运算规律输入信号,只有一个输入信号时可并接,共同作为输入脚。 CP 位时钟输入端,可连接到串行口的 TXD 端。 每一个时钟信号的上升沿加到 CP 端时,10ms 3ms 10ms 开始 初始化 按键号转至相应的发射程序 装入发射脉冲个数 发 3ms 脉冲 停发 1ms 发完。 发 1ms 脉冲 停发 1ms 返回 Y 键盘按下。 N Y N 移位寄存器移一位。 8 个时钟脉冲过后, 8 位二进制数全部移入 74LS164 中。 MR 表 5 74LS164 特性表 操作模式 输入 输出 复位 MR A B Q0 Q1~ Q7 移位 L / / L Q0~ Q6 H L L L Q0~ Q6 H L H L Q0~ Q6 H H L L Q0~ Q6 H H H H Q0~ Q6 脚位复位端,当该脚位低电平时,移位寄存器各位复 0;只有当它为高电平时,时钟脉冲才起作用。 Q1~ Q8 并行输出端分别接数码管的 h、 g、 f、 e、 d、 c、 b、a 各段对应的引脚上。 在给出了 8 个脉冲后,最先进入 74LS164 的第一字节数据到达了最高位。 再来一个脉冲,第一个脉冲就会从最高位移出,进入下个 74LS164的第一位。 3 片 74LS164 首尾相串,而始终端则接在一起。 这样,当输入 8 个脉冲时,从单片机 RXD 端输出的第一字节数据就进入到了第一篇 74LS164 中,而当第二个 8 个脉冲到来后,第一字节数据就进入了第二片 74LS164,而随后的第二字节的数据则进入了第一片 74LS164。 这样,当第三次 8 个脉冲完成后,首次送出的数据被送到了最下面的 164中,其他数据一次出现在第二、第一片 74LS164中,实现了数据在 74LS164 中的串行输入、并行输出。 在方式 0 状态下,串行口为同步移位寄存器方式,其波特率是固定的 ,为fosc/12;数据有 RXD 端输入或输出,同步移位脉冲有 TXD 端输出;发送、接收数据时,低位在先。 因此,根据本章节下面提供的硬件电路图,在编写程序时, 表 6 共阳极数码管字形编码表 显示 数字 共阳顺序小数点暗 Dp g f e d c b a 16 进制 0 0 1 0 0 0 0 0 0 40H 1 0 1 1 1 1 0 0 1 79H 2 0 0 1 0 0 1 0 0 24H 3 0 0 1 1 0 0 0 0 30H 4 0 0 0 1 1 0 0 1 19H 5 0 0 0 1 1 0 1 0 12H 6 0 0 0 0 0 0 1 0 02H 7 0 1 1 1 1 0 0 0 78H 8 0 0 0 0 0 0 0 0 00H 9 0 0 0 1 1 0 0 0 10H 查共阳极数码管的数断码的二进制数据应该将正常的共阳极数码管 0~ 9 的二进制值按位反序排列。 共阳极数码管字形编码如表 6 所示。 共阳极数码管的 8个发光二极管的阳极(二极管正端)连接在一起。 通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。 当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。 根据发光字段的不同组合可显示出各种数字或字符。 此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 显示电路的设计 根据系统设计的要求,本电路采用 21 位共阳极数码管作为显示,通过 3 片74LS164 进行串 /并行输出,电路图如图 13 所示。 V C C345610111213981274LS164345610111213981274LS164345610111213981274LS164a1b2c3d4e5f6g7dp8GND9年千位a1b2c3d4e5f6g7dp8GND9年百位a1b2c3d4e5f6g7dp8GND9年十位a1b2c3d4e5f6g7dp8GND9年个位a1b2c3d4e5f6g7dp8GND9月十位a1b2c3d4e5f6g7dp8GND9月个位a1b2c3d4e5f6g7dp8GND9日十位a1b2c3d4e5f6g7dp8GND9日个位a1b2c3d4e5f6g7dp8GND9时十位a1b2c3d4e5f6g7dp8GND9时个位a1b2c3d4e5f6g7dp8GND9分十位a1b2c3d4e5f6g7dp8GND9分个位a1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。