#include #define uint unsigned int #define uchar unsigned char //使用的IO口要根据自己接在单片机里的情况来更改 sbit RCK = P3^6; //声明串行输出存储锁存线RCK sbit SCK = P3^5; //声明串行数据输入时钟线SCK sbit SER = P3^4; //声明串行数据输入线SER sbit HC = P0^0; //声明C信号接口 sbit HB = P0^1; //声明B信号接口 sbit HA = P0^2; //声明A信号接口 #define ROW1 HC = 0; HB = 0; HA = 0; //定义使能第1行 #define ROW2 HC = 0; HB = 0; HA = 1; //定义使能第2行 #define ROW3 HC = 0; HB = 1; HA = 0; //定义使能第3行 #define ROW4 HC = 0; HB = 1; HA = 1; //定义使能第4行 #define ROW5 HC = 1; HB = 0; HA = 0; //定义使能第5行 #define ROW6 HC = 1; HB = 0; HA = 1; //定义使能第6行 #define ROW7 HC = 1; HB = 1; HA = 0; //定义使能第7行 #define ROW8 HC = 1; HB = 1; HA = 1; //定义使能第8行 uchar h; //显示数据,可以用取模软件来获取 uchar iloveu[] = { 0x00,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00, 0x00,0x36,0x7F,0x7F,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}; void delay(uint z) //延时函数,单位ms { uint i, j; for(i = z; i > 0; i--) for(j = 110; j > 0; j--); } void ROW() //行驱动函数 { switch(h) { case 0: ROW1;break; case 1: ROW2;break; case 2: ROW3;break; case 3: ROW4;break; case 4: ROW5;break; case 5: ROW6;break; case 6: ROW7;break; case 7: ROW8;break; } RCK = 1; //595输出存储器锁存移位寄存器中的状态值 RCK = 0; //595输出存储器状态保持 } void in_data(uchar n) //数据打入74HC595函数 { uchar x,y; y = n; for(x = 8; x > 0; x--) { if(y&0x01) //特别注意先打入的是高位对应第8列,最后打入低位对应第1列 SER = 1; else SER = 0; y = y>>1; //对应先高位后对位应往右移位数据 SCK = 0; //时钟接低,准备下一次读取数据 SCK = 1; //595芯片读取数据 } } void main(void) { uchar m, in[56], n; RCK = 0; //清零锁存线 SCK = 0; //清零时钟线 for(h = 0; h < 56; h++) in[h] = iloveu[h]; while(1) { for(m = 18; m> 0; m--) //赋值运算,保护原始数据 { for(h = 0; h < 8; h++) { in_data(in[h]); ROW(); delay(1); } } //左移 for(h = 0; h < 8; h++) { if(in[h]&0x80) m = 1; //预先保存第一位数据 else m = 0; for(n = 0; n < 6; n++) { if(in[h+8*n+8]&0x80) //没有改变in[h+8]的值 in[h+8*n] = (in[h+8*n]<<1) + 1; //循环左移思想 else in[h+8*n] <<= 1; //第一位数据丢失了 } if(m) in[h+8*n] = (in[h+8*n]<<1) + 1; //循环左移思想 else in[h+8*n] <<= 1; } } } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务