久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2322|回復: 2
打印 上一主題 下一主題
收起左側

求助,有沒有人知道這個51單片機電子藥盒的程序如何定時?

[復制鏈接]
跳轉到指定樓層
樓主
ID:350675 發表于 2018-6-14 09:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人懂一點匯編,c語言只懂很少的幾條語句,因為課設問題向學長求助,但其給我的資料是用c語言寫的,不是很懂他的按鍵設置,如何定時和實現其他功能,求高手指點迷津,下面附上部分說明,和dsn,及程序本體docx。
#include<reg51.h>
#include<intrins.h>
typedef unsigned char uchar;
typedef unsigned int  uint;
uchar count0,s0num,s2num;
uchar count=0,h,min,s,h0,min0,h1,min1,h2,min2,h3,min3;
uchar key,kind;        
uchar *k,*dos,k0,dos0,k1,dos1,k2,dos2,k3,dos3;
uchar code dis3[]={"0123456789"};
sbit e = P2^7;
sbit rs = P2^5;
sbit rw = P2^6;
sbit DB7= P0^7;
sbit s0 = P1^0;
sbit s1 = P1^1;
sbit s2 = P1^2;
sbit s3 = P1^3;
sbit s4 = P1^4;
sbit s5 = P1^5;
sbit s6 = P1^6;
sbit s7 = P1^7;
sbit LED = P3^0;  
sbit FMQ = P3^1;


void delay(uchar ms)
{
     uchar i;
           while(ms--)
            {
                      for(i=0;i<250;i++)
                     {
                                 _nop_();
                                _nop_();
                                _nop_();
                                _nop_();  
                                                               
   }
     }
}        
bit busy()
{                                                
      bit result;
      rs=0;
      rw=1;
      e=0;                  
            e=1;
            _nop_();
            _nop_();
            _nop_();
            _nop_();               
      result=(bit)(P0&0x80);
             e=0;                  
      return result;
}
void wcmd(uchar cmd)
{
     while(busy());  
           rs=0;
           rw=0;
           e=0;           
           _nop_();
           _nop_();
           P0=cmd;      
           _nop_();
           _nop_();
           _nop_();
           _nop_();
            e=1;           
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           e=0;           
}
void wdate(uchar dat)                  
{
     while(busy());
           rs=1;
           rw=0;
           e= 0;                        
           P0=dat;
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           e=1;         
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           e=0;         
}
void init()        
{
           delay(5);        
     wcmd(0x3C);      
           delay(1);
           wcmd(0x0c);      
           delay(1);
           wcmd(0x06);     
           delay(1);
           wcmd(0x01);     
           delay(1);
           wcmd(0x82);      
}
void display(uchar x,uchar y,uchar *p)   
{
    switch (x)
           {
           case 1:wcmd(0x7f+y);break;
           case 2:wcmd(0x7f+0x40+y);
           }
           while(*p)                  
           wdate(*p++);
}
void wtim(uchar add,uchar date)        
{  
           uchar i=0;
           uchar un,dec;   
           dec=date/10;
           un=date%10;
           wcmd(0xc0+add);   
           i=dec;
           wdate(dis3[ i ]);                  
           i=un;
           wdate(dis3[ i]);
}
void keyscan()  
{
     if(s0==0)        
                  {
                                delay(5);     
                                if(s0==0)     
              {  
                                         wcmd(0x0f);     
                                    s0num++;            
                                   while(!s0);
                                   if(s0num==1)        
                                    {
                                       TR0=0;         
                                            wcmd(0xc0+11);  
                                             
                                     }
                                         if(s0num==2)      
                                          {
                                             wcmd(0xc0+8);   
                                          }
                                         if(s0num==3)      
                                          {
                                             s0num=0;
                                                         wcmd(0x0c);  
                                                         display(1,7,"*");
                                                         display(1,16,"*");
                                                         TR0=1;
                                          }}}        
                 if(s0num!=0)     
                   {
                      if(s1==0)            
                                        {
                                             delay(10);         
                                                   if(s1==0)         
                                                         {
                                                            while(!s1);   
                                                                        if(s0num==1)
                                                                          {
                                                                             min++;
                                                                                         if(min==60)
                                            min=0;
                                                                                         delay(10);
                                                                                        wtim(11,min);      
                                                                                         wcmd(0xc0+11);     
                                                                          }
                                                                        if(s0num==2)
                                                                          {
                                                                              h++;
                                                                                          if(h==24)
                                                                                                   h=0;
                                                                                                wtim(8,h);   
                                                                                                wcmd(0xc0+8);
                                                                           }
                                }
                               }
                             }
                        if(s2==0)                  
                         {
                            delay(5);
                if(s2==0)        
                                         {
                                             s2num++;         
                                                   while(!s2);      
                                                   if(s2num==1)
                                                           {
                                                             TR0=0;         
                                                                   wcmd(0xc0+11);  
                                                                   wcmd(0x0f);     
                                                           }
                                                         if(s2num==2)
                                                           {
                                                             wcmd(0xc0+8);  
                                                           }
                                                         if(s2num==3)
                                                           {
                                                              wcmd(0x86);                                             
                                                                 }
                                                        if(s2num==4)
                                                           {
                                                              wcmd(0x8F);  
                                                           }
                            if(s2num==5)
                                                           {
                                                             s2num=0;
                                                                         wcmd(0x0c);   
                                                                         TR0=1;        
                                                           }}}
                        if(s2num!=0)
                         {
                           if(s3==0)               
                                   {
                                       delay(5);
                                                   if(s3==0)
                                                           {
                                                              while(!s3);  
                                                                                if(s2num==1)
                                                                                  {
                                                                                     min++;
                                                                                                 if(min==60)
                                                                                                         min=0;
                                                                                                 wtim(11,min);
                                                 wcmd(0xc0+11);                                                                                                   
                                                                                  }
                                                                                if(s2num==2)
                                                                                  {
                                                                                      h++;
                                                                                                 if(h==24)
                                                                                                         h=0;            
                                                                                                 wtim(8,h);        
                                                                                                 wcmd(0xc0+8);   
                                                                                  }
                                                                                if(s2num==3)         
                                                                                  {
                                                                                     kind++;
                                                                                                 switch(kind)
                                                                                                 {
case 1:display(1,7,"A");wcmd(0x7f+7);k="A"; break;  
case 2:display(1,7,"B");wcmd(0x7f+7);k="B"; break;
case 3:display(1,7,"C");wcmd(0x7f+7);k="C"; break;
case 4:display(1,7,"D");wcmd(0x7f+7);k="D";kind=0; break;
default:display(1,7,"$");wcmd(0x7f+7);break;
                                                                                                 }}                         if(s2num==4)         
{
  uchar i;
  i++;
switch(i)
{                                                
case1:display(1,16,"1");wcmd(0x7f+16);dos="1"; break; case2:display(1,16,"2");wcmd(0x7f+16);dos="2"; break;
case 3:display(1,16,"3");wcmd(0x7f+16);dos="3"; break;
case 4:display(1,16,"4");wcmd(0x7f+16);dos="4"; break;
case 5:display(1,16,"5");wcmd(0x7f+16);dos="5"; break;
case 6:display(1,16,"6");wcmd(0x7f+16);dos="6"; break;
case 7:display(1,16,"7");wcmd(0x7f+16);dos="7"; break;
case 8:display(1,16,"8");wcmd(0x7f+16);dos="8"; break;
case 9:display(1,16,"9");wcmd(0x7f+16);dos="9";i=0;break;        default:display(1,16,"$");wcmd(0x7f+10);break;
                                                                                                 }}}}}}
