久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
AVR單片機按鍵控制數碼管
[打印本頁]
作者:
曬黑的北方娃
時間:
2015-5-11 20:15
標題:
AVR單片機按鍵控制數碼管
AVR單片機按鍵控制數碼管+1、-1、我已經寫好了,但是遞增跟遞減不會寫,求教
#include <iom88v.h>
unsigned char output[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //定義一個有小數點的數組給個位
unsigned char output1[]={0x3f,0x06,0xd5b,0xc4f,0xe66,0xe6d,0x7d,0x07,0x7f,0x6f}; //定義一個沒有數組的給百十位
unsigned int shuzhi=100;
unsigned char dispaynum=1;
unsigned int System_Time = 0;
unsigned char key;
unsigned char flag;
unsigned char flag1;
unsigned char flag2;
unsigned char flag3;
void delay(unsigned int yanshi)
{
unsigned int x,z;
for(x=yanshi;x>0;x--)
{
for(z=110;z>0;z--);
}
}
void port_init(void) //端口初始化
{
PORTD = 0xff;
DDRD = 0xff; //端口D輸出
PORTC = 0xff;
DDRC = 0xff; //端口C輸出
PORTB = 0x0f;
DDRB = 0xf0;
}
/*void yy(void)
{
unsigned char i;
DDRB = 0xf0; //端口B輸入
PORTB = 0x0f;
i=PINB;
i&0x0f;
if(i!=0x0f) key=1;
else key=0;
}
*/
void keyy(void)
{
unsigned int i;
//---------------------------------------------K1
if(!(PINB&(1<<0)))
{
if(!(PINB&(1<<0)))
{
if(flag==0){shuzhi++;flag=1;}
}
}
if(PINB&(1<<0)){flag=0;}
//-----------------------------------------K2
if(!(PINB&0x02))
{
if(!(PINB&0x02))
{
if(flag1==0){shuzhi--;flag1=1;}
}
}
if(PINB&0x02){flag1=0;}
//------------------------------------------K3
if(!(PINB&0x04))
{
delay(2);
if(!(PINB&0x04))
{
if(flag2==0)
{
while(1)
{shuzhi++;
if(dispaynum==1)
{
PORTD=output[shuzhi%10]; //取數值的個位數
PORTC=0xfb; //使LED3使能
dispaynum=2;
}
else if(dispaynum==2)
{
PORTD=output1[(shuzhi%100)/10]; //取數值的十位數
PORTC=0xfd; //使LED2使能
dispaynum=3;
}
else if(dispaynum==3)
{
PORTD=output1[shuzhi/100]; //取數值的百位數
PORTC=0xfe; //使LED1使能
dispaynum=1;
}
flag2=1;}
}
}
}
if(PINB&0x04){flag2=0;}
}
void dispay (void)
{
if(dispaynum==1)
{
PORTD=output[shuzhi%10]; //取數值的個位數
PORTC=0xfb; //使LED3使能
dispaynum=2;
}
else if(dispaynum==2)
{
PORTD=output1[(shuzhi%100)/10]; //取數值的十位數
PORTC=0xfd; //使LED2使能
dispaynum=3;
}
else if(dispaynum==3)
{
PORTD=output1[shuzhi/100]; //取數值的百位數
PORTC=0xfe; //使LED1使能
dispaynum=1;
}
}
void main(void)
{
port_init();
//yy();
while(1)
{
dispay();
keyy();
/*System_Time++; //防止數據跳動過快,延時一段時間數值再減一
if (System_Time > 1000)
{
System_Time = 0;
shuzhi--;
}
if(shuzhi==0) //循環數值再到999
{
PORTC=0xef;
shuzhi=999;
}*/
}
}
作者:
曬黑的北方娃
時間:
2015-5-11 20:16
#include <iom88v.h>
unsigned char output[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //定義一個有小數點的數組給個位
unsigned char output1[]={0x3f,0x06,0xd5b,0xc4f,0xe66,0xe6d,0x7d,0x07,0x7f,0x6f}; //定義一個沒有數組的給百十位
unsigned int shuzhi=100;
unsigned char dispaynum=1;
unsigned int System_Time = 0;
unsigned char key;
unsigned char flag;
unsigned char flag1;
unsigned char flag2;
unsigned char flag3;
void delay(unsigned int yanshi)
{
unsigned int x,z;
for(x=yanshi;x>0;x--)
{
for(z=110;z>0;z--);
}
}
void port_init(void) //端口初始化
{
PORTD = 0xff;
DDRD = 0xff; //端口D輸出
PORTC = 0xff;
DDRC = 0xff; //端口C輸出
PORTB = 0x0f;
DDRB = 0xf0;
}
/*void yy(void)
{
unsigned char i;
DDRB = 0xf0; //端口B輸入
PORTB = 0x0f;
i=PINB;
i&0x0f;
if(i!=0x0f) key=1;
else key=0;
}
*/
void keyy(void)
{
unsigned int i;
//---------------------------------------------K1
if(!(PINB&(1<<0)))
{
if(!(PINB&(1<<0)))
{
if(flag==0){shuzhi++;flag=1;}
}
}
if(PINB&(1<<0)){flag=0;}
//-----------------------------------------K2
if(!(PINB&0x02))
{
if(!(PINB&0x02))
{
if(flag1==0){shuzhi--;flag1=1;}
}
}
if(PINB&0x02){flag1=0;}
//------------------------------------------K3
if(!(PINB&0x04))
{
delay(2);
if(!(PINB&0x04))
{
if(flag2==0)
{
while(1)
{shuzhi++;
if(dispaynum==1)
{
PORTD=output[shuzhi%10]; //取數值的個位數
PORTC=0xfb; //使LED3使能
dispaynum=2;
}
else if(dispaynum==2)
{
PORTD=output1[(shuzhi%100)/10]; //取數值的十位數
PORTC=0xfd; //使LED2使能
dispaynum=3;
}
else if(dispaynum==3)
{
PORTD=output1[shuzhi/100]; //取數值的百位數
PORTC=0xfe; //使LED1使能
dispaynum=1;
}
flag2=1;}
}
}
}
if(PINB&0x04){flag2=0;}
}
void dispay (void)
{
if(dispaynum==1)
{
PORTD=output[shuzhi%10]; //取數值的個位數
PORTC=0xfb; //使LED3使能
dispaynum=2;
}
else if(dispaynum==2)
{
PORTD=output1[(shuzhi%100)/10]; //取數值的十位數
PORTC=0xfd; //使LED2使能
dispaynum=3;
}
else if(dispaynum==3)
{
PORTD=output1[shuzhi/100]; //取數值的百位數
PORTC=0xfe; //使LED1使能
dispaynum=1;
}
}
void main(void)
{
port_init();
//yy();
while(1)
{
dispay();
keyy();
/*System_Time++; //防止數據跳動過快,延時一段時間數值再減一
if (System_Time > 1000)
{
System_Time = 0;
shuzhi--;
}
if(shuzhi==0) //循環數值再到999
{
PORTC=0xef;
shuzhi=999;
}*/
}
}
作者:
admin
時間:
2015-5-11 21:47
你好 能分享一下電路圖嗎?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
少妇性l交大片免费一
|
亚洲激情综合
|
国产精品久久国产精品
|
午夜av免费
|
男女羞羞视频大全
|
日韩欧美三区
|
欧美日韩三区
|
久久噜噜噜精品国产亚洲综合
|
日本高清视频在线播放
|
中文字幕一区二区三区不卡
|
国产精品一区二区无线
|
一区二区免费在线观看
|
久久国产精品一区二区三区
|
性高湖久久久久久久久3小时
|
欧美三区在线观看
|
国产欧美日韩精品在线观看
|
中文字幕二区
|
www国产亚洲精品久久网站
|
中文亚洲视频
|
国产福利在线
|
www.黄色片视频
|
欧美精品一二三区
|
亚洲一区二区中文字幕
|
久久精品毛片
|
99久久久国产精品
|
欧美在线观看免费观看视频
|
六月成人网
|
天天躁日日躁狠狠躁白人
|
嫩草视频网站
|
久久一日本道色综合久久
|
正在播放国产精品
|
亚洲综合色视频在线观看
|
九九热热九九
|
一级黄在线观看
|
午夜资源
|
久久久国产亚洲精品
|
亚洲精品66
|
一级大片
|
成人高清视频在线观看
|
国产激情一区二区三区
|
日韩福利在线观看
|