基于51單片機的8255芯片與74LS154結合實現16*16點陣掃描的設計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
圖片1.png (26.41 KB, 下載次數: 31)
下載附件
電路仿真圖
2019-4-13 18:55 上傳
0.png (9.52 KB, 下載次數: 41)
下載附件
2019-4-17 02:17 上傳
單片機源程序如下:- #include <REG51.H>
- #include<intrins.h>
- #include "tou.h"
- sbit R_CLK = P3^5;
- sbit S_CLK = P3^6;
- sbit LS165_SH1=P2^5;
- sbit LS165_SH2=P2^2;
- sbit LS165_CLK=P2^3;
- sbit A0_8255 = P2^0;
- sbit A1_8255 = P2^1;
- sbit CS_8255=P2^4;
- sbit WR_8255=P3^3;
- sbit RD_8255=P3^7;
- sbit RST_8255=P1^4;
-
- void Init8255A(void)
- {
- uchar i;
- RST_8255 =1;
- for(i=0;i<255;i++);
- RST_8255 =0;
- CS_8255 = 1;
- WR_8255 = 1;
- RD_8255 = 1;
- CS_8255 = 0;
- A0_8255 = 1; //選擇內部控制寄存器
- A1_8255 = 1;
- DATA = 0x80;
- WR_8255 = 0; //寫入配置字
- WR_8255 = 1;
- CS_8255 = 1;
- }
- void HCR (uchar BT3, uchar BT2)
- {
- uchar i;
- A0_8255 = 0;
- A1_8255 = 0; //PA口位制寄存器
-
- CS_8255 = 0;
- DATA=BT2;
- WR_8255 = 0;
- _nop_();
- _nop_();
- _nop_();
- WR_8255 = 1;
-
- LS165_SH2=0;
- _nop_();
- LS165_SH2=1;
- CS_8255 = 1;
- A0_8255 = 1;
- A1_8255 = 0; //PB口位制寄存器
-
- CS_8255 = 0;
- DATA=BT3;
- WR_8255 = 0;
- _nop_();
- _nop_();
- _nop_();
- WR_8255 = 1;
- CS_8255 = 1;
- LS165_SH1=0;
- _nop_();
- LS165_SH1=1;
-
- for(i=0;i<16;i++)
- {
- LS165_CLK = 0;
- _nop_();
- LS165_CLK = 1;
- S_CLK = 0;
- S_CLK = 1;
- }
- for(i=0;i<15;i++)
- {
- S_CLK = 0;
- S_CLK = 1;
- }
- //--輸出--//
- R_CLK = 0; //set dataline low
- R_CLK = 1;
- R_CLK = 0; //set dataline low
- }
復制代碼
全部資料51hei下載地址:
用8255與74LS154設計的16×16點陣屏.zip
(215.73 KB, 下載次數: 44)
2019-4-13 18:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|