1、 课课 程程 设设 计计 报报 告告 课程名称 单片机原理及应用 设计题目 智能仪器 专 业 计算机应用技术 姓 名 完成日期 2015/6/25 课课 程程 设设 计计 任任 务务 书书 设计题目:设计题目:智能仪器智能仪器 设计内容与要求:设计内容与要求: 要求实现一路电压信号输入和两路报警开关量输出控制功 能。其中信号电压范围为 05VDC,AD 采样分辨率为 8bit,数 码管显示信息为:1 位参数字符和 3 位十进制采样值。控制参 数有两个,即下限报警值(L)和上限报警值(H)。当采样值 大于 H 时高位报警继电器接通(用 LED 状态灯 D1 亮表示); 当采样值小于 L 时,下位
2、报警继电器接通(用 D2 亮表示); 当采样值介于 L 和 H 之间是,两路报警器功能均被解除(用 D1 和 D2 均熄灭表示)。 该系统具体功能为,仪器上电后自动进入测控状态,显示器显 示实时采样值,同时 D1 和 D2 实时切换报警状态。若 0#键按 下,进入参数设置状态(测控转入后台运行),显示器显示工作 参数 L 及其当前值;若 2#或 3#键按下,可对当前参数值进行 加 10 或减 10 计算并更新显示; 若按压 1#键可以确认修改结果 (下次再进入参数设置状态时可以以此结果作为新的当前值, 否则修改后的参数值不被保存),并转入下一个参数 H 的设置 过程(同理不再赘述)。再次按压
3、0#键或 1#键均可退出参数 设置状态,返回测控状态。 设计仪器:设计仪器: 一台电脑、ISIS 7 Professional 软件和 Keil uVision4 软件 硬件电路设计硬件电路设计: 选用一只四联共阴极数码管作为显示器,按照动态显示原理接 线,其中段码通过锁存器 72LS245 驱动后接于 P0 口,由 4 只 PNP 型三极管驱动后介于 P2.0P2.3 。A/D 转换器采用 ADC0809,以通用 I/O 口的方式与单片机连接,其并行数据输 出端直接连接于 P1 口,4 个控制端 CLOCK、START、EOC 和 OE 分别接于 P2.4P2.7,采用查询法等待转换结束,转
4、换时钟 利用定时器中断产生。4 个面板按键通过 8 位串行输入并行输 出移位寄存器 74LS164 与单片机接口,其移位时钟端(8 脚) 与单片机的 TXD 引脚相连,串行数据端(1 和 2 脚)与单片机 的 RXD 引脚相连。如图 软件系统设计:软件系统设计: 采用一个由多个功能模块构成的程序,模块之间相互依赖,他 们之间的关系如下 程序由两个主要的功能模块组成一一控制模块和菜单模块,两 个模块能够同时运行(指用户在进行菜单操作时,程序需还能 实时采集数据并进行控制)而“控制”和“菜单”这两个主要 模块都是建立在其他小模块的基础上的,比如控制模块建立在 A/D 转换和 LED 显示的基础上,
5、菜单建立在按键检测和 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 _me
6、nu_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_MAX) _menu_value_menu_idx=MENU_MAX; else if(key=3) _menu_value_menu_idx-=10; if(_menu_value_menu_idx=0 return 0; void _delay() int i=0,j=0; for(i=0;i1)|0x80; delay(); (3)Main.c void ad_init(); void control_thread(); void menu_thread(); void m