AT90S8515单片机SPI驱动74LS595源程序

2020-09-16来源: 51hei关键字:AT90S8515  单片机  SPI驱动  74LS595

AT90S8515使用SPI驱动74LS595。
我这里使用了SS口线PB.4,作为74LS595的锁存信号,关键是把PB.4设置为输出。
74LS595驱动发光管显示加1计数,我用SPI最高速度,所以显示16位计数高八位,低八位太快,看不清楚。

5d6034a85edf8db1b0806a680923dd54564e740b.jpg

单片机源程序如下:

//ICC-AVR application builder : 2020/3/30 22:23:31

// Target : 8515

// Crystal: 8.0000Mhz


#include

#include


#define SS_ON PORTB |= BIT(4);     //E置1

#define SS_OFF PORTB &= ~BIT(4);   //E置0


void port_init(void)

{

PORTA = 0x00;

DDRA  = 0x00;

DDRB  = 0xff;

PORTB = 0xFF; //复用SS脚的关键是PB.4设为输出

PORTC = 0x00;

DDRC  = 0x00;

PORTD = 0x00;

DDRD  = 0xFF;

}


//SPI initialize

// clock rate: 62500hz

void spi_init(void)

{

SPCR = 0xFC; //setup SPI

}


int spi_d =0X00;          //太快,用高8位


#pragma interrupt_handler spi_stc_isr:iv_SPI_STC

void spi_stc_isr(void)

{

              //byte in SPDR has been sent/received

     SS_OFF;   //PB.4=0

         SS_ON;    //PB.4=1

     spi_d = spi_d+1;

         SPDR = spi_d>>8;

}


//call this routine to initialize all peripherals

void init_devices(void)

{

//stop errant interrupts until set up

CLI(); //disable all interrupts

port_init();

spi_init();


MCUCR = 0x00;

GIMSK = 0x00;

TIMSK = 0x00;

SEI(); //re-enable interrupts

//all peripherals are now initialized

}


void main(void)

{

    init_devices();         //初始化系统

   

SPDR=0X00;

while(1)

    {}

}


关键字:AT90S8515  单片机  SPI驱动  74LS595 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic510370.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:avr单片机秒表Proteus仿真程序 tm1637数码管显示
下一篇:avr mega8 PWM 超声发射试验程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AT90S8515单片机对LED数码显示管的控制设计
一、电路附图是AT90S8515控制数码显示的电路略图(图中只画出了与数码管接口的电路,其余接线略)。单片机的PBO~PB7接LED共阴数码管的a~h脚,控制段码;单片机的PDO—PD5分别接六只LED数码管DO~D5的共阴极,控制位码。其中PDO~PD5是通过SL-AVR开发实验器上的LED数码管短路块DLED接至数码管DO—D5的。二、字符8右循环移位显示程序在SL-AVR开发实验器LED上实现字符8右循环移位显示的源程序清单如下:第1行表示程序中包含定义AT90S8515特殊功能寄存器的头文件8515def.inc,指明所用器件为AT90S85150接着定义寄存器r16、r22分别为暂存器temp、scndp。在程序前面
发表于 2020-06-07
<font color='red'>AT90S8515</font>单片机对LED数码显示管的控制设计
AT90S8515单片机对LED数码显示管的控制设计
一、电路附图是AT90S8515控制数码显示的电路略图(图中只画出了与数码管接口的电路,其余接线略)。单片机的PBO~PB7接LED共阴数码管的a~h脚,控制段码;单片机的PDO—PD5分别接六只LED数码管DO~D5的共阴极,控制位码。其中PDO~PD5是通过SL-AVR开发实验器上的LED数码管短路块DLED接至数码管DO—D5的。二、字符8右循环移位显示程序在SL-AVR开发实验器LED上实现字符8右循环移位显示的源程序清单如下:第1行表示程序中包含定义AT90S8515特殊功能寄存器的头文件8515def.inc,指明所用器件为AT90S85150接着定义寄存器r16、r22分别为暂存器temp、scndp。在程序前面
发表于 2020-06-04
<font color='red'>AT90S8515</font>单片机对LED数码显示管的控制设计
AT90S8515与点阵液晶模块的C语言编程实例源程序
/*写汉字液晶子程 液晶屏分为4行*12列汉字,全部使用模拟接口方式。/*   CKW19264A接口程序(模拟方式);************************************************************************;连线图:;*LCM----S8515*   *LCM----S8515*   *LCM-----S8515*     *LCM-----S8515* *;*DB0-----PA0*   *DB4-----PA4*  
发表于 2017-12-18
AT90S8515点阵C语言编程实例源程序
;   * ;*LCM----S8515*    *LCM----S8515*   *LCM-----S8515*     *LCM-----S8515*  * ;*DB0-----PA0*    *DB4-----PA4*     *Rd ------/Rd*      *Cd 
发表于 2017-12-17
at90s8515单片机驱动t6963c lcd 24064 程序
at90s8515 单片机 驱动t6963c LCD 24064 程序;************************************************************************;连线图:  液晶屏分为8行*15列汉字,使用模拟接口方式。            *;*DB0-----PA0*      *DB4-----PA4*       *Rd ------PC2*      *Cd ------PC0*    *;*DB1-----PA1*      *DB5-----PA5*       *Wr ------PC1*      *CE ------GND*    *;*DB2
发表于 2017-12-17
avr单片机秒表Proteus仿真程序 tm1637数码管显示
单片机源程序如下:/***版权所有(c)2018,艁ukasz Marcin Podkalicki*2009年12月13日            *简单定时器(启动/复位/停止),使用基于TM1637的一个按钮和7段显示模块。              *            *注意,这个ATtiny13项目使用的内部时钟并不精确            
发表于 2020-09-16
avr<font color='red'>单片机</font>秒表Proteus仿真程序 tm1637数码管显示
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved