PIC16F877A开发板 数码管动态扫描实验

发布者:caoda143最新更新时间:2016-12-07 来源: eefocus关键字:PIC16F877A  数码管  动态扫描 手机看文章 扫描二维码
随时随地手机看文章
//*************************************************************************
 
#include
#include "../head/config.h"
__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(500);
   
 
  while(1)
  {
    for(c=0;c<10;c++)
    {
      for(d=0;d<30;d++)
      {
        rclk=0;
        senddata_74595(smg_bit[0]);
        senddata_74595(smg[c]);
        rclk=1;
        delay1ms(1);
         
        rclk=0;
        senddata_74595(smg_bit[1]);
        senddata_74595(smg[(c+1)%10]);
        rclk=1;
        delay1ms(1);
         
        rclk=0;
        senddata_74595(smg_bit[2]);
        senddata_74595(smg[(c+2)%10]);
        rclk=1;
        delay1ms(1);
         
        rclk=0;
        senddata_74595(smg_bit[3]);
        senddata_74595(smg[(c+3)%10]);
        rclk=1;
        delay1ms(1);
         
        rclk=0;
        senddata_74595(smg_bit[4]);
        senddata_74595(smg[(c+4)%10]);
        rclk=1;
        delay1ms(1);
         
        rclk=0;
        senddata_74595(smg_bit[5]);
        senddata_74595(smg[(c+5)%10]);
        rclk=1;
        delay1ms(1);
         
        rclk=0;
        senddata_74595(smg_bit[6]);
        senddata_74595(smg[(c+6)%10]);
        rclk=1;
        delay1ms(1);
         
        rclk=0;
        senddata_74595(smg_bit[7]);
        senddata_74595(smg[(c+7)%10]);
        rclk=1;
        delay1ms(1);
      }
    }         
  }
}   
 
//***********************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  数码管  动态扫描 引用地址:PIC16F877A开发板 数码管动态扫描实验

上一篇:PIC16F877A开发板 数码管计数器实验
下一篇:PIC16F877A开发板 SPI总线驱动74595实验

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

proteus仿真8位共阴极数码管显示
代码: #include reg52.h #define uint unsigned int #define uchar unsigned char //sbit A=P2^0; //sbit B=P2^1; //sbit C=P2^2; void delay(uchar); uchar code table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //共阴级数码管字形代码表 void main() { //uchar i; while(1) { P2=(0X
[单片机]
proteus仿真8位共阴极<font color='red'>数码管</font>显示
基于51单片机的7键8键电子琴proteus仿真数码管显示程序原理设计
硬件设计 8键仿真图: 方案: 7键仿真图: 7个按键表示7个音,另外一个按键播放歌曲 程序设计 /******************************************************************/ #include reg52.h #include main.h /******************************************************************/ sbit BeepIO = P2^0; //定义音频输出管脚 sbit KEY1 = P1^0; //按键1 do sbit KEY2 = P1^1; //按键2 re sb
[单片机]
基于51单片机的7键8键电子琴proteus仿真<font color='red'>数码管</font>显示程序原理设计
51单片机程序——数码管全部亮起来
#include reg52.h unsigned char code table ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};// 显示数值表0-9 void Delay(unsigned int t); void main (void) { unsigned char i; P1 = 0xff; while (1) { for(i=0;i 10;i++) //加入 for循环,表明for循环大括号中的程序循环执行10次 { P0=table ; //循环调用表中的数值
[单片机]
PLC实现LED数码管动态扫描数据显示
PLC的数据显示功能一直是困扰PLC使用的难题。在PLC的应用中,经常要监测一些重要数据,但PLC的数据显示通常是使用外部显示设备,如显示屏或触摸屏,而这些显示设备的价格一般比较昂贵,对一些小型系统来说更浪费。因此,如何显示PLC的数据,并尽可能做到高效率、高稳定性、抗干扰能力强、硬件投资少,是许多设计中需要考虑的问题。笔者使用的西门子S7-200 PLC中有专门的指令控制LED数码管显示,SEG IN,OUT指令就是将IN端输入字节的低4位确定的16进制数自动转换为相对应的7段LED数码管各段的代码,并送到输出字节OUT端显示。若采用静态LED数码显示,PLC显示一位十进制数据需要7个输出点予以控制,如果要显示n位数据,则需要
[电源管理]
PLC实现LED<font color='red'>数码管</font><font color='red'>动态</font><font color='red'>扫描</font>数据显示
串行口动态扫描显示电路编程范例
单片机并行I/O口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的并行I/O口专门用来驱动显示电路,能否用80C51的串行通信口加上少量I/O及扩展芯片用于显示电路呢?答案是肯定的。 80C51的串行通信口是一个功能强大的通信口,而且是相当好用的通信口,用于显示驱动电路再合适不过了,下面我们就根据这种需要设计一个用两个串行通信口线加上两根普通I/O口,设计一个4位LED显示电路。当然只要再加上两根I/O口线即可轻易实现8位LED的显示电路。 左图是电原理图,我们还是采用C2051单片机,同时用廉价易得的74LS164和74LS138作为扩展芯片。 74LS164(详细技
[单片机]
串行口<font color='red'>动态</font><font color='red'>扫描</font>显示电路编程范例
设计RS232串口A/D模数转换数码管
RS232串口数显表头内部采用10位分辨率的A/D转换专用芯片,可对外部输入的0-5V直流模拟信号进行实时数据采集,通过4位大尺寸数码管(2.3英寸数码管,每位数字宽45mm高67mm)作为显示单元对外进行显示。整个显示板尺寸如图: 串口数显表头可用于工业现场,不需任何外部控制主机,即可对各种物理信号(温度、压力、湿度、转速等等)独立进行数据采集和显示。同时本板还具有与上位机的RS232通讯数据通信接口(也可定做RS485、局域网络接口),上位机可通过这个接口实时读取当前被采样的物理量的值。波特率默认为9600(也可定做其他波特率)。 显示内容和实际采样值之间的比例可灵活设定。比如,把本数显表头和一个压力传感器连接,用于测量、
[模拟电子]
单片机--数码管显示模块(C51)
下面是51单片机数码管显示模块的代码,具体说明在注释里表达得比较清楚。 #include reg52.h #define uchar unsigned char #defind uint unsigned int sbit seg_oe=P1^3; //数码管显示使能端,低电平有效 sbit duanxuan=P1^4; //数码管的段选端 sbit weixuan=P1^5; //数码管的位选端 uchar code smg_duan ={ //数码管段选码表,我们的数码管是共阴极数码管 0x3F,0x06,0x5B,0x4F, 0x66,0x6d,0x7d,0x07, 0x7
[单片机]
兼容WHISHBONE总线的LED数码管显示控制器设计
1 引言 显示器件是电子设备中不可缺少的部分,从灯泡,阴极射线管(CRT,cathode-ray tube)显示器,到发光二级管(LED ,light-emitting diode),液晶显示屏(LCD,Liquid CrystalDisplay),显示器件的发展伴随着电子技术的不断发展。目前,在小型便携式电子设备中,LED和LCD显示器件成为主要的显示器件,其中发光二级管和IJED数码管,主要用于状态指示和数字字符显示,LCD主要用于文字和图形显示。LED数码管 是用发光二级管组成字符笔画或点 阵,用于显示简单字符和图形。最常用的是七段LED数码管,它用发光二级管组成数字字符8的七段笔画,至少可以显示十六进制数字的十六个字符
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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