找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

請教74HC595數(shù)碼管顯示程序的問題

查看數(shù): 2323 | 評論數(shù): 8 | 收藏 3
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2023-11-30 20:31

正文摘要:

從壇上復(fù)制的74HC595程序仿真不顯示?請幫我看看,謝謝! 單片機(jī)源程序如下: #include <reg52.h>                     &nb ...

回復(fù)

ID:639666 發(fā)表于 2023-12-19 22:08
wulin 發(fā)表于 2023-12-1 19:08
串行數(shù)據(jù)只能逐位傳輸,可能由高位到低位亦可能低位到高位,這由器件制造商確定。(dat&0x80)>>7就是取最 ...

現(xiàn)在成功了嗎?有沒有用實(shí)物試過?
ID:213173 發(fā)表于 2023-12-1 19:08
芙蓉焊料 發(fā)表于 2023-12-1 12:03
謝謝指導(dǎo),但不明白25段碼&0x80后為什么向右移7位呢?

串行數(shù)據(jù)只能逐位傳輸,可能由高位到低位亦可能低位到高位,這由器件制造商確定。(dat&0x80)>>7就是取最高位右移7后賦值DIO,傳輸一位數(shù)據(jù),然后dat <<= 1; 如此運(yùn)行8次,完成由高位到低位將一個(gè)字節(jié)數(shù)據(jù)發(fā)出。
ID:891876 發(fā)表于 2023-12-1 12:03

謝謝指導(dǎo),但不明白25段碼&0x80后為什么向右移7位呢?
ID:277550 發(fā)表于 2023-12-1 11:10
  1. #include <reg52.H>
  2. #define uint  unsigned int
  3. #define uchar unsigned char
  4. sbit HC595_DIO   = P2^0;
  5. sbit HC595_SCLK  = P2^1;
  6. sbit HC595_RCLK  = P2^2;

  7. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//共陰數(shù)碼管段碼0~f
  8.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  9. uchar code dis_buf[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共陰數(shù)碼管位碼
  10. uint secs = 0;
  11. uchar disp[6]= {0};

  12. /******************1ms延時(shí)子程序(12MHz)*******************/
  13. void delayms(uint k){
  14.         uint i,j;
  15.         for(i=k;i>0;i--)
  16.                 for(j=125;j>0;j--);
  17. }
  18. /**************** 向HC595發(fā)送一個(gè)字節(jié)函數(shù) ******************/
  19. void Send_595(uchar dat){               
  20.         uchar i;
  21.         for(i=0; i<8; i++){
  22.                 HC595_DIO=(dat&0x80)>>7;        //由高位到低位賦值數(shù)據(jù)輸出端
  23.                 HC595_SCLK = 1;                                //移位時(shí)鐘
  24.                 HC595_SCLK = 0;
  25.                 dat <<= 1;                                        //dat左移一位
  26.         }
  27. }
  28. /**************** 數(shù)碼管顯示函數(shù) ******************/
  29. void DisplayScan(){      
  30.         static uchar i=0;
  31.         Send_595(dis_buf[i]);                //向HC595發(fā)送位碼(共陰數(shù)碼管)
  32.         Send_595(table[disp[i]]);        //向HC595發(fā)送段碼(共陰數(shù)碼管)
  33. //        Send_595(~dis_buf[i]);                //向HC595發(fā)送位碼(共陽數(shù)碼管)
  34. //        Send_595(~table[i]);                //向HC595發(fā)送段碼(共陽數(shù)碼管)
  35.         HC595_RCLK = 1;                                //鎖存輸出數(shù)據(jù)
  36.         HC595_RCLK = 0;
  37.         i++;
  38.         i%=6;
  39. }

  40. void main(){
  41.         uchar x=0;
  42.         delayms(50);
  43.         while(1){
  44.                 DisplayScan();                //數(shù)碼管顯示函數(shù)
  45.                 delayms(1);                        //延時(shí)1ms
  46.                 x++;
  47.                 if(x==100){
  48.                         x=0;
  49.                         secs++;
  50.                         secs%=65535;
  51.                         disp[0]=0;
  52.                         disp[1]=secs/10000%10;
  53.                         disp[2]=secs/1000%10;
  54.                         disp[3]=secs/100%10;
  55.                         disp[4]=secs/10%10;
  56.                         disp[5]=secs%10;
  57.                 }
  58.         }
  59. }

復(fù)制代碼

路過,將樓上的代碼,改成“活”的,演示一下 —— 硬件連線和樓上相同的。

ID:829223 發(fā)表于 2023-12-1 10:37
很明顯圖畫錯(cuò)了
ID:57657 發(fā)表于 2023-11-30 22:40
74HC系列芯片不用的輸入腳不能懸空,否則會干擾亂碼甚至靜電擊穿。
ID:213173 發(fā)表于 2023-11-30 22:28


  1. #include <reg52.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit HC595_DIO   = P2^0;
  5. sbit HC595_SCLK  = P2^1;
  6. sbit HC595_RCLK  = P2^2;

  7. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//共陰數(shù)碼管段碼0~f
  8.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  9. uchar code dis_buf[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共陰數(shù)碼管位碼

  10. /******************1ms延時(shí)子程序(12MHz)*******************/
  11. void delayms(uint k)
  12. {
  13.         uint i,j;
  14.         for(i=k;i>0;i--)
  15.                 for(j=125;j>0;j--);
  16. }
  17. /**************** 向HC595發(fā)送一個(gè)字節(jié)函數(shù) ******************/
  18. void Send_595(uchar dat)
  19. {               
  20.         uchar i;
  21.         for(i=0;i<8;i++)
  22.         {
  23.                 HC595_DIO=(dat&0x80)>>7;//由高位到低位賦值數(shù)據(jù)輸出端
  24.                 HC595_SCLK = 1;        //移位時(shí)鐘
  25.                 HC595_SCLK = 0;
  26.                 dat <<= 1;                        //dat左移一位
  27.         }
  28. }
  29. /**************** 數(shù)碼管顯示函數(shù) ******************/
  30. void DisplayScan()
  31. {       
  32.         static uchar i=0;
  33.         Send_595(dis_buf[i]);//向HC595發(fā)送位碼(共陰數(shù)碼管)
  34.         Send_595(table[i]);        //向HC595發(fā)送段碼(共陰數(shù)碼管)
  35. //        Send_595(~dis_buf[i]);//向HC595發(fā)送位碼(共陽數(shù)碼管)
  36. //        Send_595(~table[i]);        //向HC595發(fā)送段碼(共陽數(shù)碼管)
  37.         HC595_RCLK = 1;                //鎖存輸出數(shù)據(jù)
  38.         HC595_RCLK = 0;
  39.         i++;
  40.         i%=6;
  41. }

  42. void main()
  43. {
  44.         while(1)
  45.         {
  46.                 DisplayScan();        //數(shù)碼管顯示函數(shù)
  47.                 delayms(1);                //延時(shí)1ms
  48.         }
  49. }
復(fù)制代碼




ID:69038 發(fā)表于 2023-11-30 22:21
ds被你吃了?

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

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

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