这是我最近学习单片机做的一个电阵,
附件含有源代码和原理图,
亲测能用,适合新手观看,大佬勿喷,
(本人新手一个,此文件新手可用来参考)
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include"reg51.h"
- #include"intrins.h"
- sbit sh1=P2^0;
- sbit st1=P2^1;
- sbit ser1=P2^2;
- unsigned char code lie[16]={0x08,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,
- 0x10,0x14,0x12,0x16,0x11,0x15,0x13,0x17,};/*点亮每一列*/
- unsigned char code shu[][16]={
- 0x00,0x00,0x00,0x00,0x00,0x10,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x0F,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, /*1*/
- 0x00,0x00,0x00,0x00,0x18,0x04,0x04,0x84,0x44,0x24,0x18,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x0C,0x0A,0x09,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, /*2*/
- 0x00,0x00,0x00,0x00,0x00,0x44,0x44,0x44,0x44,0x44,0xF8,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x07,0x00,0x00,0x00,0x00,0x00, /*3*/};/*每一个字的数据*/
- void U1( unsigned char dat1, unsigned char dat2)
- { int a;
- unsigned char dat;
- dat=dat1; /*送入第一个数据*/
- sh1=0; /*让11脚拉低*/
- for(a=0;a<8;a++)
- {
- ser1=dat>>7; /*把一个字节的低七位移掉*/
- dat=dat<<=1; /*右移一位*/
- sh1=1; /*在595芯片移位*/
- _nop_();
- _nop_();
- sh1=0;
- }
- dat=dat2; /*送入第二个数据*/
- sh1=0;
- for(a=0;a<8;a++)
- {
- ser1=dat>>7;
- dat=dat<<=1;
- sh1=1;
- _nop_();
- _nop_();
- sh1=0;
- }
- }
- void out595() /*595输出*/
- {
- st1=0;
- _nop_();
- _nop_();
- st1=1;
- _nop_();
- _nop_();
- st1=0;
- }
- void main()
- {
- int i,j,y;
- while(1)
- {
- for(i=0;i<5;i=i+2)
- {
- y=50; /*显示的时间*/
- while(y--)
- {
- for(j=0;j<16;j++)
- {
-
- U1(shu[i+1][j],shu[i][j]); /*具体看595级联的用法*/
- P1=lie[j];
- out595();
- }
- P1=0xff; /*消隐*/
- }
- }
-
- }
- }
复制代码
全部资料51hei下载地址:
138和595.zip
(53.06 KB, 下载次数: 52)
|