8段数码管C语言,单片机控制4位8段数码管显示温度的程序谁会啊
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/**************************************************************************************
* 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段数码管显示温度的程序谁会啊相关推荐
- 单片机动态从00到99C语言,用51单片机控制 2位数码管动态显示 00 ~ 99
;用51单片机控制 2位数码管动态显示 00 ~ 99. ;从 00 开始显示,显示数字每隔一段时间加 1,一直到 99,然后回到 00. ;从 00 到 10 每隔 100ms 加 1: ;从 10 ...
- 单片机数码管从00到99C语言_用51单片机控制 2位数码管动态显示 00 ~ 99。
;用51单片机控制 2位数码管动态显示 00 ~ 99. ;从 00 开始显示,显示数字每隔一段时间加 1,一直到 99,然后回到 00. ;从 00 到 10 每隔 100ms 加 1: ;从 10 ...
- 89c52单片机控制两个步进电机正反转加减速(程序+仿真)
89c52单片机控制两个步进电机正反转加减速(程序+仿真) 先上图: 源代码: /*********************************************************** ...
- c语言控制数码管显示时间,单片机 控制 数码管显示
常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...
- stm32用库函数控制一位共阳数码管以及共阴数码管
一.数码管原理: 见上图,上图是一个数码管的内部示意图,它们的发光原理和普通发光二极管是一样的,所以可将数码管的亮段当成几个发光二极管.根据内部发光二极管的共连接端不同,可以分为共阳极接法和共阴极接法 ...
- 小项目:单片机控制脉搏心电测量仪 测量脉搏心跳 含程序 原理图及仿真文件
各位小伙伴大家好,考研的事总算告一段落了,最近有点难受去医院一查,呀,好像有点神经衰弱,干什么都有点力不从心,热心的护士小姐姐给我测量了体温查看健康码一气呵成,然后顺利进入了医院.在医生给我测量脉搏和 ...
- STM32 控制4位共阳数码管输出计数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yoie01/article/detai ...
- 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图
数码管显示是每一个单片机初学者都必须学的,而单片机驱动数码管的数字循环显示实验,又是单片机基础中的基础,同时也是学好C语言编程的关键,此实验在硬件上可以弄清楚单片机驱动原理和数码管的显示原理,在软件上 ...
- crc16校验c语言单片机实现,三种常用的CRC16校验算法的C51程序的优化
CRC校验又称为循环冗余校验,是数据通讯中常用的一种校验算法.它可以有效的判别出数据在传输过程中是否发生了错误,从而保障了传输的数据可靠性. CRC校验有多种方式,如:CRC8.CRC16.CRC32 ...
- 四位共阳极数码管显示函数_74LS164驱动4位共阳数码管代码
#include "reg52.h" #define u16 unsigned int #define u8 unsigned char sbit CLK=P2^0; sbit D ...
最新文章
- 进入Docker容器命令
- Tomcat 部署项目的三种方法
- ‘getCurrentWatermark()‘ in ‘Anonymous class derived from xxx
- Java 数字相关操作通用类 NumberUtils.java
- Eclipse 答疑:为什么 Eclipse 里面的鼠标光标变成了小黑方块?什么原因导致的?
- 在相册查看保存的图片
- python报表自动化系列 - Excel单元格(Cell)索引范围对应的所有单元格
- ul在Firefox和IE下的不同表现
- winrar解压器_今日软件 | 马冬梅下载器、微软OFFICE、安卓超级备份、安卓原生启动器、高颜值音乐播放器、WinRAR、雷鸟下载、动态壁纸...
- 海康工业相机USB接口连接Halcon21后,海康MVS客户端无法打开,如何解决
- Huffman-哈夫曼编码算法详解
- HTMl 实现用户的登录注册界面
- 暑期计算机数学培训心得体会,关于暑期培训心得体会三篇
- 家庭局域网文件共享,轻松互联手机与电脑
- 小米机器人 尘盒配件_小米机器人怎么取出尘盒
- 计算机实验进程管理与虚拟机,虚拟机VMware进程控制实验.docx
- 基于Layui自定义内容轮播插件
- 个人网站建设(装逼)指南
- 计算机网络与通信实验报告——HTTP协议分析
- 真心付出的一方失恋为什么痛,甚至厌世?
热门文章
- 用C语言实现FlappyBird
- python中while和for的运行顺序_详解python while 函数及while和for的区别
- springBoot学习笔记(6)——@Valid和@Validated的使用
- 霜降后,宝宝穿衣要做到三捂两不捂
- 在VS2017中添加WTL窗口
- 关乎未来40年企业生存,这些食品饮料巨头都在干这件事儿! | 商研局 Cool Business...
- Linux下使用clang-format格式化C++代码
- 1024程序员节,160元买400元图书专属优惠券,速来
- Unity 武器拖尾效果
- 史上最详[ZI]细[DUO]的wfuzz中文教程(一)——初识wfuzz