单片机课程设计 - 图文(3)

2019-03-11 15:17

广东海洋大学寸金学院2013年课程考查(论文)

MSB LSB SET PIE AIE UIE SQWE DM 24/12 DSE SET:设置位,可读写,不受复位操作影响。为0时,不处于设置状态,芯片进行正常时间数据更新;为1时,抑制数据更新,可以通过程序设定时间和日历信息。

PIE:周期性中断使能位,可读写,复位时清除此位。为1时,允许寄存器C中的周期中断标志位PF,驱动/IRQ引脚为低产生中断信号输出,中断信号产生的周期由RS3~RE0决定。

AIE:闹钟中断使能位,可读写。为1时,允许寄存器C中的闹钟中断标志位AF、闹钟发生时就会通过/IRQ引脚产生中断输出。

UIE:数据更新结束中断使能位,可读写。复位或者SET位为1时清除此位。为1时允许寄存器C中的更新结束标志UF,更新结束时就会通过/IRQ引脚产生中断输出。

SQWE:方波使能位,可读写,复位时清除此位。为0时,SQW引脚保持低电平;为1时,SQW引脚输出方波信号,其频率由RS3~RS0决定。

DM:数据模式位,可读写,不受复位操作影响。为0时,设置时间、日历信息为二进制数据;为1时,设置为BCD码数据。

24/12:时间模式设置为,可读写,不受复位操作影响。为0时,设置为12小时模式;为1时,设置为24小时模式。

DSE:为1时,会引起两次特殊的时间更新;4月的第一个星期日凌晨1:59:59会直接更新到3:00:00,10月的最后一个星期日凌晨1:59:59会直接更新到1:00:00;为0时,时间信息正常更新,此位可读写,不受复位操作影响。

寄存器C字节内容如下。

MSB LSB IRQF PF AF UF 0 0 0 0 IQRF:中断申请标志位。为1时,/IRQ引脚为低,产生中断申请。当PF、PIE为1时或者AF、ATE为1或者UF、UIE为1时,此位为1,否则置0.

PF:中期中断标志位。为1时,它是只读位,和PIE位状态无关,由复位操作或者寄存器C操作清除。

AF:闹钟中断标志位。为1时,表示当前时间和闹钟设定时间一至,由复位操作或读寄存器C操作清除。

UF:数据更新结束中断标志位。每个更新周期后此位都会置1,当UIE位位置1时,

10

广东海洋大学寸金学院2013年课程考查(论文)

UF若为1就会引起IRQF置1,将驱动/IRQ引脚为低电平,申请中断。此位由复位操作或读寄存器C操作清除。

寄存器D字节的内容如下。

MSB LSB 0 0 0 0 0 0 0 0 VRT;RAM和时间有效位。用于指示和VBAT引脚连接的电池状态。此位不可写,也不受操作为影响,正常情况下读取时总去为1,如果出现读取为0的情况,则表示电池耗尽,时间数据和RAM中的数据就会出现问题。

芯片DS12CR887的113字节普通RAM空间为非易失性RAM空间,他不专门用于某些特别功能,而是可以在未处理器程序中作为非易失性内存空间使用。

3.3按键调整电路

系统四个独立键盘均采用查询方式,S2用于设置年、月、日、时、分、秒、星期的数值加,以及闹钟开,S3用于设置年、月、日、时、分、秒、星期的数值减以及闹钟关,s1用于具体设置时钟位的切换,s4键用于设置闹钟。其电路图如3-3所示:

图3-3按键电路连接

3.4电源模块

电子钟的电源为5伏直流电源,本设计中我使用的是5V的充电模块,电源模块的原理图如图3-4所示:

11

广东海洋大学寸金学院2013年课程考查(论文)

图3-4电源模块

第4章 软件设计

4.1主程序流程

主程序开始初始化,并打开中断,然后执行扫描闹钟、键盘及读取18B20值。当有S1键按下时,执行时钟设置,当有S4键按下时,则进入闹钟设置,无论是时钟还是闹钟,设置完后退出,温度、时钟恢复实时显示。主程序流程图如图4-1所示:

