毕业设计论文-基于单片机的数字电子时钟的设计与制作内容摘要:
K16LCD1LCD1602VCCVCC8R310KR1Q11122Speaker1KR6VCC+12BT1Battery1 2PowerHeader工作模式模式辅助1 2 36 5 4PowerSWVCC+5VCC10KR5VCCKEY1KEY2KEY1KEY2RSR/WENRSR/WENRestSWRestSWRestSW 图 461 13 系统 的软件设计 系统 软件设计 系统软件包含四个部分:主程序,定时器扫描程序, 按键扫描程序, 按键处理程序 ;通过这四个部分可以实现 数字电子钟 的功能设计。 主程序设计 程序设计主要是通过 单片机内部 TIMER0 和 TIMER1 产生 系统时钟信号 , 经过单片机的运算分别得到 时间的 年 月 日 时 分 秒 和秒表的 时 分 秒 毫秒, 单片机在主程序中循环扫描按键端口 ,根据返回的键值分别将这些数据 传给 LCD1602 对应 显示出来。 实现功能 程序实现的功能是: 正常显示 年 月 日 和 时 分 秒 以及闹钟的 时 分。 若单片机检测到 key1 第一次 按下并释放则 LCD 切换到显示秒表模式 00:00:00:00, 第二次按下 key2 并释放则返回到时钟显示模式。 在时钟正常显示模式下若前 5 按下 key2 按键并释放则一次选中闹钟的 时 分和时钟的 分 时 年 月 日 ,选中位会出现光标闪烁并且时钟不自动走动 , 第 6次按下 key2 并释放之后则正常显示时钟 , 6 次为一个循环。 在光标闪烁的时候若按下 key1并且释放则可以对相应位进行校正。 若在 秒表 显示模式下 第一次 按下 key2 并释放则启动秒表计时 ,第二次按下 key2 释放后则暂停秒表 ,第三次按下 key2 释放后则秒表清零 , 三 次为一个循环。 工作流程图 通过以上分析可得图 52 系统工作流程图: 是是 否 model_flag = 0 amp。 amp。 time_change_flag = 0 amp。 amp。 shift_flag =0否结 束Shift_flag清 零写 入 显 示 时 间 代 码到 液 晶是 否 model_flag = 1 amp。 amp。 time_change_flag = 0 amp。 amp。 shift_flag =1Shift_flag置 1写 入 显 秒 表 代 码 到液 晶否 图 521 14 实现功能 当系统检测到有按键按下时返回相应非零的键值,否则返回零。 按键扫描流程图 (如图 531) t 1 清 零 , 读 取 当 前按 键 端 口 值 并 保存 ,是是 否 有 键 按 下否t 1 是 否 d e n 与 k e y _ s h a k e _ t i m e并 且 是 否 有 键 按 下否是否按 键 是 否 释 放处 理 保 存 的 键 值是返 回 零返 回 处 理 后 的 键 值 图 531 15 按键扫描部分代码 unsigned char key_scan(void) { static unsigned char value。 //键值 static unsigned char do_key。 //执行相应命令标识 static unsigned char key_scan_step。 //键盘扫描步骤 if(key_scan_step==0) { key_value = 0。 if(do_key==0) { if(KEY amp。 0x03 != 0x03) { t1=0。 do_key=1。 } } if((t1=key_shake_time)amp。 amp。 ((KEY amp。 0x03) != 0x03)) { value = KEY amp。 0x03。 do_key = 0。 key_scan_step = 1。 } } if((key_scan_step==1)amp。 amp。 ((KEY amp。 0x03) == 0x03)) { key_scan_step = 0。 switch(value) { case 0x02 : value = 1。 break。 case 0x01 : value = 2。 break。 16 case 0x03 : value = 0。 break。 default : value = 0。 break。 } return(value)。 } else return(0)。 } 时间更新函数处理程序 实现功能 通过对 t0 值的判断来得到 秒 分 时 日 月 年 的计算 工作流程图 (如图 521) 是是t0是 否 等 于 20否否否分 是 否 大 于 59结 束时 间 的 秒 加 1将 秒 写 入 液 晶秒 是 否 大 于 59秒 清 零 , 分 加 1将 分 写 入 液 晶分 清 零 , 时 加 1将 时 写 入 液 晶是时 是 否 大 于 23否时 清 零 , 将 时 写 入液 晶是 图 521 17 时间更新函数部分代码 void update_time(void) { if(t0=20) { t0=0。 ++。 if(59) { =0。 ++。 if(59) { =0。 ++。 if(23) { =0。 ++。 switch() { case 1: case 3: case 5: case 7: case 8: case 10: case 12:if(31) { =1。 ++。 18 if(12) { =1。 ++。 if( 2060) { = 2020。 } } }break。 case 4: case 6: case 9: case 11:if(30) { =1。 ++。 if(12) { =1。 ++。 if( 2060) { = 2020。 } } }break。 case2:if((()amp。 amp。 (!=0)||(ear/400==0))amp。 amp。 (29)) { 19 =1。 ++。 if(12) { =1。 ++。 if( MAX_YEAR) { = MIN_YEAR。 } } } else if(28) { =1。 ++。 if(12) { =1。 ++。 if( 2060) { = 2020。 } } }break。 default:break。 } if(model_flag == 0) { write_lcd(0x8C,WCMD)。 20 write_lcd(%10+39。 039。 ,WDATA)。 write_lcd(0x8B,WCMD)。 write_lcd(+39。 039。 ,WDATA)。 write_lcd(0x89,WCMD)。 write_lcd(%10+39。 039。 ,WDATA)。 write_lcd(0x88,WCMD)。 write_lcd(+39。 039。 ,WDATA)。 write_lcd(0x83,WCMD)。 write_lcd(()+39。 039。 ,WDATA)。 write_lcd(0x84,WCMD)。 write_lcd((%1000/100)+39。 039。 ,WDATA)。 write_lcd(0x85,WCMD)。 write_lcd((%1000%100/10)+39。 039。 ,WDATA)。 write_lcd(0x86,WCMD)。 write_lcd(%10+39。 039。 ,WDATA)。 } } if(model_flag == 0) { write_lcd(0xC1,WCMD)。 write_lcd(%10+39。 039。 ,WDATA)。 write_lcd(0xC0,WCMD)。 write_lcd(+39。 039。 ,WDATA)。 } } if(model_flag == 0) { write_lcd(0xC4,WCMD)。 write_lcd(%10+39。 039。 ,WDATA)。 write_lcd(0xC3,WCMD)。 write_lcd(+39。 039。 ,WDATA)。 21 } } if(model_flag == 0) { write_lcd(0xC7,WCMD)。 write_lcd(%10+39。 039。 ,WDATA)。 write_lcd(0xC6,WCMD)。 write_lcd(+39。 039。 ,WDATA)。 } } } 秒表 更新函数处理程序 实现功能 通过对 t1 值的判断来得到 秒表的毫秒 秒 分 时 的计算 工作流程图 (如图 551) 是是sw_t1是 否 等 于 1否否否秒 是 否 大 于 59结 束秒 表 的 毫 秒 秒 加 1将 毫 秒 写 入 液 晶秒 是 否 大 于 99毫 秒 清 零 , 秒 加 1将 秒 写 入 液 晶秒 清 零 , 分 加 1将 分 写 入 液 晶是分 是 否 大 于 59否分 清 零 , 时 加 1将 时 写 入 液 晶是时 是 否 大 于 23时 清 零将 时 写 入 液 晶是否 图 551 22 函数部分代码 void update_stop_watch(void) { if(sw_t1=1) { sw_t1=0。 ++。 if(99) { =0。 ++。 if(59) { =0。 ++。 if(59) { =0。 ++。 if(23) { =0。 } if(model_flag == 1) { w。毕业设计论文-基于单片机的数字电子时钟的设计与制作
相关推荐
所以这两个方案具有良好的自检能力,能比较容易地发现测量中的错误及误差,这使得方案具有很好的正确性和可行性。 方案一用 3 台接收机,网中包含 14 个点, 12 个同步环, 12 条复测边和 3 个异步环。 方案二同样用 3台接收机,网中包含 16 个点, 15个同步环, 4 个异步环和 15条复测边。 从经济、效率和人力物力角度考虑,方案一比方案二少布设 2个点;从网形精度和可靠性方面考虑
20) 式中 s—— 垂直送料方向的凹模壁间最大距离 ( mm)。 则 s=, H=30mm,则 B=+3 30= 圆整 后 取 B=250mm 取标准凹模尺寸 :250mm250mm32mm 凹模结构及尺寸如图 35所示。 凹模的材料选用 Cr12MoV,工作部分热处理淬硬为58~ 62HRC。 图 35 凹模结构及尺寸示意图 凸凹模设计 由 文献 ]1[ 中公式 337 得
晶间渗透率大于 1 103μ m 的地层、具有宏观开放型裂缝的地层等,在这些地层常规钻井方式难以实施,这时就可以考虑采用空气钻井方式。 ( 3)严重缺水地区 由于空气钻井是以空气作为循环介质,对水的需求量降到了最低,所以特别适合于沙漠、高原等缺水地区。 ( 4)地层压力低且分布规律清楚的地层 空气钻井的静气柱压力极小,较高的地层 压力会加重井控设备的负担;此外,如果不清楚地层压力的分布规律
泵应为自吸式泵。 泰州师范高等专科学校毕业论文(设计) 3 第二章 船舶舱底水系统 的管材选择 管子材料的选择主要考虑到管路系统的强度,流量需求以及经济性等因素,即要满足流量及强度的设计要求,又要考虑经济实用,降低成本。 管材的等级选择 管材的等级选择可参照表 1。 显然舱底水管系的介质为水,本文所分析是 3800T加油船上的舱底水管路,其设计压力为 ,即小于 ,从而选择 III 级管即可。
......................................................................105 论坛管理 ........................................................................................................................