//設一些旗標來區分不同按鍵各執行不同的程式頻率請自行調整
#include <at89x52.h>
char reset_P0table[]={0xFE, 0XFC, 0XF8, 0XF0, 0XE0, 0XC0, 0X00, 0xc0};
/* a ab abc abcd abcde abcdef
1111 1110 a
1111 1100 ab
1111 1000 abc
1111 0000 abcd
1110 0000 abcde
1100 0000 abcdef
0000 0000 abcdefg
1100 0000 abcdef
*/
int add=-1;
char x;
sbit sw1=P1^0;
sbit sw2=P2^1;
sbit output=P2^0;
bit change_flag=0;
bit sw1_flag;
bit sw2_flag;
bit breath_flag;
unsigned int breath_count;
unsigned int rpt_count;
char disp_seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x89,0xc9,0xb6,};
/*-------------------------------*/
void delay_1ms(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<114;j++) ;
}
/*-------------------------------*/
void cck_run_7seg()//逆時針a ab abc...
{
int i;
for(i=0;i<8;i++) { P0=reset_P0table[i]; delay_1ms(500); }
}
/*-------------------------------*/
void delay_2ms(int k)//約500hz
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<20;j++)
;
}
void delay_4ms(int k)//245~248hz約250hz
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<43;j++)
;
}
main()
{
cck_run_7seg();
while(1)
{
if(breath_flag)
{
breath_count++;
if(breath_count%90==0)
{
add++;
if(add>10) add=0;
}
}
if(sw1==0)
{
sw1_flag=1;
sw2_flag=0;
delay_1ms(20);while(sw1!=1);delay_1ms(20);
add++;
if(add>10) add=0;
}
if(sw2==0)
{
sw1_flag=0;
sw2_flag=1;
P2=0x00;
change_flag=~change_flag;
rpt_count=0;
breath_flag=0;
output=1;
delay_1ms(20);
while(sw2!=1)
{
rpt_count++;
if(rpt_count>100)
{
breath_flag=1;
output=0;
}
delay_1ms(20);
}
if(change_flag==1)
{
P0=disp_seg7[11]; delay_1ms(20);
}
else
{
P0=disp_seg7[12]; delay_1ms(20);
}
}
/*--------------------------------------------------*/
if(sw1_flag)
{
if(add==0)
{
P0=disp_seg7[0];
x=0;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==1)
{
x=1;
P0=disp_seg7[1];
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==2)
{
x=2;
P0=disp_seg7[2];
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==3)
{
P0=disp_seg7[3];
x=3;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==4)
{
P0=disp_seg7[4];
x=4;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==5)
{
P0=disp_seg7[5];
x=5;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==6)
{
P0=disp_seg7[6];
x=6;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==7)
{
P0=disp_seg7[7];
x=7;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==8)
{
P0=disp_seg7[8];
x=8;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==9)
{
P0=disp_seg7[9];
x=9;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
else if(add==10)
{
P0=disp_seg7[10];
x=10;
output=0;delay_4ms(x);
output=1;delay_4ms(10-x);
}
}
//--------------------------------------
if(sw2_flag)
{
if(change_flag)
{
x=0; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=1; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=2; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=3; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=4; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=5; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=6; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=7; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=8; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=9; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=10;output=0;delay_4ms(x); output=1;delay_4ms(10-x);
}
else
{
x=0; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=1; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=2; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=3; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=4; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=5; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=6; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=7; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=8; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=9; output=0;delay_4ms(x); output=1;delay_4ms(10-x);
x=10;output=0;delay_4ms(x); output=1;delay_4ms(10-x);
}
}
}
}
2019年10月29日 星期二
訂閱:
張貼留言 (Atom)
algorithm
#include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv) { for(int j=2;j<=100;j++)//j...
-
本文旨在補充《 超圖解Arduino互動設計入門 》第18章「RFID無線識別裝置與問答遊戲製作」單元,書本採用的RFID讀卡機模組是採用9600bps, TTL序列通訊介面,RFID的通訊頻率為125KHz。這種模組的接線和程式都很簡單,每當感測到RFID卡,讀卡機就把...
-
3.Keil C 幫我們寫好 程式:#include <reg51.h> vs c語言 #include <stdio.h> //幫您宣告 P0=0x80 有相對的記憶體以十六進位表示,它定義定reg51.h,我們直接拿來用他的代碼即可 P1=0...
-
/* 多重按鈕開關 */ //==宣告區================================ #include // 定義8051暫存器之標頭檔,P2-17~19 #include "myio.h" // 自己寫的I/O程式庫 sbit PB...
沒有留言:
張貼留言