PIC16F877A开发板 普通IO驱动74595实验

发布者:TranquilSilence最新更新时间:2016-12-07 来源: eefocus关键字:PIC16F877A  普通IO  驱动74595 手机看文章 扫描二维码
随时随地手机看文章
//*****************电子园PIC16F877A开发板 普通IO驱动74595实验***************
//
//PIC16F877A 实验板
//
//mcu: PIC16F877A  4MHz 
//2010年7月10日21:52:30
//**************************************************************************
 
#include
__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);   
//HS振荡,禁止看门狗,低压编程关闭,启动延时定时器
 
#define srclk RC3        //移位寄存器时钟 (74595:11脚)
#define rclk  RC4        //存储寄存器时钟 (74595:12脚)
#define ser   RC5        //串行数据口     (74595:14脚)
                         //oe:输出允许  L:允许输出;H:禁止输出;  (74595:13脚)
                         //srclr:移位寄存器清零 (L:清零) (74595:10脚)
   
const uchar smg_text[]={0xbf,0xfe,0xfb,0xef,0xdf,0x7f,0xfd,0xf7,};
                           
const uchar smg[]={0x0a,0xfa,0x8c,0xa8,0x78,0x29,0x09,0xba,0x08,0x28,0x00,};
                  // 0     1    2    3    4    5    6    7    8    9   all
                   
const uchar smg_bit[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff,};                                          
 
uchar c;   
uchar d;  
 
//********************函数定义*********************
void delay1ms(uint DelayTime);    
void senddata_74595(uchar SendData);
 
 
//*************** 主程序 ********************
void main(void)
{   
  TRISC3=0;      //srclk 引脚设为输出
  TRISC5=0;      //ser   引脚设为输出
  TRISC4=0;      //rclk  引脚设为输出
  rclk=0;
   
  delay1ms(10);
   
  rclk=0;                 //产生锁存时钟
  senddata_74595(0x00);
  senddata_74595(0x00);
  rclk=1;
  delay1ms(200);
   
  for(d=0;d<8;d++)
  {
    for(c=0;c<8;c++)
    {
      rclk=0;
      senddata_74595(smg_bit[d]);
      senddata_74595(smg_text[c]);
      rclk=1;
      delay1ms(100);
    } 
  }
 
  while(1)
  {
    for(c=0;c<11;c++)
    {
      rclk=0;
      senddata_74595(smg_bit[8]);
      senddata_74595(smg[c]);
      rclk=1;
      delay1ms(100);
    }         
  }
}   
 
//***********************74595发送函数************************
void senddata_74595(uchar SendData)
{
  uchar i;
  for(i=0;i<8;i++)
  {   
    if((SendData&0x80)==0)           //先发送高位,后发送低位
    {
      ser=0;
    }
    else
    {
      ser=1;
    } 
    srclk=0;
    srclk=1;
    SendData=SendData<<1;           //数据左移一位
  }   
}
 
 
//*****************延时 n*1ms 12MHz*****************
void delay1ms(uint DelayTime)
{   
  uint temp;
  for(;DelayTime>0;DelayTime--)
  {   
    for(temp=0;temp<270;temp++)
    {;}
  }
}


关键字:PIC16F877A  普通IO  驱动74595 引用地址:PIC16F877A开发板 普通IO驱动74595实验

上一篇:PIC学习5定时器
下一篇:PIC16F877A开发板 数码管计数器实验

推荐阅读最新更新时间:2024-03-16 15:23

