单片机_第7章 实例

考虑到本章不是很重要且暂时不需要掌握,所以就只讲解一个例题,其余的例题可以看本专栏的文章“单片机_介绍”中的介绍网页中下载的PPT或者实例

 实例1 利用串行方式0和74LS164扩展并行输出口,并实现LED由上向下循环。

74LS164——8位串入并出移位寄存器

 工作原理:
1)清零端(MR)若为低电平,输出端都为0;
2)清零端若为高电平,且时钟端(CP)出现上升沿脉冲,则输出端Q锁存输入端D的电平;
3)前级Q端与后级D端相连——移位作用,最先接收到的数将进入最高位。

电路接线:
数据输入端1(2)→RXD
时钟端8→ TXD
输出端Q0~Q7 →D1~D8
清零端9——Vcc或I/O口

编程分析

①串口初始化 

方式0(SM0 SM1 = 00),中断发送标志位清0 ( TI = 0)和禁止接收数据(REN = 0)→ SCON = 0  

②查询法串行发送

 ③ 74LS164倒序校正
     欲使164输出1111 1110B,SBUF发应为0111 1111B (0x7f )
     欲使D1~D8由上向下点亮,SBUF发应右移1位且最高位置1
     → (SBUF发 >> 1) | 1000 0000B   ; 与0x80逻辑或

实例1的源程序

#include<reg51.h>

void delay() 	                         //延时
{
    unsigned int i;
    for (i=0; i<20000; i++);
}

void main() 
{ 
    unsigned char index, LED;            //定义LED指针和显示字模
    SCON = 0;           	             //设置串行模块工作在方式0
    while (1) 
	{      
	   LED=0x7f;
	   for (index=0; index < 8; index++) 
	   {
	        SBUF = LED;                  //控制L0灯点亮
	        do {} while(!TI);            //通过TI查询判别数据是否输出结束
            LED = ((LED>>1)|0x80);       //左移1位,末位置1
			TI=0;
			delay();  
 	   }
    }
}

 实例1的仿真运行

 仿真结果,流水灯的运行效果满足题意要求

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值