免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*Project: SHTxx 驱动程序 4位数码管移位扫描显示*/#include /Microcontroller specific library, e.g. port definitions#include /Keil library (is used for _nop()_ operation)#define uchar unsigned char#define uint unsigned int#define outdata P0 /8951mcuenum TEMP,HUMI;sbit DATA=P21;sbit SCK=P20;#define noACK 0#define ACK 1#define MEASURE_TEMP 0x03 /000 0001 1#define MEASURE_HUMI 0x05 /000 0010 1#define RESET 0x1e /000 1111 0/-硬件配置-/P0口为段码数据,P1.4, P1.5, P1.6, P0.5 分别为1234位数码管/=显示段码数据=uchar duanma10=0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0;/=位控制= sbit WEI1=P27;sbit WEI2=P26;sbit WEI3=P25;sbit WEI4=P24; /8951/=按键配置= /=显示缓冲区RAM配置= uchar buffer4=0,0,0,0;uchar wd,sd; union unsigned int i; float f;wendu,shidu;/定义两个共同体,一个用于湿度,一个用于温度/=void delayHM(uint k)/毫秒级延时子函数 uint i; uchar j; for(i=0;ik;i+) for(j=0;j121;j+); /=移位扫描显示函数=void led_dispy(uchar bu) uchar i; for(i=0;i0;i/=2) /shift bit for masking if (i & value) DATA=1; /masking value with i , write to SENSI-BUSelse DATA=0;SCK=1; /clk for SENSI-BUS_nop_();_nop_();_nop_(); /pulswith approx. 5 usSCK=0;DATA=1; /release DATA-lineSCK=1; /clk #9 for ackerror=DATA; /check ack (DATA will be pulled down by SHT11)SCK=0;return error; /error=1 in case of no acknowledge/-char s_read_byte(unsigned char ack)/-/读数据;unsigned char i,val=0;DATA=1; /release DATA-linefor (i=0x80;i0;i/=2) /shift bit for masking SCK=1; /clk for SENSI-BUSif (DATA) val=(val | i); /read bitSCK=0;DATA=!ack; /in case of ack=1 pull down DATA-LineSCK=1; /clk #9 for ack_nop_();_nop_();_nop_(); /pulswith approx. 5 usSCK=0;DATA=1; /release DATA-linereturn val;/-void s_transstart(void)/-/ generates a transmission start/ _ _/ DATA: |_|/ _ _/ SCK : _| |_| |_DATA=1; SCK=0; /Initial state_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;/-void s_connectionreset(void)/-/ /启动传输/ _ _/ DATA: |_|/ _ _ _ _ _ _ _ _ _ _ _/ SCK : _| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_unsigned char i;DATA=1; SCK=0; /Initial statefor(i=0;i9;i+) /9 SCK cycles SCK=1;SCK=0;s_transstart();/-char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)/-/ 进行温度或者湿度转换,由参数mode决定转换内容;unsigned error=0;unsigned int i;s_transstart(); /transmission startswitch(mode) /send command to sensorcase TEMP : error+=s_write_byte(MEASURE_TEMP); break;case HUMI : error+=s_write_byte(MEASURE_HUMI); break;default : break;for (i=0;i100)rh_true=100; /cut if the value is outside ofif(rh_true0.1)rh_true=0.1; /the physical possible range*p_temperature=t_C; /return temperature*p_humidity=rh_true; /return humidity%RH/-void main()/- uchar error,checksum;uint xunh;s_connectionreset(); while(1) xunh+;if(xunh=4000)xunh=0;error=0; error+=s_measure(unsigned char*) &shidu.i,&checksum,HUMI); /湿度测量 error+=s_measure(unsigned char*) &wendu.i,&checksum,TEMP); /温度测量 if(error!=0) s_connectionreset(); /如果发生错误,系统复位 else shidu.f=(float)shidu.i; /转换为浮点数 wendu.f=(float)wendu.i; /转换为浮点数 calc_sth11(&shidu.f,&wendu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金华辅警协警招聘考试备考题库及参考答案详解一套
- 2025年锦州辅警招聘考试真题附答案详解(b卷)
- 2025沿海船舶运输合同
- 2025年苏州辅警招聘考试真题附答案详解(研优卷)
- 2025年许昌辅警协警招聘考试真题及答案详解一套
- 2025年湘西土家族苗族自治州辅警协警招聘考试备考题库含答案详解(达标题)
- 2025年甘肃辅警招聘考试真题带答案详解
- 2025年眉山辅警协警招聘考试备考题库及1套完整答案详解
- 2025年益阳辅警协警招聘考试真题附答案详解(综合题)
- 2025年滁州辅警招聘考试题库及答案详解(新)
- 2025广东深圳市宝安区建筑工务署第二批招聘员额制人员6人笔试考试备考试题及答案解析
- 施工现场环境保护管理制度及管理措施
- 2025江西九江德安中寰电力建设有限公司招聘2人笔试考试备考题库及答案解析
- 大赢CNC48操作手册
- 大学生职业生涯规划课件
- 汽车销售任职合同范本
- 2025内蒙古巴彦淖尔市磴口县第三批社区工作者招聘60人笔试考试参考试题及答案解析
- 营盘山隧道施工方案设计
- 建筑施工安全技术规程汇编
- 搜救犬培训知识课件
- 医院地震知识培训内容课件
评论
0/150
提交评论