




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
include reg52 H include STC12c5A h include 1602 h include 2402 h define uchar unsigned char define uint unsigned int 声明常量 define ALCH 250 醉驾标准 80mg L K MG MV 和 K ZERO 为传感器校准系数 要根据每个 MQ 3 模块校准 define K MG MV 160 66 传感器灵敏度系数 每毫 克 L 对应的 10 毫伏数 define K ZERO 15 传感器零点漂移 约 130mV 定义按键 sbit Key Up P3 4 sbit Key Down P3 5 定义 LED 报警灯 sbit Led Warn1 P3 2 sbit Led Warn2 P3 3 sbit Buzzer P3 0 定义蜂鸣器 定义乙醇传感器 TTL 电平输出引脚 sbit DOUT P1 4 定义标识 volatile bit FlagStartAL 0 开始转换标志 volatile bit FlagKeyPress 0 有键弹起标志 全局变量定义 uchar Threshold 酒精浓度上限报警值 uint ALCounter 酒精转换计时器 long ALValue 酒精测量值 float ALtemp 计算临时变量 uint keyvalue keyUp keyDown 键值 char pSave EEPROM 存盘用指针 函数声明 void Data Init void Timer0 Init void Port Init void ADC Init uchar GetADVal void KeyProcess uint 数据初始化 void Data Init ALCounter 0 ALValue 0 Led Warn1 1 Led Warn2 2 keyvalue 0 keyUp 1 keyDown 1 Buzzer 1 定时器 0 初始化 中断时间约 2 毫秒 计算 晶振 11 0592MHz 定时器时钟 11059200 12 921600 每毫秒 922 个脉冲 16 位定时器初值 65536 1844 63692 0 xf8cc void Timer0 Init ET0 1 允许定时器 0 中断 TMOD 1 定时器工作方式选择 TL0 0 xcc TH0 0 xf8 定时器赋予初值 大约为 2 毫秒中断 1 次 TR0 1 启动定时器 定时器 0 中断 void Timer0 ISR void interrupt 1 using 0 TL0 0 xcc TH0 0 xf8 定时器赋予初值 每 1 秒钟启动一次 AD 转换 ALCounter if ALCounter 500 FlagStartAL 1 ALCounter 0 void Port Init P1M0 0 x80 10000000 P1 7 作为 AD 输入 P1M1 0 x80 void ADC Init uint i P1ASF 0 x80 设 P1 7 为 AD 输入 ADC RES 0 清先前的结果 ADC CONTR 0 x80 POWER 1 打开 ADC 电源 for i 5000 i 0 i 延时 ADC CONTR ADC CONTR 1110 0000 清 ADC FLAG ADC START 位和低 3 位 ADC CONTR ADC CONTR 设置当前通 道号为 P1 7 for i 2500 i 0 i 延时 进行 AD 转换 得到当前酒精值 uchar GetADVal uint i ADC CONTR for i 250 i 0 i 待输入电压稳定后开始转换 ADC RES 0 ADC CONTR 0 x08 ADC Start 1 启动 转换 while ADC CONTR 等待转换结束 ADC FLAG 1 ADC CONTR 清 ADC FLAG 和 ADC START 位 停止转换 return ADC RES 存入设定值 void Save Setting pSave char 地址低位对应低 8 位 高位对应高 8 位 wrteeprom 0 pSave 存醉酒阈值低 8 位 DELAY 300 pSave wrteeprom 1 pSave 存醉酒阈值高 8 位 DELAY 300 载入设定值 void Load Setting pSave char pSave rdeeprom 0 pSave rdeeprom 1 if Threshold 255 Threshold 0 Threshold 250 按键处理程序 参数为键值 1 为 Up 键 2 为 Down 键 void KeyProcess uint num switch num case 1 if Threshold1 Threshold break default break L1602 int 2 9 Threshold Save Setting void delay ms uint z 长延时函数 uint x y for x z x 0 x for y 110 y 0 y void main uint i j EA 0 Data Init 数据初始化 Timer0 Init 定时器 0 初始化 Port Init 端口初始化 ADC Init ADC 初始化 EA 1 L1602 init L1602 string 1 1 Welcome to ALCT L1602 string 2 1 I Love MCU 延时 for i 0 i 1000 i for j 0 j 1000 j 清屏 L1602 string 1 1 L1602 string 2 1 L1602 string 1 1 Alcohol mg L L1602 string 2 1 Thresho mg L 载入设定值 Load Setting L1602 int 2 9 Threshold while 1 如果 FlagStartAL 标志置位 则进行 AD 转换 if FlagStartAL 1 酒精浓度换算 50mg L 62 5ppm 传感器灵敏度 应事先校准 ALValue 500 GetADVal 256 8 位 ADC 首先得到电压值 单位 10 毫伏 ALValue ALValue K ZERO 首 先减去零点漂移 一般是 130mV if ALValue Threshold Led Warn1 0 超过阈值 则 Led Warn1 灯报 警 否则报警灯灭 Buzzer 0 else Led Warn1 1 Buzzer 1 FlagStartAL 0 查询乙醇传感器 TTL 电平 该指示灯为传感器模块 报警 if DOUT 0 Led Warn2 0 else Led Warn2 1 P3 P3 0 xf0 拉高 P3 口 以读取 P3 口的值 Key Up 1 Key Down 1 if Key Up 0 delay ms 5 延时消抖 if Key Up 0 FlagKeyPress 1 keyvalue 1 else while Key Up 松手检测 else if Key Down 0 delay ms 5 if Key Down 0 FlagKeyPress 1 keyvalue 2 else while Key Down else keyvalue 0 if FlagKeyPress 1 KeyProcess keyvalue FlagKeyPress 0 文件名 液晶 1602 显示 c 描述 该程序实现了对液晶 1602 的控制 include 1602 h include math h 名称 delay 功能 延时 延时时间大概为 140US 输入 无 输出 无 void delay int i j for i 0 i 10 i for j 0 j 2 j 名称 Convert uchar In Date 功能 因为电路设计时 P0 0 P0 7 接法刚好了资料中的 相反 所以设计该函数 输入 1602 资料上的值 输出 送到 1602 的值 uchar Convert uchar In Date uchar i Out Date 0 temp 0 for i 0 i i Out Date temp 0 sign 0 else sign 1 temp abs num baiwei temp 100 temp temp baiwei 100 shiwei temp 10 gewei temp shiwei 10 num abs num if num 100 if sign 1 负数 L1602 char hang lie L1602 char hang lie 1 baiwei 48 L1602 char hang lie 2 shiwei 48 L1602 char hang lie 3 gewei 48 else if num 10 if sign 1 L1602 char hang lie 1 L1602 char hang lie 2 shiwei 48 L1602 char hang lie 3 gewei 48 else if sign 1 L1602 char hang lie 2 L1602 char hang lie 3 gewei 48 include 2402 h BASE DRIVE void DELAY unsigned int t while t 0 t IIC DRIVE void IICStart void SCL 0 DELAY 1 SDA 1 SCL 1 DELAY 1 SDA 0 DELAY 1 SCL 0 void IICStop void SDA 0 SCL 1 DELAY 1 SDA 1 DELAY 1 SCL 0 void SEND0 void SDA 0 SCL 1 DELAY 1 SCL 0 void SEND1 void SDA 1 DELAY 1 SCL 1 DELAY 1 SCL 0 bit Check Ack void unsigned char errtime 250 DELAY 1 SCL 1 DELAY 1 CY SDA while CY errtime CY SDA if errtime IICStop return 1 DELAY 1 SCL 0 return 0 void Write byte unsigned char dat unsigned char i for i 0 i 8 i if dat i else SEND0 unsigned char Read byte void unsigned char i temp 0 for i 0 i 8 i SDA 1 SCL 1 DELAY 1 if SDA 1 temp temp 1 temp temp 0 x01 else temp temp unsigned char rdeeprom unsigned char addr unsigned char temp 0 bit flag 0 IICStart Write byte 0 xa0 Check Ack
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 20xx重阳节晚会主持词4篇
- 农作物加工副产品环保型膨松剂创新创业项目商业计划书
- 网红法律咨询服务与权益保护创新创业项目商业计划书
- 教师招聘之《小学教师招聘》能力检测试卷附答案详解【综合题】
- 押题宝典教师招聘之《幼儿教师招聘》通关考试题库附参考答案详解【培优b卷】
- 教师招聘之《小学教师招聘》通关模拟卷及参考答案详解(基础题)
- 教师招聘之《小学教师招聘》题库检测模拟题及参考答案详解(a卷)
- 2025江西吉安市青原区司法局招聘2人笔试模拟试题及答案解析
- 2025年精准医疗领域:基因检测在罕见遗传病诊断中的应用准确性深度报告
- 2025年绿色建筑示范项目资金申请绿色建筑产业发展规划与战略报告
- 2025年国家电网公司招聘岗位竞聘模拟题及答案
- 隧道施工应急预案与响应方案
- 2025年广播电视技术能手预选赛竞赛试题含答案
- 食品添加剂培训课件
- 2025年健身教练专业技能测评考试试题及答案解析
- 2025年山东高考化学试题及答案
- 2025-2026北师大版二年级数学上册(全册)教案设计
- 环卫人员安全知识培训课件
- DB11T 2441-2025 学校食堂清洁和消毒规范
- 公司适用法律法规标准清单2025年08月更新
- 医院诊断证明书word模板
评论
0/150
提交评论