|
目前的狀態就是:
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()
- }*/
- }
- }
復制代碼 |
|