历史上的今天
返回首页

历史上的今天

今天是:2025年02月11日(星期二)

正在发生

2020年02月11日 | AVR单片机实现电子时钟设计

2020-02-11 来源:eefocus

#include

#include

#include

#include

#include

#include

#include

#include


#define uchar unsigned char

#define uint unsigned int

#define xtal 8

#define CS PA5

#define SID PA6

#define SCLK PA7

#define Set_CS() DDRA |= (1<#define Set_SID() DDRA |= (1<#define Set_SCLK() DDRA |= (1<#define Clr_CS() DDRA |= (1<#define Clr_SID() DDRA |= (1<#define Clr_SCLK() DDRA |= (1<#define HH 2 //定义 时 为2

#define MM 1 //定义 分 为1

#define SS 0 //定义 秒 为0

volatile unsigned char Time_h_m_s[3]={0,0,0}; //时间的 时 分 秒 存贮单元

volatile unsigned char flash_sign=0x00;

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

//函数声明

void Delay(uint ms); //延时子程序

void Serial_W_1byte_to_LCD(uchar RS, uchar W_data);

void Serial_send_cmd(uchar send_cmd);

void Serial_send_data(uchar send_data);

void Write_8bits(uchar W_bits);

void LCD_Init(void);

void Serial_send_string_to_xy(uchar row, uchar col, uchar *p);

void Display_clock1(uchar row, uchar col, uchar *time);

/*=============================================================

功能: TIMER2溢出中断函数

=================================================================*/

SIGNAL(SIG_OUTPUT_COMPARE2) // _VECTOR(3)

{

static unsigned char half_second;

if((++half_second)>=2)

{

if((++Time_h_m_s[SS])>=60)

{

Time_h_m_s[SS] = 0;

if((++Time_h_m_s[MM])>=60)

{

Time_h_m_s[MM] = 0;

if((++Time_h_m_s[HH])>=24)

Time_h_m_s[HH] = 0;

}

}

half_second = 0x00;

}

flash_sign &= 0x01;

flash_sign ^= 0x01; //置位闪动标志位(该位为0时闪动)

}


/*******************************************************************

函 数 名:Port_init

入口参数:无

出口参数:无

建立日期:

修改日期:

函数作用:MCU端口初始化函数

说 明:

********************************************************************/

void Port_init(void)