void main()
{
     P0=0x00;
     init();
           do
                 {
                    display(1,1,"P.");
                 }
                 while((s0&&s1&&s2&&s3&&s4&&s5&&s6&&s7)==1);
                  display(1,1,"Drug--# Dosis--#");
        display(2,1,"Time    00:00:00");
      TMOD=0x01;
            TH0=(65536-49958)/256;
            TL0=(65536-49958)%256;
            EA=1;
            ET0=1;
            TR0=1;
     while(1)              
    {
            keyscan() ;
            if(count==20)
                {
                            s++;
                            count=0;
                              if(s==60)
                                    {
                                                         s=0;
                                             min++;
                                             s=0;
                                              if(min==60)
                                                     {
                                                            h++;
                                                            min=0;
                                                               if(h==24)
                                                                  {
                                                                         h=0;
                                                                       }
                                                                  wtim(8,h);
                                                     }
                                                         wtim(11,min);   
                                           }
                                  wtim(14,s);            
                 if(s4==0)               
                  {
        delay(5);         
        if (s4==0)        
                                        {
                                     while(!s4);   
                                                 k0=*k;        
                                                 dos0=*dos;     
                                                 h0=h;      
                                                 min0=min;
                                                key++;
                      }}        
                        if(s5==0)              
                  {
        delay(5);         
        if (s5==0)        
                                        {
                                     while(!s4);   
                                                 k1=*k;
                                                 dos1=*dos;
                                                 h1=h;         
                                                 min1=min;
                                                key++;
                      }}        
                        if(s6==0)               
                  {
        delay(5);         
        if (s6==0)         
                                        {
                                     while(!s4);   
                                                 k2=*k;
                                                 dos2=*dos;
                                                 h2=h;         
                                                 min2=min;
                                                key++;
                      }}        
                        if(s7==0)               
                  {
        delay(5);           
        if (s7==0)         
                                        {
                                     while(!s4);   
                                                 k3=*k;
                                                 dos3=*dos;
                                                 h3=h;         
                                                 min3=min;
                                                key++;
                      }}        
     if((h0==h)&&(min0==min))
                   {
                                 if(key!=0)
                                 {
                                        wcmd(0x86);
                                        wdate(k0);
                                        wcmd(0x8f);
                                        wdate(dos0);
                      LED=1;
          delay(5);
          LED=0;
          for(count0=0;count0<20;count0++)
            {
                                                   FMQ=0;
                                                         delay(1);
                                                         FMQ=1;
                                                }}LED=1;}        
    if((h1==h)&&(min1==min))
                   {
                                 if(key!=0)
                                 {
                                        wcmd(0x86);
                                        wdate(k1);
                                        wcmd(0x8f);
                                        wdate(dos1);
                      LED=1;
          delay(5);
          LED=0;
          for(count0=0;count0<20;count0++)
            {
                                                   FMQ=0;
                                                         delay(1);
                                                         FMQ=1;
                                                }}LED=1;}        
    if((h2==h)&&(min2==min))
                   {
                                 if(key!=0)
                                 {
                                        wcmd(0x86);
                                        wdate(k2);
                                        wcmd(0x8f);
                                        wdate(dos2);
                      LED=1;
          delay(5);
          LED=0;
          for(count0=0;count0<20;count0++)
            {
                                                   FMQ=0;
                                                         delay(1);
                                                         FMQ=1;
                                                }}LED=1;}               
    if((h3==h)&&(min3==min))
                   {
                                 if(key!=0)
                                 {
                                        wcmd(0x86);
                                        wdate(k3);
                                        wcmd(0x8f);
                                        wdate(dos3);
                      LED=1;
          delay(5);
          LED=0;
          for(count0=0;count0<20;count0++)
            {
                                                   FMQ=0;
                                                         delay(1);
                                                         FMQ=1;
                        }} LED=1;}}}
         while(1);}
