一、简介
此电路由AT89C51最小电路板和LCD12864显示模块、DS18B20温度模块、DS1302时钟模块组成。
主要的功能是:显示实时的时间和当前的温度。
二、运行效果
三、部分代码
/*想要更多项目私wo!!!*/
#include #include #include #include unsigned char j[8]; sbit KEY1=P3^2; sbit KEY2=P3^3; sbit KEY3=P3^4; sbit LED1=P3^5; sbit LED2=P3^6; sbit LED3=P3^7; uchar time0_count; //time0¼ÆÊýÆ÷ void delay10(void) { unsigned char i,j; for(i=0;i<255;i++) for(j=0;j<200;j++); } unsigned char conver(unsigned char a,unsigned char b,unsigned char c) { if((a&0x0f)==0x0a) a=a+6; if(a==b) a=c; return a; } main() { bit flag_2=1; bit flag_3=1; bit flag_4=1; int i; char a; unsigned char choose=0x01; InitLCD(); //³õʼ»¯LCD12864 for(i=0;i<13;i++) { ShowNumber(6,i*8+16,i+14); } Show32x32(0,0,0); ShowChina(4,0,7); ShowChina(4,16,8); ShowChina(4,32,9); ShowChina(4,48,10); ShowNumber(4,64,10); //ÏÔʾζȸßλ read_serial(j); //¶ÁÈ¡DS1302µÄʱ¼ä ShowNumber(2,32,j[2]>>4&0x03); ShowNumber(2,40, j[2]&0x0f); ShowChina(2,48,3); ShowNumber(2,64,j[1]>>4&0x07); ShowNumber(2,72, j[1]&0x0f); ShowChina(2,80,4); ShowNumber(2,96,j[0]>>4&0x07); ShowNumber(2,104, j[0]&0x0f); ShowChina(2,112,5); ShowNumber(0,32,j[6]>>4&0x0f); ShowNumber(0,40, j[6]&0x0f); ShowChina(0,48,0); ShowNumber(0,64,j[4]>>4&0x01); ShowNumber(0,72, j[4]&0x0f); ShowChina(0,80,1); ShowNumber(0,96,j[3]>>4&0x03); ShowNumber(0,104, j[3]&0x0f); ShowChina(0,112,2); ShowChina(4,104,6); ShowNumber(4,120,j[5]-1&0x07); while(1) { if(flag_2==1) read_serial(j); //¶ÁÈ¡DS1302µÄʱ¼ä else write_date_time(j); a=Read_Temperature(); //¶ÁÈ¡DS18B20µÄÎÂ¶È if(a<0) //´¦ÀíζÈÕý¸º { a = (-1)*a; // È¡²¹ ShowNumber(4,72,11); //ÏÔʾζÈÕý¸º } else { ShowNumber(4,72,12); //ÏÔʾζÈÕý¸º } ShowNumber(4,80,a/100); //ÏÔʾζȸßλ ShowNumber(4,88,a/10%10); //ÏÔʾζÈÖÐλ ShowNumber(4,96,a%10); //ÏÔʾζȵÍλ LED3=1;LED2=0;LED1=1; if(a>40){LED3=0;LED2=1;LED1=1;} if(a<30){LED3=1;LED2=1;LED1=0;} if(KEY1==0) //°´¼ü1--´¦ÀíÉ趨ʱ¼äºÍ·µ»Ø { delay10(); if(KEY1==1) { delay10(); flag_2=~flag_2; } } if(KEY2==0) //°´¼ü2--´¦ÀíÑ¡ÔñÉ趨ʱ¼äµÄÏîÄ¿ { delay10(); if(KEY2==1) { delay10(); choose++; if(choose==8) choose=0x01; } } if(KEY3==0) //°´¼ü3--´¦ÀíÉ趨ʱ¼äºÍ·µ»Ø { delay10(); if(KEY3==1) { delay10(); switch(choose) { case 1: j[6]++; j[6]=conver(j[6],0xa0,0x00);break;//Äê case 2: j[5]++; j[5]=conver(j[5],0x07,0x00);break;//ÖÜ case 3: j[4]++; j[4]=conver(j[4],0x13,0x01);break;//Ô case 4: j[3]++; j[3]=conver(j[3],0x32,0x01);break;//ÈÕ case 5: j[2]++; j[2]=conver(j[2],0x24,0x00);break;//ʱ case 6: j[1]++; j[1]=conver(j[1],0x60,0x00);break;//·Ö case 7: j[0]++; j[0]=conver(j[0],0x60,0x00);break;//Ãë } } } if(flag_2==1) read_serial(j); //¶ÁÈ¡DS1302µÄʱ¼ä else write_date_time(j); //ʱ·ÖÃë ShowNumber(2,32,j[2]>>4&0x03); ShowNumber(2,40, j[2]&0x0f); ShowChina(2,48,3); ShowNumber(2,64,j[1]>>4&0x07); ShowNumber(2,72, j[1]&0x0f); ShowChina(2,80,4); ShowNumber(2,96,j[0]>>4&0x07); ShowNumber(2,104, j[0]&0x0f); ShowChina(2,112,5); // ÄêÔÂÈÕ ShowNumber(0,32,j[6]>>4&0x0f); ShowNumber(0,40, j[6]&0x0f); ShowChina(0,48,0); ShowNumber(0,64,j[4]>>4&0x01); ShowNumber(0,72, j[4]&0x0f); ShowChina(0,80,1); ShowNumber(0,96,j[3]>>4&0x03); ShowNumber(0,104, j[3]&0x0f); ShowChina(0,112,2); ShowChina(4,104,6); ShowNumber(4,120,j[5]-1&0x07); } }
上一篇:基于单片机的智能计算器(AT89C51、LCD1602、矩阵键盘)
下一篇:单片机测温系统(AT89C51、DS18B20温度传感器、LCD1602)
推荐阅读最新更新时间:2024-11-07 12:05
设计资源 培训 开发板 精华推荐
- LT3756EMSE 94% 效率 30W 白光 LED 前照灯驱动器的典型应用电路
- 使用 Analog Devices 的 REF192 的参考设计
- EVAL-AD7689EDZ,用于 20 引脚 PulSAR AD7689 16 位 PulSAR 模数转换器系列的评估板
- LT6656BCDC-2.5、2.5V 精密电流和升压电压基准的典型应用
- NCP170AXV180GEVB:超低 IQ 150mA CMOS LDO 稳压器评估板
- LT4356-1/LT4356-2 浪涌抑制器的典型应用
- A8586KLJTR-T-1 宽输入电压、可调频率、3.5A 降压稳压器的典型应用电路
- 【实物已验证】精简版STM32F103RE开发板
- MC34PF3000A7EP PMIC 解决方案电源管理的典型应用
- stc89c5*兼IP5306计算器
- ADI有奖下载活动之6 ADI基于IEC61850的智能电子设备(IED)系统解决方案
- 有奖直播:AC/DC 在 ATX 及 Server 电源解決方案及应用 报名开始啦!
- 手印签到,共同见证 TI 中国大学计划20周年
- 答题抽奖:Mentor Tessent Automotive相关测试解决方案(奖品池还剩不少奖品哟)
- 极简主义,足不出户,看东芝在线展会,安心答题送好礼!
- 领跑2021,你准备好了么?领取下载积分,点燃学习小宇宙!
- 【6本精选 ADI 电子书】免费下载 ing
- 【芯币兑换】活动一:用社区芯币兑换51开发板PCB板!
- 三人行必有我师——EEworld网友原创教程隆重登场!
- 泰克有奖看视频 深入浅出剖析高速信号的抖动和眼图