| 注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 | 
|  | 
| 首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 | 
| 选择分类:当前分类——学单片机   相关联或者相类似的文章:    红外线遥控器解码程序(578) 万年历算法全集(577) 8. 按键识别方法之一(576) 串口调试助手源程序(575) 不如要饭!中关村月薪68元的日子(572) 功能齐全的单片机音乐程序(572) 红外线遥控器解码程序(569) ★单片机四路无线遥控解码程序(567) 红外线遥控器解码原理(565) 温度传感器ds1820 的汇编程序 (565) 实用单片机电子钟的制作 (564) 30. 四位数数字温度计(560) 基于DS1620和AT89C2051的数字温度计(557) ISD4004系列单片语音录放电路(557) 图解S51并口下载线的制作(552) 如何用KeilC51将ASM文件编译成Hex文件! (547) 为什么要使用仿真器(543) ★单片双路四位计数器程序(536) 27. ADC0809A/D转换器基本应用技术(533) 9. 一键多功能按键识别技术(533) 首页 前页 后页 尾页  本站推荐: | 20.            数字钟﹝★﹞ 1. 实验任务  (1.       开机时,显示12:00:00的时间开始计时; (2.       P0.0/AD0控制“秒”的调整,每按一次加1秒;  (3.       P0.1/AD1控制“分”的调整,每按一次加1分;  (4.       P0.2/AD2控制“时”的调整,每按一次加1个小时;  2. 电路原理图   图4.20.1 3. 系统板上硬件连线  (1.       把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上; (2.       把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;  (3.       把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;  4. 相关基本知识  (1.       动态数码显示的方法 (2.       独立式按键识别过程  (3.       “时”,“分”,“秒”数据送出显示处理方法  5. 程序框图  6. 汇编源程序  SECOND          EQU 30H  MINITE                     EQU 31H  HOUR            EQU 32H  HOURK          BIT P0.0  MINITEK         BIT P0.1  SECONDK        BIT P0.2  DISPBUF                    EQU 40H  DISPBIT            EQU 48H  T2SCNTA          EQU 49H  T2SCNTB         EQU 4AH  TEMP                      EQU 4BH          ORG 00H          LJMP START          ORG 0BH          LJMP INT_T0  START:  MOV SECOND,#00H          MOV MINITE,#00H          MOV HOUR,#12          MOV DISPBIT,#00H          MOV T2SCNTA,#00H          MOV T2SCNTB,#00H          MOV TEMP,#0FEH          LCALL DISP          MOV TMOD,#01H          MOV TH0,#(65536-2000) / 256          MOV TL0,#(65536-2000) MOD 256          SETB TR0          SETB ET0          SETB EA  WT:     JB SECONDK,NK1          LCALL DELY10MS          JB SECONDK,NK1          INC SECOND          MOV A,SECOND          CJNE A,#60,NS60          MOV SECOND,#00H  NS60:   LCALL DISP          JNB SECONDK,$  NK1:    JB MINITEK,NK2          LCALL DELY10MS          JB MINITEK,NK2          INC MINITE          MOV A,MINITE          CJNE A,#60,NM60          MOV MINITE,#00H  NM60:   LCALL DISP          JNB MINITEK,$  NK2:    JB HOURK,NK3          LCALL DELY10MS          JB HOURK,NK3          INC HOUR          MOV A,HOUR          CJNE A,#24,NH24          MOV HOUR,#00H  NH24:   LCALL DISP          JNB HOURK,$  NK3:    LJMP WT  DELY10MS:          MOV R6,#10  D1:     MOV R7,#248          DJNZ R7,$          DJNZ R6,D1          RET  DISP:            MOV A,#DISPBUF          ADD A,#8          DEC A          MOV R1,A          MOV A,HOUR          MOV B,#10          DIV AB          MOV @R1,A          DEC R1          MOV A,B          MOV @R1,A          DEC R1          MOV A,#10          MOV@R1,A          DEC R1          MOV A,MINITE          MOV B,#10          DIV AB          MOV @R1,A          DEC R1          MOV A,B          MOV @R1,A          DEC R1          MOV A,#10          MOV@R1,A          DEC R1          MOV A,SECOND          MOV B,#10          DIV AB          MOV @R1,A          DEC R1          MOV A,B          MOV @R1,A          DEC R1          RET  INT_T0:          MOV TH0,#(65536-2000) / 256          MOV TL0,#(65536-2000) MOD 256          MOV A,#DISPBUF          ADD A,DISPBIT          MOV R0,A          MOV A,@R0          MOV DPTR,#TABLE          MOVC A,@A+DPTR          MOV P1,A          MOV A,DISPBIT          MOV DPTR,#TAB          MOVC A,@A+DPTR          MOV P3,A          INC DISPBIT          MOV A,DISPBIT          CJNE A,#08H,KNA          MOV DISPBIT,#00H  KNA:    INC T2SCNTA          MOV A,T2SCNTA          CJNE A,#100,DONE          MOV T2SCNTA,#00H          INC T2SCNTB          MOV A,T2SCNTB          CJNE A,#05H,DONE          MOV T2SCNTB,#00H          INC SECOND          MOV A,SECOND          CJNE A,#60,NEXT          MOV SECOND,#00H          INC MINITE          MOV A,MINITE          CJNE A,#60,NEXT          MOV MINITE,#00H          INC HOUR          MOV A,HOUR          CJNE A,#24,NEXT          MOV HOUR,#00H  NEXT:   LCALL DISP  DONE:   RETI  TABLE:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H  TAB:    DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH          END  7. C语言源程序  #include <AT89X51.H>  unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,                                 0x66,0x6d,0x7d,0x07,                                 0x7f,0x6f,0x77,0x7c,                                 0x39,0x5e,0x79,0x71,0x00};  unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,                               0xef,0xdf,0xbf,0x7f};  unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};  unsigned char dispbitcnt;  unsigned char second;  unsigned char minite;  unsigned char hour;  unsigned int tcnt;  unsigned char mstcnt;  unsigned char i,j;  void main(void)  {    TMOD=0x02;    TH0=0x06;    TL0=0x06;    TR0=1;    ET0=1;    EA=1;    while(1)      {        if(P0_0==0)          {            for(i=5;i>0;i--)            for(j=248;j>0;j--);            if(P0_0==0)              {                second++;                if(second==60)                  {                    second=0;                  }                dispbuf[0]=second%10;                dispbuf[1]=second/10;                while(P0_0==0);              }          }        if(P0_1==0)          {            for(i=5;i>0;i--)            for(j=248;j>0;j--);            if(P0_1==0)              {                minite++;                if(minite==60)                  {                    minite=0;                  }                dispbuf[3]=minite%10;                dispbuf[4]=minite/10;                while(P0_1==0);              }          }        if(P0_2==0)          {            for(i=5;i>0;i--)            for(j=248;j>0;j--);            if(P0_2==0)              {                hour++;                if(hour==24)                  {                    hour=0;                  }                dispbuf[6]=hour%10;                dispbuf[7]=hour/10;                while(P0_2==0);              }          }      }  }  void t0(void) interrupt 1 using 0  {    mstcnt++;    if(mstcnt==8)      {        mstcnt=0;        P1=dispcode[dispbuf[dispbitcnt]];        P3=dispbitcode[dispbitcnt];        dispbitcnt++;        if(dispbitcnt==8)          {            dispbitcnt=0;          }      }    tcnt++;    if(tcnt==4000)      {        tcnt=0;        second++;        if(second==60)          {            second=0;            minite++;            if(minite==60)              {                minite=0;                hour++;                if(hour==24)                  {                    hour=0;                  }              }          }        dispbuf[0]=second%10;        dispbuf[1]=second/10;        dispbuf[3]=minite%10;        dispbuf[4]=minite/10;        dispbuf[6]=hour%10;        dispbuf[7]=hour/10;      }  }   1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。  2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! | 
| 本站协议 |
 版权信息 | 
 关于我们 | 
 本站地图 | 
 营业执照 | 
 发票说明 | 
 付款方式 | 
 联系方式 深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102 E-mail:51dz$163.com($改为@);Tel:(0755)27947428 工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389 |