找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5382|回复: 0
收起左侧

电机蜂鸣器12864显示温度和报警 keil源码和proteus仿真

[复制链接]
ID:188142 发表于 2017-5-3 15:43 | 显示全部楼层 |阅读模式
电机蜂鸣器12864显示温度和报警proteus仿真原理图: 0.png 0.png 0.png

单片机源程序:
  1. #include<reg51.h>
  2. #include "key.h"
  3. #include "12864drive.h"
  4. sbit k1=P1^2; //加
  5. sbit k2=P1^3;  //确认
  6. sbit k3=P1^5;  //键
  7. sbit k4=P1^7;                //模拟
  8. unsigned char flag_add;
  9. unsigned char flag_sure;
  10. unsigned char flag_subb;
  11. unsigned char flag_test;
  12. static unsigned char sure_num;
  13. unsigned char flag;

  14. int re_ge=0; //电阻个位
  15. int re_shi=0;       
  16. int re_bai=5;

  17. unsigned int re_adds; //个位加 十位加 百位之和



  18. void delay() //延时函数
  19. {
  20.                 unsigned int i=5000;
  21.                 while(i>0)i--;
  22. }

  23. void key_sm()//键盘检测函数
  24. {
  25.         if(k1==0)
  26.         {
  27.        
  28.                 delay();
  29.                 if(k1==0)
  30.                 {

  31.                         while(!k1); //松手检测
  32.                                 flag_add=1;
  33.                         return;
  34.                 }
  35.        
  36.         }
  37.                 if(k2==0)
  38.         {
  39.        
  40.                 delay();
  41.                 if(k2==0)
  42.                 {
  43.                        
  44.                         while(!k2);
  45.                                 flag_sure=1;
  46.                         return;
  47.                 }
  48.        
  49.         }
  50.                 if(k3==0)
  51.         {
  52.        
  53.                 delay();
  54.                 if(k3==0)
  55.                 {
  56.                        
  57.                         while(!k3);
  58.                                 flag_subb=1;
  59.                         return;
  60.                 }
  61.        
  62.         }
  63.                 if(k4==0) //模拟按键没有松手检测
  64.         {
  65.                         flag_test=1;
  66.                         return;
  67.        
  68.         }
  69. }

  70. void keydo() //键盘处理函数
  71. {
  72.         key_sm();    //键盘检测
  73.        
  74.         if(flag_sure==1) //当确认键被按下
  75.         {
  76.                 sure_num=sure_num+1;
  77.                 flag_sure=0;                //必须清零不然会一直执行
  78.         }
  79.        
  80.         if(sure_num==0)
  81.         {
  82.                                 Displayen(1,0,16,re_bai,0); //第一页 第一排 第二列 显示电阻的百位 最后的0代表不反显
  83.                                 Displayen(1,0,24,re_shi,0);////第一页 第一排 第三列 显示电阻的百位 最后的0代表不反显
  84.                                 Displayen(1,0,32,re_ge,0);
  85.                        
  86.         }else if(sure_num==1)  //第一次确认键被按下
  87.         {
  88.                                 Displayen(1,0,16,re_bai,0);
  89.                                 Displayen(1,0,24,re_shi,0);
  90.                                 Displayen(1,0,32,re_ge,1);        //第一页 第一排 第三列 显示电阻的百位 最后的1代表反显
  91.                 flag=1;
  92.                
  93.        
  94.         }else if(sure_num==2) //第二次确认键被按下
  95.         {
  96.                                 Displayen(1,0,16,re_bai,0);
  97.                                 Displayen(1,0,24,re_shi,1);
  98.                                 Displayen(1,0,32,re_ge,0);
  99.                 flag=2;
  100.        
  101.         }else if(sure_num==3)
  102.         {
  103.                                 Displayen(1,0,16,re_bai,1);
  104.                                 Displayen(1,0,24,re_shi,0);
  105.                                 Displayen(1,0,32,re_ge,0);
  106.                         flag=3;
  107.        
  108.         }else if(sure_num==4) //第四次确认键被按下
  109.         {
  110.                                 sure_num=0;
  111.                         flag=4;
  112.        
  113.         }
  114.        
  115.         if( flag==1) //第一次确认键被按下
  116.         {
  117.                        
  118.                         if((flag_add==1)&&(flag==1)) //如果按下的的是加
  119.                         {
  120.                                         flag_add=0;
  121.                                         re_ge=re_ge+1;
  122.                        
  123.                         }
  124.                        
  125.                         if((flag_subb==1)&&(flag==1)) //如果按下的的是减
  126.                         {
  127.                                         flag_subb=0;
  128.                                         re_ge=re_ge-1;
  129.                        
  130.                         }
  131.                         if(re_ge>9)
  132.                         {
  133.                                 re_ge=0;
  134.                         }
  135.                         if(re_ge<0)
  136.                         {
  137.                                 re_ge=9;
  138.                         }
  139.                        
  140.         }
  141.        
  142.                 if( flag==2)
  143.         {
  144.                        
  145.                         if((flag_add==1)&&(flag==2))
  146.                         {
  147.                                         flag_add=0;
  148.                                         re_shi=re_shi+1;
  149.                        
  150.                         }
  151.                        
  152.                         if((flag_subb==1)&&(flag==2))
  153.                         {
  154.                                         flag_subb=0;
  155.                                         re_shi=re_shi-1;
  156.                        
  157.                         }
  158.                         if(re_shi>9)
  159.                         {
  160.                                 re_shi=0;
  161.                         }
  162.                         if(re_shi<0)
  163.                         {
  164.                                 re_shi=9;
  165.                         }
  166.                        
  167.         }
  168.        
  169.         if( flag==3)
  170.         {
  171.                        
  172.                         if((flag_add==1)&&(flag==3))
  173.                         {
  174.                                         flag_add=0;
  175.                                         re_bai=re_bai+1;
  176.                        
  177.                         }
  178.                        
  179.                         if((flag_subb==1)&&(flag==3))
  180.                         {
  181.                                         flag_subb=0;
  182.                                         re_bai=re_bai-1;
  183.                        
  184.                         }
  185.                         if(re_bai>9)
  186.                         {
  187.                                 re_bai=0;
  188.                         }
  189.                         if(re_bai<0)
  190.                         {
  191.                                 re_bai=9;
  192.                         }
  193.                        
  194.         }
  195.        
  196.        

  197. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

仿真工程文件及源码51hei提供下载:
总的.rar (220.72 KB, 下载次数: 72)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表