|
是以前為了用STC15F104八腳單片機(jī)控制CD4052做音源輸入切換做的,按一下鍵,兩個(gè)端口輪流輸出不同的高低電平,控制CD4052不同的工作狀態(tài),即0-0、0-1、1-0、1-1.
程序非常簡單,就不發(fā)附件了,大家也不用花黑幣下載。
電路原理圖如下:
仿真.jpg (188.17 KB, 下載次數(shù): 113)
下載附件
2021-1-9 19:06 上傳
單片機(jī)源程序如下:
#include<reg52.h>//頭文件
#define unchar unsigned char
#define unint unsigned int
sbit KEY1=P3^0; // 定義按鍵
sbit OUT1=P3^2; // 輸出1
sbit OUT2=P3^3; // 輸出2
bit flag=1; //定義控制運(yùn)行符
unchar Mod; //定義亮燈模式
unint tt; //定義中斷次數(shù)
void Init_Mod() //初始化函數(shù)
{
Mod=0;
OUT1=0;
OUT2=0;
}
void Init_Timer()
{
TMOD=0x01;
TR0=1;
EA=1;
ET0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void delay(unint z) //延時(shí)函數(shù),延時(shí)z(ms)
{
unint x,y;
for(x=z;x>0;x--) for(y=110;y>0;y--);
}
void Input_Mod() //狀態(tài)模式標(biāo)記函數(shù)
//////按鍵1程序
{
if(Mod==4) Mod=0;
if(KEY1==0) //按鍵按下
{ delay(5);
if(KEY1==0) //延時(shí)消抖
Mod++; //按鍵次數(shù)標(biāo)記
}
while(!KEY1) //松手檢測
{; ;}
}
//4種模式下的執(zhí)行
void run()
{
switch(Mod)
{ case 0:{ET0=0;OUT1=0;OUT2=0;}break;// 模式1
case 1:{ET0=0;OUT1=1;OUT2=0;}break;// 模式2
case 2:{ET0=0;OUT1=0;OUT2=1;}break;// 模式3
case 3:{ET0=0;OUT1=1;OUT2=1;}break;// 模式4
}
}
void main()
{ Init_Mod();
Init_Timer();
while(1)
{ Input_Mod();
if(flag==1) //flag 控制run的運(yùn)行
{ run();
if(Mod==1||Mod==3) flag=0;
}
if(Mod==0||Mod==2) flag=1;
}
}
|
評分
-
查看全部評分
|