PIC16f877A AD转换LED显示8位值
简介:本文为大家提供一个PIC16f877A AD转换LED显示8位值的代码。 ;**************** list p=16f877A ; list directive to define processor #include p16f877A.inc ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ;--------------------- COUNTER EQU 20H
[单片机]
PIC16F877A DS1302芯片驱动
#include pic.h typedef unsigned char uchar; typedef unsigned int uint; #define rs_h PORTC|=0x01 #define rs_l PORTC&=0xfe #define rw_h PORTC|=0x02 #define rw_l PORTC&=0xfd #define en_h PORTC|=0x04 #define en_l PORTC&=0xfb #define rst_h PORTC|=0x08 #define rst_l PORTC&=0xf7 #define sck_h PORTC|=0
[单片机]
<font color='red'>PIC16F877A</font> DS1302芯片<font color='red'>驱动</font>
PIC16F877A内部比较器使用Demo
内部比较器的用途是检测外部传感器的状态变化,例如霍尔开关,有金属接近的时候输出高电平,没有则输出低电平,为什么不直接用IO口来检测呢? 我想比较器跟普通 IO 检测一个很不同的地方就它有参考电压,设置一个合理的阀值就能让比较器正确的工作,这点是 IO 不能比拟的,而且比较器也有中断,方便程序的编写。 #include htc.h __CONFIG(0xFF32); #define LED0 RD0 /* 实验方法: RA0(Vin-)和RA3(Vin+)的电平比较,并将结果输出到LED */ void CM_init(void) { TRISA=0x09; //RA0与RA3设置为输入 TRISD=0x00;
[单片机]
PIC16F877A输入检测问题
配置RB7为输入口,在程序中检测按键,用到了键盘释放检测判断语句: while(!RB7); 程序无法执行,调试定位出问题在该行,始终在执行while循环。 通过+5V再外接电阻连接到RB7,问题解决。 PIC IO输入方向,高阻态问题。
[单片机]
<font color='red'>PIC16F877A</font>输入检测问题
PIC16F877A的50HZ正弦波
1 #include pic.h //包含单片机内部资源预定义 2 #include math.h 3 4 unsigned char const sin_32 ={104,109,114,119,124,128,133,137,142,146,150,154,157,161,164,//15 5 167,169,172,174,176,177,178,179,180,180,180,180,179,178,176,175,173,171,168,165,//20 6 162,159,156,152,148,144,140,135,131,126,121,116,111,106,101,96,91,86,81,76,72
[单片机]
pic16f877a的B口的详解
下面是节选的关于B口的介绍: 我们在写程序的时候要注意中断是对中断的判断、读与写的区别.
[单片机]
<font color='red'>pic16f877a</font>的B口的详解
关于STM32中PA15引脚作为普通io的使用
最近做一个项目,调试的时候,发现PA15引脚无论配置输出高还是低或者输入,均只能输出3.3V的高电平。 前提说明,目前STM的硬件调试有两种方法,JTAG和SW的方式,目前个人认为最好的方式就是SW,因为它只占用PA13和PA14两个io。而JTAG还要多占用PB3,PB4,PA15三个io口。很浪费资源。 本人使用SW的方式,但是STM默认会启用SW和JTAG两种。也就是说,默认情况下,PA13、PA14、PB3、PB4、PA15均不能作为普通io使用。 因为本人没用JTAG,所以为了让PB3,PB4,PA15这三个IO变为普通io,必须要进行如下的配置: *RCC_APB2PeriphClockCmd(RCC_APB2Per
[单片机]
光伏并网发电系统的研究与设计
1 引言   本文针对户用光伏发电系统的特点和要求进行了系统的研究与设计。将独立逆变与并网逆变相结合,使系统既可以工作在独立逆变状态, 将储存在蓄电池组中的能量直接逆变为正弦交流电为负载供电, 也可以工作在并网逆变状态, 将太阳能量直接回馈到电网或者将储存在蓄电池中的多余能量回馈到电网。系统采用32位DSP芯片TMS320F2812构成控制核心,利用单片机PIC16F877A构成系统的人机界面。设计的系统具有完善的保护功能、键盘通讯和液晶显示功能, 为家庭使用提供了方便。实验结果验证了方案的可行性,本文针对独立与并网的双重功能进行了研究与设计,实验结果证明了设计方案的可行性。   2 系统结构   逆变系统是将直流电
[单片机]
光伏并网发电系统的研究与设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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