历史上的今天
返回首页

历史上的今天

今天是:2024年11月09日(星期六)

正在发生

2019年11月09日 | 单片机点阵时钟原理图和源码

2019-11-09 来源:51hei

单片机源程序如下:

//LED点阵时钟程序

//作者:刘宁 

//--------------------------------

#include "reg52.h"


#define  uchar unsigned char

#define  uint  unsigned int

//========================

//****滚屏事件定义****

#define         MSG_MV_L         1         //左移

#define         MSG_MV_R         2        //右移

#define         MSG_MV_U    3        //上移

#define         MSG_MV_D    4        //下移

#define         MSG_NONE         0        //无

uchar MSG_MV = 0;

//========================

//****显示状态定义****

#define STA_gTIME        1        //滚动显示时间

#define        STA_gTEMP        2        //滚动显示温度

#define        STA_gWORD        3        //滚动显示文字

#define        STA_sTIME        4        //静态显示时间

#define        STA_sWEEK        5        //静态显示星期

#define        STA_sDATE        6        //静态显示日期

#define STA_sYEAR        7        //静态显示年份

#define        STA_sTEMP        8        //静态显示温度

#define        STA_sWORD        9        //静态显示文字

#define STA_CHG                10        //校时模式

#define STA_SONG        11        //滚动显示诗歌

#define STA_COPYRIGHT        12        //开机显示

uchar STATE = 1;

//=========================

//****校时状态定义****

#define CHG_HOUR        1        //调整小时

#define CHG_MIN                2        //调整分

#define CHG_SEC                3        //调整秒

#define CHG_MON                4        //调整月

#define CHG_DAY                5        //调整日

#define CHG_WEEK        6        //调整星期

#define CHG_YEAR        7        //调整年

uchar CHANGE = 1;

uchar hide_times = 0;        //校时闪烁时间变量

uchar HIDE = 0;                //隐藏显示标志位

uchar TMP_TIME = 0; 

//=========================

//****按键定义****

sbit  key0 = P1^0;

sbit  key1 = P1^1;

sbit  key2 = P1^2;

sbit  key3 = P1^3;


#define KEY0        0x0e

#define KEY1         0x0d

#define KEY2         0x0b

#define KEY3         0x07


#define KEY0_S        0x0e        //KEY0短按下

#define KEY1_S        0x0d        //KEY1短按下 

#define KEY2_S        0x0b        //KEY2短按下

#define KEY3_S        0x07        //KEY3短按下

#define KEY0_L        0x1e        //KEY0长按下

#define KEY1_L        0x1d        //KEY1长按下

#define KEY2_L        0x1b        //KEY2长按下

#define KEY3_L        0x17        //KEY3长按下

#define KEY_NONE        0        //无按键

uchar MSG_KEY = KEY_NONE;

uchar key_times = 0;        //持续时间

uchar key_keep_times = 0;

uchar cur_key_val = 0;

uchar key_done = 0;        //按键事件有无做好

uchar exit = 0;        //校时状态下长时间无按键退出

//=========================

//uchar time_read_times = 0;        //读时间

//uchar tem_read_times = 0;        //读温度

//=========================

//****引脚定义****

sbit  CLK =P2^5 ;                  //74HC595移时钟 

sbit  STB =P2^4        ;          // 74HC595锁存信号 

sbit  Red=P2^7        ;          //红色数据输出引脚低电平有效            

sbit  Greed=P2^6;         //全屏控制使能0,低电平有效

sbit  OE = P0^7;           //全屏使能

//======================== 

//****DS1302**** 

sbit SCLK=P0^4;   //位定义1302芯片的接口,时钟输出端口定义在P2.4引脚

sbit DATA=P0^5;   //位定义1302芯片的接口,数据输出端定义在P2.5引脚

sbit RST=P0^6;    //位定义1302芯片的接口,复位端口定义在P2.6引脚


typedef struct __SYSTEMTIME__

{

        uchar Second;

        uchar Minute;

        uchar Hour;

        uchar Day;

        uchar Month;

        uchar Week;

        uchar  Year;

}SYSTEMTIME;        //定义的时间类型

SYSTEMTIME Time;



//=========================================

//****18B20****

sbit DQ = P0^7

;  //定义DS18B20端口DQ  


unsigned char data  temp_data[2] = {0x00,0x00} ;

unsigned char data  temp_ram[5] =   {0x00,0x00,0x00,0x00,0x00} ;

