220 likes | 439 Views
ARM嵌入式体系结构与接口技术 第13章 温度监测仪开发实例. 课程安排 :. 第1章 嵌入式系统基础知识 第2章 ARM技术概述 第3章 ARM的指令系统 第4章 ARM汇编语言程序设计 第5章 ARM Realview MDK集成开发环境 第6章 GPIO编程 第7章 ARM异常中断处理及编程 第8章 串行通信接口. 课程安排 :. 第9章 存储器接口 第10章 定时器 第11章 A/D转换器 第12章 LCD接口设计 第13章 温度监测仪开发实例. 本章课程:. 13.1 项目功能描述 13.2 系统组成 13.3 接口电路图设计
E N D
ARM嵌入式体系结构与接口技术第13章 温度监测仪开发实例
课程安排: • 第1章 嵌入式系统基础知识 • 第2章 ARM技术概述 • 第3章 ARM的指令系统 • 第4章 ARM汇编语言程序设计 • 第5章 ARM Realview MDK集成开发环境 • 第6章 GPIO编程 • 第7章 ARM异常中断处理及编程 • 第8章 串行通信接口
课程安排: • 第9章 存储器接口 • 第10章 定时器 • 第11章 A/D转换器 • 第12章 LCD接口设计 • 第13章 温度监测仪开发实例
本章课程: • 13.1 项目功能描述 • 13.2 系统组成 • 13.3 接口电路图设计 • 13.4 程序设计 • 13.5 运行结果 • 13.6 小结
13.1 项目功能描述 • 温度监测仪可以实现如下功能: • 使用铂电阻传感器探测出目标温度,并通过图形的方式显示在LCD屏上 • 当温度超过报警温度时,在LCD屏上显示报警状态 • 当温度超过报警温度时,通过PWM控制蜂鸣器实现报警 • 当温度超过报警温度时,点亮LED报警灯 • 可以通过按键关闭或打开蜂鸣器及报警等功能 • 实例涉及到传感器技术、GPIO控制技术、中断技术、LCD控制技术、PWM控制技术、A/D转换技术等。
13.2 系统组成 图13-1 系统组成功能图
13.3 接口电路图设计 • 1、报警灯电路 • 处理器S3C2410通过GPF4控制报警LED灯,如图13-2所示 图13-2 报警灯电路
13.3 接口电路图设计 • 2、蜂鸣器电路 • 处理器S3C2410通过GPB0输出PWM信号控制蜂鸣器,如图13-3所示 图13-3 蜂鸣器电路
13.3 接口电路图设计 • 3、按键电路 • 当GPE11输出0电平时,按键按下后会在EINT0管脚上产生跳沿信号。系统利用此信号产生中断。如图13-4所示 图13-4 按键中断电路
13.3 接口电路图设计 • 4、LCD液晶屏电路 • LCD屏的分辨率为320*240,颜色深度为16位真彩色。电路接线参照第12章中的图12-4。
13.3 接口电路图设计 • 5、温度采集电路 • 采样温度范围是0~100℃,变送器将温度信号转换为0~3.3V的电压信号。电压信号和S3C2410的AIN0相连。系统通过测量电压信号从而得到当前的温度值。电路如图13-5所示 图13-5 温度采集电路
13.4 程序设计 • 1、程序工作流程 图13-6 主程序流程
13.4 程序设计 图13-7 按键中断处理程序流程
13.4 程序设计 • 2、主程序代码 • #include "2410lib.h" • extern void beep_gpio_setup(void); • extern void beep_start(void); • extern void beep_stop(void); • extern UINT16T adc_get(void); • extern void lcd_init(void); • extern void int_init(void); • extern void led_init(void); • extern void led_on(void); • extern void led_off(void); • extern void Fill_area(int x0,int y0,int x1,int y1,unsigned short color); • extern void adc_init(void);
13.4 程序设计 • int flag_alarm=1; //打开alarm功能的表示 • int flag_beep=0; //蜂鸣器和报警灯打开标志 • int main(int argc,char **argv) • { • unsigned short adc_data; • float f_value; • sys_init(); //初始化 s3c2410's Clock, MMU, Interrupt,Port and UART • led_init(); //LED接口初始化,配置对应的GPIO属性 • lcd_init(); //初始化LCD控制器 • int_init(); //初始化按键中断 • beep_gpio_setup(); //初始化PWM控制蜂鸣器 • adc_init(); //初始化A/D控制器
13.4 程序设计 • while(1) • { • adc_data=adc_get(); //获取到ad转换值 • f_value=adc_data*100.0/1024.0; //转换为对应的电压值 • uart_printf(" %0.1f \n",f_value); • Fill_area(60,80,260,120,0x0); //填充温度计的默认颜色 • Fill_area(60,80,(int)(f_value*2),120,0xf000); • delay(10000); • if(f_value>80) //判断温度是否超过报警值80 • { • if(flag_alarm) //判断是否设置了报警功能 • { • beep_start();//驱动蜂鸣器
13.4 程序设计 • led_on(); //打开报警灯 • flag_beep=1; //置标志 • } • else • { • if(flag_beep) //判断标志 • { • beep_stop(); //关闭蜂鸣器 • led_off(); //关闭报警灯 • flag_beep=0; //flag标志置0 • } • } • }
13.4 程序设计 • else • { • if(flag_beep) //判断标志 • { • beep_stop(); //关闭蜂鸣器 • led_off(); //关闭报警灯 • flag_beep=0; //flag标志置0 • } • } • } • return 0; • }
13.4 程序设计 3、按键中断处理程序代码 • extern int flag_alarm; • void __irq int0_int(void) • { • delay(3000); • ClearPending(BIT_EINT0); • uart_printf(" EINT0 interrupt occurred.\n"); • if(flag_alarm) • { • flag_alarm=0; • } • else • flag_alarm=1; • }
13.5 运行结果 • 本章例程的运行后在液晶上的显示如图13-8所示: 图13-8 控制器温度监控界面 通过图形的方式直观的表示出温度情况。K10可以控制报警功能的开关。参照13.1中的描述,测试系统的各项功能。
13.6 小结 本章通过一个实例,综合了几个常用的接口功能。 通过本章,学员可以提高利用已学知识解决实际问题的能力。 本例程只适合在实验室学习使用,如果用于产品还需要在精度、稳定性等方面做更多的优化。