⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shumaguan_finish.c

📁 avr16单片机动态显示4位数码管
💻 C
字号:
//4位数码管从左到右,动态显示1 2 3 4,晶振选择8M
//测试:ok
//头文件
#include <iom16v.h>
#include <macros.h>
unsigned char data[4]={1,2,3,4};//显示字符
//函数说明
void delay_1ms(void);//
void delay_nms(unsigned int n);//
unsigned char decode(unsigned char i);//
void port_init(void);//
 //延时1ms子函数
void delay_1ms(void)
{	 
	 unsigned int i;
	 for(i=1142;i>0;i--)
	 ;
}
 //延时nms子函数
void delay_nms(unsigned int n)
{	 
	 for(;n>0;n--)
	 	delay_1ms();
;
}
//端口初始化
void port_init(void)
{	 
	 DDRA=0XFF;//A口 是段选
	 PORTA=0X00;
	 DDRD=0XFF;//D口是位选,从左到右,依次为PD0,PD1,PD2,PD3
	 PORTD=0X00;
}
//译码子函数
unsigned char decode(unsigned char i)
{	 
	 switch(i)
	 {
	      case 0:return(0x3F);
		  case 1:return(0x06);
		  case 2:return(0x5B);
		  case 3:return(0x4F);
		  case 4:return(0x66);
		  case 5:return(0x6D);
		  case 6:return(0x7D);
		  case 7:return(0x07);
		  case 8:return(0x7F);
		  case 9:return(0x6F);
		  default:return(0x3F);
	 }
}
/********动态显示函数********/
void display(unsigned char *p)
{	 
	 unsigned char i;
	 for(i=0;i<4;i++)
	 {    
	 	  PORTD=~(1<<i);    
		  PORTA=decode(p[i]); 
		  delay_nms(2);                 
     }
}
//主函数
void main(void)
{	
	 unsigned char i;
	 port_init();
	 while(1)
	 {
	  	 display(data);
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -