当前位置:首页 > 单片机 > 单片机
[导读]方式一://PC0接数据口SI 74HC595 第14脚 //PC1接SCK 74HC595第11脚 //PC2接RCK 74HC595第12脚 //74HC595 第13脚(/G)使能 接低电平 //74HC595 第10脚(/SCLR)清零 接高电平#include #include #define ucha

方式一:

//PC0接数据口SI 74HC595 第14脚
//PC1接SCK 74HC595第11脚
//PC2接RCK 74HC595第12脚
//74HC595 第13脚(/G)使能 接低电平
//74HC595 第10脚(/SCLR)清零 接高电平

#include
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char table[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; //七段数码管(共阳)

void delay_nms(unsigned int time) //毫秒级延时
{ unsigned char i;
for(;time;time--)
for(i=1;i<570;i++);
}

void led_on() //点亮LED
{ unsigned char i,k,led;
for(k=0;k<10;k++) //循环显示10个数字
{led=table[k]; //更新要显示的数字
PORTC&=~(1<for(i=0;i<8;i++) //送出8位数据
{PORTC&=~(1<if((led&0x80)!=0)PORTC|=(1<else PORTC&=~(1<led=led<<1; //字符向左移一位
PORTC|=(1<}
PORTC|=(1<delay_nms(10000); //为了看清楚数字,每显示一个数字延时10S
}
}

void main()
{ PORTB=0XFF;
DDRB=0XFF;
PORTC=0XFF;
DDRC=0XFF;
PORTD=0XFF;
DDRD=0XFF;
MCUCR=0X80;
while(1)
{led_on();}
}

方式二:

用AVR的SPI串行发送

/*ATmega8的PB5是SPI时钟输出,

接74HC595/74HC165的移位时钟输入端,

PB3是SPI的MOSI数据输出,接74HC595的串行数据输入端SER;

PB0接74HC595/74HC165的锁存时钟输入端。

*/

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char table[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; //0~9 十六进制显示字符

void delay_nms(unsigned int time) //微秒级延时

{ unsigned char i;

for(;time;time--)

for(i=1;i<570;i++);

}

void write595() //写595及更新LED显示

{ unsigned char i;

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

{PORTB&=~(1<

SPDR=table[i]; //SPI串行数据发送

while(!(SPSR&(1<

PORTB|=(1<

delay_nms(5000);} //为了看清数字的变化 延时5S

}

void main()

{

PORTB=0X01;

DDRB=0XFF;

PORTC=0XFF;

DDRC=0XFF;

PORTD=0XFF;

DDRD=0XFF;

SPCR=0X52;

while(1)

{write595();}

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

  摘 要: 提出了一种基于Atmega8 和Stm32F101 双处理器的投影机升降控制设计方案,介绍了其电路组成、功能以及软件流程。其中Atmega8 负责数据采集,Stm32F101 实现

关键字: atmega8 stm32f101 uln2803a

/************************************************************ 函数库说明:ATMEGE8 延迟库函数* 版本: v1.0...

关键字: atmega8 延迟 系统库函数

今天试试把数组存到flash里,再读出来,就在原先5110的工程上进行修改,能看出来我改在哪里了吗?uint8Chinese_Font[][25]PROGMEM={/*--文字:芜--*//*--楷体9;此字体下对应的点...

关键字: 5110 atmega8 flash版

/************************************************************ 函数库说明:ATMEGE8 AD模数转换 * 版本: v1.0...

关键字: atmega8 采集 ad中断方式

/****************************************************************** 函数库说明:ATMEGA8 串口通信* 版本: v1.0...

关键字: atmega8 usart 串口通信

/************************************************************ 函数库说明:ATMEGE8 PWM* 版本: v1.0...

关键字: atmega8 pwm

今天偶然的机会,因为定时器老是不对劲,而把晶振给拔了突然发现对程序的运行没有任何影响,这次我才想起来atmege8是不是有内部晶振哦。一查果然。。。。。。修改的方法是改熔丝位 时钟源 启动延时 熔丝...

关键字: atmega8 解锁 内部rc振荡

好吧,不得不承认,我使用飞思卡尔的XS128单片机已经非常之习惯了,结果一上手atmega8,最令我反感的就是atmega8不能对IO引脚进行操作,非要用些繁琐的位操作。我就不,我就要像飞思卡尔那样操作。。。于是。。。。...

关键字: atmega8 io引脚 飞思卡尔 xs128

2011年三月份,在各大媒体上都看见了日本地震后,核辐射搞得身边的人都很恐慌,于是我们就产生了制作一个可以深入灾难危险地带的飞行器的想法。无人驾驶的遥控飞行器可以毫无忌惮的深入危险之地,测量一些实时的数据传送回来,以便在...

关键字: atmega8 avr32 总线与接口 灾难检测飞行器

GCCAVR中读取Flash区数据定义(只能为全局变量):const int temp PROGMEM = 1;读取:pgm_read_byte(addr);pgm_read_word(addr);pgm_read_dw...

关键字: atmega8 Flash
关闭
关闭