datasheet

单片机SPI模块+74LS164驱动数码管

2016-10-04来源: eefocus关键字:单片机  SPI模块  74LS164  驱动数码管
效果如下:循环右移再左移
单片机SPI模块+74LS164驱动数码管 - proteus261040013 - Preservation........

 

 

 

#include 
#ifndef _XTAL_FREQ
 #define _XTAL_FREQ 4000000
#endif
const unsigned char seg_comAnode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f};//共阳
const unsigned char seg_comCathode[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef};  //共阴 
/*同时发送和接收一个字节,74LS164吸电流大于拉电流,数码管接成上拉形式*/
unsigned char BUFF;
void init(){
 TRISC=0B11010111;/*RC4/SDI引脚为输出,RC5/SDO引脚为输出,从模式RC3/SCK引脚为输入*/
 SSPSTAT=0b00000000; /* 在结束时采样,在上升沿数据移位*/ 
 SSPCON=0b00110010;   /* SSPEN=1;CKP=1 , FOSC/64,*/
 TRISD=0X00;
 PORTD=0;
}
void In_74LS164(unsigned char datas){
 SSPBUF=datas;
 do
 {
 ;
 }while(SSPIF==0);  /*等待发送完毕*/
 SSPIF=0;    /*清除SSPIF标志*/
// BUFF=SSPBUF;   /*腾空缓冲器*/
}
void main()
{unsigned char b,a,i,s=0;unsigned char m=0x01;
 init();
while(1){

     for(i=0;i<4;i++)
        {
          PORTD=~(m<        
          
 for(s=0;s<9;s++){

 In_74LS164( seg_comCathode[s]);
 __delay_ms(100);__delay_ms(100);
  } 
     }
       
      for(i=1,a=m<<4;i<4;i++)
        {
          PORTD=~(a>>i);
          
 for(s=0;s<9;s++){

 In_74LS164( seg_comCathode[s]);
 __delay_ms(100);__delay_ms(100);
  } 
     }     
}
}

关键字:单片机  SPI模块  74LS164  驱动数码管

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

上一篇:单片机用Mssp_spi模块三点通信
下一篇:用单片机pic16f877a实现鼠标数据的采集

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

推荐阅读

单片机时钟的解析

时钟周期       时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。       在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。       8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。机器周期       计算机中
发表于 2019-04-16
单片机时钟的解析

关于单片机通过串口发送浮点数信息

最近弄一个小东西的时候,需要将AD采集的数据,通过串口发送上位机。由于还得在下位机部分显示出来,所以这个AD采集的数据转换之后发送到串口,比较容易点。但是问题来了,以前的串口,只有从GPS模块接收的信息是浮点类型外。其他的东西,都只是把字符类型或者字符串类型的数据发到串口。 查阅了一点资料,这里是资料的链接。 单片机将浮点数从串口发送出去: 1.http://www.51hei.com/bbs/dpj-31223-1.html 采用了将浮点数转换为四个字节的数据,放到数组中,发送到串口。 2.http://blog.sina.com.cn/s
发表于 2019-04-12

单片机之STM32 中的 assert_param 函数

我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然。4 断言机制函数assert_param我们在分析库函数的时候,几乎每一个函数的原型有这个函数assert_param();下面以assert_param(IS_GPIO_ALL_PERIPH(GPIOx));为例说一下我的理解,函数的参数IS_GPIO_ALL_PERIPH(GPIOx),我们可以寻找到原型#define IS_GPIO_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH))
发表于 2019-04-11
单片机之STM32 中的 assert_param 函数

STM32单片机常用库函数

必须在其中选择,抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。4.FLASH:芯片内部存储器flash操作函数对芯片内部flash进行操作的函数,包括读取,状态,擦除,写入等等,可以允许程序去操作flash上的数据。 基础应用1,FLASH时序延迟几个周期,等待总线同步操作。推荐按照单片机系统运行频率,0—24MHz时,取Latency=0;24—48MHz时,取Latency=1;48~72MHz时,取Latency=2。所有程序中必须的 用法:FLASH_SetLatency(FLASH_Latency_2);位置:RCC初始化子函数里面,时钟起振之后。 基础应用
发表于 2019-04-11

C51单片机通过串口调节PWM波

PWM 是一种常用的电子控制技术PWM 本意为 脉冲宽度调制,可以简单理解为对占空比的控制。下图就是占空比图例,一个周期内高电平时间与周期时间的比值。现在的一些MCU自带PWM控制功能,但是51/52单片机还是没有这个功能。可以用程序自己实现。用到的51单片机资源如下:1.双定时器及定时器中断 2.串口和串口中断 下面看下程序:PWM.H#ifndef _PWM_H#define _PWM_H#include <reg52.h>#include <stdio.h>#include <stdlib.h>#define uint  unsigned int 
发表于 2019-04-09
C51单片机通过串口调节PWM波

51单片机之IIC&EEPROM的驱动程序

#include <reg52.h>#include "./delay/delay.h"sbit SCL = P2^0;sbit SDA = P2^1;bit ack = 0; unsigned char flag = 1;#define LCDPORT P0#define LCD_WRITE_DATA 1#define LCD_WRITE_COM 0sbit RS = P2^4;sbit RW = P2^5;sbit E = P2^6; #define SUCC 0#define ERR 1 void iic_start(){ SDA = 1;  //先操作
发表于 2019-04-08

小广播

何立民专栏

单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved