单片机智能仪器课程设计报告.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课 程 设 计 报 告 课程名称 单片机原理及应用 设计题目 智能仪器 专 业 计算机应用技术 班 级 Z140547 学 号 姓 名 完成日期 2015/6/25 课 程 设 计 任 务 书 设计题目:智能仪器 设计内容与要求: 要求实现一路电压信号输入和两路报警开关量输出控制功能。其中信号电压范围为0~5VDC,AD采样分辨率为8bit,数码管显示信息为:1位参数字符和3位十进制采样值。控制参数有两个,即下限报警值(L)和上限报警值(H)。当采样值大于H时高位报警继电器接通(用LED状态灯D1亮表示);当采样值小于L时,下位报警继电器接通(用D2亮表示);当采样值介于L和H之间是,两路报警器功能均被解除(用D1和D2均熄灭表示)。 该系统具体功能为,仪器上电后自动进入测控状态,显示器显示实时采样值,同时D1和D2实时切换报警状态。若0#键按下,进入参数设置状态(测控转入后台运行),显示器显示工作参数L及其当前值;若2#或3#键按下,可对当前参数值进行加10或减10计算并更新显示;若按压1#键可以确认修改结果(下次再进入参数设置状态时可以以此结果作为新的当前值,否则修改后的参数值不被保存),并转入下一个参数H的设置过程(同理不再赘述)。再次按压0#键或1#键均可退出参数设置状态,返回测控状态。 设计仪器: 一台电脑、ISIS 7 Professional软件和Keil uVision4软件 硬件电路设计: 选用一只四联共阴极数码管作为显示器,按照动态显示原理接线,其中段码通过锁存器72LS245驱动后接于P0口,由4只PNP型三极管驱动后介于P2.0~P2.3。A/D转换器采用ADC0809,以通用I/O口的方式与单片机连接,其并行数据输出端直接连接于P1口,4个控制端CLOCK、START、EOC和OE分别接于P2.4~P2.7,采用查询法等待转换结束,转换时钟利用定时器中断产生。4个面板按键通过8 位串行输入并行输出移位寄存器74LS164与单片机接口,其移位时钟端(8脚)与单片机的TXD引脚相连,串行数据端(1和2脚)与单片机的RXD引脚相连。如图 软件系统设计: 采用一个由多个功能模块构成的程序,模块之间相互依赖,他们之间的关系如下 程序由两个主要的功能模块组成一一控制模块和菜单模块,两个模块能够同时运行(指用户在进行菜单操作时,程序需还能实时采集数据并进行控制)而“控制”和“菜单”这两个主要模块都是建立在其他小模块的基础上的,比如控制模块建立在A/D转换和LED显示的基础上,菜单建立在按键检测和LED现实的基础上的,而按键检测又建立在串口输出的基础上。表1列出了各个模块 (1)menu.c #define MENU_ON 0 #define MENU_OFF 1 #define MENU_NUM 2 #define MENU_MAX 240 #define MENU_MIN 10 unsigned char param_value[]={100,150}; unsigned char menu_status=MENU_OFF; char _menu_name[]={L,H}; unsigned char _menu_value[]={0,0}; unsigned char _menu_idx=0; char get_key(); void print(char name,unsigned int value); void menu_thread(void){ char i=0; char key=get_key(); if(menu_status==MENU_OFF){ if(key==0){ menu_status=MENU_ON; _menu_idx=0; for(i=0;iMENU_NUM;i++){ _menu_value[i]=param_value[i]; }} }else{ if(key==0) { if(++_menu_idx==MENU_NUM){ menu_status=MENU_OFF; } }else if(key==1) { param_value[_menu_idx]=_menu_value[_menu_idx]; if(++_menu_idx==MENU_NUM){ menu_status=MENU_OFF; } }else if(key==2) { _menu_value[_menu_idx]+=10; if(_menu_value[_menu_idx]MENU_MAX){ _menu_value[_menu_idx]=MEN

文档评论(0)

celkhn0210 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档