找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2713|回复: 0
收起左侧

单片机+8255与74LS154设计的16×16点阵屏程序+Proteus仿真

[复制链接]
ID:354598 发表于 2019-4-13 18:57 | 显示全部楼层 |阅读模式
基于51单片机的8255芯片与74LS154结合实现16*16点阵扫描的设计

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

电路仿真图

电路仿真图
0.png

单片机源程序如下:
  1. #include <REG51.H>
  2. #include<intrins.h>
  3. #include "tou.h"
  4. sbit R_CLK = P3^5;
  5. sbit S_CLK = P3^6;
  6. sbit LS165_SH1=P2^5;
  7. sbit LS165_SH2=P2^2;
  8. sbit LS165_CLK=P2^3;
  9. sbit A0_8255 = P2^0;
  10. sbit A1_8255 = P2^1;
  11. sbit CS_8255=P2^4;
  12. sbit WR_8255=P3^3;
  13. sbit RD_8255=P3^7;
  14. sbit RST_8255=P1^4;
  15.         
  16. void Init8255A(void)
  17. {
  18.         uchar i;
  19.         RST_8255 =1;
  20.         for(i=0;i<255;i++);
  21.         RST_8255 =0;

  22.         CS_8255 = 1;
  23.         WR_8255 = 1;
  24.         RD_8255 = 1;

  25.         CS_8255 = 0;   
  26.         A0_8255 = 1;     //选择内部控制寄存器
  27.         A1_8255 = 1;

  28.         DATA =  0x80;
  29.         WR_8255 = 0;    //写入配置字
  30.         WR_8255 = 1;
  31.         CS_8255 = 1;   
  32. }
  33. void HCR  (uchar BT3, uchar BT2)
  34. {  
  35.         uchar i;
  36.     A0_8255 = 0;
  37.     A1_8255 = 0;          //PA口位制寄存器
  38.               
  39.     CS_8255 = 0;
  40.     DATA=BT2;
  41.     WR_8255 = 0;
  42.         _nop_();
  43.         _nop_();
  44.         _nop_();
  45.     WR_8255 = 1;
  46.         
  47.         LS165_SH2=0;
  48.     _nop_();
  49.     LS165_SH2=1;
  50.     CS_8255 = 1;
  51.         A0_8255 = 1;
  52.     A1_8255 = 0;          //PB口位制寄存器
  53.             
  54.     CS_8255 = 0;
  55.     DATA=BT3;
  56.     WR_8255 = 0;
  57.         _nop_();
  58.         _nop_();
  59.         _nop_();
  60.     WR_8255 = 1;
  61.     CS_8255 = 1;
  62.         LS165_SH1=0;
  63.     _nop_();
  64.         LS165_SH1=1;
  65.                  
  66.         for(i=0;i<16;i++)
  67.     {
  68.                 LS165_CLK = 0;
  69.                  _nop_();
  70.                 LS165_CLK = 1;

  71.                 S_CLK = 0;
  72.                 S_CLK = 1;               
  73.            }
  74.         for(i=0;i<15;i++)
  75.         {
  76.                 S_CLK = 0;
  77.                 S_CLK = 1;               
  78.            }
  79.                 //--输出--//
  80.         R_CLK = 0; //set dataline low
  81.         R_CLK = 1;
  82.         R_CLK = 0; //set dataline low
  83. }
复制代码



全部资料51hei下载地址:
用8255与74LS154设计的16×16点阵屏.zip (215.73 KB, 下载次数: 44)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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