欢迎来到天天文库
浏览记录
ID:4142667
大小:34.67 KB
页数:27页
时间:2017-11-29
《作息时间控制系统课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、信息科学与技术学院微机原理与接口技术课程设计课题名称:作息时间控制系统25目录1、题目及要求:11.1题目:作息时间控制系统11.2要求:12、功能设计12.1、功能模块:12.2、功能图:13、详细设计13.1、设计方法:13.1.1、显示系统时间13.1.2、设置闹铃时间与输入时的容错处理方法13.1.3、当到达闹铃时间时响铃13.2、各功能模块及流程图13.3重点难点及解决办法:14、总结15、参考文献16、附录1251、题目及要求:1.1题目:作息时间控制系统1.2要求:①能显示时间(时、分、秒)②并在规定的作息时间给出闹钟信号③并可以手动输入作
2、息时间表2、功能设计:2.1、功能模块:主程序模块main———主要包括调用其他函数和主窗口的实现闹钟模块setRingTime———简单初始界面,要求用户输入所设定的作息时间。调用系统时间模块(GetTime)————使用dos功能调用(int21H)中的2ch中断截取系统时间,再调用显示时间的子程序把时间显示出来(例如显示当前时间为16:30:45并且如果时间数少于两位数就要在其前面加0后显示出来如04:07:03);延时模块(aSecond)————利用端口61H中的PB4每15.08微秒触发一次的特点,通过适当的循环次数进行循环从而实现延时1秒钟
3、;刷新模块(TIME)————在延时后再循环执行步骤1从而实现时间每一秒的刷新,在屏幕上不断显示当前的时间宏的作用:清屏(Clear)————用于按要求清理屏幕。(不同颜色)定位(Dingwei)————用于移动光标位置,以便按要求输出。输出(Xianshi)————用于程序中的字符输出。25输入闹钟setRinsetRing清屏得到当前时间刷新Y提醒作息时间是否为闹钟时间结束开始MainN2.2、功能图:图1全局功能图253、详细设计:3.1、设计方法:3.1.1、显示系统时间①使用dos功能调用(int21H)中的2ch中断截取系统时间,再调用显示时
4、间的子程序把时间显示出来(例如显示当前时间为16:30:45并且如果时间数少于两位数就要在其前面加0后显示出来如04:07:03);②利用端口61H中的PB4每15.08微秒触发一次的特点,通过适当的循环次数进行循环从而实现延时1秒钟;③在延时后再循环执行步骤1从而实现时间每一秒的刷新,在屏幕上不断显示当前的时间;3.1.2、设置闹铃时间与输入时的容错处理方法①在数据段定义好字型变量hour、minute分别用于存放响铃时的小时数与分钟数;②设置闹铃时间由于形式为12:45(小时:分钟)为了方便进行容错处理,可以分别用一段代码实现每一位数的输入,总共需要
5、输入五位数字。例如,输入前两位的小时数时,在输入第一位时判断输入的是否是从0到2范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入小时的第二位数时判断输入的是否是0到9范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入第三位时(应该是冒号)再判断是否是冒号,如果不是就显示错误信息并停止程序的运行;输入第四位(即分钟数的第一位)判断输入的是否是0到5数字里的一个,如果不是就显示错误信息并停止程序的运行;输入最后一位判断是否是0到9的范围中的一个数字,如果不是就显示错误信息并停止程序的运行等等;③每次输入如果确定输入无误就使用书本
6、中处理输入一个十进制数常用的方法把输入的数存储到寄存器中,再把它存入相应的变量中如小时数存到变量hour中,分钟数存入变量minute中;253.1.3、当到达闹铃时间时响铃①每次在截取系统时间前先把寄存器bx清零,截取时间后把截取到的系统时间分别与变量hour与变量minute进行比较,如果相等,就使寄存器bx加1,这样再执行完截取系统时间后检查bx是否为2,如果是2就表示已经到达设定好的闹铃时间,就跳出显示时间的死循环,跳到响铃的循环去;②响铃是使用dos功能调用(int21H)中的2H,同时把7H放到dl寄存器中,执行一次后延时三秒(延时的方法同显
7、示时间时所用延时方法一样)再执行一次共循环执行40次从而实现了响铃几秒钟的功能;253.2、各功能模块及流程图main函数图,如图2所示:开始在屏幕上输出设置响铃时间的提示调用子程序setRingTime从键盘接收输入的响铃时间并存储在相应变量中调用子程序cleanLine使光标回到行首并且把这一行的字符串消去输出设置好的响铃时间截取并且显示系统时间是是否到达响铃时间否输出响铃提示否延时一秒钟调用中断响铃一声cx为0延时三秒钟图2流程图25开始getTimeproc用于截取系统时间的子程序,如图三所示:使bx寄存器清零调用中断截取系统时间小时数是否与响铃
8、小时数相同是使bx加1否输出小时数,并输出一个冒号分钟数是否与响铃分钟数相同是使
此文档下载收益归作者所有