- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计-智能仪器
单片机课程设计-智能仪器
PAGE / NUMPAGES
单片机课程设计-智能仪器
2012-2013 学年 第一学期
论文题目:单片机系统设计开发应用—智能仪器
学 院:计算机科学与信息工程
专 业:软件工程
学 号:
姓 名:高红斌
日期:2013年 12月 1日
单片机系统设计开发应用—智能仪器
一、 设计要求及目的
本实验通过一个单通道通用型智能仪器的软硬件系统设计,将这学期学过的单片机原理加以综合运用,以此掌握单片机应用系统的设计要领,本次试验设计的总体目标是一路电压信号输
入和两路报警开关量输出控制功能,其中信号电压范围 0— 5VDC,AD采样分辨率 8bit ,数码管显示信息为: 以为参数字符
和三位十进制采样值,控制参数有两个,即下限报警值 L 和上
线报警值 H,当采样值大于 H 时,高位报警继电器接通 (用 LED 状态灯 D1 亮表示);当采样值小于 L 时,下位报警继电器接通(用 D2 表示);当采样值介于 L 和 H之间时,两路报警器功能均被解除( D1和 D2均熄灭表示)
二、 实验环境
微型计算机一台, proteus 软件 ,keilC 编译器。
三、 元器件列表,
图表 1
四、 实验原理
本实验选用了一只六联共阴极数码管显示器,按照动态显示原
理接线,其中段码通过锁存器 74LS245驱动后接于 P0 口,位码则有反相器 74LS04驱动后接于。 A/D 转换器采用逐次逼近方式的芯片 ADC0809,其并行数据输出端直接连接于 P2 口, 4 个控制端 CLOCK,START,EOC,和 OE分别接于,采用查询法等待转换
结束,转换时钟利用定时器中断产生。四个面板按键通过
8 位
串行输入并行输出移位寄存器 74LS164与单片机接口,其移位时终端与单片机的 TXD引脚相连,串行数据端( 1 和 2 脚)与单片机的 RXD引脚相连,串口输出功能采用汇编语言与 C51 语言混合编程实现。
软件系统采用一个有多个功能模块构成的程序,模块之间相互依赖,他们之间的关系如图,程序有主要的两个功能模块组成——控制模块和菜单模块。这两个模块能够同时运行。这里,“同时”的意思是指用户进行菜单操作的时候,程序还能采集数据并进行控制。
图表 2
软件系统结构组成
“控制”和“菜单”这两个主要的模块都是建立在其他小模块
的基础上的,比如控制模块建立在 A/D 转换和 LED 显示的基础
上,菜单建立在按键检测和 LED显示的基础上,而按键检测又建立在串口输出的基础上。下表列出了各个模块的主要函数。
图表 3
各个模块的主要函数和功能
五、 程序源代码
//
void ad_init();
void control_thread();
void menu_thread();
void main()
{
ad_init();
while (1)
{
menu_thread();
control_thread();
}
}
//
#define MENU_ON
0
#define MENU_OFF 1
#define MENU_NUM 2
#define MENU_MAX 999
#define MENU_MIN 0
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)
{ // 若按键 0 已被按下
menu_status = MENU_ON; // 置当前菜单为打开状态
_menu_idx = 0; // 设置参数序号 0
将所有参数当前值取出,送入供显示的参数数组中
for (i = 0 ; i MENU_NUM ; i++)
{
_menu_value[i] = param_value[i];
}
}
} else{
如果当前菜单为打开状态,则进行以下操作:
if (key == 0)
{
若按键 0 按下,则不保存键值,仅切换到下一个参数
if (++_menu_idx == M
您可能关注的文档
- 单片机六路抢答器C语言程序.doc
- 单片机原理与应用试题及答案.doc
- 单片机原理及应用习题答案.doc
- 单片机原理及应用实训报告:实篮球记分牌.doc
- 单片机原理编程题.doc
- 单片机实践报告方案内容(大家下载抄一下).doc
- 单片机实验报告书.doc
- 单片机设计简易计算器.doc
- 单片机课后答案.doc
- 单片机课设LED显示电子钟.doc
- 专卖店促销员销售与成交技巧培训课件(34P).pptx
- 红色商务风新员工入职销售技巧知识培训课件(34P).pptx
- 专卖店商场销售员销售与成交技巧培训课件(34P).pptx
- 小区物业保安法律知识培训课件(28P).pptx
- 专卖店销售员轻松成交技巧培训(34P).pptx
- 轻松成交客户新员工入职通用销售技巧知识培训(34P).pptx
- 2024年初级《银行业法律法规与综合能力》考前必刷必练题库500题(含真题、必会题).docx
- 2024年“新安法知多少”知识竞赛题库及答案(最新版).docx
- 2024年30秒毕业生面试工作自我介绍.docx
- 2024年《医务人员礼仪培训》心得体会.docx
文档评论(0)