unsigned char code  ditab[16] =    {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,

                                    0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

//==========================================

bit presence  ;

uchar SendData;                  //要发送的数据变量 

uchar hang;                        //行扫描变量  (半屏只有16行,所以hang=0到15)

uchar move_times = 0;        //左右移动位数

uchar start_word = 0;



uchar data h_dispram[10];         //显示缓存

uchar code *disword[26];        //显示文字指针



void  Keyscan (void); //修改参数按键扫描子程序 

void  Sendping(); //发送半屏子程序

void  Put_Wdispram(uchar first_word);//

void  Put_Hdispram(); //把显示文字放入显示缓存

void  Move_Left();        //左移

void  Move_Right();        //右移

void  RL_Move();

void  UD_Move();

void  Show_Line();

void  Show_Move_Word(uchar code *WORDS[][8]);

void  delay();

void  SendByte(void);

void  RowsCan(void);

void  Disp_Temperature();

void Put_gTEMP();

void Change_obj();


uchar ReadKey1();




uchar code MY_WORDS[][16]= 

                                        { 

{0x10,0x08,0x04,0x7F,0x01,0x21,0x12,0x0A,0x04,0x06,0x0A,0x11,0x21,0x41,0x80,0x00},

{0x04,0x04,0x04,0xA4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x04,0x84,0x14,0x08,0x00},/*"刘",0*/

{0x02,0x01,0x3F,0x20,0x40,0x00,0x00,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x02},

{0x00,0x04,0xFE,0x04,0x08,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"宁",1*/

{0x01,0x01,0x01,0x01,0x01,0x1F,0x10,0x10,0x10,0x1F,0x10,0x01,0x28,0x24,0x44,0x00},

{0x00,0x00,0xF8,0x00,0x10,0xF8,0x10,0x10,0x10,0xF0,0x10,0x10,0x88,0x44,0x44,0x00},/*"点",2*/

{0x00,0xF8,0x88,0x97,0xA1,0x91,0x8A,0x8F,0x88,0xA8,0x97,0x80,0x80,0x80,0x80,0x80},

{0x80,0x80,0x80,0xFC,0x00,0x40,0x40,0xFC,0x40,0x40,0xFE,0x40,0x40,0x40,0x40,0x40},/*"阵",3*/

{0x00,0x00,0x3F,0x00,0x00,0x00,0xFF,0x03,0x07,0x06,0x0C,0x18,0x31,0x7F,0x20,0x00},

{0x00,0x30,0xF8,0x00,0x00,0x0C,0xFE,0x00,0x00,0x40,0x20,0x10,0xF8,0x0C,0x08,0x00},/*"云",0*/

{0x01,0x01,0xFF,0x01,0x02,0x3F,0x24,0x22,0x2F,0x21,0x3F,0x21,0x21,0x21,0x21,0x00},

{0x00,0x04,0xFE,0x00,0x00,0xFC,0x24,0x44,0xF4,0x04,0xFC,0x04,0x04,0x14,0x08,0x00},/*"南",1*/

{0x02,0x02,0x04,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x00},

{0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0xF8,0x08,0x00},/*"白",2*/

{0x04,0x04,0x7F,0x04,0x14,0x10,0x24,0x7C,0x09,0x10,0x7E,0x20,0x06,0x78,0x20,0x00},

{0x40,0x40,0xFE,0x40,0x40,0x40,0x7C,0x84,0x04,0x44,0x24,0x24,0x04,0x04,0x28,0x10},/*"药",3*/

{0x08,0x08,0x1F,0x10,0x20,0x4F,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},




                                        };


uchar code NO_WORDS[][16]={


{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",0*/

{0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"1",1*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},/*"2",2*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"3",3*/

{0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},/*"4",4*/

{0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"5",5*/

{0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"6",6*/

{0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},/*"7",7*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",8*/

{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},/*"9",9*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",10*/ 

{0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*":",11*/ 

推荐阅读

史海拾趣

Euroquartz公司的发展小趣事

Euroquartz自创立之初,就将产品质量和客户满意度置于公司运营的核心。为了确保这一点,公司引入了完整的AS9100 Rev D质量体系,并通过了相应的认证。这一体系要求Euroquartz在制造程序和可追溯性方面保持完整的记录,审批机关会定期进行审核,确保品质始终如一。这种对品质的执着追求,为Euroquartz赢得了客户的信赖,也为公司的发展奠定了坚实的基础。

HOPERF公司的发展小趣事

随着技术的不断积累和市场的日益扩大,HOPERF开始着手整合产业链资源。公司不仅在ASIC芯片设计和MEMS传感芯片设计方面持续深耕,还逐步构建起包括封装测试校准技术、应用服务在内的完整产业链。同时,HOPERF积极实施全球化战略,在全球范围内招募顶尖研发设计人才,其中60%的专家级工程师来自德国、美国、瑞士等国际一流企业。这些举措极大地提升了公司的研发实力和市场竞争力,为公司的全球化发展奠定了人才和技术基础。

Hi-Optel Technologly Co Ltd公司的发展小趣事

为了进一步提升生产效率和产品质量,HOPERF在无锡太湖科技园建立了3万平方米的现代化生产基地。该基地引进了德国、美国等地区的先进封装测试生产设备和高精密测试测量仪器,并严格按照ISO9001国际质量认证体系进行生产管理。这种高标准的生产管理流程确保了产品质量的可靠性和稳定性,赢得了国内外客户的广泛认可和信赖。

HBH-Microwave公司的发展小趣事

面对日新月异的电子技术和不断变化的市场需求,HBH-Microwave始终保持对技术创新的热情和投入。公司每年都会投入大量资金用于研发新产品和新技术,以确保在激烈的市场竞争中保持领先地位。同时,HBH还积极与高校和研究机构合作,共同开展前沿技术的探索和研究。这种持续的技术创新和研发投入为公司的长远发展提供了源源不断的动力。

Daito Communication Apparatus Co Ltd公司的发展小趣事

自1948年成立以来,Daito公司一直致力于电子元器件的研发与生产。在公司的早期阶段,他们意识到保险丝在电子设备中的重要性,并决定投入大量资源进行研发。经过数年的努力,Daito公司成功开发出了高精度报警保险丝,这一创新产品凭借其卓越的性能和可靠性,迅速在市场上获得了认可。

高精度报警保险丝的成功并没有让Daito公司停止创新的步伐。他们不断对保险丝的失效原因与寿命进行预测和分析,通过全面质量管理,使产品质量得到了显著的提高。同时,Daito公司还将各系列保险丝的额定值多层次化,以满足不同客户的需求,扩大了顾客的选择余地。

Digital Voice Systems Inc公司的发展小趣事

Digital Voice Systems, Inc.(DVSI)于1988年成立,当时正值数字通信技术的兴起阶段。公司创始人凭借对语音编解码技术的深刻理解和前瞻性的市场洞察力,决定投身于这一领域。他们开发出了具有专利保护的基于鲁棒性多带激励模型(MBE Model)的低码率语音压缩算法,如IMBE和AMBE编解码系统。这些算法在当时的市场上独树一帜,为DVSI赢得了第一桶金。

在创立初期,DVSI面临着资金、技术、市场等多方面的挑战。然而,他们凭借着坚定的信念和不懈的努力,逐步克服了这些困难。他们不断投入研发,优化算法,提高产品的性能和稳定性;同时,他们积极开拓市场,与各大通信设备制造商建立合作关系,将产品推向市场。

随着时间的推移,DVSI的产品逐渐在市场上获得了认可。他们的编解码系统被广泛应用于移动通信、卫星通信、军事通信等领域,为客户提供了高效、稳定的语音通信解决方案。DVSI也因此逐渐崭露头角,成为了电子行业中一颗耀眼的明星。

故事二至五框架概述

  1. 技术创新与突破:DVSI在语音编解码技术方面的持续创新,如推出新一代的高效压缩算法,进一步提升了产品的竞争力。
  2. 市场拓展与国际化:随着公司实力的增强,DVSI开始拓展国际市场,与全球多家知名企业建立合作关系,实现了国际化发展。
  3. 合作与竞争:在电子行业中,DVSI与其他企业的合作与竞争并存。他们通过合作共赢的方式,共同推动行业的发展;同时,也面临着来自竞争对手的挑战和竞争压力。
  4. 企业文化与团队建设:DVSI注重企业文化建设,倡导创新、协作、共赢的价值观。他们注重团队建设,吸引了一批优秀人才加入公司,为公司的发展提供了有力的人才保障。

以上故事和框架概述仅供参考,您可以根据这些线索进一步挖掘和编写关于DVSI公司的故事。

问答坊 | AI 解惑

电子制动系统汽车用上飞机的刹车!!

汽车借用飞机科技早已屡见不鲜,从发动机涡轮增压技术,到空气动力学配件等都是将成熟的飞机技术成功转移到汽车上的典型案例。目前,又一项飞机技术将运用到未来汽车上,它就是电子制动系统。 电子制动系统在航空领域应用相当普遍,且制动 ...…

查看全部问答>

函数信号发生器制作方法的比较与分析

函数信号发生器制作方法的比较与分析…

查看全部问答>

问一下ARM中断函数的格式

void __irq watchdogIRQ(void) {         ledblink();         isBlink=~isBlink;         if(isBlink==0)         {           ...…

查看全部问答>

关于BIT伪指令的用法

我用的是非力谱的P89LPC935单片机,用这条指令结果是多少?? BUSY  BIT  09H 09H 好象不可以位寻址??…

查看全部问答>

求 用Borland c/c++ 4.5编译 uCOS-II时的一个插件

用Borland c/c++ 4.5编译 uCOS-II时,需要对Borland c/c++ 兼容汇编语言,需要一个TASM.EXE 插件,哪位兄弟有的话,给兄弟传一下。谢谢! 20weiliaoshei08@163.com …

查看全部问答>

程序不能显示大尺寸的JPEG图片????为何???

我的程序可以显示小尺寸的JPEG图片,但是大尺寸的就不行了,为什么呢? 高手可否指点一二呢?? 谢谢!…

查看全部问答>

关于pcb的问题

想画个板子  需要用到ethernet 100/1000 的原理图和pcb库  原理图还好可以自己画, 但是对于pcb库来说就有点难了 哪位大哥大姐有这两样  小弟谢谢喽  ~~~…

查看全部问答>

STM32F1系列的ADC采样的时钟可以用外部时钟吗?

我想用外部时钟进行AD采样,不知道是否可行。…

查看全部问答>

关于团的EK-LM3S811-ND板子

用的是IAR EW for ARM 6.30,驱动是光盘上的,不能下载和debug,难道只能用CSS或者keil?…

查看全部问答>