|
目前的狀態(tài)就是:
1.只能確定顯示在哪一行,但是顯示在哪一行給的數(shù)據(jù)無(wú)論多少那行都會(huì)全部點(diǎn)亮
2.想要顯示圖形的時(shí)候,點(diǎn)陣會(huì)全部點(diǎn)亮
單片機(jī)源程序如下:
- #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--)
- {
- //大致延時(shí)1mS
- DelayUs2x(245);
- DelayUs2x(245);
- }
- }
- /*------------------------------------------------
- 發(fā)送字節(jié)程序
- ------------------------------------------------*/
- void SendByte(unsigned char dat)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- SER=dat&0x80;
- dat<<=1;
- SRCLK=0;
- SRCLK=1;
- }
- }
- /*------------------------------------------------
- 發(fā)送雙字節(jié)程序
- ------------------------------------------------*/
- void Send2Byte(unsigned char dat1,unsigned char dat2)
- {
- SendByte(dat1);
- SendByte(dat2);
- }
- /*------------------------------------------------
- 595鎖存程序
- 595級(jí)聯(lián)發(fā)送數(shù)據(jù)后,鎖存有效
- ------------------------------------------------*/
- void Out595(void)
- {
- LATCH=0;
- _nop_();
- LATCH=1;
- }
- /*------------------------------------------------
- 發(fā)送位碼字節(jié)程序
- 使用另外一片單獨(dú)595
- ------------------------------------------------*/
- void SendCol(unsigned char dat)
- {
- unsigned char i;
- for(i=0;i<8;i++) //發(fā)送字節(jié)
- {
- 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()
- }*/
- }
- }
復(fù)制代碼 |
|