2022年电子称程序 .pdf

上传人:Q****o 文档编号:27522822 上传时间:2022-07-25 格式:PDF 页数:8 大小:53.47KB
返回 下载 相关 举报
2022年电子称程序 .pdf_第1页
第1页 / 共8页
2022年电子称程序 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年电子称程序 .pdf》由会员分享,可在线阅读,更多相关《2022年电子称程序 .pdf(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、/* 压力测试仪系统描述 ;输入15-115kPA 压力信号输出00h-ffh 数字信号( adc0832)在 LCD 上显示实际的压力值,如果超限则报警线性区间标度变换公式:y=(115-15)/(243-13)*X+15kpa 作者:单位:日期: 2008.3.7 */ #include #include #include #include #define uchar unsigned char #define uint unsigned int #define BUSY 0 x80 /常量定义#define DATAPORT P0 /ADC0832 的引脚sbit ADCS =P35;

2、/ADC0832 chip seclect sbit ADDI =P37; /ADC0832 k in sbit ADDO =P37; /ADC0832 k out sbit ADCLK =P36; /ADC0832 clock signal sbit LCM_RS=P20; sbit LCM_RW=P21; sbit LCM_EN=P22; uchar ad_data; /采样值存储sbit Alarm_led_red =P31; /超过压力表量程最大值红色led 报警定义sbit Alarm_led_green=P32; /低于压力表量程最小值绿色led报警定义/adc 采样值存储单元ch

3、ar press_data; /标度变换存储单元unsigned char ad_alarm; /报警值存储单元unsigned char press_ge=0; /显示值百位unsigned char press_shifen=0; /显示值十位unsigned char press_baifen=0; /显示值个位名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 1 unsigned char press_qianfen=0;

4、 /显示值十分位uchar code str0=Weight: . Kg ; uchar code str1=Make by GUO TAO ; uchar code str2=Price: ; uchar code str3=Total: ; void delay(uint); void lcd_wait(void); void delay_LCM(uint); /LCD延时子程序void initLCM( void); /LCD 初始化子程序void lcd_wait(void); /LCD检测忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC

5、); /写指令到ICM 子函数void WriteDataLCM(uchar WDLCM); /写数据到LCM 子函数void DisplayOneChar(uchar X,uchar Y ,uchar DData); /显示指定坐标的一个字符子函数void DisplayListChar(uchar X,uchar Y,uchar code *DData); / 显 示 指 定坐标的一串字符子函数void keyscan(); void display(void); /系统显示子函数uchar Adc0832(unsigned char channel); void alarm(void);

6、 void data_pro(void); /*main funcation*/ void main(void) delay(500); /系统延时500ms启动/ ad_data=0; /采样值存储单元初始化为0 initLCM( ); WriteCommandLCM(0 x01,1); /清显示屏DisplayListChar(0,0,str0); DisplayListChar(0,1,str2); while(1) ad_data =Adc0832(0); /采样值存储单元初始化为0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -

7、- - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 2 alarm(); data_pro(); display(); /*延时 K*1ms,12.000mhz*/ void delay(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j60;j+) ; /*写指令到ICM 子函数 */ void WriteCommandLCM(uchar WCLCM,uchar BusyC) if(BusyC)lcd_wait(); DATAPORT=WCLCM; LCM_RS=0; / 选中指令寄存器LCM_R

8、W=0; / 写模式LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; /*写数据到LCM 子函数 */ void WriteDataLCM(uchar WDLCM) lcd_wait( ); /检测忙信号DATAPORT=WDLCM; LCM_RS=1; / 选中数据寄存器LCM_RW=0; / 写模式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 3 LCM_EN=1; _nop_(

9、); _nop_(); _nop_(); LCM_EN=0; /*lcm内部等待函数*/ void lcd_wait(void) DATAPORT=0 xff; /读 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初始化子函数 */ void init

10、LCM( ) DATAPORT=0; delay(15); WriteCommandLCM(0 x38,0); /三次显示模式设置,不检测忙信号delay(5); WriteCommandLCM(0 x38,0); delay(5); WriteCommandLCM(0 x38,0); delay(5); WriteCommandLCM(0 x38,1); /8bit 数据传送, 2 行显示, 5*7 字型,检测忙信号WriteCommandLCM(0 x08,1); /关闭显示,检测忙信号名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

11、 - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 4 WriteCommandLCM(0 x01,1); /清屏,检测忙信号WriteCommandLCM(0 x06,1); /显示光标右移设置,检测忙信号WriteCommandLCM(0 x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号 /* 显示指定坐标的一个字符子函数*/ void DisplayOneChar(uchar X,uchar Y ,uchar DData) Y&=0 x01; X&=0 x0f; if(Y)X|=0 x40; /若 y 为 1(显示第

12、二行) ,地址码 +0X40 X|=0 x80; /指令码为地址码+0X80 WriteCommandLCM(X,1); WriteDataLCM(DData); /*显示指定坐标的一串字符子函数*/ void DisplayListChar(uchar X,uchar Y,uchar code *DData) uchar ListLength=0; Y&=0 x01; X&=0 x0f; while(X1)&0 x1; _nop_(); _nop_(); ADCLK=0;/ 拉低 CLK 端,形成下降沿3 ADDI=1;/ 控制命令结束_nop_(); _nop_(); dat=0; for

13、(i=0;i8;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 6 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|ADDO;/ 收数据ADCLK=1; _nop_(); _nop_(); ADCLK=0;/ 形成一次

14、时钟脉冲_nop_(); _nop_(); j=j7; ndat=ndat|j; if(i=1; ADCS=1;/ 拉低 CS 端ADCLK=0;/ 拉低 CLK 端ADDO=1;/ 拉高数据端 ,回到初始状态dat=8; dat|=ndat; return(dat); /return ad k void data_pro(void) unsigned int temp; float press; if(14ad_data=243) /如果当前压力值大于115kpa, Alarm_led_red=0; /则启动 red led 报警else Alarm_led_red=1; /关闭 red led 报警if(ad_data=14) /如果当前压力值小于16kpa Alarm_led_green=0; /则启动 green led 报警else Alarm_led_green=1; /关闭 green led 报警 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com