历史上的今天
返回首页

历史上的今天

今天是:2025年01月04日(星期六)

2021年01月04日 | 51单片机温度计2.0版ds18b20+0.96寸OLED IIC显示

2021-01-04 来源:51hei


51单片机温度计LCD1602显示成功,于是又挑战了OLED显示

main.c


#include"oled.h"

#include"ds18b20_1.h"


void Timer0Init(void);

//void Gao_Wen(void);

//void GaoDiInit(void);                     


sbit Deng=P1^0;                           //LED灯

sbit FengMing=P1^1;                       //蜂鸣器

sbit GD=P3^0;                             //两个功能:高限温减小,关闭LED灯

sbit GF=P3^1;                             //两个功能:低限温增加,关闭蜂鸣器

sbit GW=P3^2;                             //高限温增加

sbit DW=P3^3;                             //低限温减小


//unsigned char GaoWen_Y[]={"GW:"};         //高限温显示

//unsigned char DiWen_Y[]={"DW:"};          //低限温显示


int GaoWen=40;                  //高限温

int DiWen=-20;                  //低限温

char flag=0;                    //一秒标志位

char b=0;                       //定时器内部标志位;



/*******************************主程序区域********************************/



int main()

{

        bit ack;

        bit k=1;                      //决定超出限温后,关闭灯和蜂鸣器后不再响,而低于限温后再次超出限温后,依然能响标志位;

        int Zhen=0,Xiao=0;

        unsigned char temp[10];

        char len=0;

        int wenDu=0;                  //接收温度

//        LCD_Init();

        Deng=0;                   //LCD初始化

        OLED_Init();

        Start18B20();                 //温度传感器初始化

        Timer0Init();                 //T0定时器初始化

        Delay10ms();


//        LCD_WeiZhi(1,0);

//        LCD_XianShi(GaoWen_Y);

//        LCD_WeiZhi(1,9);

//        LCD_XianShi(DiWen_Y);

//        GaoDiInit();

        OLED_ShowChinese(0,0,10,16);

        OLED_ShowChinese(18,0,13,16);

        OLED_ShowChar(36,0,':',16);

       

        OLED_ShowChinese(0,2,8,16);

        OLED_ShowChinese(18,2,10,16);

        OLED_ShowChinese(36,2,11,16);

        OLED_ShowChinese(54,2,12,16);

        OLED_ShowChar(70,2,':',16);

       

        OLED_ShowChinese(0,4,9,16);

        OLED_ShowChinese(18,4,10,16);

        OLED_ShowChinese(36,4,11,16);

        OLED_ShowChinese(54,4,12,16);

        OLED_ShowChar(70,4,':',16);

//        OLED_ShowString(0,2,"GW:",16);

//        OLED_ShowString(64,2,"DW:",16);

        OLED_Num(78,2,GaoWen,3,16);

        OLED_Num(78,4,DiWen,3,16);

       

        while(1)

        {


                if(flag==1)                 //1秒刷新温度

                {

                        flag=0;

                        ack=Read18B20(&wenDu);

                  if(ack)

                        {

                                Zhen=wenDu>>4;

                                Xiao=wenDu&0x0f;

                                len=OLED_Xian_Zheng(Zhen,temp);

                                temp[len++]='.';

                                Xiao=(Xiao*100)*0.0625;

                                temp[len++]=Xiao/10+'0';

//                                temp[len++]=Xiao%10+'0';

                                while(len<5)

                                {

                                        temp[len++]=' ';

                                }

                                temp[len]='';

//                                LCD_WeiZhi(0,0);

//                                LCD_XianShi(temp);

                                OLED_ShowString(44,0,temp,16);

                        }

                        Start18B20();

                }

                OLED_Num(78,2,GaoWen,3,16);

                OLED_Num(78,4,DiWen,3,16);

                if((Zhen>=GaoWen||Zhen<=DiWen)&&k)

                {

                        Deng=1;

                        FengMing=0;       

                }


                if(Zhen>DiWen&&Zhen                {

                        Deng=0;

                        FengMing=1;

                        k=1;

                }

                if(GD==0)

                {

                        Delay10ms();

                        if(GD==0)

                        {

                                if(Deng==0)

                                {

                                        GaoWen--;

//                                        Delay400ms();

//                                        GaoDiInit();

//                                        OLED_Num(20,2,GaoWen,3,16);

                                }

                                else

                                {

//                                        Delay400ms();

                                        Deng=0;       

                                        k=0;

                                }

                        }                                       

推荐阅读

史海拾趣

ETERNA公司的发展小趣事

除了在制表业取得显著成就外,ETERNA还在生物技术领域进行了积极探索。公司利用专有的非病毒、非DNA方法,使用mRNA进行细胞重编程研究。这一技术旨在通过表达特定的蛋白质来逆转细胞的老化过程,实现“倒转时钟”的效果。虽然ETERNA在mRNA领域的具体成果尚未对外公布,但其在该领域的探索精神和技术实力已经引起了业界的广泛关注。

骅讯(Cmedia)公司的发展小趣事

随着技术的不断发展,骅讯公司进一步扩大了其业务范围,成功开发了PC主板AC97。这一成果是英特尔高清晰度音频应用的重要发展,标志着骅讯在音频技术领域的进一步突破。通过AC97的开发,骅讯进一步巩固了其在音频芯片设计领域的领先地位。

Active-Semi公司的发展小趣事

进入21世纪后,随着USB技术的普及,骅讯公司迅速抓住市场机遇,进军USB音频业务。凭借其在音频技术领域的深厚积累,骅讯成功开发出多款USB音频产品,并在市场上取得了良好的反响。这一举措不仅拓展了骅讯的业务范围,也为其在音频领域的持续发展奠定了坚实的基础。

AMERICASEMI [America Semiconductor, LLC]公司的发展小趣事

面对日益严峻的环境问题和资源压力,AMERICASEMI积极响应可持续发展号召,推动绿色生产和技术创新。公司采用环保材料和节能技术,降低生产过程中的能耗和排放。同时,AMERICASEMI还关注未来技术的发展趋势,加大在人工智能、物联网等领域的研发投入,为公司的未来发展奠定坚实的基础。

这五个故事展示了AMERICASEMI在电子行业中的发展历程和取得的成就。从创立初期的艰难起步到如今的行业佼佼者,AMERICASEMI凭借技术创新、市场拓展、质量管理等方面的努力,不断推动自身的发展壮大。未来,随着电子行业的持续发展和技术的不断进步,AMERICASEMI有望继续保持领先地位,为行业的发展做出更大的贡献。

Catalyst公司的发展小趣事

为了进一步扩大市场份额,Catalyst公司积极实施国际化战略。公司通过与国外知名企业的合作与交流,引进先进的技术和管理经验,不断提升自身的竞争力。同时,Catalyst还积极参加国际电子展会和论坛,展示公司的最新产品和技术成果,吸引了众多国际客户的关注。通过国际化战略的拓展,Catalyst成功打开了海外市场的大门,为公司的长远发展奠定了坚实的基础。

FCI / Amphenol公司的发展小趣事

1997年,Amphenol公司经历了一次重要的转折点。当时,公司被KKR(一家具有传奇色彩的美国纽约的私人股权投资公司)以杠杆收购的方式收购。KKR的收购为Amphenol公司注入了新的活力,公司开始进行一系列的战略调整和业务转型。在KKR的助力下,Amphenol公司不仅保留了大部分现有的管理团队,还引入了更大的财务杠杆,使得公司能够更加灵活地应对市场变化和挑战。这一收购和转型不仅为Amphenol公司带来了新的发展机遇,也为其在全球连接器市场上的地位奠定了更加坚实的基础。

问答坊 | AI 解惑

可以查 各种芯片资料 的小工具

本帖最后由 paulhyde 于 2014-9-15 09:19 编辑 喜欢的下 下完回个贴呀!  …

查看全部问答>

触摸屏检测时中断截取不到的原因,高手进来看看

问题: 硬件:EPDZ3338+触摸屏(层电阻阻值在5-6K) 芯片集成了触摸屏驱动,在检测的时候,只要设定触摸屏检测标志位就可打开触摸屏检测有无按下,按下的时候会产生中断,通过这个中断A/D转化实现其他的功能,现在就是中断出不来,不管怎么按下啊 ...…

查看全部问答>

请问EVC中怎么禁止一个不全屏的对话框被点住标题栏拖动?

如题,现需要做一个在屏幕右上角的小对话框,必须有标题栏,要求不能被拖动标题栏改变位置,但也不能改变大小,所以不能用全屏的方法来限制拖动。 尝试用操作NCLBUTTONDOWN的消息在EVC中好像行不通。 请高手指点,谢谢!!…

查看全部问答>

申请免费试用LM3S8962 评估套件

申请免费试用LM3S8962 评估套件…

查看全部问答>

高手请进,USART配置问题

STM32F103的串口2配置/******************************************************************************** Function Name  : RCC_Configuration* Description    : Configures  ...…

查看全部问答>

参加全国比赛,方向是电源类。对模块的供电电源设计存在些问题,想请教下各位高手

本帖最后由 paulhyde 于 2014-9-15 09:11 编辑 由于本人参加此次全国大学生电子电路设计大赛,方向是电源类。由于电源类的 题目中,不允许使用现有电源,只给220V的交流电。其他的电压都需要自己做。 例如微处理器及显示模块的供电,驱动电路等 ...…

查看全部问答>

20几类430单片机的datasheet(整理硬盘看到的,各取所需吧)

                           [ 本帖最后由 huang91 于 2012-1-28 19:31 编辑 ]…

查看全部问答>

spwm超级无敌stm32步进电机控制教程

本帖最后由 huo_hu 于 2014-3-10 14:00 编辑 本教程介绍步进电机驱动和细分的工作原理,以及stm32103为主控芯片制作的一套自平衡的两轮车系统,附带原理图pcb图和源代码,有兴趣的同学一起来吧.本系统还有一些小问题,不当之处希望得到大家的指正. & ...…

查看全部问答>

想了解一个程序是如何从源代码到编译连接然后运行的吗?请看《深入理解计算机系统?

         找工作之前认真把《深入理解计算机系统》看了一遍,看完最大的收获是理解了一个程序如何从源代码,经过编译链接,变成正在运行的程序。每次面试的时候把程序地址空间一讲,佯装自己专业基础扎实,硬是把面 ...…

查看全部问答>