找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4801|回复: 4
收起左侧

单片机定时器方式0控制流水灯循环点亮程序与仿真

[复制链接]
ID:276534 发表于 2018-9-27 23:58 | 显示全部楼层 |阅读模式
c源码:注释很详细,我就不解释了,如果延时不合适,可以修改参数

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源码:
  1. #include<reg51.h>   //包含51单片机寄存器定义的头文件

  2. #include<intrins.h> //包含函数_nop_()定义的头文件
  3. unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水灯控制码,该数组被定义为全局变量
  4. sbit P17=P1^7;
  5. /**************************************************************
  6. 函数功能:延时约150ms
  7. **************************************************************/
  8. void delay(void)   
  9. {
  10.    unsigned char m,n;
  11.   for(m=0;m<200;m++)
  12.    for(n=0;n<250;n++)   
  13.            ;
  14. }
  15. /**************************************************************
  16. 函数功能:发送一个字节的数据
  17. **************************************************************/
  18. void Send(unsigned char dat)
  19. {
  20.   P17=0;     //P1.7引脚输出清0信号,对74LS164清0
  21.   _nop_();   //延时一个机器周期
  22.   _nop_();  //延时一个机器周期,保证清0完成
  23.   P17=1;    //结束对74LS164的清0
  24.   SBUF=dat;  //将数据写入发送缓冲器,启动发送
  25.   while(TI==0)  //若没有发送完毕,等待
  26.      ;
  27.   TI=0;   //发送完毕,TI被置“1”,需将其清0
  28. }
  29. /*******************************************
  30. 函数功能:主函数
  31. ******************************************/
  32. void main(void)
  33.   {
  34.    unsigned char i;
  35.    SCON=0x00;  //SCON=0000 0000B,使串行口工作于方式0   
  36. while(1)  
  37.     {
  38.     for(i=0;i<8;i++)
  39.      {
  40.        Send(Tab[i]);  //发送数据
  41.      delay();       //延时
  42.       }
  43.    }
  44. }
复制代码


附件有仿真文件和c源码,需要的可以下载
321-方式0控制流水灯循环点亮.zip (28.74 KB, 下载次数: 13)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:399179 发表于 2018-9-28 06:50 来自手机 | 显示全部楼层
可惜我还是看不懂啊!
回复

使用道具 举报

ID:403231 发表于 2018-9-28 11:31 | 显示全部楼层
有位老师说尽量不用延时实现
回复

使用道具 举报

ID:276534 发表于 2018-9-29 16:47 | 显示全部楼层
快乐眼泪 发表于 2018-9-28 06:50
可惜我还是看不懂啊!

跟着main函数的思路走,其实就是先确定串口方式,在执行一个死循环就ok,死循环里是按照某个延时时间发送数据,其他函数都是为main函数做铺垫
回复

使用道具 举报

ID:276534 发表于 2018-9-29 16:49 | 显示全部楼层
一片到 发表于 2018-9-28 11:31
有位老师说尽量不用延时实现

确实,但要懂得这种方法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表