使用Protues畫(huà)原理圖并寫(xiě)程序:
用定時(shí)器1的方式1實(shí)現(xiàn)n個(gè)發(fā)光管200ms間隔閃爍,用定時(shí)器0的方式1實(shí)現(xiàn)數(shù)碼管前兩位59s循環(huán)計(jì)時(shí),后兩位顯示學(xué)號(hào)(最后兩位)。
學(xué)號(hào)除6取余數(shù),余數(shù)加2.結(jié)果是這個(gè)led燈的數(shù)目n。
數(shù)碼管顯示前兩位循環(huán)計(jì)時(shí),加上顯示學(xué)號(hào)后兩位?偣诧@示四位。
仿真截圖.GIF (144.94 KB, 下載次數(shù): 54)
下載附件
原理圖
2017-12-25 20:26 上傳
01.GIF (8 KB, 下載次數(shù): 49)
下載附件
文件
2017-12-25 20:28 上傳
中斷LED顯示.rar
(1.94 MB, 下載次數(shù): 4)
2017-12-25 20:29 上傳
點(diǎn)擊文件名下載附件
原理圖及詳細(xì)源代碼 下載積分: 黑幣 -5
部分源程序如下:
#include<reg52.h> //52系列單片機(jī)頭文件
#define ucharunsigned char //宏定義
#define uintunsigned int
sbitdula=P2^6; //申明U1鎖存器的鎖存端
sbitwela=P2^7; //申明U2鎖存器的鎖存端
sbitled1=P1^0; //LED燈說(shuō)明
sbit led2=P1^1;
uchar codetable[]={ //數(shù)碼管顯示編碼
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelayms(uint);
voiddisplay(uchar,uchar);
ucharnum,num1,num2,shi,ge;
void main() //主函數(shù)
{
TMOD=0x11; //設(shè)置定時(shí)器0和1為工作方式1(0001 0001)
TH0=(65536-458720)/256; //裝初值
TL0=(65536-458720)%256;
TH1=(65536-458720)/256; //裝初值
TL1=(65536-458720)%256;
EA=1; //開(kāi)總中斷
ET0=1; //開(kāi)定時(shí)器0中斷
ET1=1; //開(kāi)定時(shí)器1中斷
TR0=1; //啟動(dòng)定時(shí)器0
TR1=1; //啟動(dòng)定時(shí)器1
while(1) //程序在這里不停的對(duì)數(shù)碼管動(dòng)態(tài)掃描同時(shí)等待中斷發(fā)生
{
display(shi,ge);
}
}
voiddisplay(uchar shi,uchar ge) //顯示子函數(shù)
{
wela=1;
P0=0xfe; //送入位選信號(hào)
wela=0;
dula=1;
P0=table[shi]; //送入段選信號(hào)
dula=0;
P0=0xff; //消影
delayms(5); //延時(shí)5毫秒
wela=1;
P0=0xfd;
wela=0;
dula=1;
|