老师一枚,服务于学生,制作了电子时钟融合温度检测的系统。

首先在焊接式前一定要仿真,更要注意仿真引脚和实际引脚的不同。

个人中心里面有常用元器件实物引脚图和解释。

参考代码:

#include<reg52.h>#define uchar unsigned char
#define uint unsigned intsbit sounder=P3^7;
sbit qiehuan=P1^5;
sbit jia=P1^6;
sbit jian=P3^0;sbit DS=P3^6;
sbit LED1 = P3^4;
sbit LED2 = P3^5;
sbit LED3 = P1^2;
sbit LED4 = P1^4;
sbit anjian=P1^0;
uint temp;
uchar flag1;
uint a,b;
uchar d=0; // 切换标志位
uchar  hour0,minu0,sec0,hour1,minu1,sec1,h1,h2,m1,m2,s1,s2,k,s;
unsigned char code select[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};       //共阳极数码管
unsigned char code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,    //带小数点数字0x78,0x00,0x10};void DDDD(void);
void keyscan();
void init();
void delay(uchar z);
void display(uchar,uchar,uchar);
void sounde();
void delay1(unsigned int count);
void dsreset(void);
void tmpwritebyte(unsigned char dat);
void tmpchange(void);
void dis(unsigned int temp);
void AAAA(void);void main()
{
init();
while(1)
{       if(anjian==0)
{
delay(10);
while(anjian==0);
DDDD();
} keyscan();while(s==1)
{
keyscan();
display(hour1,minu1,sec1);
}
display(hour0,minu0,sec0);    }
}void init()
{
a=0;
b=0;s=0;
hour0=0;
minu0=0;
sec0=0;hour1=0;
minu1=0;
sec1=0;
TMOD=0x11;     TH1=(65536-50000)/256; //50ms
TL1=(65536-50000)%256;
EA=1;EX1=1;    ET1=1;IT1=1;PX1=1;TR1=1;
}
void ex1_int() interrupt 2
{
s++;
if(s==3)
s=0;
}
void timer1_int() interrupt 3 //T1
{
TH1=(65536-50000)/256;        //50ms
TL1=(65536-50000)%256;
if(s==2)
{
if(hour1==hour0 && minu0==minu1&&sec0==sec1)sounde();//蜂鸣器}
b++;
if(b==20)       //1s
{
b=0;
sec0++;
if(sec0==60)    //1m
{
sec0=0;
minu0++;
if(minu0==60)   //1h
{
minu0=0;
hour0++;
if(hour0==24)
hour0=0;
}
}
}
}void keyscan()        //按键扫描
{
if(s==0)
{
if(qiehuan==0){d++;if(d>3){d=0;}while(qiehuan==0);}if (jia==0){switch (d){case 1 : sec0++; if(sec0==60){sec0=0;}break;case 2 : minu0++;if( minu0==60){minu0=0;}break;case 3 : hour0++; if( hour0==24){hour0=0;}  break;}while(jia==0);}if (jian==0){switch (d){case 1 : sec0--; if(sec0==-1){sec0=59;}break;case 2 : minu0--;if( minu0==-1){minu0=59;}break;case 3 : hour0--;if( hour0==-1){hour0=23;}  break;}while(jian==0);}}if(s==1){ if(qiehuan==0){d++;if(d>3){d=0;}while(qiehuan==0);}if (jia==0){switch (d){case 1 : sec1++;if(sec1==60){sec1=0;}break;case 2 : minu1++;if( minu1==60){minu1=0;}break;case 3 : hour1++;if( hour1==24){hour1=0;}  break;}while(jia==0);}if (jian==0){switch (d){case 1 : sec1--; if(sec1==-1){sec1=59;}break;case 2 : minu1--;if( minu1==-1){minu1=59;}break;case 3 : hour1--;if( hour1==-1){hour1=23;}  break;}while(jian==0);}}}
void display(uchar hour,uchar minu,uchar sec)
{
h1=hour/10;
h2=hour%10;
m1=minu/10;
m2=minu%10;
s1=sec/10;
s2=sec%10;
P0=0x00;
P2=table[h1];
P0=select[7];
delay(1);
P0=0x00;
P2=table[h2];
P0=select[6];
delay(1);
P0=0x00;
P2=0xbf;
P0=select[5];
delay(1);
P0=0x00;
P2=table[m1];
P0=select[4];
delay(1);
P0=0x00;
P2=table[m2];
P0=select[3];
delay(1);
P0=0x00;
P2=0xbf;
P0=select[2];
delay(1);
P0=0x00;
P2=table[s1];
P0=select[1];
delay(1);
P0=0x00;
P2=table[s2];
P0=select[0];
delay(1);
}//蜂鸣器
void sounde()
{LED1=~LED1;sounder=~sounder; }void delay(uchar z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}void delay1(uint count)      //delay
{uint i;while(count){i=200;while(i>0)i--;count--;}
}
void dsreset(void)       //send reset and initialization command
{uint i;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;
}bit tmpreadbit(void)       //read a bit
{uint i;bit dat;DS=0;i++;          //i++ for delayDS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return (dat);
}uchar tmpread(void)   //read a byte date
{uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里}return(dat);
}void tmpwritebyte(uchar dat)   //write a byte to ds18b20
{uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)     //write 1{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;       //write 0i=8;while(i>0)i--;DS=1;i++;i++;}}
}void tmpchange(void)  //DS18B20 begin change
{dsreset();delay1(1);tmpwritebyte(0xcc);  // address all drivers on bustmpwritebyte(0x44);  //  initiates a single temperature conversion
}uint tmp()               //get the temperature
{float tt;uchar a,b;dsreset();delay1(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp<<=8;             //two byte  compose a int variabletemp=temp|a;tt=temp*0.0625;temp=tt*10+0.5;return temp;
}void dis(uint temp)            //显示程序
{uchar A1,A2,A2t,A3,i;A1=temp/100;A2t=temp%100;A2=A2t/10;A3=A2t%10;i=0;
while(i<20)
{i++;P0=0x00;P2=table[A1];P0=select[7];delay1(1);P0=0x00;P2=table1[A2];P0=select[6];delay1(1);P0=0x00;P2=table[A3];P0=select[5];delay1(1);}}void DDDD(void)
{  uchar a;do{ tmpchange();for(a=10;a>0;a--){   dis(tmp());}//高于***值蜂鸣器慢响并led1闪烁if(temp>=380)    //当温度超过38度(仅作试验用,实际可设为其他更高的值),蜂鸣器便会报警。{LED1=0;LED2=0;sounder=0;delay1(50);sounder=1;LED1=1;LED2=1;   }else{  if(temp>=320){LED1=0;sounder=0;delay1(100);sounder=1;LED1=1;}}//低于***值蜂鸣器慢响并led1闪烁if(temp<=230)  //当温度低于23度  慢响单闪烁{LED3=0;LED4=0;sounder=0;delay1(50);sounder=1;LED3=1;LED4=1;}else{      if(temp<=270)/低于27度  快响双闪烁{LED3=0;sounder=0;delay1(100);sounder=1;LED3=1;}}if(anjian == 0) { delay(10);while(anjian==0);break;}
}while(1);
}

参考原理图:

各位同学,你检索到我的文件了,请注意,这是共阳极数码管,请务必理解程序后再焊接。

八位一体共阳极数码管显示电子时钟+闹铃+温度检测相关推荐

  1. 八位一体共阴极数码管显示电子时钟+闹铃+温度检测

    老师一枚,服务于学生,制作了电子时钟融合温度检测的系统. 首先在焊接式前一定要仿真,更要注意仿真引脚和实际引脚的不同. 下面这个链接是常用元器件实物引脚图和解释. CSDNhttps://mp.csd ...

  2. 8051/2单片机基础 实现开关,驱动2位的共阳极数码管显示小数,驱动喇叭播放音乐

    1. 实现开关,开关2次后,LED闪烁4次  2. 实现驱动共阳极数码关显示 3.1 3. 驱动喇叭播放 ,dao,re,mi,fa,sao,la,xi C代码: /** * 8051 DEMO 2 ...

  3. 四位共阳极数码管显示函数_Verilog笔记

    github传送门(练习写的代码,约束文件,仿真文件) 文章目录 Vivado 基本流程 关于封装IP核和使用Block Design Verilog module / 模块 always块 组合逻辑 ...

  4. 四位共阳极数码管显示函数_数码管模块.doc

    数码管模块 数码管 1.概 述 数码管模块采用四位共阳极数码管,用于显示数字和少数特殊字符.可以在机器人项目中使用该模块,用于显示速度.时间.分数.温度.距离等传感器的值.同时,Makeblock提供 ...

  5. 共阴极和共阳极数码管显示的十六进制代码

    共阳极数码管 unsigned char LED7Code[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82,0xf8, 0x80, 0x90, 0x88, ...

  6. FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

    2019级电子科学与技术专业FPGA课程设计 报   告 2022  年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用ED ...

  7. 四位共阳极数码管显示函数_【项目8-任务10-小组13】利用四位数码管实现动态扫描显示...

    学习任务 1.四位数码管的电路结构与显示原理 (什么是位选.什么是段选.共阴与共阳的区别.显示4位数字,需要多少条口线?显示n位数字呢?) 2.Arduino直接连接四位数码管实现四位阿拉伯数字显示 ...

  8. 四位共阳极数码管显示函数_新手求助四位共阳数码管显示函数

    #include #include "DS1302.H" sbit K_S = P1^0;    //显示模式sbit K_M = P1^1;    //修改sbit K_I = ...

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

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

  10. 四位共阳极数码管显示函数_初学者,求助!!设计一个4位LED数码管动态扫描显示电路,用...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; ...

最新文章

  1. mysql 安装 se_mysql的安装过程
  2. X-UA-Compatible也无法解决的IE11兼容问题
  3. 大连理工大学c语言第三次上机作业答案,大连理工大学软件学院C语言上机第五六章课后题...
  4. Python基础知识实例讲解
  5. 异步请求积压可视化|如何 1 分钟内快速定位函数计算积压问题
  6. 《1万小时成功定律——解构成功》
  7. 计算机基础及msoffice应用好考吗,全国计算机等级考试考试一级WPS Office和MS Office有什么不同?那个好考?...
  8. 《Spark核心技术与高级应用》——3.2节构建Spark的开发环境
  9. Mongo DB教程及SQL与Mongo DB查询的映射
  10. 【机器学习实践】Kaggle 之 Face Verification Challenge练手
  11. objective-C nil,Nil,NULL 和NSNull的小结
  12. 【考研计算机网络】 冲刺笔记
  13. 在北京租房 舒舍的租客素质怎么样?
  14. 周易六十四卦——地风升卦
  15. Google 的免费云服务器的 SSH 管理
  16. 网易云音乐测试“云随机”播放功能 已注册产品功能相关专利
  17. DCM4CHE处理多帧图像
  18. gtx1070显卡 linux,Ubuntu 16.04下Nvidia 显卡驱动安装
  19. 母亲节到了,用Python给老妈写个祝福小程序~
  20. 三句话的原则-看人长处-帮人难处-记人好处

热门文章

  1. TypeScript
  2. WNMP项目环境部署
  3. AI-Tensorflow—Windows7安装TensorFlow方法
  4. 香橙派 One Plus 像单片机一样硬件寄存器 控制GPIO 点灯
  5. 中国细菌学试验市场趋势报告、技术动态创新及市场预测
  6. python数据分析——简单且有用的代码
  7. 用FAI制作debian自动安装盘
  8. iOS界面--Tom猫的实现
  9. 服务器被劫持怎么修复不了,电脑DNS被劫持怎么修复?电脑dns被劫持的完美解决方法...
  10. CTF Web_php_unserialize 详细解题过程