基于单片机的智能洗衣机控制系统内容摘要:

色,说明 KEIL的 C语法检查生效了。 如图 45鼠标在屏幕左边的 Source Group1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。 选“ Add File to Group ‘ Source Group 1’”弹出文件窗口,选择刚刚保存的文件,按 ADD按钮,关闭文件窗,程序文件已加到项目中了。 这时在 Source Group1文件夹图标左边出现了一个小 +号说明,文件 组中有了文件,点击它可以展开查看。 图 45 把文件加入到项目文件组中 ( 4) C程序文件已被加到了项目中了,下面就剩下编译运行了。 这个项目只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的 HEX文件。 先看图 46,图中 3都是编译按钮,不同是 1是用于编译单个文件。 2是编译链接当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。 3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。 在 3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。 5是菜单中的 18 它们。 在 4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。 6是有一个小放大镜的按钮,这就是开启 \关闭调试模式的按钮,它也存在于菜单 Debug- Start\Stop Debug Session,快捷键为 Ctrl+F5。 图 46 编译程序 ( 5)进入调试模式,软件窗口样式大致如图 47所示。 图中 1为运行,当程序处于停止状态时才有效, 2为停止,程序处于运行状态时才有效。 3是复位,模拟芯片的复位,程序回到最开头处执行。 按 4可 以打开 5中的串行调试窗口,这个窗口可以看到从 51芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。 这些在菜单中也有。 首先按 4打开串行调试窗口,再按运行键,这时就可以看到串行调试窗口中不断的打印“ HelloWorld。 ”。 最后要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启 \关闭调试模式按钮。 然后就可以进行关闭 KEIL 等相关操作了。 19 图 47 调试模式窗口 仿真软件 Proteus 介绍 在学习、开发单片机系统时,常常需要硬件仿真设备,用于加快学习和开发的进度, 但此设备对单片机数量、种类和固定外围电路有所限制,并且价格较贵。 而联合运用仿真软件 Proteus 和单片机开发软件环境 Keil uVision 构建单片机虚拟实验室,在没有硬件实物的环境下虚拟建立了一个硬件仿真平台,大大扩充实验灵活性,为单片机的学习、开发提供了一种十分方便有效的平台。 Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。 它不仅具有其它 EDA 工具软件的仿真功能 ,还能仿真单片机及外围器件。 它是目前最好的仿真单片机及外围器件的工具。 虽然目前国内推广刚起步 ,但已 受到单片机爱好者,从事单片机教学的教师,致力于单片机开发应用的科技工作者的青睐。 Proteus 可提供的仿真元器件资源:仿真数字和模拟,交流和直流等数千种元器件,有 30 多个元件库。 Proteus 可提供的仿真仪表资源:示波器,逻辑分析仪,虚拟终端, SPI 调试器, I2C 调试器,信号发生器,模式发生器,交直流电压表,交直流电流表。 理论上同一种仪器可以在一个电路中随意的调用。 20 除了现实存在的仪器外, Proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。 这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗,极低的输出阻抗。 这些都尽可能减少了仪器对测量结果的影响。 Proteus 提供了比较丰富的测试信号用于电路的测试。 这些测试信号包括模拟信号和数字信号。 Keil 与 Proteus 的在线联合仿真 Keil 与 Proteus 在各自的环境下都可以进行一定程度仿真调试。 然而, Keil 只能对程序进行调试,不能看到硬件的运行结果,因此并不直观;而 Proteus 软件在对单片机系统进行仿真调试的时候只能对硬件做出改动,不能直观的了解程序运行的情况,难以对程序中存在的不足和错误进行修改。 如果能把这两者结合起来,同时观察程序的运行情况和当时硬件系统所处的状态,则可以方便地找出系统设计中存在的软、硬件错误。 根据 Proteus 软件的官方文档,在单片机仿真模型中包含了专门的代码,可以联合 Keil uVision 集成开发环境,提供源代码级的仿真调试,即在 Keil 中调试、运行程序,而将硬件输入输出结果显示在 Proteus 中,两者可以进行无缝联合仿真。 主程序设计及各子程序模块 主程序的工作过程为:先进行初始化工作, 随后根据输入的键值分别散转至对 应的子程序(待机、设置洗涤次数、设置洗涤时间、设置脱水时间、等待洗涤、等待脱水)。 洗衣机开始工作。 INT0 外中断服务子函数用于实现功能选择。 主程序流程图如图 48所示: 21 初 始 化 默 认 洗 涤根 据 S E T 键 值 散 转待 机设 置洗 涤次 数设 置洗 涤时 间设 置脱 水时 间等 待洗 涤等 待脱 水开 始 图 48 主程序流程图 主程序如下: include define char unsigned char define int unsigned int char code DATA_7SEG[10]={0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F,}。 /*段码 */ char set=0。 /*功能键值 */ int m=1。 /*全局变量,洗涤次数 */ int t1=8。 /*洗涤时间 */ int t2=3。 /*脱水时间 */ main() { EA=1。 EX0=1。 while(1) /*无限循环 */ {switch(set) /*根据 Set 标志散转 */ {case 0:stop()。 break。 /*待机 */ case 1:times()。 break。 /*设置洗衣次数 */ 22 case 2:run_time()。 break。 /*设置洗衣时间 */ case 3:last_time()。 break。 /*设置脱水时间 */ case 4:begin_x()。 break。 /*开始洗衣 */ case 5:begin_t()。 break /*开始脱水 */ default:break。 } } } 上述主程序调用的子程序见附录 1。 . INT0 中断模块 按一下 SET 键,给 INT0 一个外部中断,当 SET 值大于 5时,值重新置 0。 中断子函数见附录 1。 中断子程序流程图如下所示: 如 果 S E T 键 按 下 , 则 S E T 键 值 加 1如 键 值 大 于 等 于 6 , 则 键 值 返 回 0系 统 进 入 低 功 耗 待 机 状 态I N T 0 外 中 断 服 务 子 函 数 结 束I N T 0 外 中 断 服 务 子函 数 开 始 图 49 INT0外部中断子程序流程图 . 进入待机状态 当 SET键值为 0时,进入待机状态。 23 void stop() { P0_1=1。 /*D2点亮 */ P1=0x77。 /*数码管显示 A */ delay(1)。 /*进入节电待机状态 */ delay(1)。 } . 设置洗涤次数模块 当 SET 键值为 1 时,设置洗涤次数子程序,如果使用者不设置则默认为 1次(开始定义变量 m=1)。 void times() { P0=0xff。 P0_2=0。 /*D3 点亮 */ P1=0x7c。 /*数码管显示 b,设置洗衣次数*/ while(1) {if(P2_1==0){delay(10)。 /*按下 UP 键数码管作 09 递增显示 */ if(P2_1==0){m++。 if(m==6)m=10。 P1=DATA_7SEG[m]。 delay(300)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。