压力传感器仿真程序.doc

上传人:scccc 文档编号:14773199 上传时间:2022-02-19 格式:DOC 页数:10 大小:88KB
返回 下载 相关 举报
压力传感器仿真程序.doc_第1页
第1页 / 共10页
压力传感器仿真程序.doc_第2页
第2页 / 共10页
压力传感器仿真程序.doc_第3页
第3页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《压力传感器仿真程序.doc》由会员分享,可在线阅读,更多相关《压力传感器仿真程序.doc(10页珍藏版)》请在三一文库上搜索。

1、#incl#include #include #include ude#define uchar unsigned char #define uintunsigned int#define BUSY 0x80#define DATAPORT P0/ 常量定义/ADC0832 的引脚sbit ADCS =P3A5; sbit ADDI =卩3人7;sbit ADDO =P3A7; sbit ADCLK =P3A6;/ADC0832 chip seclect/ADC0832 k in/ADC0832 k out/ADC0832 clock signalsbit LCM_RS=P2A0;sbit L

2、CM_RW=P2A1;sbit LCM_EN=P2A2;uchar ad_data;sbit Alarm_led_red =P1A5; 定义sbit Alarm_led_green=P1A6 警定义/ 采样值存储/ 超过压力表量程最大值红色/ 低于压力表量程最小值绿色led报警led 报char press_data;unsigned char ad_alarm; unsigned char press_bai=0; unsigned char press_shi=0; unsigned char press_ge=0; unsigned char press_dot=0;/adc 采样值存储

3、单元/ 标度变换存储单元/ 报警值存储单元/ 显示值百位/ 显示值十位/ 显示值个位/ 显示值十分位uchar code str0=Press:. kpa ;uchar code str1= Check BY Jack ;void delay(uint);void lcd_wait(void); void delay_LCM(uint); 延时子程序void initLCM( void); 初始化子程序void lcd_wait(void);/LCD/LCD/LCD检测忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC); 指令到 ICM 子函数v

4、oid 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 alarm(void);void data_pro(void);/ 写/ 写/ 显示指定/ 显示指定坐/ 系统*main funcat

5、ion*/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*1ms,12.000mhz*/void delay(uint k)uint i,j; for(i=0;ik

6、;i+)for(j=0;j60;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_wait( );/ 检测忙信号DATAPORT=WDLCM;LCM_RS=1;/ 选中数据寄存器LCM_

7、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=1;_nop_();_nop_();LCM_EN=0;*LCM初始化子

8、函数 */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);/ 清屏,检测忙信号WriteCommandLCM(0x

9、06,1);/ 显示光标右移设置,检测忙信号WriteCommandLCM(0x0c,1);/ 显示屏打开,光标不显示,不闪烁,检测忙信号/* 显示指定坐标的一个字符子函数 */ void DisplayOneChar(uchar X,uchar Y,uchar DData)Y&=1;X&=15;if(Y)X|=0x40;/ 若 y 为 1(显示第二行) ,地址码 +0X40X|=0x80; / 指令码为地址码 +0X80 WriteCommandLCM(X,0);WriteDataLCM(DData);/* 显示指定坐标的一串字符子函数 */ void DisplayListChar(uch

10、ar X,uchar Y,uchar code *DData) uchar ListLength=0;Y&=0x01;X&=0x0f; while(X1)&0x1; _nop_();_nop_();ADCLK=0;/ 拉低 CLK 端 ,形成下降沿 3ADDI=1;/ 控制命令结束 _nop_();_nop_();dat=0; for(i=0;i8;i+)dat|=ADDO;/ 收数据ADCLK=1;_nop_();_nop_();ADCLK=0;/ 形成一次时钟脉冲 _nop_();_nop_();dat=1;if(i=7)dat|=ADDO;for(i=0;i8;i+)j=0;j=j|AD

11、DO;/ 收数据ADCLK=1;_nop_();_nop_();ADCLK=0;/ 形成一次时钟脉冲_nop_();_nop_();j=j7;ndat=ndat|j;if(i=1;ADCS=1;/ 拉低 CS 端ADCLK=0;/ 拉低 CLK 端ADDO=1;/ 拉高数据端 ,回到初始状态 dat=8;/return ad kdat|=ndat; return(dat);void data_pro(void)unsigned int temp;float press;if(14ad_data=243) Alarm_led_red=0; else Alarm_led_red=1; / 如果当前压力值大于 115kpa,/ 则启动报警/ 关闭报警

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1