历史上的今天
返回首页

历史上的今天

今天是:2025年07月22日(星期二)

正在发生

2020年07月22日 | 中国码电波机芯源码(仅供参考)MSP430单片机程序

2020-07-22 来源:51hei

电波钟源码:中国码机型的,有兴趣可以拿去参考吧。改下硬件引脚就可以了


不详细解说了,能看懂得应该都懂


单片机源程序如下:


#include



typedef unsigned char uchar;

typedef unsigned int uint;



#define XTOFF 0x40



#define DataDir     P4DIR

#define DataPort    P4OUT                                

#define Busy            0x80

#define CtrlDir     P3DIR



#define CLR_RS P3OUT&=~BIT0;    //RS = P3.0        

#define SET_RS P3OUT|=BIT0;        

#define CLR_RW P3OUT&=~BIT1;        //RW = P3.1

#define SET_RW P3OUT|=BIT1;        

#define CLR_EN P3OUT&=~BIT2;        //EN = P3.2        

#define SET_EN P3OUT|=BIT2;        



#define keyin (P2IN&0x0f)



uint high_level[19],dattmp[19];

uint low_level;

uchar month,day,year,hour,min,sec,weekday;

uchar tmp_month,tmp_day,tmp_year,tmp_hour,tmp_min,tmp_sec,tmp_weekday;

uchar flag;

uchar i;

uchar PP=0;

uchar cflag=0;



void main_test(void);

void Init_TimerA(void);

void Init_TimerB(void);

void Decode(void);

void Display(void);

void Delay10ms(void);

uchar Key4Scan(void);



void DispStr(uchar x,uchar y,uchar *ptr);

void DispNChar(uchar x,uchar y,uchar n,uchar *ptr);

void LocateXY(uchar x,uchar y);

void Disp1Char(uchar x,uchar y,uchar data);

void LcdReset(void);

void LcdWriteCommand(uchar cmd,uchar chk);

void LcdWriteData(uchar data);

void WaitForEnable(void);

void Delay5ms(void);



void main(void)

{

  main_test();

}



void main_test(void)

