单片机综合应用举例要点详解.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计 由单片机控制进水阀的开关完成进水 由单片机控制电机正转/反转来完成洗涤 由单片机控制排水阀的开关完成排水 由单片机控制电机的高速旋转完成脱水 系统初始化 按下启动键 计算每次洗衣时间 打开进水阀门 水放满 关闭进水阀门 启动电机转动 定时时间到 N Y Y N N 停止电机转动,打开排水阀 水放完 关闭排水阀门 启动脱水电机 脱水时间到 关闭电机,蜂鸣器 发声,关闭排水阀 断电,结束 Y N Y Y N 更多示例请参考: 《51单片机应用开发范例大全》 人民邮电出版社出版,宋戈等编著 存储器扩展示例 MCS-51单片机:有片内程序存储器(4KB—64KB) 片内ROM不够用时须扩展外部存储器 8031单片机:无片内程序存储器,必需使用外部扩展 外部数据存储芯片X5045 多功能芯片:上电复位、看门狗、EEPROM CS/WDI:片选/看门狗线 SI/SO:数据输入/输出线 SCK:时钟线 WP写保护 外部数据存储芯片AT24系列 I2C总线结构(串行EEPROM) WC写保护,SDA、SCL与单片机I/O相连,通过软件程序模拟I2C时序 应用示例 单片机控制的多路抢答器 单片机控制的洗衣机 抢答器基本介绍 按键抢答,LED数码显示,声音提示,定时(抢答)时间设定,倒计时显示,按键清除 专用LED驱动芯片MAX7219 硬件电路分为: 数码管显示电路 声音提示电路 键盘电路 设置电路 单片机电路 硬件电路介绍 数码管显示 一片MAX7219和3个数码管(共阴极) MAX7219的DIN、CLK、LOAD分别与单片机的P2.4,P2.2,P2.3相连 U5用来显示按键者的编号,U6、U7在倒计时时显示还有多长时间,如果有犯规,则显示FF 硬件电路介绍 时间设定电路 拨码开关U3作为倒计时的选择信号 拨码开关U3有4个开关,分别与单片机的P3.7,P3.6,P3.5,P3.4相连,倒计时时间分别为10s,8s,6s,4s 设置时间时,P3.7优先级最高,P3.4优先级最低 硬件电路介绍 按键电路 独立式按键连接。Key1-4为抢答键,Key5为主持按键 声音提示电路 由蜂鸣器和三极管组成。在特定的条件下发出蜂鸣声 单片机电路 通过读取P3.7-3.3决定倒计时时间;读取P1.3-1.0决定按键状况;通过P2.4-2.2控制显示模块;通过P0.1控制蜂鸣器 程序设计 主持人通过拨码开关选定倒计时时间 有参与者在规定时间内按键,则蜂鸣器响一声,数码管显示按键编号 如果主持人未按下抢答键,有参与者按下自己的按键,则蜂鸣器响,U5显示犯规编号,U6、U7显示“FF” 规定时间内无人按键,倒计时清零 一次抢答完毕,主持人按键,显示清零,恢复初始状态 程序设计 模块化编程 按键扫描程序模块 扫描键盘,读取按键值。判断主持人按键是否启动,是否有参与者按键及相应的按键处理 显示程序模块 报警程序模块:控制蜂鸣器发声 主程序 调用相关子程序实现系统初始化、键盘扫描、信息显示等 开始 读取倒计时时间设置 开始抢答 有键按下 按键处理 结束本轮抢答 倒计时时间到 超时处理 犯规处理 有键按下 Y Y Y N N Y N Y N 1.显示程序 void delay_20ms(void) //延时20ms void max7219_reset(void) //初始化MAX7219 void write_reg(uchar reg,uchar sdata) //写入命令 void write_digit(uchar digit,uchar number) //显示数字 void send_data(uchar byte) //MAX7219的驱动程序 void display_time(void) //显示倒计时剩余时间 2.按键扫描程序 bit control_key(void) //检测主持人是否按键 { if(KEY5==1) //如果KEY5为高说明没有按键 return 1; //返回1,表示没有按键动作 else //如果KEY5为低说明可能有按键动作 delay_20ms(); //延时20ms,去抖动 if(KEY5==1) //如果20ms后KEY5变为高电平是干扰 return 1; //返回1 else //如果20ms后仍为低电平确认有按键动作 return 0; //返回0 } 子程序get_key_num()用于检测是否有参赛者按动答题按键。程序代码如下: uchar get_key_num() //检测哪个参赛者按键 { uchar key_state=0;

文档评论(0)

挺进公司 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档