我手上有一塊空調(diào)顯示板,是兩個74HC595驅(qū)動的,雙8數(shù)碼管顯示。 我剛學單片機,就想能編個小程序點亮他,程序設(shè)想是,60秒倒計時,并有嘀嘀聲。S1鍵為設(shè)置鍵,S2鍵數(shù)碼上升,S3鍵數(shù)碼下降。S4鍵,停止工作。
剛學單片機,程序可能編寫的不好,望各位大俠指點!
(咋樣添加視頻啊,搞半天上部去,自己拍的視頻可以上傳嗎?)
0.jpg (55.37 KB, 下載次數(shù): 72)
下載附件
2018-3-21 22:49 上傳
0.jpg (32.78 KB, 下載次數(shù): 76)
下載附件
2018-3-21 22:49 上傳
0.png (43.05 KB, 下載次數(shù): 78)
下載附件
2018-3-21 22:49 上傳
單片機源程序如下:
- #include < reg51.h> //51芯片管腳定義頭文件
- #include < intrins.h> //內(nèi)部包含延時函數(shù) _nop_() ;
- #define uchar unsigned char
- #define uint unsigned int
- uchar code leddata [ ]={0x01,0xf9,0x42,0xc0,0xa8,0x84,0x04,0xe1,0x00,0x80} ;
- sbit SDATA_595=P1^0 ; //串行數(shù)據(jù)輸入
- sbit SCLK_595 =P1^1 ; //移位時鐘脈沖
- sbit RCK_595 =P1^2 ; //輸出鎖存器控制脈沖
- sbit beez = P3^6;
- sbit S1 = P3^5;
- sbit S2 = P3^4;
- sbit S3 = P3^3;
- sbit S4 = P3^2;
- uchar temp_shi,temp_ge,ge,ge1,k ;
- uint m,n,p;
- void delay ( uint z )
- {
- uint x,y;
- for (x = z ;x>0;x--)
- for( y = 114;y>0;y--) ;
- }
- void delay1 ( uint z )
- {
- uint x,y;
- for (x = z ;x>0;x--)
- for( y = 10;y>0;y--) ;
- }
- void WR_shi_595(void) //值595十位 為低
- {
- uchar j ;
- uchar we;
- we = 0x7f;
- for (j=0 ;j< 8 ;j++)
- {
- we = we << 1 ;
- SDATA_595=CY ;
- SCLK_595=1 ; //上升沿發(fā)生移位
- _nop_() ;
- _nop_() ;
- SCLK_595=0 ;
- }
-
- for (j=0 ;j< 8 ;j++) //寫595十位數(shù)據(jù)
- {
- temp_shi = temp_shi << 1 ;
- SDATA_595=CY ;
- SCLK_595=1 ; //上升沿發(fā)生移位
- _nop_() ;
- _nop_() ;
- SCLK_595=0 ;
- }
- }
- void WR_ge_595(void) //值595個位 為低
- {
- uchar j ;
- uchar we1;
- we1 = 0x8f;
- for (j=0 ;j< 8 ;j++)
- {
- we1 = we1 << 1 ;
- SDATA_595=CY ;
- SCLK_595=1 ; //上升沿發(fā)生移位
- _nop_() ;
- _nop_() ;
- SCLK_595=0 ;
- }
- for (j=0 ;j< 8 ;j++) //寫595個位數(shù)據(jù)
- {
- temp_ge = temp_ge << 1 ;
- SDATA_595=CY ;
- SCLK_595=1 ; //上升沿發(fā)生移位
- _nop_() ;
- _nop_() ;
- SCLK_595=0 ;
- }
- }
- void OUT_595(void)
- {
- RCK_595=0 ;
- _nop_() ;
- _nop_() ;
- RCK_595=1 ; //上升沿將數(shù)據(jù)送到輸出鎖存器
- _nop_() ;
- _nop_() ;
- _nop_() ;
- RCK_595=0 ;
- }
- void dispiay_595 (z) //顯示子函數(shù)
- {
- uchar shi ,ge;
- shi = z/10;
- ge = z%10;
- temp_shi = leddata[shi] ;
- temp_ge = leddata[ge];
- WR_shi_595();
- OUT_595();
- delay(5);
- WR_ge_595();
- OUT_595();
- delay(5);
- }
- main()
- {
- SCLK_595=0 ;
- RCK_595=1 ;
- k = 60;
- while(1)
- {
- for ( m=0; m<78;m++)
- {
- dispiay_595(k);
- delay(1) ;
-
- if ( S1 == 0 )
- {
- delay (5);
- if ( S1 ==0 )
- { while ( !S1 );
- }
-
- for ( p=0;p<300;p++)
- {
- dispiay_595(k);
- delay(1) ;
- if ( S2 == 0 )
- { delay (5);
- if ( S2 ==0 )
- k++;
- p=0;
- while (!S2) ;}
- if ( S3 == 0 )
- { delay (5);
- if ( S3 ==0 )
- k--;
- p=0;
- while (!S3) ;
- }
- if ( S4 == 0 )
- { delay (5);
- if ( S4 ==0 )
- while (1) ;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
74HC595.rar
(14.83 MB, 下載次數(shù): 32)
2018-3-21 17:50 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|