led顯示屏滾動顯示漢字的廣告牌到處都是,其原理實際很簡單。我們完全可以用51單片機來控制漢字的顯示。
作為原理性試驗,我只用4塊8x8的led顯示一個漢字“歡”.理解本實驗,不難做滾動,輪流顯示。
試驗環境:proteus,keil
試驗虛擬元器件:
4塊MATRIX-8x8-RED
1塊4-16譯碼器:74HC154
單片機:ATC89C52
排阻:RESPACK-8,因為用了P0口,所以要用上拉排阻.
本來還需要四塊74ALS373拖動LED,但為了使實驗簡單,虛擬實驗省去了4塊74ALS373,做實物演示時要注意。
另外用軟件“字模精靈”軟件(百度上搜)來獲取漢字的字模,一個漢字32字節數據,P2高8位,P0低八位.
四塊led連結要注意:
上面兩快led的行線為上8行,我用的是l1-l8,
下面兩塊的行線是l9--l16.
列從右到左分別是h1--h16.
輪流顯示原理是:
第一次,i=0,第1行,送列數據0x00(P2),0x80(P0),那么第一行的P0第7位亮;
第二次,i=1,第二行,送列數據0x00,0x80,那么第二行的P0第7位亮;
第三次,i=2,第三行,送列數據0xfc,0x80,那么第三行的P2高7位亮,P0的最高位亮;
......如此依次點亮16行的led.
調整延遲時間,就會看到16行選定的led全亮,漢字就顯示出來了。
仿真電路圖(點擊或下載看大圖):
16x16led%E6%98%BE%E7%A4%BA%E4%B8%80%E4%B8%AA%E6%B1%89%E5%AD%97.JPG (354.13 KB, 下載次數: 107)
下載附件
2016-9-9 17:20 上傳
完整的C程序:
- #include
- unsigned char code tab0[]={
- 0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,
- 0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00
- };
- void delay()
- {
- unsigned char i,j;
- for(i=0;i<2;i++)
- for(j=0;j<255;j++);
- }
- main()
- {
- unsigned char i,j;
- while(1)
- {
- j=0;
- for(i=0;i<=15;i++)
- {
- P1=i;
- P2=tab0[j];
- P0=tab0[++j];
- delay();
- P2=0x00;
- P0=0x00;
- j++;
- }
- }
- }
-
復制代碼
|