版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、# i n c l u d e <#include<intrins.h>r e g 51 h >#include <absacc.h>#include <math.h>#define uchar unsigned char#define uint unsigned int#define BUSY 0x80#define DATAPORT P0/常量定义/ADC0832的引脚sbit ADCS =P3A5;sbit ADDI =P3A7;sbit ADDO =P3A7;sbit ADCLK =P3A6;/ADC0832 chip seclect/A
2、DC0832 k in/ADC0832 k out/ADC0832 clock signalsbit LCM_RS=P2A0;sbit LCM_RW=P2A1;sbit LCM_EN=P2A2;uchar ad_data;sbit Alarm_led_red =P1A5;定义sbit Alarm_led_green=P1A6;警定义/adc采样值存储单元char press_data;unsigned char ad_alarm;unsigned char press_bai=0;unsigned char press_shi=0;unsigned char press_ge=0;unsign
3、ed char press_dot=0;uchar code str0="Press:. kpa "uchar code strl口=" Check BY Jack "/采样值存储/超过压力表量程最大值红色led报警/低于压力表量程最小值绿色led报/标度变换存储单元/报警值存储单元/显示值百位/显示值十位/显示值个位/显示值十分位void delay(uint);void lcd_wait(void);void delay_LCM(uint);延时子程序void initLCM( void);初始化子程序void lcd_wait(void);/LCD
4、/LCD/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);显示子函数uchar Adc0832(unsigned char channel);void
5、alarm(void);void data_pro(void);/写/写/显示指定显示指定坐/系统/*main funcation*/void main(void)delay(500);/ ad_data=0;initLCM();WriteCommandLCM(0x01,1);DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);/系统延时500ms启动/采样值存储单元初始化为0/清显示屏while(1)ad_data =Adc0832(0);/采样值存储单元初始化为 0alarm();data_pro();display。;,*延时 K*1m
6、s,12.000mhz*/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子函数*/void WriteDataLCM(uchar WDLCM) /检测忙信号lcd
7、_wait();DATAPORT=WDLCM;LCM_RS=1;LCM_RW=0;LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;/选中数据寄存器/写模式/*lcm内部等待函数 */ void lcd_wait(void)DATAPORT=0xff; 读LCD前若单片机输出低电平,而读出LCD为高电平,则冲 突,Proteus仿真会有显示逻辑黄色LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();_nop_();_nop_();while(DATAPORT&BUSY) LCM_EN=0;_nop_();_nop_();LCM_EN=
8、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);/8bit数据传送,2行显示,5*7字型,检测忙信号WriteCommandLCM(0x08,1);/关闭显示,检测忙信号WriteCommandLCM(0x01,1
9、);/清屏,检测忙信号WriteCommandLCM(0x06,1);/显示光标右移设置,检测忙信号WriteCommandLCM(0x0c,1);/显示屏打开,光标不显示,不闪烁,检测忙信号/*显示指定坐标的一个字符子函数 */void DisplayOneChar(uchar X,uchar Y,uchar DData)Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);若y为1 (显示第二行),地址码+0X40/指令码为地址码+0X80/*显示指定坐标的一串字符子函数*/void
10、 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); 测忙信号DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);/显示屏打开,光标不显示,不闪烁,检DisplayOne
11、Char(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函数*/稳定显示/采集并返回uchar Adc0832(unsigned char channel) /AD 转换,返回结果 uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel=0)channel=2;if(channel=1)chann
12、el=3;ADDI=1;_nop_();_nop_();ADCS=0; 拉低 CS 端_nop_();_nop_();ADCLK=1; 拉高 CLK 端_nop_();_nop_();ADCLK=0;/拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1; 拉高 CLK 端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;/拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1; 拉高 CLK 端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;/拉低CL
13、K端,形成下降沿3ADDI=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_();ADCLK=0;形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>
14、>=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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《骆驼寻宝记》教学设计
- 环保工程师劳动合同聘用协议书
- 生态农业园区建设施工合同
- 生物科技二手房交易模板
- 租赁车辆防雾霾装备要求
- 城市交通规划公众参与
- 矿山工程招投标模板
- 广告拍摄墙体壁画施工合同
- 居民区翻新施工合同
- 化妆品租赁田地合同
- 2024产学研合作框架协议
- 唐诗宋词人文解读智慧树知到期末考试答案章节答案2024年上海交通大学
- 《电视摄像》电子教案
- 火龙罐综合灸疗法
- 深圳市中小学生流感疫苗接种知情同意书
- 射线、直线和角(张冬梅)
- 数据、模型与决策(运筹学)课后习题和案例答案007
- 道路运输达标车辆核查记录表(货车)
- 《梁山伯与祝英台》PPT课件.ppt
- 四年级上学期道德与法治期末质量分析【六篇】
- 国有企业改革重组工作实施方案
评论
0/150
提交评论