一个好玩的C51动态扫描小程序

发布者:徽宗古泉最新更新时间:2015-07-02 来源: 51hei关键字:C51  动态扫描 手机看文章 扫描二维码
随时随地手机看文章
初学者上手的简单程序,把下面代码复制进keil代码窗口,烧进51hei开发板,看看结果吧

#include
#define uchar unsigned char
#define uint unsigned int
#define dp P0
char code DuanMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40}; //单个数码管显示数
char code fenjie[]={0,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管的位选择:从0到7.
sbit LATCH1=P2^6;	//	控制数码管段的位
sbit LATCH2=P2^7; //	控制数码管位的位
void delay(unsigned int t)
{
 while(--t);
}
void main()
{
 int i,j,k;
      while(1)
        {
     delay(5000);
     for(i=0;i<7;i++)	//段码
      { 
        for(j=0;j<8;j++)	//位码
         { 
          for(k=0;k<10;k++) //调节k的值可调节扫描时间
                 {

               dp=WeiMa[j]; //取位码
                    LATCH2=1;     
                    LATCH2=0; 
dp=DuanMa[i]; //取段码 
               LATCH1=1;     
                    LATCH1=0;
delay(2500);

               dp=fenjie[i]; //取段码 
               LATCH1=1;     
                    LATCH1=0;
               dp=WeiMa[7]; //取位码
                    LATCH2=1;     
                    LATCH2=0; 
           delay(50);

dp=0; //取段码 清零	  减小余晖影响
               LATCH1=1;     
                    LATCH1=0;
               dp=WeiMa[j]; //取位码
                    LATCH2=1;     
                    LATCH2=0; 
           delay(1000); 
                  }
      }
 	   
           }	 
         //闪烁8
        for(k=0;k<10;k++)
                  {
                   dp=fenjie[7]; //取段码 
              LATCH1=1;     
                   LATCH1=0;
              dp=WeiMa[7]; //取位码
                   LATCH2=1;     
                   LATCH2=0;
              delay(6000);
  delay(6000);
                   
  dp=0; //取段码 
              LATCH1=1;     
                   LATCH1=0;
              dp=WeiMa[7]; //取位码
                   LATCH2=1;     
                   LATCH2=0;
                   delay(6000);
                  }	    
        }	 
}	  
关键字:C51  动态扫描 引用地址:一个好玩的C51动态扫描小程序

上一篇:51单片机+315M无线射频模块发射程序
下一篇:8位共阴极数码管动态驱动程序

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

C51(DHT11)温湿度+LCD1602
前言:软件延时真的很坑,校园网真的很烂 直接上码 LCD1602部分 (1).LCD1602.C #include reg52.h #include LCD1602.h #include INTRINS.h sbit LCD_RS=P2^6; sbit LCD_RW=P2^5; sbit LCD_E=P2^7; #define LCD_DatrPort P0 //指令函数 void LCD_WeitrCommand(unsigned char Command) { LCD_RS=0;//0写指令,1写数据 LCD_RW=0;//write mode LCD_DatrPort=Command; LCD_E
[单片机]
<font color='red'>C51</font>(DHT11)温湿度+LCD1602
掉电保护和看门狗复位C51程序
这个是一个硬件看门狗和用at24c02保存掉电数据的程序,希望对大家有所帮助已经测试通过的. #include reg51.h #include "IIC.h" #define ADDR 0x20 //存储地址 sbit led1=P2^7; //掉电现象 sbit led2=P2^6; //看门狗复位现象 sbit WDI=P2^5; //喂狗位 uint watch=100; //喂狗次数 uchar wbuf,rbuf; //写数据读数据变量 bit flag=0; //掉电标志 /*******外部中断,下降沿触发**************/ void intinit() { EA=1; EX0
[单片机]
C51---独立按键控制LED显示二进制
原理图 mian函数 通过按键1不断+1 LED显示二进制亮灭 因为LED一共8个 最高显示二进制1111 1111 即255 #include REGX52.H //0 num 65535 void Delay_ms(unsigned int num) //@12.000MHz { unsigned char i, j; while(num) { i = 2; j = 239; do { while (--j); } while (--i); num--; } } void main() { unsigned char LEDNum = 0; while(1) { if(P
[单片机]
C51---独立按键控制LED显示二进制
pic数码管动态扫描显示程序
#include p IC .h //包含 单片机 内部资源预定义 __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 void delay(); //delay函数申明 void init(); //I/O口初始化函数申明 const char TABLE ={0xc0,0xf9,0xa4,0xb0,0x99,0x92}; //定义常数0-5的数据表格 void main() //主函数 { while(1) //死循环,让 数码管 持续点亮 {
[单片机]
C51非阻塞延时流水灯
#include reg52.h unsigned char counter=0; void delay()interrupt 1 using 1 { TL0|=0x00; TH0=0x4C; counter++; } main() { unsigned char i=1; TMOD=1; TR0=1; EA=1; ET0=1; TH0=0x4C; TL0=0x00; while(1) { if(counter==10) { counter=0; P1=~i; i =1; if(i==0) i=1; } } } 采用T0方式1定时,11.0592Mhz晶振,延时50ms。
[单片机]
<font color='red'>C51</font>非阻塞延时流水灯
Keil C51 总线外设操作问题的深入分析
阅读了《单片机与嵌入式系统应用》2005年第10期杂志《经验交流》栏目的一篇文章《Keil C5l对同一端口的连续读取方法》(原文)后,笔者认为该文并未就此问题进行深入准确的分析。文章中提到的两种解决方法并不直接和简单。笔者认为这并非是Keil C51中不能处理对一个端口进行连续读写的问题,而是对Keil C51的使用不够熟悉和设计不够细致的问题,因此特撰写本文。 本文中对原文提到的问题,提出了三种不同于原文的解决方法。每种方法都比原文中提到的方法更直接和简单,设计也更规范。(无意批评,请原文作者见谅) 1 问题回顾和分析 原文中提到:在实际工作中遇到对同一端口反复连续读取,Keil C5l编译并未达到预期的结果。原文作
[单片机]
C51全局初始化及精确延时程序,51单片机精确延时程序
/********************************************************************************************************* * Initialization Program * QiZhao,2007 * All Rights Reserved * File : initial.h * By : QiZhao * Contact :zq1987731@163.com * * Version : V2.1 γ * Corrector : QiZhao * Date : 2008.2.1 (Last modified) * * Remarks :
[单片机]
C51程序设计中的编程中的字节对齐问题
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。比如
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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