《51单片机8x8点阵显示程序参考》由会员分享,可在线阅读,更多相关《51单片机8x8点阵显示程序参考(5页珍藏版)》请在金锄头文库上搜索。
1、本程序用的是51单片机控制8*8点阵显示I(心形)U#include#defineuintunsignedint#defineucharunsignedchar使用的IO口要根据自己接在单片机里的情况来更改sbitRCK=P3八6;/声明串行输出存储锁存线RCKsbitSCK=P3A5;/声明串行数据输入时钟线SCKsbitSER=P3A4;/声明串行数据输入线SERsbitHC=P0A0;声明C信号接口sbitHB=P0A1;声明B信号接口sbitHA=P0A2;声明A信号接口#defineROW1HC=0;HB=0;HA=0;定义使能第1行#defineROW2HC=0;HB=0;HA=1
2、;定义使能第2行#defineROW3HC=0;HB=1;HA=0;定义使能第3行#defineROW4HC=0;HB=1;HA=1;定义使能第4行#defineROW5HC=1;HB=0;HA=0;定义使能第5行#defineROW6HC=1;HB=0;HA=1;定义使能第6行#defineROW7HC=1;HB=1;HA=0;定义使能第7行#defineROW8HC=1;HB=1;HA=1;定义使能第8行ucharh;显示数据,可以用取模软件来获取uchariloveu=0x00,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x36,0x7F,0x7F,
3、0x3E,0x1C,0x08,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x00,0x7C,0x08,0x10,0x08,0x04,0x44,0x38,0x00,0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x00,0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x00;voiddelay(uintz)/延时函数,单位msuinti,j;for(i=乙i0;i-)for(j=110;j0;j-);voidROW()行驱动函数sw
4、itch(h)case0:R0W1;break;case1:ROW2;break;case2:R0W3;break;case3:R0W4;break;case4:ROW5;break;case5:ROW6;break;case6:ROW7;break;case7:ROW8;break;RCK=1;595输出存储器锁存移位寄存器中的状态值RCK=0;/595输出存储器状态保持voidin_data(ucharn)/数据打入74HC595函数ucharx,y;y=n;for(x=8;x0;x-)if(y&0x01)特别注意先打入的是高位对应第8列,最后打入低位对应第1列SER=1;elseSER=
5、0;y=y1;对应先高位后对位应往右移位数据SCK=0;/时钟接低,准备下一次读取数据SCK=1;595芯片读取数据voidmain(void)ucharm,in56,n;RCK=0;/清零锁存线SCK=0;/清零时钟线赋值运算,保护原始数据for(h=0;h0;m-)for(h=0;h8;h+)in_data(inh);ROW();delay(1);左移for(h=0;h8;h+)if(inh&0x80)m=1;/预先保存第一位数据elsem=0;for(n二0;n6;n+)if(inh+8*n+8&0x80)没有改变inh+8的值inh+8*n=(inh+8*n1)+1;/循环左移思想elseinh+8*n=1;第一位数据丢失了if(m)inh+8*n=(inh+8*n1)+1;/循环左移思想elseinh+8*n=1;