找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3516|回复: 0
打印 上一主题 下一主题
收起左侧

单片机流水灯实验指导书

[复制链接]
跳转到指定楼层
楼主
ID:283726 发表于 2018-2-11 19:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机流水灯实验指导
一、知识准备

STC89C52RC单片机共有4个双向的8位并行I/O端口,片内I/O端口作为输出使用时,最常用的应用控制是相应的I/O引脚上的LED点亮与熄灭。

1.P11.1 位电路结构

由三部分组成:

   (1)1个数据输出锁存器,用于输出数据位的锁存;

   (2)2个三态的数据输入缓冲器BUF1和BUF2,用于读锁存数据和读引脚数据的输入缓冲;

   (3)输入驱动电路,由1个场效应管(FET)和1个片内上拉电阻组成。

     P1口某一位的位电路结构如下图所示:

                                图1-1

1.2工作过程分析

P1口只能作为通用的I/O口使用。

(1)P1口作为输出口时,若CPU输出1,Q=1,Q*=0,场效应管截止,P1口引脚的输出为1;若CPU输出0,Q=0,Q*= 1,场效应管导通,P1口引脚的输出为0。

(2)P1口作为输入口时,分为“读锁存器”和“读引脚”两种方式。“读锁存器”时,锁存器的输出端Q的状态经输入缓冲器BUF1进入内部总线;“读引脚”时,先向锁存器写1,使场效应管截止,P1.x引脚上的电平经输入缓冲器BUF2进入内部总线。

1.3 P1口特点

P1口由于有内部上拉电阻,没有高阻抗输入状态,故为准双向口。作为输出口时,不需要在片外接上拉电阻。

P1口“读引脚”输入时,必须先向锁存器写入1。

2.循环移位原理

循环移位法是采用循环程序结构进行编程。我们在程序一开始就给 P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果了。

3.接口芯片

本项目选择的扩展I/O芯片是74HC595。74HC595芯片是一种串入并出的芯片,有8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断三态。

下表说明了74HC595芯片的引脚功能。

                           图1-2

接口电路图如下,可以看到U4中Q0-Q7接LED,U5Q0-Q7接矩阵。

                           图1-3

                          图 1-4

SDI为数据输入引脚,与11、12引脚都接51单片机。SDO引脚为数据输出。

二、实验目的

掌握流水灯系统的基本组成以及工作原理。使设计出来的流水灯达到设计任务书的技术要求。

三、实验内容

扩展I/O口,连接8个LED,编写程序使其从右到左的流水方式点亮。

四、实验设备

硬件设备:51单片机开发版、USB线一根,12v电源适配器一个。

图1-3

软件工具:STC-ISP-15XX-V6.82,keil。

五、核心代码
  1.    /**
  2.   * @Global Varible Declare
  3.   * @全局变量声明
  4.   */
  5. /*流水灯实验对应的编码led1 led2 led3 led4 led5 led6 led7 led8 */
  6. uchar LED_tabl[10] = {0xFD,0xFB,0xFE,0xF7,0xBF,0xEF,0x7F,0xDF};
  7. /**
  8.   * @brief      main
  9.   * @details    主函数
  10.   * @param a    无
  11.   * @param b    无
  12.   * @retval     无
  13.   */
  14. void Main()

  15. {
  16.     uchar i;            /*定义一个循环变量*/
  17.     init_595();         /*初始化IO扩展芯片74HC595*/
  18.     while(1)
  19.     {  
  20.         /*开发板上使用的是两片595芯片级联,构成一个16位的串入并出接口

  21.          *板上8个LED灯连接在595的低八位数据线上,为了不影响其他电路,
  22.          *需要把高八位置为高电平*/
  23.         for(i=0;i<8;i++)
  24.         {
  25.             WR_595(0xff);           /*写入16位数据的高八位*/  
  26.             WR_595(LED_tabl[i]);    /*写入16位数据的低八位,这里使用查表法,以此输出对应每一个LED的值,实现流水灯操作*/
  27.             OUT_595();              /*给595的RCK写入时钟信号,串行数据移位输出*/
  28.             delay_ms(500);          /*延时500MS*/  
复制代码


、实验步骤

连接设备,将USB线一端接PC,一端接单片机开发板,开发板接12V电源,打开电源开关

图1-4

打开STC-ISP下载工具

图1-4

选择好单片机型号STC89C52RC,扫描串口号,其他设置为默认;然后点击打开程序文件,出现下图

图1-5

进入目录obj,选择需要下载的hex文件打开;关闭电源→点击下载/编辑→打开电源,程序开始下载,出现下图则操作成功

图1-6

、实验验证

将开发板电源关闭,然后再打开,查看板上8个LED是否按流水的方式依次从右到左点亮,如果来回循环点亮则说明实验成功。

(1)思考题1是否可以让8个LED灯跳着点亮?

(2)思考题2从左到右依次点亮是否也可以做到,怎么编写?



完整的Word格式单片机流水灯实验指导书文档51黑下载地址:

流水灯.doc (4.87 MB, 下载次数: 6)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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