Avr单片机基于ATmega16的按键数码管程序

Avr单片机基于ATmega16的按键数码管程序


2024年2月4日发(作者:)

江西渝州科技职业学院

按键数码管程序

// Target : M16

// Crystal: 4.0000Mhz

#include

#include

#define huang1 (PINB&BIT(PB0))

#define huang2 (PINB&BIT(PB1))

#define huang3 (PINB&BIT(PB2))

#define huang4 (PINB&BIT(PB3))

unsigned char xianshishuju[8];

unsigned char key=16; //16 表示无效键值

void port_init(void)

{

PORTA = 0xff;

DDRA = 0xff;

PORTB = 0xff;

DDRB = 0xf0;

PORTC = 0x00; //m103 output only

DDRC = 0xff;

PORTD = 0x00;

DDRD = 0x00;

}

//call this routine to initialize all peripherals

void init_devices(void)

{

//stop errant interrupts until set up

CLI(); //disable all interrupts

port_init();

MCUCR = 0x00;

GICR = 0x00;

TIMSK = 0x00; //timer interrupt sources

SEI(); //re-enable interrupts

//all peripherals are now initialized

}

//

void delay(unsigned char m)

{

unsigned char i,j;

for(i=0;i

1

小强出版

江西渝州科技职业学院

for(j=0;j<570;j++);

}

unsigned char const duanma[]={

0XFC,/*0*/

0x60,/*1*/

0xDA,/*2*/

0xF2,/*3*/

0x66,/*4*/

0xB6,/*5*/

0xBE,/*6*/

0xE0,/*7*/

0xFE,/*8*/

0xF6/*9*/};

void baweixianshishuju(void)

{

unsigned char i;

for(i=0;i<8;i++)

{

PORTC=~BIT(i);

PORTA=duanma[xianshishuju[i]];

delay(1);

PORTA=0X00;

}

}

void main(void)

{

unsigned char i;

init_devices();

//insert your functional code

while(1)

{

// for(i=0;i<10;i++)baweixianshishuju();

PORTB=0XEF;

if(!huang1) key=3;

if(!huang2) key=6;

if(!huang3) key=9;

PORTB=0XDF;

if(!huang1) key=2;

if(!huang2) key=5;

if(!huang3) key=8;

if(!huang4) key=0;

PORTB=0XBF;

2

小强出版

江西渝州科技职业学院

if(!huang1) key=1;

if(!huang2) key=4;

if(!huang3) key=7;

do{baweixianshishuju();PORTB=0X0F;} while(PINB!=0x0F);

if(key<10)

{

xianshishuju[0]=xianshishuju[1];

xianshishuju[1]=xianshishuju[2];

xianshishuju[2]=xianshishuju[3];

xianshishuju[3]=xianshishuju[4];

xianshishuju[4]=xianshishuju[5];

xianshishuju[5]=xianshishuju[6];

xianshishuju[6]=xianshishuju[7];

xianshishuju[7]=key;

key=16;

}

baweixianshishuju();

}

}

3

小强出版


发布者:admin,转转请注明出处:http://www.yc00.com/news/1707020314a1473866.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信