|
目前的状态就是:
1.只能确定显示在哪一行,但是显示在哪一行给的数据无论多少那行都会全部点亮
2.想要显示图形的时候,点阵会全部点亮
单片机源程序如下:
- #include<reg52.h>
- #include <intrins.h>
- unsigned char Line[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //8行,一到八行
- unsigned char code tab[]={0x83,0x43,0x24,0x18,0x18,0x24,0x43,0x83};
- /*------------------------------------------------
- 硬件端口定义
- ------------------------------------------------*/
- /*sbit LATCH = P1^0; //RCLK
- sbit SRCLK = P1^1;
- sbit SER = P1^2;
- sbit LATCH_B = P2^2;//RCLK
- sbit SRCLK_B = P2^1;
- sbit SER_B = P2^0;*/
- sbit LATCH = P1^3; //RCLK,锁存端
- sbit SRCLK = P1^4;
- sbit SER = P1^5;
- sbit LATCH_B = P2^5;//RCLK
- sbit SRCLK_B = P2^4;
- sbit SER_B = P2^3;
- void DelayUs2x(unsigned char t)
- {
- while(--t);
- }
- void DelayMs(unsigned char t)
- {
- while(t--)
- {
- //大致延时1mS
- DelayUs2x(245);
- DelayUs2x(245);
- }
- }
- /*------------------------------------------------
- 发送字节程序
- ------------------------------------------------*/
- void SendByte(unsigned char dat)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- SER=dat&0x80;
- dat<<=1;
- SRCLK=0;
- SRCLK=1;
- }
- }
- /*------------------------------------------------
- 发送双字节程序
- ------------------------------------------------*/
- void Send2Byte(unsigned char dat1,unsigned char dat2)
- {
- SendByte(dat1);
- SendByte(dat2);
- }
- /*------------------------------------------------
- 595锁存程序
- 595级联发送数据后,锁存有效
- ------------------------------------------------*/
- void Out595(void)
- {
- LATCH=0;
- _nop_();
- LATCH=1;
- }
- /*------------------------------------------------
- 发送位码字节程序
- 使用另外一片单独595
- ------------------------------------------------*/
- void SendCol(unsigned char dat)
- {
- unsigned char i;
- for(i=0;i<8;i++) //发送字节
- {
- SER_B=dat&0x80;
- dat<<=1;
- SRCLK_B=0;
- SRCLK_B=1;
- }
- LATCH_B=0; //锁存
- _nop_();
- LATCH_B=1;
- }
- /*------------------------------------------------
- 主程序
- ------------------------------------------------*/
- void main()
- {
- unsigned char i,j;
- while(1)
- {
- for(j=0;j<60;j++)
- for(i=0;i<8;i++) //8列显示
- {
- SendCol(Line[i]);
- Send2Byte(tab[i],0xff);
- Out595();
- DelayMs(1);
- Send2Byte(0xff,0xff);//delay(10); //防止重影
- Out595();
- }
- /*for(j=0;j<60;j++)
- for(i=0;i<8;i++) //8列显示
- {
- SendCol(Line[7-i]); //反向显示同样图形
- Send2Byte(0x00,tab[i]);
- Out595();
- DelayMs(1);
- Send2Byte(0xff,0xff);//delay(10); //防止重影
- Out595()
- }*/
- }
- }
复制代码 |
|