1、TiD2CPP& ADCML3 匚437二|P0 丄SSCPP1.ADC4 PUBV4OSTADT5 ?1 5 0j36_HJJ二P0635MTStXADCiTl.fr O7 r34二 P0 YiCLXDCT ?L7 二&33F0.5P47 RSI XTRiD ?3.0 U932IPO./10ai EX LVDPi STISTIJs2?3 1 匚11J0ZALEP4.i二= 500)端口初始化void Port_I nit()P1M0 = 0x80; /10000000,P1.7 作为 AD 输入P1M1 = 0x80; / /ADC初始化 void ADC_I nit() uint i;P1
2、ASF = 0x80;II设P1.7为AD输入ADC_RES = 0;/清先前的结果ADC_CONTR|=0x80; P0WER=1,打开 ADC 电源for(i=5000;i0;i-) ; / 延时ADC_CONTR = ADC_CONTR&OxEO; 1110,0000 清 ADC_FLAG,ADC_START 和低 3 位0 xf8|0x07; / 设置当前通道号为 P1.7for(i=2500;/进行AD转换,得到当前酒精值uchar GetADVal()ADC_CONTR&=0xf7;for(i=250;i-);II待输入电压稳定后开始转换IIADC_RES = 0;ADC_CONT
3、R |= 0x08;IIADC_Start=1,启动转换while(ADC_CONTR&0x10)=0); II 等待转换结束 ADC_FLAG=1=0xe7; /清 ADC_FLAG 和 ADC_START 位,停止转换return ADC_RES;/存入设定值void Save_Sett in g()pSave = (char *)&Threshold; 地址低位对应低 8位,高位对应高 8位wrteeprom(0, *pSave);II存醉酒阈值低8位DELAY(300);pSave +;wrteeprom(1, *pSave);II存醉酒阈值高/载入设定值void Load_Sett
4、in g() Threshold;*pSave+ = rdeeprom(0);*pSave = rdeeprom(1);if (Threshold=255)|(Threshold0) Threshold = 80;/按键处理程序,参数为键值, 1为Up键,2为Down键void KeyProcess( uint num)switch (num)case 1:if (Threshold1) Threshold-;default:break;L1602n t(2,9,Threshold);Save_Sett in g(); void mai n()uint i,j;EA = 0;Data_I ni
5、t();/数据初始化TimerOnit();/定时器0初始化Port_I ni t();/端口初始化ADC_I nit();/ADC初始化EA = 1;L1602_i ni t();L1602_stri ng(1,1,Welcome to ALCT!L1602_stri ng(2,1,Desig ned by AAA /延时for (i=0;i1000;i+)for (j=O;j1OOO;j+);清屏L1602_stri ng(1,1, Alcohol:mg/LThresho:Load_Settin g();L1602_i nt(2,9,Threshold);while(1)/如果FlagSt
6、artAL标志置位,则进行 AD转换 if (FlagStartAL = 1)/酒精浓度换算,50mg/L=62.5ppm,传感器灵敏度应事先校准ALValue = 500 * GetADVal() / 256; /8 位 ADC,首先得到电压值,单位 10 毫伏ALValue = ALValue - K_ZERO; / 首先减去零点漂移,一般是 130mVif (ALValue Threshold) Led_Warn1 = 0; / 超过阈值,则 Led_Warn1 灯报警。 else Led_War n1 = 1;FlagStartAL = 0;查询乙醇传感器TTL电平,该指示灯为传感器模
7、块报警if (DOUT = 0) Led_Warn2 = 0;else Led_Warn2 = 1;键盘杳询,在弹起时响应if (Key_Up)&(keyUp=0) FlagKeyPress = 1; keyvalue = 1;else if (Key_Dow n)&(keyDow n=0) FlagKeyPress = 1; keyvalue = 2; if (FlagKeyPress = 1)KeyProcess(keyvalue); FlagKeyPress = 0;if (!Key_Up) keyUp = 0;else keyUp = 1;Key_Dow n) keyDow n = 0
8、;else keyDow n = 1;四、下载与调试当程序在uVision环境下编写完成,并编译生成.hex文件后,就可以下载并 进行调试了。1、USB转串口驱动安装打开 USB 驱动文件夹下的 PL2303_Prolific_Driverlnstaller_v130.exe 安装文 件,按提示安装USB转串口驱动程序。安装完成后,插入USB下载线后,在开 始卜控制面板-打印机和其他硬件-设备管理器,在“端口”分支下有(Prolific USB-to-Serial Comm Port(COMX)。X表示串口号,如果没有说明 USB转串口驱 动没有安装,须重新安装。记住括号里的 COM 口号。图
9、12成功安装USB转串口驱动示意图2、下载程序打开STC单片机下载软件文件夹,点击运行 STC_ISP_V481.exe程序,出现 如下界面。COT:匸L帕.诰童诫14 胡刨坷竺戒楚左昌谟林率图13下载软件正确选择MCU类型,COM 口(与刚才安装的COM号一致),最高波特率 和最低波特率都选2400bps或者1200bps (下载线内PL2303芯片所限,没办 法!),并打开正确的.hex数据文件。点击“ Download/下载”按纽,窗口出现提示:Chinese:正在尝试与 MCU/单片机握手连接Connection is failure. You can try:1.Give your
10、MCU Power On Reset.2.Stop operation, then re-select COM Port.3.Because PLCC-DIP/PQFP-DIP Socket trace too Ion g.|4.Update the STC ISP.exe version.5.If still error, your MCU Firmware is erroror n ull.Chi nese:连接失败,请尝试以下操作:1.在单片机停电状态下,点下载按钮,再给单片机上电2.停止下载,重新选择 RS-232串口,接好电缆3.可能需要先将 P1.0/P1.1短接到地4.可能外部时钟未接5.因PLCC、PQFP转换座引线过长而引起时钟不振荡,请调整参数6.可能要升级电脑端的 STC ISP.exe软件7. 若仍然不成功,可能 MCU/单片机内无ISP系统引导码, 或需退回升级,或 MCU已损坏8.若使用USB转RS-232串口线下载,可能会遇到不兼容的问题,可以让我们帮助购买兼容的 USB转RS-232串口线仍在连接中,请给MCU上电.按下电路板上的电源按纽,保证其有个失电至上电的过程,则窗口显示开始 烧录芯片。芯片烧录成功后,程序开始运行,酒精浓度测试仪正常工作。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2