下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include<reg51.h>#include<intrins.h>#include <absacc.h>#include <math.h>#define uchar unsigned char #define uint unsigned int #define BUSY Ox8O #define DATAPORT PO/常量定义/ADCO832 的引脚sbit ADCS =P 3人5;sbit ADDI =P 3人7;sbit ADDO =P 3人7;sbit ADCLK =P 3人6;/ADCO832 chip seclect/ADCO8
2、32 k in/ADCO832 k out/ADC0832 clock signalsbit LCM_RS=PiO;sbit LCM_RW= Pl;sbit LCM_EN=卩2人2;uchar ad_data;sbit Alarm_led_red =P 1人5;定义sbit Alarm_led_gree n=P 1人6;定义/采样值存储/超过压力表量程最大值红色/ 低于压力表量程最小值绿色led 报警led报警/adc 采样值存储单元char press_data; unsigned char ad_alarm;unsigned char press_bai=O; unsigned char
3、press_shi=O; unsigned char press_ge=O; unsigned char press_dot=O;/标度变换存储单元 /报警值存储单元 /显示值百位 /显示值十位 /显示值个位 /显示值十分位. kpa "uchar code strO="Press:uchar code str1=" Check BY Jack "void delay(uint);void lcd_wait(void);void delay_LCM(uint);延时子程序void initLCM( void);/LCD 初始化子程序/LCDvoid lc
4、d_wait(void);/LCD检测忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC); 写指令到 ICM 子函数/void WriteDataLCM(uchar WDLCM); 写数据到 LCM 子函数/void DisplayOneChar(uchar X,uchar Y ,uchar DData); 坐标的一个字符子函数/显示指定void DisplayListChar(uchar X,uchar Y,uchar code *DData); 坐标的一串字符子函数/ 显示指定void display(void); 显示子函数/ 系统ucha
5、r Adc0832(unsigned char channel);void alarm(void); void data_pro(void);/*main funcation*/void main(void)/delay(500); ad_data=0; initLCM( );/系统延时 500ms 启动/ 采样值存储单元初始化为 0WriteCommandLCM(0x01,1);DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);/清显示屏while(1)ad_data =Adc0832(0);/采样值存储单元初始化为0/*延时 K*1ms
6、,12.000mhz*/alarm();data_pro();display();void delay(uint k) uint i,j; for(i=0;i<k;i+) for(j=0;j<60;j+);/*写指令到 ICM 子函数 */ void WriteCommandLCM(uchar WCLCM,uchar BusyC) / 选中指令寄存器/ 写模式if(BusyC)lcd_wait(); DATAPORT=WCLCM; LCM_RS=0;LCM_RW=0;LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;/* 写数据到 LCM 子函数
7、*/ void WriteDataLCM(uchar WDLCM) /*lcm 内部等待函数 */检测忙信号lcd_wait( );DATAPORT=WDLCM;LCM_RS=1;LCM_RW=0;LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;/ 选中数据寄存器/ 写模式void lcd_wait(void)DATAPORT=0xff;/读 LCD 前若单片机输出低电平 ,而读出 LCD 为高电平 ,则冲突 ,Proteus 仿真会有显示逻辑黄色LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();_nop_();_nop_();while
8、(DATAPORT&BUSY) LCM_EN=0;_nop_();_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;/*LCM 初始化子函数 */ void initLCM( )DATAPORT=0; delay(15);/三次显示模式设置,不检测忙信号WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);Write
9、CommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);/8bit 数据传送, 2行显示, 5*7字型,检测忙信号/关闭显示,检测忙信号/清屏,检测忙信号/显示光标右移设置,检测忙信号/显示屏打开,光标不显示,不闪烁,检测忙信号void DisplayOneChar(uchar X,uchar Y,uchar DData)/* 显示指定坐标的一个字符子函数*/Y&=1;X&=15;/若 y 为 1(显示第二行) ,地址码 +0X40/ 指令码为地址码 +0X80if(Y)X|=0x40;X|=0x80
10、;WriteCommandLCM(X,0);WriteDataLCM(DData);*/* 显示指定坐标的一串字符子函数*/void DisplayListChar(uchar X,uchar Y ,uchar code *DData) uchar ListLength=0;Y&=0x01;X&=0x0f;while(X<16)DisplayOneChar(X,Y ,DDataListLength);ListLength+;X+;/*系统显示子函数 */void display(void)WriteCommandLCM(0x0c,1);检测忙信号/显示屏打开, 光标不显示
11、, 不闪烁,DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(7,0,press_bai+0x30);DisplayOneChar(8,0,press_shi+0x30);DisplayOneChar(9,0,press_ge +0x30);DisplayOneChar(11,0,press_dot+0x30);delay(1000);/*读 ADC0832 函数/ 稳定显示/采集并返回/AD 转换,返回结果uchar Adc0832(unsigned char channel) uchar i=0;uchar
12、 j;uint dat=0;uchar ndat=0;if(channel=0)channel=2; if(channel=1)channel=3; ADDI=1;_nop_();_nop_();ADCS=0;/ 拉低 CS 端_nop_();_nop_();ADCLK=1;/_nop_();_nop_();ADCLK=0;/_nop_();_nop_();ADCLK=1;/拉高 CLK拉低 CLK拉高 CLK端,形成下降沿ADDI=channel&0x1;_nop_();_nop_();端,形成下降沿ADCLK=0;/ 拉低 CLK_nop_();_nop_();ADCLK=1;/
13、拉高 CLKADDI=(channel>>1)&0x1; _nop_();_nop_();ADCLK=0;/ 拉低 CLK 端 ,形成下降沿ADDI=1;/ 控制命令结束 _nop_();_nop_(); dat=0;for(i=0;i<8;i+)dat|=ADDO;/ 收数据 ADCLK=1;_nop_();_nop_();ADCLK=0;/ 形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i=7)dat|=ADDO;for(i=0;i<8;i+)j=0;j=j|ADDO;/ 收数据ADCLK=1;_nop_();_nop_(
14、);ADCLK=0;/ 形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;ADCS=1;/ 拉低 CS 端 ADCLK=0;/ 拉低 CLK ADDO=1;/ 拉高数据端 dat<<=8;dat|=ndat; return(dat);端,回到初始状态/return ad kvoid data_pro(void)unsigned int temp; float press;if(14<ad_data<243)时,遵循线性变换int vary=ad_data;/ 当压力值介于 15kpa 到 115kpa 之间/y=(115-15)/(243-13)*X+15kpapress=(10.0/23.0)*vary)+9.3;/测试时补偿值为 9.3temp=(int)(press*10);/放大 10 倍,便于后面的计算/*报警子函数 */取压力值百位/取压力值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南云箭集团2026届春季校园招聘考试备考试题及答案解析
- 2026年芜湖市镜湖科创运营管理有限公司招聘工作人员5名考试备考试题及答案解析
- 2026年淮北矿工总医院人才招聘考试备考题库及答案解析
- 2026年金华义乌市中心医院派驻年薪制非正式在编人员招聘6人笔试参考题库及答案解析
- 筑路工操作安全评优考核试卷含答案
- 熄焦车与电机车安全维护检修技术规程培训
- 2026浙江台州市玉环市滨港工业城开发有限公司招聘财务副总经理1人笔试备考题库及答案解析
- 2026年铜陵市鸿悦渡轮运营管理有限公司船员招聘考试备考题库及答案解析
- 2026广东深圳市宝安区建安新村幼儿园(集团)招聘1人考试备考题库及答案解析
- 2026中国电子云春季校园招聘笔试备考题库及答案解析
- 2023年一级建造师机电实务真题及答案解析
- 北京建筑大学2016年高职升本科专业课考试试卷《城市轨道交通车辆构造》试卷
- 事业单位人事管理条例完整版x课件
- 中国地理概况-课件
- 高处作业安全技术交底-
- (部编版)五年级语文(下册)语文园地一·口语交际一优质课件
- 《导体和绝缘体》说课课件
- 小学劳动教育 二年级下册 活动《一起来种太阳花》(第二课时) 课件
- 零星交付操作规范指引
- 2022年书法五下教案河北美术出版社
- (完整PPT)春节习俗英文PPT课件
评论
0/150
提交评论