{   

    WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗

    P2DIR = 0x80;

    P2OUT = 0x00;

    LcdReset();

    Init_TimerA();

    Init_TimerB();

    while(i<19)

      ;

    while(19<=i)

      Decode();

    Display();

    while(1)

    {

        if(!cflag)

        {

          Display();

        }

        switch(Key4Scan())

        {

        case 0x01:

          switch(PP++)      //确定游标地址

          {

          case 0:

            LocateXY(4,0);

            break;

          case 1:

            LocateXY(7,0);

            break;

          case 2:

            LocateXY(10,0);

            break;

          case 3:

            LocateXY(14,0);

            break;

          case 4:

            LocateXY(4,1);

            break;

          case 5:

            LocateXY(7,1);

            break;

          case 6:

            LocateXY(10,1);

            break;

          default:

            break;

          }                  

          LcdWriteCommand(0x0f,1);

          if(7==PP)

            PP=0;

          cflag=1;          //标志置位

          break;

        case 0x02:

          if(cflag)

          {

            tmp_year=year;

            tmp_month=month;

            tmp_day=day;

            

            tmp_hour=hour;

            tmp_min=min;

            tmp_sec=sec;

            

            tmp_weekday=weekday;

            

            switch(PP)

            {

            case 0:         //年

              year++;

              if(99                year=0;

              Disp1Char(3,0,year/10+48);

              Disp1Char(4,0,year%10+48);

              LocateXY(4,0);

              break;

            case 1:         //月

              month++;

              if(12                month=0;

              Disp1Char(6,0,month/10+48);

              Disp1Char(7,0,month%10+48);

              LocateXY(7,0);

              break;

            case 2:         //日

              day++;

              switch(month)

              {

              case 2:

                if(0==year%4)

                {

                  if(29                    day=1;

                }

                else

                  if(28                    day=1;

                break;

              case 4:

              case 6:

              case 9:

              case 11:

                if(30                  day=1;

                break;

              case 1:

              case 3:

              case 5:

              case 7:

              case 8:

              case 10:

              case 12:

                if(31                  day=1;

              default:

                break;

              }

              Disp1Char(9,0,day/10+48);

              Disp1Char(10,0,day%10+48);

              LocateXY(10,0);

              break;

            case 3:         //weekday

              weekday++;

              if(7                weekday=1;

                switch(weekday)

                {

                case 1:

                  Disp1Char(12,1,'M');

                  Disp1Char(13,1,'o');

                  Disp1Char(14,1,'n');

                  break;

                case 2:

                  Disp1Char(12,1,'T');

                  Disp1Char(13,1,'u');

                  Disp1Char(14,1,'e');

                  break;

                case 3:

                  Disp1Char(12,1,'W');

                  Disp1Char(13,1,'e');

                  Disp1Char(14,1,'d');

                  break;

                case 4:

                  Disp1Char(12,1,'T');

                  Disp1Char(13,1,'h');

                  Disp1Char(14,1,'u');

                  break;

推荐阅读

史海拾趣

EWC Controls公司的发展小趣事

随着公司规模的不断扩大和技术实力的增强,EWC Controls公司开始拓展全球市场。公司积极参加国际展会和交流活动,与全球各地的客户建立联系和合作。同时,EWC Controls公司还针对不同国家和地区的市场需求和法律法规要求,对产品进行适应性改进和优化。这些努力使得公司的产品逐渐走向国际市场,并赢得了良好的口碑和市场份额。

功得(CONQUER)公司的发展小趣事

功得公司最初成立时,只是一家专注于电子元器件代理的小公司。创始人李明看准了电子行业快速发展的趋势,决定投身于这一领域。他带领团队深入市场调研,发现了一种新型的集成电路芯片在市场上有着巨大的潜力。于是,功得公司投入大量资金研发这种芯片,并通过不断改进和优化,最终成功推出了具有竞争力的产品。凭借这一创新产品,功得公司在市场上获得了初步的成功,为后续发展奠定了基础。

Embedded Artists公司的发展小趣事

在业务迅速发展的同时,Embedded Artists公司也始终关注环境保护和可持续发展。他们致力于采用环保材料和节能技术来生产产品,并通过优化生产流程来降低能源消耗和废物排放。此外,公司还积极参与公益活动,支持环保组织和项目。这些举措不仅提高了公司的社会形象,也为公司的长期发展奠定了坚实基础。

HAHN - Elektrobau GmbH & Co KG公司的发展小趣事

进入21世纪后,高通在推动5G技术发展方面发挥了关键作用。作为真正的5G领军企业,高通在基础研发方面持续投入,拥有引领和参与标准制定的长期历史。高通的5G技术涵盖了从系统构建到多样化应用的各个方面,包括毫米波频谱的利用、大规模MIMO技术的演进等。这些突破性发明为现代蜂窝通信提供了强有力的支撑,使得高通在5G标准制定和技术实施方面占据了核心地位。高通已签订超过150份5G许可协议,为全球超过180亿台终端提供了技术支持。

弘凯光电(BRIGHTEK)公司的发展小趣事

弘凯光电一直致力于技术创新和产品升级。公司拥有一支高效、创新的技术团队,通过对产品技术的深入研究和持续创新,不断推出具有竞争力的新产品。例如,公司的iCLed系列产品,凭借其独特的设计和卓越的性能,在智能座舱设计领域获得了广泛应用。这种对技术创新的不断追求,使得弘凯光电在电子行业中始终保持领先地位。

川晶科技公司的发展小趣事

在市场竞争日益激烈的背景下,川晶科技始终坚持创新驱动的发展战略。公司不断加大产品创新和自主研发的力度,推动产品向微型化、低耗能方向发展。通过引入新技术、新工艺,川晶科技成功开发出了一系列具有竞争力的新产品,满足了市场的多样化需求。同时,公司还积极探索新的应用领域,努力拓展市场空间,为公司的持续发展注入了新的动力。

问答坊 | AI 解惑

CDMA移动手机本机振荡器的设计策略[多图]

本地振荡器(LO)的设计和性能对手机能否达到或超过最初的设计目标有很大影响,大多数为北美市场设计的CDMA手机也包括AMPS,以便为那些尚未安装数字基础设施的地区提供服务,针对这些应用的手机可能需要8个不同的LO信号。本文讨论影响CDMA手机LO的设 ...…

查看全部问答>

一台主机怎么才能控制多台光端机的球机转动?

一台主机怎么才能控制多台光端机的球机转动?我试过一台主机控制一台光端机的球机能转动,但是并联另外一台光端机 球机都不能转动了,这是怎么回事?单独能控制转动,并联就不能控制转动了????请高手指点……………

查看全部问答>

8X8 LED 如何实现多行同时显示

行线高电平且列线低电平时控制灯亮 如何在逐行显示中使不同行的灯亮之间没有干扰啊 逐行显示 第二行的代码实现时是否会覆盖第一行的啊 (使用8255控制8X8LED) 汇编语言!!!! …

查看全部问答>

这个编码器是什么原理

这是一个七脚的编码器,在网上查了很多资料,没找到相关资料,急要用,请高手看看 …

查看全部问答>

vxworks中向任务发送消息,有没有类似windows中的"PostThreadMessage"机制?

vxworks中向任务发送消息,有没有类似windows中的\"PostThreadMessage\"机制? 不需要自己创建消息队列,直接使用vxwork任务的消息队列,该消息队列由vxworks来维护,创建,并提供保护机制,我们只需要postmessage,然后getmessage 对消息进行处理…

查看全部问答>

使用同步链处理亚稳态后,仍然可能会出现输入逻辑与输出逻辑不一致的情况吧???

在处理亚稳态时,很多资料都是说用同步链(多个D触发器)可以大大降低亚稳态问题,我觉得其作用也就是使得下一级的输入是一个确定状态,但并不一定能保证输入信号与同步链后输出信号逻辑是一致的吧?这样的话,后一级输入仍然是错误的逻辑状态,那 ...…

查看全部问答>

关于用FPGA语言实现VGA显示彩条仿真老是出不来..求助.内有源程序和仿真截图

library ieee;use ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity vga is        port(               reset  &n ...…

查看全部问答>

欢迎探讨:应该怎样选择要学习的单片机?

《ARM Cortex-M0从这里开始》       对于初学者来说,单片机的选型恐怕是个头疼的问题。从8位到32位,单片机的种类繁多。比较常见的内核有8051、AVR、PIC、ARM等等,但是选择哪一种比较容易入门,而且在今后的工作中能够用的 ...…

查看全部问答>

新唐arm9-ejs开发板 200元

W90P950开发板采用一板式设计,6层PCB板结构,尺寸仅为80×90mm,方便客户携带、调试和测量。设计严格按照CCC、CE等国内外电子产品认证标准,充分考虑高速信号完整性、电磁兼容性、静电保护等产品实际使用细节,确保W90P950核心板在各种环境下稳定 ...…

查看全部问答>