该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/**************************************************************************************

* DS18B20温度传感器实验 *

实现现象:下载程序后,在温度传感器接口处,按照丝印方向插好温度传感器,数码管就会显示

检测的温度值,

注意事项:

***************************************************************************************/

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

#include"temp.h"

typedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

char num=0;

u8 DisplayData[8];

u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/*******************************************************************************

* 函 数 名 : delay

* 函数功能 : 延时函数,i=1时,大约延时10us

*******************************************************************************/

void delay(u16 i)

{

while(i--);

}

/*******************************************************************************

* 函 数 名 : datapros()

* 函数功能 : 温度读取处理转换函数

* 输 入 : temp

* 输 出 : 无

*******************************************************************************/

void datapros(int temp)

{

float tp;

if(temp< 0) //当温度值为负数

{

DisplayData[0] = 0x40; // -

//因为读取的温度是实际温度的补码,所以减1,再取反求出原码

temp=temp-1;

temp=~temp;

tp=temp;

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点

//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就

//算加上0.5,还是在小数点后面。

}

else

{

DisplayData[0] = 0x00;

tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量

//如果温度是正的那么,那么正数的原码就是补码它本身

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点

//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就

//算加上0.5,还是在小数点后面。

}

DisplayData[1] = smgduan[temp / 10000];

DisplayData[2] = smgduan[temp % 10000 / 1000];

DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80;

DisplayData[4] = smgduan[temp % 100 / 10];

DisplayData[5] = smgduan[temp % 10];

}

/*******************************************************************************

* 函数名 :DigDisplay()

* 函数功能 :数码管显示函数

* 输入 : 无

* 输出 : 无

*******************************************************************************/

void DigDisplay()

{

u8 i;

for(i=0;i<6;i++)

{

switch(i) //位选,选择点亮的数码管,

{

case(0):

LSA=0;LSB=0;LSC=0; break;//显示第0位

case(1):

LSA=1;LSB=0;LSC=0; break;//显示第1位

case(2):

LSA=0;LSB=1;LSC=0; break;//显示第2位

case(3):

LSA=1;LSB=1;LSC=0; break;//显示第3位

case(4):

LSA=0;LSB=0;LSC=1; break;//显示第4位

case(5):

LSA=1;LSB=0;LSC=1; break;//显示第5位

}

P0=DisplayData[5-i];//发送数据

delay(100); //间隔一段时间扫描

P0=0x00;//消隐

}

}

/*******************************************************************************

* 函 数 名 : main

* 函数功能 : 主函数

* 输 入 : 无

* 输 出 : 无

*******************************************************************************/

void main()

{

while(1)

{

datapros(Ds18b20ReadTemp()); //数据处理函数

DigDisplay();//数码管显示函数

}

}

主程序

