| 注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 | 
![]()  | 
| 首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 | 
|   选择分类:当前分类——学单片机    相关联或者相类似的文章:    和初学者说说我学单片机的经过(773) 通过日期算星期的C51源程序(757) AT89C2051制电子钟时钟源程序 (754) 多功能AT89C2051倒计时器(753) 24c256程序(734) ★单片双路四位计数器程序全0快版(732) C51的一些误区和注意事项(730) DS1820高精度测温的理论依据(729) AT89C51制作的简单计数器(724) 89S51单片机(722) 用RC充电的方法实现温度的检测(722) 关于单片机的N多问题(719) 采用AT89C2051兼容芯片制作六位数显多路定时电子钟(714) 数字式温度/湿度测量计(712) 超声波智能测距传感模块(707) 青春舞曲的音乐程序 (706) 35. DS18B20数字温度计使用 (700) 超声波测距 (698) 单片机演奏音乐的实现(695) OCM12232系列点阵型液晶显示模块 (695) 首页 前页 后页 尾页  本站推荐:        |    11.            00-59秒计时器(利用软件延时) 1.  实验任务  
  如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。 
2.  电路原理图  
![]() 图4.11.1 
3.  系统板上硬件连线  
(1.       把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。 
(2.       把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。 
4.  程序设计内容  
(1.       在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,从新秒计数。 
(2.       对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。 
(3.       在数码上显示,仍通过查表的方式完成。 
(4.       一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1秒时间为1.002秒。 
DELY1S:        MOV R5,#100 
D2:                MOV R6,#20 
D1:                MOV R7,#248 
                     DJNZ R7,$ 
                     DJNZ R6,D1 
                      DJNZ R5,D2                     RET 
5.  程序框图  
图4.11.2  
6.  汇编源程序  
Second                 EQU 30H  
                            ORG 0  
START:               MOV Second,#00H  
NEXT:                MOV A,Second  
                           MOV B,#10  
                            DIV AB  
                            MOV DPTR,#TABLE  
                           MOVC A,@A+DPTR  
                            MOV P0,A  
                            MOV A,B  
                           MOVC A,@A+DPTR  
                            MOV P2,A  
                            LCALL DELY1S  
                           INC Second  
                            MOV A,Second  
                            CJNE A,#60,NEXT  
                           LJMP START  
DELY1S:             MOV R5,#100  
D2:                      MOV R6,#20  
D1:                     MOV R7,#248  
                            DJNZ R7,$  
                            DJNZ R6,D1  
                           DJNZ R5,D2  
                            RET  
TABLE:              DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH  
                            END  
7.  C语言源程序  
#include <AT89X51.H>  
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,  
                            0x6d,0x7d,0x07,0x7f,0x6f};  
unsigned char Second;  
void delay1s(void)  
{  
  unsigned char i,j,k;  
  for(k=100;k>0;k--)  
  for(i=20;i>0;i--)  
  for(j=248;j>0;j--);  
}  
void main(void)  
{  
  Second=0;  
  P0=table[Second/10];  
  P2=table[Second%10];  
  while(1)  
    {  
      delay1s();  
      Second++;  
      if(Second==60)  
        {  
          Second=0;  
        }  
      P0=table[Second/10];  
      P2=table[Second%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  |