標(biāo)題: 如何修改MCU程序才能實(shí)現(xiàn)數(shù)據(jù)加減,要有上下限,超過(guò)之后蜂鳴器會(huì)報(bào)警? [打印本頁(yè)]

作者: 小書吧    時(shí)間: 2021-5-29 18:58
標(biāo)題: 如何修改MCU程序才能實(shí)現(xiàn)數(shù)據(jù)加減,要有上下限,超過(guò)之后蜂鳴器會(huì)報(bào)警?
怎樣才能實(shí)現(xiàn)數(shù)據(jù)加減,要有上下限,超過(guò)之后蜂鳴器會(huì)報(bào)警,各位前輩幫我看看要怎么改。
用OLED顯示兩個(gè)屏,第一個(gè)屏顯示個(gè)人信息,第二個(gè)屏顯示電機(jī)狀態(tài)、速度和溫度
#include <reg51.h>
#include "delay.h"
#include "oled12864.h"
#include "key.h"
#include "motor.h"
void screen1();
void screen2();
void key();
void motor();
void display();
void alarm();
unsigned char flag=0,speed=50,num=10,banji=1901,key_mode=0,wendu=30,key_num=0;
unsigned char code ch1[]={0,1,'#'};//名字
unsigned char code ch2[]={2,3,4,'#'};//
unsigned char code ch3[]={5,6,'#'};//班級(jí)
unsigned char code ch4[]={7,8,'#'};//學(xué)號(hào)
sbit bee=P3^6;
void main()
{
        OLED_Init();
        DC_Motor_Init();
//        OLED_Clear();//顯示清屏
   while(1)
  {
                        display();
//                  OLED_Clear();
                        key();
                  motor();
   }
}
void display()
{
        screen1();
        screen2();
}
void screen1()
{
  OLED_Show_stringChinese(0,0,ch1);//ch1姓名
        OLED_Show_Char(0,32,':');               
        OLED_Show_stringChinese(0,37,ch2);//ch2                                          
  OLED_Show_stringChinese(2,0,ch4);//ch6學(xué)號(hào)
  OLED_Show_Char(2,32,':');               
  OLED_Show_Num(2,36,num,4);
}
void screen2()
{
        OLED_Show_String(0,0,"status:");
        OLED_Show_String(2,0,"speed:");
        OLED_Show_String(4,0,"wendu:");

        OLED_Show_Num(2,8*8,speed,2);
        OLED_Show_Num(4,8*8,wendu,2);
        motor();
}

void key()
{
        if(key1_scan()!=0)//key1_scan切換
        {
                key_mode++;
                key_mode%=2;
//                key_num=0;
                OLED_Clear();
        }
        switch(key2_scan())
        {
                        case 0:break;
                        case 1:OLED_Show_String(0,7*8,"runing ");break;
                  case 2:OLED_Show_String(0,7*8,"stop");break;
        }
        switch(key3_scan())//按鍵
        {
                case 0:break;
                case 1:switch(key_mode)
                                        {
                                                case 0:switch(key_num)
                                                                        {
                                                                                case 0:break;
                                                                                case 1:speed+=1;break;
                                                                                case 2:speed+=10;break;
                                                                         }break;
                                                case 1:switch(key_num)
                                                                        {
                                                                                case 0:break;
                                                                                case 1:wendu+=1;break;
                    case 2:wendu+=10;break;                                                                                       
                                                                        }break;                                                                                                
                                        }break;                                    
        }
        switch(key4_scan())//按鍵
        {
                case 0:break;
                case 1:switch(key_mode)
                                        {
                                                case 0:switch(key_num)
                                                                        {
                                                                                case 0:break;
                                                                                case 1:speed-=1;break;
                                                                                case 2:speed-=10;break;
                                                                         }break;
                                                case 1:switch(key_num)
                                                                        {
                                                                                case 0:break;
                                                                                case 1:wendu-=1;break;
                          case 2:wendu-=10;break;                                                                                
                                                                        }break;                                                                        
                                        }break;                        
   }
}
void motor()
{
//        flag=0,1,2;
        switch(flag)
        {
                case 0:ENA=0;TR0=0;break;
                case 1:TR0=1;DC_Motor_Run(1,speed);break;
        }
}
void alarm()
{
        if(wendu>50)
                bee=1;
        else if(wendu<20)
                bee=1;
        else bee=0;
}






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1