新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用STC12C5A60S2直驅一個16*16LED點陣顯示屏

        用STC12C5A60S2直驅一個16*16LED點陣顯示屏

        作者: 時間:2016-11-29 來源:網絡 收藏
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00, //最后留一空白字符. }; uchar code tab[]= {0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff, 0xfe, 0xff, 0xff, 0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,0 xfe }; //16列掃描分時輸出,從右到左每次輸出1列 ,低電平有效. bit SHAN; //以下變量作為時鐘計數用,本程序單顯漢字,未用到. uchar second,minute,hour; void init(); //初始化函數. #define HAN1 P1 //定義p1口為行0-行7數據口 #define HAN2 P3 //定義p3口為行8-行15數據口 #define LIE1 P2 //定義p2口為列1-行7數據口 #define LIE2 P0 //定義p0口為列8-列15數據口 void delay(uchar delay_time); //延時函數 //--------------------------------------------------------------------- void main() {uchar i ,speed; uint k ; init(); //初始化STC12C5A60S2的P0-P3端口為強推輸出,每端 口輸出可輸出20MA電流,可直驅8X8LED點陣. while(1) { for( k = 0 ; k <1056 ;k += 2 ) //以下的循 環體為流動顯示16X16字符. { for( speed = 0 ; speed <10 ; speed++) //改 變這行參數可以改速度. { for(i=0 ;i <16 ; i++) { LIE1=0xff; LIE2=0xff; HAN1 = zimo1[2*i + k ] ; HAN2 = zimo1[2*i+1+ k] ; LIE2=tab[2*i]; LIE1=tab[2*i+1]; delay(20) ; LIE1=0xff; LIE2=0xff; } } } }; } //--------------------------------------------------------------------- void delay(uchar t) // 延時函數 { uchar i; //定義變量 for(;t>0;t--) //如果t大于0,t減1(外層循環) for(i=124;i>0;i--); //i等于124,如果i大于0,i減1 } //--------------------------------------------------------------------- /*************************************** 函 數 名:init 功 能:初始化函數 說 明:初始化定時器及中斷 入口參數:無 返 回 值:無 ***************************************/ void init() { TMOD=1;TH0=0X3C;TL0=0XB0; //定時器0模式1,50毫秒 ET0=1;TR0=1;EA=1; //開定時器0中斷、啟動定時器0、開總中斷 P4SW=0xff; //定義P4口為I/O口 P0M1=0x00; P0M0=0xff; //定義P0為強上拉輸出. P1M1=0x00; P1M0=0xff; //定義P1為強上拉輸出. P2M1=0x00; P2M0=0xff; //定義P2為強上拉輸出. P3M1=0x00; P3M0=0xff; //定義P3為強上拉輸出. P4M1=0x00; P4M0=0xff; //定義P4為強上拉輸出. } /********************************************************************** ****** 函數功能:定時器中斷延時程序 這一段的作用計時用,程序中沒有用到,保留作為 計時時鐘或延時用. 入口參數: 出口參數: *********************************************************************** *****/ void timer0(void) interrupt 1 { uchar tim1,tim2; //定義臨時變量 TL0=TL0+0XB0;TH0=0X3C; //重裝定時器初值 tim1++; //每中斷一次tim1加1 if(tim1==10) //中斷10(0.5秒) { SHAN=!SHAN; //閃爍標志取反 tim1=0;tim2++; //tim1清零,tim2加1 if(tim2==2) //到了1秒 { tim2=0;second++; //tim2清零,秒加1 if(second==60) //如果秒到60 { second=0;minute++; //秒變0,分加1 if(minute==60) //如果分到60 { minute=0;hour++; //分變0,時加1 if(hour==24) hour=0; //如果時到24,時變0 } } } } }

        上一頁 1 2 下一頁

        關鍵詞: STC12C5A60S216*16LED點陣顯示

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 陆良县| 秭归县| 荃湾区| 阿拉善左旗| 贵定县| 吉水县| 东宁县| 临安市| 绵竹市| 黔西县| 彭阳县| 方山县| 南充市| 中江县| 乌兰县| 莫力| 台东市| 阿坝| 都江堰市| 新兴县| 正阳县| 汤原县| 灵武市| 泸水县| 繁昌县| 朝阳市| 新宾| 仁化县| 山西省| 泸水县| 遂昌县| 本溪| 依兰县| 赞皇县| 揭西县| 新津县| 和政县| 陵川县| 孝义市| 固安县| 杭州市|