|
电机蜂鸣器12864显示温度和报警proteus仿真原理图:
单片机源程序:
- #include<reg51.h>
- #include "key.h"
- #include "12864drive.h"
- sbit k1=P1^2; //加
- sbit k2=P1^3; //确认
- sbit k3=P1^5; //键
- sbit k4=P1^7; //模拟
- unsigned char flag_add;
- unsigned char flag_sure;
- unsigned char flag_subb;
- unsigned char flag_test;
- static unsigned char sure_num;
- unsigned char flag;
- int re_ge=0; //电阻个位
- int re_shi=0;
- int re_bai=5;
-
- unsigned int re_adds; //个位加 十位加 百位之和
- void delay() //延时函数
- {
- unsigned int i=5000;
- while(i>0)i--;
- }
- void key_sm()//键盘检测函数
- {
- if(k1==0)
- {
-
- delay();
- if(k1==0)
- {
- while(!k1); //松手检测
- flag_add=1;
- return;
- }
-
- }
- if(k2==0)
- {
-
- delay();
- if(k2==0)
- {
-
- while(!k2);
- flag_sure=1;
- return;
- }
-
- }
- if(k3==0)
- {
-
- delay();
- if(k3==0)
- {
-
- while(!k3);
- flag_subb=1;
- return;
- }
-
- }
- if(k4==0) //模拟按键没有松手检测
- {
- flag_test=1;
- return;
-
- }
- }
- void keydo() //键盘处理函数
- {
- key_sm(); //键盘检测
-
- if(flag_sure==1) //当确认键被按下
- {
- sure_num=sure_num+1;
- flag_sure=0; //必须清零不然会一直执行
- }
-
- if(sure_num==0)
- {
- Displayen(1,0,16,re_bai,0); //第一页 第一排 第二列 显示电阻的百位 最后的0代表不反显
- Displayen(1,0,24,re_shi,0);////第一页 第一排 第三列 显示电阻的百位 最后的0代表不反显
- Displayen(1,0,32,re_ge,0);
-
- }else if(sure_num==1) //第一次确认键被按下
- {
- Displayen(1,0,16,re_bai,0);
- Displayen(1,0,24,re_shi,0);
- Displayen(1,0,32,re_ge,1); //第一页 第一排 第三列 显示电阻的百位 最后的1代表反显
- flag=1;
-
-
- }else if(sure_num==2) //第二次确认键被按下
- {
- Displayen(1,0,16,re_bai,0);
- Displayen(1,0,24,re_shi,1);
- Displayen(1,0,32,re_ge,0);
- flag=2;
-
- }else if(sure_num==3)
- {
- Displayen(1,0,16,re_bai,1);
- Displayen(1,0,24,re_shi,0);
- Displayen(1,0,32,re_ge,0);
- flag=3;
-
- }else if(sure_num==4) //第四次确认键被按下
- {
- sure_num=0;
- flag=4;
-
- }
-
- if( flag==1) //第一次确认键被按下
- {
-
- if((flag_add==1)&&(flag==1)) //如果按下的的是加
- {
- flag_add=0;
- re_ge=re_ge+1;
-
- }
-
- if((flag_subb==1)&&(flag==1)) //如果按下的的是减
- {
- flag_subb=0;
- re_ge=re_ge-1;
-
- }
- if(re_ge>9)
- {
- re_ge=0;
- }
- if(re_ge<0)
- {
- re_ge=9;
- }
-
- }
-
- if( flag==2)
- {
-
- if((flag_add==1)&&(flag==2))
- {
- flag_add=0;
- re_shi=re_shi+1;
-
- }
-
- if((flag_subb==1)&&(flag==2))
- {
- flag_subb=0;
- re_shi=re_shi-1;
-
- }
- if(re_shi>9)
- {
- re_shi=0;
- }
- if(re_shi<0)
- {
- re_shi=9;
- }
-
- }
-
- if( flag==3)
- {
-
- if((flag_add==1)&&(flag==3))
- {
- flag_add=0;
- re_bai=re_bai+1;
-
- }
-
- if((flag_subb==1)&&(flag==3))
- {
- flag_subb=0;
- re_bai=re_bai-1;
-
- }
- if(re_bai>9)
- {
- re_bai=0;
- }
- if(re_bai<0)
- {
- re_bai=9;
- }
-
- }
-
-
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
仿真工程文件及源码51hei提供下载:
总的.rar
(220.72 KB, 下载次数: 72)
|
|