{

DDRC = ~(1<PORTC = 0x00;


ASSR |= (1<TIMSK |= (1<TCCR2 |= (1<OCR2 = 63;

}

/*******************************************************************

函 数 名:Serial_send_string

入口参数: *p_send_data

出口参数:无

建立日期:

修改日期:

函数作用:发送字符串子函数

说 明:

********************************************************************/

void Serial_send_string(uchar *p_send_data)

{

uchar *p_temp;

p_temp = p_send_data;

while(*p_temp != 0)

{

Serial_send_data(*p_temp++);

}

}

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

/********************************************************************

函 数 名:Serial_send_string_to_xy

入口参数:row,col,*p

出口参数:无

建立日期:

修改日期:

函数作用:

说 明:

********************************************************************/

void Serial_send_string_to_xy(uchar row, uchar col, uchar *p)

{

switch(row)

{

case 0:Serial_send_cmd(0x80+col);

break;

case 1:Serial_send_cmd(0x90+col);

break;

case 2:Serial_send_cmd(0x88+col);

break;

case 3:Serial_send_cmd(0x98+col);

break;

default: break;

}

while(*p != 0)

{

Serial_send_data(*p++); //写数据到RAM

}

}

/********************************************************************/

int main(void)

{

PORTA = 0XFF; //

DDRA = 0XFF; //PA口全部设为输出模式

Port_init();

Clr_CS();

Clr_SID();

Clr_SCLK();

LCD_Init();

Delay(10);

LCD_Init(); //初始化两边是关键,否则液晶上电重起将不能显示

sei(); //开总中断

while(1)

{

asm("nop");

asm("nop");

Serial_send_cmd(0x30); //基本指令集,,绘图显示OFF

//Serial_send_cmd(0x01); //清除显示

Serial_send_string_to_xy(0, 0, "现在时间:");

Display_clock1(1, 3,Time_h_m_s);

}


}

/*******************************************************************

函 数 名:LCD_Init

入口参数:无

出口参数:无

建立日期:

修改日期:

函数作用:12864液晶初始化函数

说 明:

********************************************************************/

void LCD_Init(void)

{

uchar cmd;

Delay(50);

cmd=0x30; //功能设置 8位数据,基本指令

Serial_send_cmd(cmd);

Delay(20);

cmd=0x0C; //显示状态 ON,游标OFF,反白OFF

Serial_send_cmd(cmd); //写指令

Delay(20);

cmd=0x01; //清除显示

Serial_send_cmd(cmd); //写指令

Delay(20);

cmd=0x02; //地址归位

Serial_send_cmd(cmd); //写指令

Delay(20);

cmd=0x80; //设置DDRAM地址

Serial_send_cmd(cmd); //写指令

Delay(20); //延时

}

/*******************************************************************

函 数 名:Serial_send_cmd

入口参数:cmd

出口参数:无

建立日期:

修改日期:

函数作用:写一个字节指令的到12864液晶,

说 明:

********************************************************************/

void Serial_send_cmd(uchar send_cmd)

{

Serial_W_1byte_to_LCD(0, send_cmd);

}

/*******************************************************************

函 数 名:Serial_send_data

入口参数:cmd

出口参数:无

建立日期:

修改日期:

函数作用:写一个字节数据到12864液晶,

说 明:

********************************************************************/

void Serial_send_data(uchar send_data)

{

Serial_W_1byte_to_LCD(1, send_data);

}


推荐阅读

史海拾趣

广芯电子(BROADCHIP)公司的发展小趣事

撰写五个关于广芯电子(BROADCHIP)公司在电子行业发展的故事可能内容过多,我可以先为您提供一个故事的示例,如果需要更多故事,可以在之后输入继续。


广芯电子:从创业起步到业界翘楚的飞跃

在电子行业的广阔天地中,广芯电子以其坚韧不拔的精神和前瞻性的技术布局,逐渐崭露头角,成为业界的一匹黑马。

故事要从创始人戴忠伟的海外求学经历说起。深受邓小平南巡讲话的影响,戴忠伟毅然辞去稳定的工作,选择留学深造。在异国他乡,他深耕半导体集成电路领域,积累了丰富的技术经验和人脉资源。毕业后,他先后在多家知名美国半导体公司担任技术专家和设计总监,为后来的创业之路打下了坚实的基础。

回国后,戴忠伟敏锐地洞察到国内半导体市场的巨大潜力,于是决定创立广芯电子,致力于中高端功率器件的晶圆代工业务。创业初期,公司面临着资金短缺、技术瓶颈等重重困难,但戴忠伟带领团队凭借着对技术的执着追求和对市场的深刻理解,逐步攻克了一个又一个难关。

经过几年的努力,广芯电子实现了从交付第一千万颗芯片到第一亿颗芯片的跨越,并在短短七年内实现了交付第十亿颗芯片的壮举。这一成绩的背后,是公司对技术创新的不断投入和对产品质量的严格把控。同时,广芯电子还积极拥抱资本市场,成功登陆新三板,为公司的进一步发展注入了强劲的动力。

随着公司规模的扩大和业务的拓展,广芯电子逐渐在电子行业中树立了良好的口碑。公司先后获得了上海市“专精特新”企业称号和工信部“专精特新小巨人”企业称号,这是对广芯电子在技术创新和市场竞争力方面的充分认可。

如今,广芯电子已经成为电子行业中不可或缺的一员。公司不仅在国内市场占据了一席之地,还积极拓展海外市场,与多家国际知名企业建立了紧密的合作关系。未来,广芯电子将继续秉持着创新、务实、高效的企业精神,不断推动电子行业的发展,为人类社会的进步贡献自己的力量。


若您想要探索更多内容,随时可以继续输入。

GeneSiC Semiconductor公司的发展小趣事

GeneSiC Semiconductor公司的发展故事

故事一:技术先驱与高性能SiC器件的开创

GeneSiC Semiconductor自成立以来,便致力于高性能碳化硅(SiC)功率器件的研发与生产。作为碳化硅技术的先驱,GeneSiC在2000年代初便开始布局,并成功开发出多款领先业界的SiC二极管和MOSFET技术。其产品覆盖从650V到6.5kV的广泛电压范围,满足从20W到20MW不同应用场景的需求。这些技术突破不仅提升了系统效率,还显著增强了设备的可靠性和耐用性,为汽车、工业和国防等多个领域带来了革命性的变化。

故事二:政府机构项目的深度参与

GeneSiC与全球多个政府机构紧密合作,参与了众多前沿技术研发项目。例如,为美国能源部(DOE)开发的6.5kV SiC晶闸管用于储能系统,以及为NASA金星探测任务提供的500°C单片集成SiC超结晶体管JBS二极管(MIDSJT)。这些项目不仅展示了GeneSiC在极端环境下的技术实力,还推动了SiC技术在关键领域的广泛应用。通过不断的技术创新与合作,GeneSiC在提升全球科技水平方面做出了重要贡献。

故事三:电动汽车市场的深度布局

随着电动汽车市场的快速崛起,GeneSiC迅速调整战略,将SiC技术应用于电动汽车的关键部件中。其高性能的SiC MOSFET和二极管不仅提升了电动汽车的充电效率和续航里程,还降低了电池系统的热损耗和重量。此外,GeneSiC还为快速充电站开发了高效、稳健的解决方案,如SK Signet的350kW快速充电器便采用了GeneSiC的SiC二极管,为电动汽车的快速普及提供了有力支持。

故事四:工业领域的广泛应用

在工业领域,GeneSiC的SiC技术同样展现出强大的竞争力。以埃克西德技术为例,该公司采用GeneSiC的SiC功率半导体,确保了其下一代工业材料处理设备的高频快速充电器的可靠性、安全性和易用性。GeneSiC的SiC MOSFET和MPS肖特基二极管在高频、大功率的应用场景下表现出色,为工业自动化和智能制造提供了强有力的技术支持。

故事五:与纳微半导体的战略合并

2022年,氮化镓(GaN)功率芯片领导者纳微半导体宣布收购GeneSiC Semiconductor,这一战略合并标志着两家公司在下一代功率半导体领域的强强联合。合并后的公司不仅拥有全面的SiC和GaN技术组合,还通过资源整合和市场拓展,进一步巩固了其在全球功率半导体市场的领先地位。GeneSiC的丰富技术积累和纳微半导体的市场渠道优势相结合,为双方带来了新的增长动力和市场机遇。

Cliff Electronic Components公司的发展小趣事

由于字数限制,我将先为您提供一个关于Cliff Electronic Components公司的发展故事,如您需要更多内容,请再次询问。

Cliff Electronic Components的崛起与转型

在1977年,一个名为Cliff Electronic Components Limited的公司在英国悄然成立。初创时期,它主要为音乐行业提供连接器,满足了当时市场上对于音频设备连接的需求。随着市场的发展和技术的进步,公司很快意识到,仅靠单一产品线难以满足日益多样化的市场需求。

在公司成立的初期,Cliff面临着巨大的市场压力。当时,电子行业正经历着快速的技术革新,竞争对手层出不穷。为了在市场上站稳脚跟,Cliff决定对其产品线进行大刀阔斧的改革和扩展。他们不仅继续深耕音频连接器领域,还开始涉足交流电源连接器、直流电源连接器、馈通连接器等多种电子连接器产品。

进入80年代,随着个人电脑的普及和电子设备的小型化趋势,Cliff迎来了新的发展机遇。公司迅速调整战略,开始研发和生产适用于个人电脑的各种连接器。这一转型使得Cliff的产品线更加丰富,也为其赢得了更多的市场份额。

为了满足客户对于高品质产品的需求,Cliff不断加大研发投入,引进先进的生产设备和技术。他们在产品设计和制造工艺上不断创新,力求为客户提供更加可靠、高效的连接器解决方案。这种对品质的不懈追求,使得Cliff逐渐在市场上树立起了良好的口碑。

进入90年代,随着全球化的加速和电子行业的飞速发展,Cliff开始积极拓展国际市场。他们参加各种国际电子展会,与全球的客户和合作伙伴建立联系。通过与国际知名企业的合作,Cliff不仅提升了自身的品牌影响力,还进一步拓展了其产品的应用范围。

随着时间的推移,Cliff逐渐成为了一个在国际上享有盛誉的电子连接器品牌。他们始终坚持创新、品质和服务至上的理念,赢得了客户的广泛认可和赞誉。今天,当我们提到Cliff时,人们首先想到的是他们高品质的电子连接器和专业的客户服务。

若您想要探索更多内容,随时可以继续输入。请注意,由于Cliff Electronic Components公司的发展历程可能涉及多个方面,以上内容主要聚焦于其产品线扩展和市场拓展的方面。如果您对其他方面如技术研发、企业文化等有进一步的兴趣,可以再次输入以获取更多信息。

若您想要更多关于Cliff Electronic Components的故事,请随时告知。

BOSER公司的发展小趣事

随着科技的不断发展,BOSER公司意识到只有不断创新才能在激烈的竞争中立于不败之地。因此,公司投入大量研发资源,致力于开发具有自主知识产权的新技术。经过不懈努力,BOSER成功推出了一系列创新产品,引领了电子行业的技术发展潮流。

APLUS Products公司的发展小趣事

APLUS Products公司起源于XXXX年,当时电子行业正处于飞速发展的黄金时期。公司创始人凭借对电子技术的深厚理解和市场需求的敏锐洞察,决定专注于研发和生产高质量的电子产品。初期,公司面临着资金短缺、技术难题和市场竞争等多重挑战。然而,通过不断的技术创新和产品优化,APLUS逐渐在市场中崭露头角。

Aeroflex公司的发展小趣事

在发展过程中,APLUS Products公司注重与上下游企业的合作与共赢。公司积极与供应商建立良好的合作关系,确保原材料的质量和供应的稳定性;同时,也与多家知名企业建立了战略合作关系,共同开拓市场、分享资源。这些合作不仅提高了公司的运营效率,也增强了其市场竞争力。

问答坊 | AI 解惑

秀一下论坛送的NXP的小音箱

小音箱不错!刚拿到音箱就迫不及待的给它照了几张!! 下面上图: 在用的时候还会还有彩灯闪烁!! 还有时钟,闹钟! 很不错!继续努力!!…

查看全部问答>

windows 编程 关于无线上网 端口号的 问题?

我们现在需要建立一个 100个节点的无线网络, 这 100 个节点中有97个是现场的 无线数据模块,通过手机卡实现 无线上网,3个节点 是数据中心,分别接有一台 PC机(此PC机为固定IP), 然后 这97个 无线模块 分别 向一台 PC机发送数据. ...…

查看全部问答>

求助:三星k9f2g08uom 驱动问题

谢谢关注! 我使用的板子是friendly arm 的micro2440a,因为要做nand boot启动,需要开发k9f2g08uom(每页2048byte,2048 block,每块64页)的驱动,目前碰到两个问题: 1,程序烧写不正确。使用sjf2440 软件烧写,然后读出,发现部分数据烧写部分不 ...…

查看全部问答>

keil c 编程方面的问题 跪请好心人帮忙 100分酬谢是小 大恩难忘

我要用keil c 编一个火灾报警的程序。用的探测器是感温、气体探测器,就是检测到温度或着某种气体(像CO)超标后,蜂鸣器发出报警,LED背光、休眠指示灯闪烁。硬件有MCU,串口,键盘,锁存、地址,外扩RAM,蜂鸣器,背光、休眠指示灯,滤波电路,液 ...…

查看全部问答>

wince USB摄像头驱动

我现在在写wince 下的USB摄像头驱动。开发板是S3C2410,摄像头是中星微301p.在网上看了很多资料,但是写出来的还是有问题。我已经把ZC0301P.dll,ZC0301P.reg,Platform.bib,放在了移动设备的windows下面。每次把摄像头插上去,就提示“输入此USB设 ...…

查看全部问答>

求一crc16校验源码

急啊,急啊, 帮帮我吧…

查看全部问答>

嵌入式怎么学啊?没人教我的 只能自己自学的 (在线等)

我是专科的   快大三了   熟悉C语言和汇编   对系统底层和linux下的API编程比较了解   看过一个小的linux原码(0.11)的那个 想转学嵌入式但不知道怎么入手 学嵌入式要开发板的吧   那个ARM9 ...…

查看全部问答>

这算不算STM8的BUG

我在main()函数里边定义了两个整开变量 unsigned int save1; unsigned int save2; 我仿真后发现svae1变了,save2也根着变,看一下地址才发现一样。 我又把两个定义拿到main外边。这时正常了,这是一件事,还有一件就是如下: for(;;) { ...…

查看全部问答>

STM32的低功耗唤醒问题

最近的一个STM32的应用需要进入低功耗,结果碰到一个问题很奇怪,流程如下: 1)通过WFI进入SLEEP模式,然后通过Systick来唤醒 2)通过调用库函数(如下)进入STOP模式,然后由外部电路通过一个外部中断引脚唤醒;唤醒后,重新初始化HSE和PLL ...…

查看全部问答>

为什么485程序只能单字节传输呢?

为什么485程序只能单字节传输呢?单片机经过232/485转换器接到电脑,用串口精灵调试的。大家看看有什么问题啊? #include <msp430x14x.h> void main(void) { WDTCTL=WDTPW+WDTHOLD; UCTL0 &=~SWRST; UCTL0 |=CHAR; UBR ...…

查看全部问答>