8段数码管C语言,单片机控制4位8段数码管显示温度的程序谁会啊相关推荐

  1. 单片机动态从00到99C语言,用51单片机控制 2位数码管动态显示 00 ~ 99

    ;用51单片机控制 2位数码管动态显示 00 ~ 99. ;从 00 开始显示,显示数字每隔一段时间加 1,一直到 99,然后回到 00. ;从 00 到 10 每隔 100ms 加 1: ;从 10 ...

  2. 单片机数码管从00到99C语言_用51单片机控制 2位数码管动态显示 00 ~ 99。

    ;用51单片机控制 2位数码管动态显示 00 ~ 99. ;从 00 开始显示,显示数字每隔一段时间加 1,一直到 99,然后回到 00. ;从 00 到 10 每隔 100ms 加 1: ;从 10 ...

  3. 89c52单片机控制两个步进电机正反转加减速(程序+仿真)

    89c52单片机控制两个步进电机正反转加减速(程序+仿真) 先上图: 源代码: /*********************************************************** ...

  4. c语言控制数码管显示时间,单片机 控制 数码管显示

    常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...

  5. stm32用库函数控制一位共阳数码管以及共阴数码管

    一.数码管原理: 见上图,上图是一个数码管的内部示意图,它们的发光原理和普通发光二极管是一样的,所以可将数码管的亮段当成几个发光二极管.根据内部发光二极管的共连接端不同,可以分为共阳极接法和共阴极接法 ...

  6. 小项目:单片机控制脉搏心电测量仪 测量脉搏心跳 含程序 原理图及仿真文件

    各位小伙伴大家好,考研的事总算告一段落了,最近有点难受去医院一查,呀,好像有点神经衰弱,干什么都有点力不从心,热心的护士小姐姐给我测量了体温查看健康码一气呵成,然后顺利进入了医院.在医生给我测量脉搏和 ...

  7. STM32 控制4位共阳数码管输出计数

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yoie01/article/detai ...

  8. 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图

    数码管显示是每一个单片机初学者都必须学的,而单片机驱动数码管的数字循环显示实验,又是单片机基础中的基础,同时也是学好C语言编程的关键,此实验在硬件上可以弄清楚单片机驱动原理和数码管的显示原理,在软件上 ...

  9. crc16校验c语言单片机实现,三种常用的CRC16校验算法的C51程序的优化

    CRC校验又称为循环冗余校验,是数据通讯中常用的一种校验算法.它可以有效的判别出数据在传输过程中是否发生了错误,从而保障了传输的数据可靠性. CRC校验有多种方式,如:CRC8.CRC16.CRC32 ...

  10. 四位共阳极数码管显示函数_74LS164驱动4位共阳数码管代码

    #include "reg52.h" #define u16 unsigned int #define u8 unsigned char sbit CLK=P2^0; sbit D ...

最新文章

  1. 进入Docker容器命令
  2. Tomcat 部署项目的三种方法
  3. ‘getCurrentWatermark()‘ in ‘Anonymous class derived from xxx
  4. Java 数字相关操作通用类 NumberUtils.java
  5. Eclipse 答疑:为什么 Eclipse 里面的鼠标光标变成了小黑方块?什么原因导致的?
  6. 在相册查看保存的图片
  7. python报表自动化系列 - Excel单元格(Cell)索引范围对应的所有单元格
  8. ul在Firefox和IE下的不同表现
  9. winrar解压器_今日软件 | 马冬梅下载器、微软OFFICE、安卓超级备份、安卓原生启动器、高颜值音乐播放器、WinRAR、雷鸟下载、动态壁纸...
  10. 海康工业相机USB接口连接Halcon21后,海康MVS客户端无法打开,如何解决
  11. Huffman-哈夫曼编码算法详解
  12. HTMl 实现用户的登录注册界面
  13. 暑期计算机数学培训心得体会,关于暑期培训心得体会三篇
  14. 家庭局域网文件共享,轻松互联手机与电脑
  15. 小米机器人 尘盒配件_小米机器人怎么取出尘盒
  16. 计算机实验进程管理与虚拟机,虚拟机VMware进程控制实验.docx
  17. 基于Layui自定义内容轮播插件
  18. 个人网站建设(装逼)指南
  19. 计算机网络与通信实验报告——HTTP协议分析
  20. 真心付出的一方失恋为什么痛,甚至厌世?

热门文章

  1. 用C语言实现FlappyBird
  2. python中while和for的运行顺序_详解python while 函数及while和for的区别
  3. springBoot学习笔记(6)——@Valid和@Validated的使用
  4. 霜降后,宝宝穿衣要做到三捂两不捂
  5. 在VS2017中添加WTL窗口
  6. 关乎未来40年企业生存,这些食品饮料巨头都在干这件事儿! | 商研局 Cool Business...
  7. Linux下使用clang-format格式化C++代码
  8. 1024程序员节,160元买400元图书专属优惠券,速来
  9. Unity 武器拖尾效果
  10. 史上最详[ZI]细[DUO]的wfuzz中文教程(一)——初识wfuzz