初始化开中断 读18b20 S1或S2是否按下 扫描闹钟 显示温度 设置闹钟 显示温度 设置时间

图4-1主程序流程图

4.2 时间设置子流程

通过单片机判断S1按下的次数来设置,由s1num标志位来记录次数,用if语句判断执行命令。系统程序不断扫面键盘,当s1键按下后产生一个低电平,即s1num加一。在调节时间之前首先进行各个变量初始化,及设置起始时间,同时为读取数据作准备。当s1=1时进入秒的设置,地址指针指向miao显示位置处,通过两个if语句分别循环控制显示秒数的加和减。当s1=2时,地址指针指向fen显示位置处,变量最大值为59。当s1=3时,地址指针指向shi显示位置处,变量最大值设为23。当s1=4时,地址指针

12

广东海洋大学寸金学院2013年课程考查(论文)

指向week显示位置处,最大值设为7,1至7分别用MON、TUE、WED、THU 、FRI、SAT、SUN字符串显示。随着s2、s3值的的变化显示不同的字符串。当s1=5时,地址指针指向day显示位置,变量最大值为31。当s1=6时,地址指针指向month显示位置,变量最大值为12。

当s1=7时,地址指针指向year显示位置,最大值为99。

S1=1秒 S1=2分 S1=7月 S1=8退出 S2调加秒 S3调减秒 S2调加年 S3调减年

图4-2时间设置流程图

4.3闹钟设置子程序流程

时间设置程序流程图如图4-3所示。在开始时间设置之前程序会关闭全局中断,直至设置结束,中断又会重新开启,进入计时状态。

闹钟的设置时通过S1键的按下次数来判断的。当单片机检测到S4键按下一次时则进入闹钟设置界面,光标并自动跳到秒设置位置,可以对秒进行设置,当S1键依次按下1、2、3次时,则分别进入闹钟的秒、分、时关的设置。:

S4=1设置闹钟 S4=2退出设置 S1=1调节秒 S1=2调节分 S1=3调节时 S1=4退出

图4-3闹钟设置流程图

4.4程序设计问题

4.4.1 按键抖动问题

13

广东海洋大学寸金学院2013年课程考查(论文)

按键在按下时因为机械原因会产生抖动,抖动的后果就是当按下一次按键时因为抖动的原因让系统读取到多次的按键按下的次数,由此导致设置时出现错误。解决的方法如下:当按键按下时读取按键键值,若5ms后键值和按下是相等,则确认为有效按键,以此消除按键抖动带来的问题。

4.4.2 蜂鸣器设置

蜂鸣器报警时,设置响100毫秒,停100毫秒,循环响应,产生滴滴的声音。

4.4.3 液晶显示器设置

初始化设置

显示模式设置

写入指令码write_com(0x38),设置功能16*2显示,5*7点阵,8位数据接口 显示/开关及光标设置

8) 写入指令码write_com(0x0c),设置开显示,不显示光标,光标不闪烁。 16) 写入指令码write_com(0x06),设置当读或写一个字符后地址指针加一,且光

标加一。当写一个字符,整屏显示不移动。 显示清屏,写入指令码write_com(0x01)。

写入指令码函数write_com()写指令过程 :输入:rs=0,D0-D7=指令码,E=高脉冲 写入数据函数 write_date() 写指令过程: 输入:rs=1,D0-D7=数据,E=高脉冲 写入指令和数据时rw端已经接地。

数据指针设置 指令码80H+地址码(0-27H)显示第一行的字符 指令码80H+地址码(40H-67H)显示的第二行字符

4.4.4中断设置

EA=1;//打开总中断 EX1=1;//打开外部中断

IT1=1;//设置负跳变沿触发中断

当闹钟到点时响应外部中1 时间到时IRQ端从高阻态转为低电平,此时读一次c寄存器清除IRQ端的输出,等待下一次定时。

void exter() interrupt 2 //外部中断1服务程序 {

uchar c;//进入中断表示闹钟时间到

14


单片机课程设计 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:07年7月高等教育自学考试《管理学原理》试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: