欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機流水燈中斷計數程序(帶Proteus仿真)
[打印本頁]
作者:
15976402147
時間:
2019-10-5 11:57
標題:
單片機流水燈中斷計數程序(帶Proteus仿真)
這是我做的流水燈+中斷計數,流水燈每亮一下,數碼管自動加1,有仿真圖
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(20.41 KB, 下載次數: 73)
下載附件
2019-10-5 16:14 上傳
單片機源程序如下:
#include <reg51.h>
#define DATAPORT P2 //數碼管數據口
sbit COM1 = P3^0; //數碼管位1驅動口
sbit COM2 = P3^1; //數碼管位2驅動口
sbit COM3=P3^7;//第三個數碼管
sbit key1=P3^5;//清零按鍵
sbit led=P1^0;//20分鐘那個小燈
unsigned char miao,fen;//計時變量
code unsigned char cc_table[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數碼管段碼
unsigned int num;//計數變量
void delay(unsigned char t)//延時函數
{
unsigned char x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
void display(void)
{
COM1 = 1; //打開第一個數碼管,讓他亮
DATAPORT = cc_table[num/100]; //顯示百位段碼
delay(5);//延時5ms
COM1 = 0;//關閉第一個數碼管,滅,消影
COM2 = 1;//打開第二個數碼管
DATAPORT = cc_table[num%100/10];//顯輸十位段碼
delay(5);
COM2 = 0;//關閉
COM3 = 1; //打開第三個數碼管
DATAPORT = cc_table[num%10];//顯輸個位段碼
delay(5);
COM3 = 0;//關閉三個數碼管,滅,消影
}
void main(void)
{
TMOD = 0X01; //初始化定時器
TH0 =(65536-46078)/256;//定時器初始化
TL0 =(65536-46078)%256;//定時器初始化
EA = 1; //開總中斷
ET0 = 1; //開T0中斷
TR0=1; //啟動定時器0
TH1 =(65536-46078)/256;//定時器初始化
TL1 =(65536-46078)%256;//定時器初始化
ET1 = 1; //開T1中斷
TR1=1;//啟動定時器1
IT0=1; //下降沿觸發
EX0=1;//打開外部0中斷
P0=0x01;//P1第一燈亮
led=1;//20分鐘小燈亮
while(1)
{
display(); //顯示脈沖數
if(key1==0)//清零按鍵按下
{
delay(2);//延時消去按鍵抖動
if(key1==0)//按鍵按下
{
while(!key1);//按鍵可釋放
num=0;//清零
}
}
}
}
/********************************************************
* INT0中斷函數 *
********************************************************/
void counter0(void) interrupt 0 using 1
{
EX0=0; //關中斷
num++;//計數值加1
EX0=1;//開中斷
}
void T0_ISR(void) interrupt 1
{
static unsigned char count,temp=0x02;
TH0 =(65536-46078)/256;//定時器初始化
TL0 =(65536-46078)%256;//定時器初始化
count++;//累計20次為1秒
if(count==20)//1秒到
{
P0=0x00;//不亮
}
if((count>=60)&&(count>20))//2秒
{
count=0;//計數值清零
P0=temp;
temp=temp<<1;//左移動
if(temp==0x40)// 0X40是循環6位,0X00是循環8位
temp=0x01; // 循環結束,由第一個燈開始
}
}
void T1_ISR(void) interrupt 3
{
static unsigned int count1;
TH1 =(65536-46078)/256;//定時器初始化
TL1 =(65536-46078)%256;//定時器初始化
count1++;
if(count1==20)//計數1秒
{
count1=0;
miao++;
if(miao==60)//計時60秒到
{
miao=0;
fen++;
if(fen>=150)//計時20分鐘
{
led=0;
TR1=0;
}
}
}
}
復制代碼
0.png
(5.52 KB, 下載次數: 70)
下載附件
2019-10-5 16:15 上傳
全部資料51hei下載地址:
流水燈中斷計數(帶仿真).rar
(46.1 KB, 下載次數: 70)
2019-10-5 11:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
13028490628
時間:
2019-11-19 23:58
樓主可以的
作者:
wuchaode125
時間:
2019-11-26 13:16
可以的,做的很好!
作者:
zhwennn
時間:
2020-11-2 14:45
為什么流水燈亮了數碼管沒有自動加一啊
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1