找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1639|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)控制點(diǎn)陣 為什么我這個函數(shù)正確,卻不能正確顯示0啊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:261485 發(fā)表于 2018-4-13 08:26 來自觸屏版 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
為什么我這個函數(shù)正確,卻不能正確顯示0啊

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. typedef unsigned char u8;
  4. typedef unsigned int u16;
  5. sbit SRCLK=P3^6;                 //宏定義sbit RCLK=P3^5;
  6. sbit SER=P3^4;
  7. void delay(u16 i)                  //延時函數(shù)
  8. {   
  9. while(i--);
  10. }
  11. u8 ledduan[]=(0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00);                  //段選   橫向選中一排
  12. u8 ledwei[]=(0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfb,0xfe);                  //位選   縱向選中一列
  13. void hc595sendbaty(u8 dat)
  14. {      u8 a;      
  15. SRCLK=0;                                 //為上升沿做準(zhǔn)備          RCLK=0;                                           for(a=0;a<8;a++)          {}   SER=dat>>7;               
  16.    dat<<=1;               
  17.    SRCLK=1;                                 //產(chǎn)生上升沿                   _nop_();               
  18.    _nop_();                                   
  19.    SRCLK=0;                                 //為下一個上升沿做準(zhǔn)備          }                          
  20.           RCLK=1;        
  21.   _nop_();        
  22.   _nop_();        
  23.   RCLK=0;}void main()
  24. {    u8 i;    P0=0x7f;                   //不理解為什么要先點(diǎn)亮第一排??   
  25. while(1)                {                                                              for(i=0;i<8;i++)        
  26.         {    P0=ledwei[i];                        hc595sendbaty(ledduan[i]);                        delay(100);               
  27.         hc595sendbaty(0x00);                }                 }          }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:164602 發(fā)表于 2018-4-13 09:52 | 只看該作者
你的程序正確才怪!。。。
第一:編譯有錯:RCLK沒申明。所以沒能編譯出可執(zhí)行文件.HEX,你真的下載起了?那么就不是這個程序,當(dāng)然不會顯示正確了。
第二:主函數(shù)都沒有,還說“函數(shù)正確”

不知道是不是你沒有發(fā)全部程序。顯示0的程序我也有一個,看看吧。

#include<reg51.h>
#include<intrins.h>

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
unsigned char code TAB[8]  = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char code CHARCODE[20][8]=
{

{0x00,0x00,0x00,0x3E,0x41,0x41,0x41,0x3E}, //0       

{0x00,0x00,0x00,0x00,0x21,0x7F,0x01,0x00}, //1

{0x00,0x00,0x00,0x21,0x43,0x45,0x49,0x31}, //2

{0x00,0x00,0x00,0x42,0x41,0x51,0x69,0x46}, //3

{0x00,0x00,0x00,0x0C,0x14,0x24,0x7F,0x04}, //4

{0x00,0x00,0x00,0x72,0x51,0x51,0x51,0x4E}, //5

{0x00,0x00,0x00,0x1E,0x29,0x49,0x49,0x06}, //6

{0x00,0x00,0x00,0x40,0x40,0x4F,0x50,0x60}, //7

{0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36}, //8

{0x00,0x00,0x00,0x30,0x49,0x49,0x4A,0x3C}, //9

{0x00,0x00,0x01,0x1F,0xE4,0x3C,0x07,0x01}, //A

{0x00,0x00,0x00,0x81,0xFF,0x91,0x91,0x6e}, //B

{0x00,0x00,0x00,0x7E,0x81,0x81,0x81,0xc2}, //C

{0x00,0x00,0x00,0x81,0xFF,0x81,0x81,0x7e}, //D

{0x00,0x00,0x00,0x81,0xFF,0x91,0xb9,0xc3}, //E

{0x00,0x00,0x00,0x81,0xFF,0x91,0xb8,0xc0}, //F

{0x00,0x00,0x3C,0x42,0x81,0x89,0xce,0x08}, //G

{0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00},  //中

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},  //全滅

{0x3C,0x62,0xB1,0xAB,0x87,0xB1,0x62,0x3C}//人臉

};
void delay(unsigned int time)//0.0001766s延時,約0.2ms
{
  unsigned int j;
  for(time;time>0;time--)
    for(j=0;j<20;j++);
}
void Hc595SendByte(unsigned char dat)
{
        unsigned char a;
        SRCLK=0;
        RCLK=0;
        for(a=0;a<8;a++)
        {
                if ((dat<<a)&0x80)
                {
                        SER=1;
                }
                else
                {
                        SER=0;
                }
                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;       
        }

        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}

void main ()
{
        unsigned char i,j,k;
        P0=0xff;
        while (1)
        {
                for (i=0;i<20;i++)
                {
                        for (j=0;j<100;j++)
                        {
                                for (k=0;k<8;k++)
                                {
                                        P0=0xff;                       
                                        Hc595SendByte(CHARCODE[i][k]);
                                        P0=TAB[k];
                                        delay(5);
                                }
                        }                       
                }
        }
}
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表