void T0_int(void) interrupt 1
{
     count++;
     TF0=0;           
           TH0=(65536-49958)/256;
           TL0=(65536-49958)%256;
}

新實驗.zip

18.86 KB, 下載次數: 25

評分

參與人數 1黑幣 +5 收起 理由
kljie1000 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:332444 發表于 2019-6-28 15:29 | 只看該作者
不知你能看懂多少C語句,這個用仿真有的功能是無法實現的,必須在硬件上才能運行的組合鍵,通常判斷按鈕按下語句if(s0==0){延時;再次判斷按鈕按下if(s0==0){執行什么操作的代碼}}從花括號你可以看到s0按下第1次做什么第2次做什么第3次做什么的代碼,可以推斷出按鈕的功能。對代碼進行標準的縮進就可以對花括號內的代碼意思大概可以猜測出要執行的意圖。
回復

使用道具 舉報

板凳
ID:332444 發表于 2019-6-28 15:38 | 只看該作者
按鈕基本上就是移動在液晶顯示屏上的光標位置調節分和時和字符等看個大概
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频二区在线观看 | 国产久| 精品国产一区二区国模嫣然 | www.99热这里只有精品 | 红色av社区 | 欧美精品成人一区二区三区四区 | 91视视频在线观看入口直接观看 | 日韩成人在线免费视频 | 日韩国产中文字幕 | 91精品国产777在线观看 | 伊人网站在线观看 | 久久久精品综合 | 亚洲狠狠爱 | 欧美日韩中文在线观看 | .国产精品成人自产拍在线观看6 | 欧美在线观看一区 | 国产日韩一区二区三区 | 成年人的视频免费观看 | 男女羞羞网站 | 97超碰在线播放 | 精品无码久久久久国产 | 亚洲成人三区 | 日韩中文字幕在线视频 | 日本韩国电影免费观看 | 久久日韩粉嫩一区二区三区 | 久久久久久久久91 | 亚洲精品国产电影 | 亚洲一一在线 | 伊人网站| 在线视频 欧美日韩 | 99pao成人国产永久免费视频 | 国产一区二区三区亚洲 | 亚洲天天干 | 亚洲免费网站 | 中文字幕影院 | 免费欧美视频 | 国产精品亚洲一区二区三区在线观看 | 亚洲精品高清视频 | 欧美福利影院 | 日韩一三区 | 精品乱码久久久久 |