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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神幫忙解決一下下面的單片機程序代表的含義

[復制鏈接]
跳轉到指定樓層
樓主
ID:687931 發表于 2020-4-30 16:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>
#define uchar  unsigned char
#define uint   unsigned int
#define ulong   unsigned long
//??????????????
uchar code zifx0[]="0123456789abcdef";
uchar code zifu0[]="Now Number:0000";
uchar code zifu1[]="Set Number:9999";
sbit  RS=P3^1; //д???
sbit  RWW=P3^3; //?????
sbit  E=P3^4;   //??????
#define e1   E=1
#define rd1  RWW=1  
#define rs1  RS=1  
#define e0   E=0
#define rd0  RWW=0
#define rs0  RS=0
#define PP P1
//???????ms
void _delay_ms(uint t)
{
   uint i,j;
   for(i=0;i<t;i++)
     for(j=0;j<120;j++);
}
//???????us
void _delay_us(uchar t)
{
   while(t>0)t--;
}
//д1602??????
void  lcd1602_writecrtl(uchar  dat)
{
  rd0;//???????0
  rs0;//д?????0
  _delay_us(5);
  PP=dat;
  e1;//????????1
  _delay_us(5);
  e0;//????????0
}
//д1602????
void  lcd1602_writenumber(uchar dat)
{
  rd0;//???????0
  rs1;//д?????1
  _delay_us(5);
  PP=dat;
  e1;//????????1
  _delay_us(5);
  e0;//????????0
}
//1602?????
void  lcd1602_init()  
{
  lcd1602_writecrtl(0x38); //?????
  lcd1602_writecrtl(0x06); //?????????λ??
  lcd1602_writecrtl(0x0c); //??????????????
  lcd1602_writecrtl(0x01); //???????
}
//??????
void  lcd1602_adr(uchar dat)  
{
  lcd1602_writecrtl(0x80 | dat);
}
//?????-
void LCD1602_string(uchar hang,uchar lie,uchar const *p)
{
uchar a;
if(hang == 1) a = 0x00;
if(hang == 2) a = 0x40;
a = a + lie - 1;
lcd1602_adr(a);
while(1)
{
  if(*p == '\0') break;
  lcd1602_writenumber(*p);
  p++;
}
}
uint  keyn1=16;//?????
uint  keyn=16;//????
#define PK P2
//???????
void key_z()
{
PK=0X0F;
if(!(PK==0X0F))
{
    if(!(PK==0X0F))
   {
    keyn1=0;
    keyn=0;
    PK=0X0F;
    if(PK==0X0E)  keyn1=0;
    if(PK==0X0D)  keyn1=1;
    if(PK==0X0B)  keyn1=2;
    if(PK==0X07)  keyn1=3;
    PK=0XF0;
    if(PK==0XE0)  keyn=0+keyn1;
    if(PK==0XD0)  keyn=4+keyn1;
    if(PK==0XB0)  keyn=8+keyn1;
    if(PK==0X70)  keyn=12+keyn1;
    switch(keyn)
    {
     case 0: keyn1=1; break;
     case 4: keyn1=2; break;
     case 8: keyn1=3; break;
     case 12:keyn1=10; break;
     case 1: keyn1=4; break;
     case 5: keyn1=5; break;
     case 9: keyn1=6; break;
     case 13:keyn1=11; break;
     case 2: keyn1=7; break;
     case 6: keyn1=8; break;
     case 10:keyn1=9;break;
     case 14:keyn1=12;break;
   case 3: keyn1=14;break;//*
     case 7: keyn1=0;break;
     case 11:keyn1=15;break;//#
     case 15:keyn1=13;break;
     }
    }
  else   keyn1=16;
  PK=0X0F;while((!(PK==0X0F)));
}
}//LED
sbit led1=P0^0;
sbit beer=P3^5;
sbit out=P3^6;
sbit k1=P3^7;
sbit P32=P3^2;
//????
uint  now=0;
uint  set=10;
uint  bzbu=0;//????
uint  bz=0;//??
uint  qidong=0;//????
//???????
void dis()
{
  //now
  lcd1602_adr(0x0B);  
  lcd1602_writenumber(0x30+now%10000/1000);
  lcd1602_writenumber(0x30+now%1000/100);
  lcd1602_writenumber(0x30+now%100/10);
  lcd1602_writenumber(0x30+now%10);
  //set
  lcd1602_adr(0x4B);  
  lcd1602_writenumber(0x30+set%10000/1000);
  lcd1602_writenumber(0x30+set%1000/100);
  lcd1602_writenumber(0x30+set%100/10);
  lcd1602_writenumber(0x30+set%10);
  if(bz==0)lcd1602_writenumber(' ');
  if(bz==1)lcd1602_writenumber('<');
   //???
  if(bz==0)
  {
    if(k1==0){qidong=(qidong+1)%2;if(qidong==1){led1=0;;out=0;}else {led1=1;out=1;}while(k1==0);}
   }
   //???
  if(qidong==1)
  {
    if(now>=set){qidong=0;led1=1;out=1;beer=0;_delay_ms(500);  }
   }
   //???
  if(qidong==0)
  {
    beer=1;
   }
}
//???????????
void key()
{
  //???
  key_z();
  if(keyn1<16)
  {
   if((keyn1<10)&&(bz==1))
{
  if(bzbu==0){set=keyn1;}
  if(bzbu==1){set=set*10+keyn1;}
  if(bzbu==2){set=set*10+keyn1;}
  if(bzbu==3){set=set*10+keyn1;}
  bzbu=(bzbu+1)%4;
  }
if((keyn1==0x0a)&&(bz==0)){now=0;}//??λ
if((keyn1==0x0b)&&(bz==1)){set=0;}//??λ????
if((keyn1==0x0c)&&(qidong==0)){bz=1;}//????
if(keyn1==0x0d){bz=0;}//???
keyn1=16;
  }
}
//-----------------------
void main()   
{
  _delay_us(10);
  _delay_ms(10);  
  //?ж?????
  IT0=1;
  EX0=1;
  EA=1;  
  //?????
  lcd1602_init();
  LCD1602_string(1,1,zifu0);
  LCD1602_string(1,1,zifu0);
  LCD1602_string(2,1,zifu1);
  while(1)
  {
   dis(); //???
   key();
  }
}  
//INT0?ж????
void  EX_INT0() interrupt 0
{
if(qidong==1)
{
  _delay_ms(3);if(P32==0)now=now+1;  
}
}


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片一区二区三区 | 精品久久香蕉国产线看观看亚洲 | 国产免费又色又爽又黄在线观看 | 在线免费视频一区 | 人妖videosex高潮另类 | 国产亚韩 | 久久亚洲综合 | 精品伊人 | 日本久久综合网 | 亚洲欧美一区二区三区国产精品 | 亚洲精品乱码久久久久久黑人 | 激情 亚洲 | 人妖av| 华丽的挑战在线观看 | 久久久91精品国产一区二区三区 | 中日av | 精品一区二区视频 | 久久国产福利 | 日韩av福利在线观看 | 色婷婷综合久久久中字幕精品久久 | 亚洲精品一区二区 | 国产精品视频 | 毛片久久久 | 久久www免费视频 | 免费观看毛片 | 欧美亚洲另类在线 | 日日夜夜精品免费视频 | av超碰| 日本在线综合 | 天天操 夜夜操 | www久久爱| 欧美一级毛片久久99精品蜜桃 | 欧美伊人久久久久久久久影院 | 成人亚洲精品 | 青草福利 | 特级黄一级播放 | 伊人免费视频二 | 黄色av一区 | 国产精品明星裸体写真集 | 亚洲在线日韩 | 欧美一级精品片在线看 |