Template-02.zip

  • 哈哈嘿嘿妮
    了解作者
  • C/C++
    开发工具
  • 32KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-08-15 12:09
    上传日期
ds18b20芯片程序编程应用 C语言 温度传感器
Template-02.zip
  • Objects
  • Template.hex
    3.7KB
  • Template.lnp
    97B
  • main.obj
    15.8KB
  • Template.build_log.htm
    1.1KB
  • Template
    13.9KB
  • Listings
  • Template.m51
    15.8KB
  • main.lst
    10.3KB
  • main.c
    4.5KB
  • Template.uvproj
    14KB
  • Template.uvgui.Dake
    89KB
  • Template.uvopt
    4.9KB
内容介绍
/******************************************************************************* * 文件名称:蓝桥杯单片机基础入门视频--第五讲:单线通信协议_温度传感器DS18B20 * 实验目的:蓝桥杯单片机开发板外设模块:DS18B20温度传感器 * 程序说明:如需了解有关本程序配套视频讲解,及比赛经验分享\ * 欢迎访问淘宝店铺网址:shop117015787.taobao.com * 作 者:大科电子工作室 * 日期版本:2019-1/V1.0 *******************************************************************************/ #include<stc15f2k60s2.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit DQ=P1^4; uchar tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,\ 0X40,0X79,0X1A,0X30,0X19,0X12,0X02,0X78,0X00,0X10,0XBF,0XFF}; uchar yi,er,san,si,wu,liu,qi,ba; bit S4,S5,S6,S7; uchar num; long Wendu; unsigned int tt=0; void Allinit(void); void Delayms(int ms); void Display1(uchar yi,uchar er); void Display2(uchar san,uchar si); void Display3(uchar wu,uchar liu); void Display4(uchar qi,uchar ba); void Delay500us(); void Delay100us(); void Delay80us(); void Init_DS18b20(void); void DS18B20_WiteByte(unsigned char dat); long TemperGet(void); void main(void) { Allinit(); yi=21;er=21;san=21;si=21;wu=21;liu=21;qi=21;ba=21; while(1) { if(++num==200) { num=0; Wendu=TemperGet();//211625 //yi=Wendu/10;er=Wendu%10; yi=Wendu/100000;er=Wendu%100000/10000+10; san=Wendu%10000/1000;si=Wendu%1000/100;wu=Wendu%100/10;liu=Wendu%10; } Display1(yi,er); Display2(san,si); Display3(wu,liu); Display4(qi,ba); } } void Init_DS18b20(void) { DQ=0; Delay500us(); DQ=1; Delay500us(); } void DS18B20_WiteByte(unsigned char dat) { unsigned char i; for(i=0;i<8;i++) { DQ=0; DQ=dat&0x01;//1100 1100 & 0000 0001 = 0000 0000 Delay80us(); DQ=1; dat >>=1; // 0110 0110 //0011 0011 // 0000 0000 } } unsigned char DS18B20_ReadByte(void) { unsigned char i; unsigned char dat;//0000 0000 for(i=0;i<8;i++) { DQ=0; dat >>=1; // 0101 0000 DQ=1; if(DQ==1) { dat=dat|0x80; // 0000 0000 | 1000 0000 = 1000 0000 } Delay80us(); } return dat; } long TemperGet(void) { unsigned char low,high; long temp; Init_DS18b20(); DS18B20_WiteByte(0XCC);//1100 1100 DS18B20_WiteByte(0X44); Delay500us(); Init_DS18b20(); DS18B20_WiteByte(0XCC); DS18B20_WiteByte(0XBE); low=DS18B20_ReadByte(); high=DS18B20_ReadByte(); // temp=high<<4; //0000 1010; 1010 0000 // temp=temp|(low>>4); // 1010 0110 ;; 0000 1010 1010 1010 //0.0625 temp=(high&0x0f); //0000 1010; 1010 0000 temp <<=8; temp|=low; // 1010 0110 ;; 0000 1010 1010 1010 temp=temp*625; return temp; } void Delay80us() //@11.0592MHz { unsigned char i, j; _nop_(); i = 1; j = 217; do { while (--j); } while (--i); } //bit Init_DS18b20(void) //{ // bit DS=0; // DQ=0; // Delay500us(); // DQ=1; // Delay100us(); // DS=DQ; // Delay100us(); // // return DS; //} void Delay100us() //@11.0592MHz { unsigned char i, j; _nop_(); _nop_(); i = 2; j = 15; do { while (--j); } while (--i); } void Delay500us() //@11.0592MHz { unsigned char i, j; _nop_(); _nop_(); i = 6; j = 93; do { while (--j); } while (--i); } void Display1(uchar yi,uchar er) { P2=0XC0; P0=0X01; P2=0XE0; P0=tab[yi]; Delayms(1); P2=0XC0; P0=0X02; P2=0XE0; P0=tab[er]; Delayms(1); } void Display2(uchar san,uchar si) { P2=0XC0; P0=0X04; P2=0XE0; P0=tab[san]; Delayms(1); P2=0XC0; P0=0X08; P2=0XE0; P0=tab[si]; Delayms(1); } void Display3(uchar wu,uchar liu) { P2=0XC0; P0=0X10; P2=0XE0; P0=tab[wu]; Delayms(1); P2=0XC0; P0=0X20; P2=0XE0; P0=tab[liu]; Delayms(1); } void Display4(uchar qi,uchar ba) { P2=0XC0; P0=0X40; P2=0XE0; P0=tab[qi]; Delayms(1); P2=0XC0; P0=0X80; P2=0XE0; P0=tab[ba]; Delayms(1); } void Allinit(void) { P2=0XA0;//打开控制蜂鸣器的573 P0=0X00;//关闭蜂鸣器继电器 P2=0XC0;//打开控制数码管位选的573 P0=0XFF;//选中所有数码管 P2=0XE0;//打开控制数码管段选的573 P0=0XFF;//关闭所有的数码管 P2=0X80;//打开控制LED的573 P0=0XFF;//关闭所有的LED } void Delayms(int ms) { int i,j; for(i=0;i<ms;i++) for(j=845;j>0;j--); } /* void Delay1ms(int ms) //@11.0592MHz { unsigned char i, j,k; for(k=0;k<ms;k++) { _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); } } */
评论
    相关推荐
    • DS28B20PDF.rar
      DS18B20是一款十分常用的一个温度传感器, 由于其时序很复杂对于初学者来说编写其驱动程序可能会有点困难,故本人把自己收藏的这个芯片上传给大家
    • rili.zip
      可以实现的功能是:基于单片机设计的时间温度显示系统
    • ds18b20 温度单片机程序
      史上最全ds18b20资料 以及自己写的整数、一位、两位、四位温度显示ds18b20 温度 单片机 程序
    • GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz
      guassdb100在redhat上安装包,单机部署的包,安装步骤请看我的文中介绍,经过大量实验搭建总结出来的文档
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等
    • 卷积神经网络
      这是卷积神经网络的一个实际用例,已经调试好了,能够在matlab上成功运行,适合从事卷积神经网络(CNN)研究的人员学习使用。
    • android从bootloader到launcher启动流程整理
      讲述android 开机流程 从boot rom---bootloader---init--zygote---systemserver---ams 并附上自己整理的每个流程的流程图 ,清晰熟悉android 启动流程
    • 分数阶混沌系统:分数阶混沌系统的数值解。-matlab开发
      该工具箱包含可用于模拟一些著名的分数阶混沌系统的函数,例如: - 陈的系统, - Arneodo的系统, - Genesio-Tesi 的系统, - 洛伦兹系统, - 牛顿-莱普尼克系统, - 罗斯勒的系统, - Lotka-Volterra系统, - 达芬的系统, - 范德波尔的振荡器, -伏打的系统- 陆氏系统, - 刘的系统, - Chua的系统, - 金融系统, - 3 细胞 CNN。 这些函数以数值方式计算描述混沌系统的分数阶非线性微分方程的解。 每个函数返回总模拟时间的状态轨迹(吸引器)。 更多详情请看书: Ivo Petras,分数阶非线性系统:建模、分析和仿真,Springer,系列:非线性物理科学,2011,ISBN 978-3-642-18100-9。 http://www.springer.com/engineering/control/book/978-3-
    • matlabpam代码-dsp-library:用于光通信的MATLABDSP函数库
      matlab pam代码 DSP库 该项目包含几种不同的功能,可将DSP算法应用于光通信。 这些功能适用于相干和非相干(PAM,DMT)光通信。 大多数功能是相互独立的。 因此,该代码中的功能可以轻松使用,并与其他DSP功能结合使用。 用法 功能列表以及简短说明在文件中。 输入和输出参数的描述在每个函数的标题中。 讯号 通常,输入(和输出)信号在第一维度上具有时间(例如,列向量),而第二维度用于一次管理多个信号(例如,不同的极化,不同的参数等)。 之所以选择这种约定,是因为MATLAB通过将列保留在内存的连续部分中来存储矩阵,因此,这种约定比其他方法(行向量)要快。 参数 大多数功能使用参数结构作为输入参数。 函数中使用的参数的描述通常在标头中,而coherent-dsp函数的默认参数在文件中。 参考 执照 此代码在下发布。
    • 有关多目标跟踪的PHD滤波的一些资料
      一些关于多目标跟踪的新的文献,主要是有关概率假设密度(PHD)的