要求:用單片機(jī)的P0口外接74LS245作為控制8×8 LED點(diǎn)陣屏的行驅(qū)動(dòng),列選通由P1端口控制,程序運(yùn)行時(shí),8×8 LED點(diǎn)陣屏依次循環(huán)顯示數(shù)字0~9。刷新時(shí)間由定時(shí)器T1的定時(shí)中斷來(lái)完成。
二、設(shè)計(jì)方案:
方案1:74LS245驅(qū)動(dòng)芯片加上單片機(jī)8255和8X8點(diǎn)陣進(jìn)行設(shè)計(jì)。
優(yōu)點(diǎn):電路相對(duì)穩(wěn)定,易實(shí)現(xiàn)實(shí)驗(yàn)方案
缺點(diǎn):連接的線多,切要對(duì)74LS245進(jìn)行了解,寫(xiě)程序麻煩
方案2:只用單片機(jī)8255和8X8點(diǎn)陣來(lái)設(shè)計(jì),本次用這個(gè)
優(yōu)點(diǎn);簡(jiǎn)單,連線少,程序簡(jiǎn)單
缺點(diǎn):電路沒(méi)有方案1的穩(wěn)定
三、理論設(shè)計(jì)
軟件流圖
開(kāi)始
↓
定時(shí)器1初始化
↓
主循環(huán)←←←←↑
↓ 無(wú)↑ ↑
定時(shí)中斷函數(shù)→→有無(wú)中斷→→ → ↑ ↑
↓有 ↑
↓ ↑
調(diào)用顯示子函數(shù) ↑
↓→→→→→→↑
原理圖;
時(shí)鐘電路和復(fù)位電路;
顯示電路;
主要程序段
顯示部分;
signed char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//給單片機(jī)端口賦值為低電平時(shí)燈亮
signed char code digittab[10][8]={{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
};
定時(shí)部分:
TMOD=0x10; //設(shè)置定時(shí)器1為工作方式1
TH1=(65536-3000)/256;
TL1=(65536-3000)%256;//定時(shí)600000us
TR1=1; //啟動(dòng)定時(shí)器1
ET1=1; //開(kāi)啟定時(shí)器1 中斷
|