基于C语言在8×8点阵实现9到0倒计时牌显示

发布者:TP9111最新更新时间:2020-05-08 来源: eefocus关键字:C语言  8×8点阵  倒计时牌显示 手机看文章 扫描二维码
随时随地手机看文章

基于C语言在8×8点阵实现9到0倒计时牌显示。


每个数之间为1秒间隔,采用定时器实现。


#include


sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;


code unsigned char image[10][8]={

{0xFF,0xC3,0xDB,0xDB,0xC3,0xDF,0xDF,0xC3},    //要显示数字9时,对于的P0值

{0xFF,0xC3,0xDB,0xDB,0xC3,0xDB,0xDB,0xC3},

{0xFF,0xC3,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF},    //要显示数字7时,对于的P0值

{0xFF,0xFB,0xFB,0xFB,0xC3,0xDB,0xDB,0xC3},

{0xFF,0xC3,0xFB,0xFB,0xC3,0xDF,0xDF,0xC3},

{0xFF,0xDB,0xDB,0xDB,0xC3,0xDF,0xDF,0xDF},

{0xFF,0xC3,0xDF,0xDF,0xC3,0xDF,0xDF,0xC3},

{0xFF,0xC3,0xDF,0xDF,0xC3,0xFB,0xFB,0xC3},

{0xEF,0xE7,0xE3,0xE7,0xE7,0xE7,0xE7,0x81},

{0xFF,0xC3,0xDB,0xDB,0xDB,0xDB,0xC3,0xFF}

};


void main()

{

ENLED = 0;   //使能点阵

ADDR3 = 0;  


EA = 1;   //打开中断

ET0 = 1;   


TMOD = 0x01;   //定时器初始化

TH0 = 0xFC;

TL0 = 0x67;

TR0 = 1;    


while(1);

}


void InterrupTimer0() interrupt 1

{

static unsigned long cnt = 0; //ms计数

static unsigned char sec = 0; //s计数

static unsigned char i = 0; //点阵行号


TH0 = 0xFC;    //定时器重新赋值,保证每次为1ms

TL0 = 0x67;


cnt++;

if(cnt>=1000)

{

cnt = 0;

sec++;

if(sec>9)

{

sec = 0;

}


}


P0 = 0xFF; //消隐

switch(i)

{

case 0 : ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;i++;P0 = image[sec][0];break;

case 1 : ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;i++;P0 = image[sec][1];break;

case 2 : ADDR2 = 0;ADDR1 = 1;ADDR0 = 0;i++;P0 = image[sec][2];break;

case 3 : ADDR2 = 0;ADDR1 = 1;ADDR0 = 1;i++;P0 = image[sec][3];break;

case 4 : ADDR2 = 1;ADDR1 = 0;ADDR0 = 0;i++;P0 = image[sec][4];break;

case 5 : ADDR2 = 1;ADDR1 = 0;ADDR0 = 1;i++;P0 = image[sec][5];break;

case 6 : ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;i++;P0 = image[sec][6];break;

case 7 : ADDR2 = 1;ADDR1 = 1;ADDR0 = 1;i=0;P0 = image[sec][7];break;

default : break;

}

}

关键字:C语言  8×8点阵  倒计时牌显示 引用地址:基于C语言在8×8点阵实现9到0倒计时牌显示

上一篇:51单片机课程设计——led点阵广告牌程序设计
下一篇:单片机实例---定时器控制点阵显示0~9

推荐阅读最新更新时间:2024-11-17 06:08

C语言中如何对某个引脚进行读写操作
  在C语言里。如果直接写P1.O,C编译器并不能识别,而且P1.O也不是一个合法的C语言变量名,所以得给它另起一个名字,比如起名为P1—0,可是P1—0是不是就是P10呢?      可以这么认为,C编译器可不这么认为,所以必须给它们建立联系,这里使用了KeilC的关键字sbit。来定义。sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。      sbit的用法有三种:      第一种方法:sbit位变量名=地址值      第二种方法:sbit位变量名=SFR名称^变量位地址值      第三种方法:sbit位变量名=SFR地址值^变量位地址值      如定义P
[单片机]
单片机C语言(0到100计时)
基于51hei单片机开发板的计时器程序 #include reg52.h #define uint unsigned int #define uchar unsigned char uchar temp,bai,shi,ge,aa; sbit dula=P2^6; sbit wela=P2^7; uchar code table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void display(uchar bai,uchar shi,uchar ge
[单片机]
51单片机多机通信电路图及C语言程序
多机通信电路图 此处,U1作为主机,U2为从机1,U3为从机2。 多机通信C语言程序 (1)主机程序 #include #include #define _SUCC_ 0x0f//数据传送成功 #define _ERR_ 0xf0//数据传送失败 unsigned charTable ={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char Buff ; //数据缓冲区 unsigned char temp=0xff; sbit KEY1=P1^6; sbit KEY2=P1^7; //unsigned char addr; //延时1ms函数 void de
[单片机]
51单片机多机通信电路图及<font color='red'>C语言</font>程序
PIC18F*K80程序存储器读写(c语言实现)
写程序存储器 #define tmpBuffer //是要写入的数据 #define ProgrammingBuffer //临时缓存 //写FlashBlock(一个块为64字节) void WriteFlashBlock(void) { uint8_t i; //将64字节读入RAM。 TBLPTRU = 0x00; TBLPTRH = HIGH_BYTE(ProgrammedPointer); TBLPTRL = LOW_BYTE(ProgrammedPointer); for (i = 0; i WRITE_BLOCK_SIZE; i++) { asm( tblrdposti
[单片机]
数码管显示时间整点报时C语言实例
电路很简单就不画图了,数码管的段是p0口,2个数码管位选分别是p2.5,p2.6 #include reg52.h sbit cs1=P2^5; sbit cs2=P2^6; sbit e=P2^7; sbit beep=P0^4; #define uchar unsigned char uchar display_code ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f}; uchar display_data ={0,0,0x0a,0,0,0x0a,0,0}; uchar time ={0,0,0}; void delay() { uchar i; for(
[单片机]
89 C语言预处理指令总结
预处理指令是以#号开头的代码行,#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。 下面是本章涉及到的部分预处理指令: 指令 说明 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #ifndef 如果宏没有定义,则编译下面代码 #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif 结束一
[单片机]
51单片机1秒定时C语言程序(通过调试)
#include reg52.h // 晶振为12MHz, #include stdio.h #include absacc.h #include intrins.h /*************************** * 定义硬件引脚连接 ****************************/ sbit p1_0=P1^0; /************************* * 定义全局变量 ***********************/ // Byte data intrCounter; // 计时器中断次数 // Byte data beginNum; // 开始倒计时的时间 /
[单片机]
单片机最高效的按键程序(C语言
声明: 本文由南通富士特电力自动化有限公司内部帮助完成。 单片机如何实现一个高效的按键程序很是重要,在单片机中每一步都是需要去斟酌,尽量做到高效,提高整个系统的高效是需要每一步都要高效,先上源代码: #include #include unsigned char key = 0; unsigned char key0 = 0; unsigned char key1 = 0; unsigned char key2 = 0; void key_saomiao(void) { key0 = P2; key0 = key0 & 0xB0; //key0 = key0 4;//移位要看键
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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