久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3142|回復: 2
打印 上一主題 下一主題
收起左側

“拋磚之四”--有史以來最簡單的高端時鐘

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 tianxing 于 2014-11-3 18:10 編輯

MAX7219是一款最適合初學者練手的驅動電路,單片電路可以顯示8位數碼管和8*8LED點陣,電路設計簡單明了且可以多級連接,初學者動手容易成功,熟練掌握MAX7219,就基本通達了數碼管和點陣的學習內容。希望能給大家以幫助。


#include <reg52.h>

#define INT8 unsigned char

#define Addr_Digit0 0x01  
#define Addr_Digit1 0x02  
#define Addr_Digit2 0x03  
#define Addr_Digit3 0x04  
#define Addr_Digit4 0x05  
#define Addr_Digit5 0x06  
#define Addr_Digit6 0x07  
#define Addr_Digit7 0x08

#define Addr_Decode_Mode 0x09   //譯碼模式寄存器地址
#define Addr_Intensity 0x0A     //亮度控制寄存器地址
#define Addr_Scan_Limit 0x0B    //掃描控制寄存器地址  
#define Addr_Shutdowm 0x0C      //掉電模式寄存器地址  
#define Addr_Display_Test 0x0F  //顯示檢測寄存器地址  

sbit Max7219_Din = P3 ^ 0;  
sbit Max7219_Load = P3  ^1;  
sbit Max7219_Clk = P3 ^ 2;

INT8 T_count = 0;
INT8 Hour_1 = 0, Hour_2 = 8;     //任意設定初始小時值。         8
INT8 Minute_1 = 3, Minute_2 = 0; //任意設定初始分鐘值。         30
INT8 Second_1 = 0, Second_2 = 0; //任意設定初始小時值。         00

INT8 code max7219_led_code[11]=                         //共陰碼表。
{
        0x7E,0x30,0x6D,0x79,0x33,              //0,1,2,3,4  
        0x5B,0x5F,0x70,0x7F,0x7B,0x01           //5,6,7,8,9,-  
};         

void wr_max7219(INT8 addr,INT8 dat)  
{  
        INT8 i;
        Max7219_Load = 0;  
        Max7219_Clk = 0;  
        for( i = 0; i < 8; i ++ )  
        {  
                Max7219_Din = ( bit )( addr & 0x80 );  
                addr = addr << 1;  
                Max7219_Clk = 1;  
                Max7219_Clk = 0;  
        }  
        for( i = 0; i < 8; i ++ )  
        {  
                Max7219_Din = ( bit )( dat & 0x80 );  
                dat = dat << 1;  
                Max7219_Clk = 1;
                Max7219_Clk = 0;  
        }  
        Max7219_Load = 1;  
        Max7219_Load = 0;  
}

void main()  
{  
        wr_max7219( Addr_Shutdowm, 0x01 );  
        wr_max7219( Addr_Scan_Limit, 0x07 );  
        wr_max7219( Addr_Intensity, 0x0F );  
        wr_max7219( Addr_Decode_Mode, 0x00 );
        TMOD |= 0x10;
        TMOD &= 0xDF;  
        TR1 = 1;      
        ET1 = 1;      
        EA = 1;         
        while(1)
        {
                wr_max7219( Addr_Digit0, max7219_led_code[ Hour_1 ]);
                wr_max7219( Addr_Digit1, max7219_led_code[ Hour_2 ]);  
                wr_max7219( Addr_Digit2, max7219_led_code[ 10 ]);  
                wr_max7219( Addr_Digit3, max7219_led_code[ Minute_1 ]);  
                wr_max7219( Addr_Digit4, max7219_led_code[ Minute_2 ]);  
                wr_max7219( Addr_Digit5, max7219_led_code[ 10 ]);  
                wr_max7219( Addr_Digit6, max7219_led_code[ Second_1 ]);  
                wr_max7219( Addr_Digit7, max7219_led_code[ Second_2 ]);  
        }
}

void interrupt_timer1()        interrupt 3
{
        TH1 = ( 65536 - 5000 ) / 256;      
        TL1 = ( 65536 - 5000 ) % 256;      
        T_count ++;                           //定時器中斷計數器加一   
        if( T_count == 161 )                   //微調  
        {   
                T_count = 0;                      //清零定時器中斷計數器   
                Second_2 ++;                        //秒個位計數器加一   
                if( Second_2 == 10 )              
                {     
                        Second_1 ++;
                        Second_2 = 0;                                 
                        if( Second_2 == 0 && Second_1 == 6 )
                        {
                                Second_1 = 0;
                                Second_2 = 0;
                                Minute_2 ++;
                                if( Minute_2 == 10 )
                                {
                                        Minute_1 ++;
                                        Minute_2 = 0;                                    //分個位計數器清零
                                        if(Minute_2 == 0 && Minute_1 == 6 )
                                        {
                                                Minute_1 = 0;
                                                Minute_2 = 0;                                    
                                                Hour_2 ++;
                                                if( Hour_2 == 10 && Hour_1 <= 2)
                                                {
                                                        Hour_1 ++;
                                                        Hour_2 =0;                                          //時個位計數器清零
                                                }
                                                else if( Hour_2 == 4 && Hour_1 == 2 )
                                                {
                                                        Hour_1 = 0;
                                                        Hour_2 = 0;
                                                }
                                        }
                                }
                        }  
                }  
        }
}

截圖02.png (31.1 KB, 下載次數: 122)

截圖02.png

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:79911 發表于 2015-5-13 23:02 | 只看該作者
謝謝樓主
回復

使用道具 舉報

板凳
ID:194701 發表于 2017-5-1 17:12 | 只看該作者
謝謝樓主
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人精品视频 | 免费在线看a | 欧美国产一区二区三区 | 亚洲网视频 | 在线观看中文字幕亚洲 | 亚洲免费一区 | 中文字幕丁香5月 | 日本高清视频在线播放 | 久久这里只有精品首页 | 久久精品欧美电影 | 国产一区不卡在线观看 | 五月婷婷色 | 国产成人免费视频网站高清观看视频 | 日韩国产欧美视频 | 国产在视频一区二区三区吞精 | av在线一区二区三区 | 欧美日韩中文字幕在线 | 一二三四在线视频观看社区 | 成人中文网 | 青青激情网 | 日本视频免费观看 | 99精品国产一区二区青青牛奶 | 国产精品永久免费视频 | 午夜一级做a爰片久久毛片 精品综合 | 国产精品视频久久久 | 91视频免费 | 国产免费一区二区 | 一区二区三区国产 | 国产一区二区高清在线 | 欧美日韩在线综合 | 一二区成人影院电影网 | 日韩成人免费视频 | 精品国产一区二区三区性色av | 91看片网| 日韩三区| 精彩视频一区二区三区 | 成人一区二区三区在线 | www.亚洲区 | 国产一区二区精品在线观看 | 日本激情视频在线播放 | 国产999精品久久久影片官网 |