历史上的今天
返回首页

历史上的今天

今天是:2025年05月20日(星期二)

正在发生

2019年05月20日 | STC单片机之1602显示时钟

2019-05-20 来源:eefocus

/****为了简单起见,调整时间是只添加了s1和s2,删除了s3的功能,若调过了可通过s2循环一圈 ****/

/****From Brandon 2016-09-17 ****/

/****关键点:按键扫描和定时器0的中断程序比较生疏,需再看 ****/

#include


sbit LCD_rs=P1^0;

sbit LCD_rw=P1^1;

sbit LCD_en=P2^5;

sbit s1=P3^0;

sbit rd=P3^7;

sbit wr=P3^6;

sbit s2=P3^1;

sbit s3=P3^2;


unsigned char code table[]="  2016-9-15 THU";

unsigned char code table1[]="    00:00:00";


unsigned char num,count,s1num;

char miao,shi,fen;  //


void Delay(unsigned char i)

{

unsigned char j,k;

for(j=i;j>0;j--)

for(k=110;k>0;k--);

}


void LCD_Write_com(unsigned char a)

{

LCD_rs=0;

Delay(5);

LCD_rw=0;

Delay(5);

P0=a;

Delay(5);

LCD_en=1;

Delay(5);

LCD_en=0;

}


void LCD_Write_data(unsigned char b)

{

LCD_rs=1;

Delay(5);

LCD_rw=0;

Delay(5);

P0=b;

LCD_en=1;

Delay(5);

LCD_en=0;

Delay(5);

}


void LCD_init()

{

Delay(15);

LCD_Write_com(0x38);

Delay(5);

LCD_Write_com(0x08);

Delay(5);

LCD_Write_com(0x01);

Delay(5);

LCD_Write_com(0x06);

Delay(5);

LCD_Write_com(0x0C);

Delay(5);

}


void Time0_init()

{

TMOD=0x01;  //定时器0工作在模式1,

TH0=(65536-50000)/256;  //高8位=60

TL0=(65536-50000)%256;  //低8位

TR0=1; //开定时器0

ET0=1; //使能定时器0中断

EA=1;  //开总中断

}


void Write_sfm(unsigned char add,unsigned char date)

{

unsigned char shi,ge;

shi=date/10;

ge=date%10;

LCD_Write_com(0x80+0x40+add);

LCD_Write_data(0x30+shi);   //0x30表示的是对应数字的ASC码

LCD_Write_data(0x30+ge);    //0x30表示的是对应数字的ASC码

}


void Keyscan()

{

rd=0;

if(s1==0)   //s1摁下

{

Delay(5);

if(s1==0)

{

       s1num++;

   while(!s1);//等待s1松开

   if(s1num==1)

     {

  TR0=0;  //关定时器0

  LCD_Write_com(0x80+0x40+10);//光标定位到1602第二行第11个字符处

 LCD_Write_com(0x0f);//开显示,显示光标,光标闪烁

                     }

}

if(s1num==2)

{

TR0=0;

LCD_Write_com(0x80+0x40+7);

LCD_Write_com(0x0f);

      }

if(s1num==3)

{

TR0=0;

LCD_Write_com(0x80+0x40+4);

LCD_Write_com(0x0f);

      }

if(s1num==4)

{

s1num=0;

LCD_Write_com(0x0c); //开显示,不显示光标

TR0=1;  //开定时器

      }


   }

if(s1num!=0)  //若s1num不等于0

{

if(s2==0)   //s2摁下

{

Delay(5);

if(s2==0)

{

while(!s2);  //s2松开后while循环结束

if(s1num==1)

{

miao++;

if(miao==60)

miao=0;

Write_sfm(10,miao);

LCD_Write_com(0x80+0x40+10);

         }

if(s1num==2)

{

fen++;

if(fen==60)

fen=0;

Write_sfm(7,fen);

LCD_Write_com(0x80+0x40+7);

         }

if(s1num==3)

{

shi++;

if(shi==24)

shi=0;

Write_sfm(4,shi);

LCD_Write_com(0x80+0x40+4);

          }

}

      }

    }

}


void main()

{

wr=0;

LCD_init();

LCD_Write_com(0x80);  //不能写到for函数里面,否则显示不正常

for(num=0;num<15;num++)

{

LCD_Write_data(table[num]);

Delay(5);

         }

LCD_Write_com(0x80+0x40);   //不能写到for函数里面,否则显示不正常

for(num=0;num<12;num++)

{

LCD_Write_data(table1[num]);

Delay(5);

         }

Time0_init();

while(1)      //试试此处加一个冒号,提示什么警告,感悟:调试时要会对警告进行分析

{

Keyscan();

         }

}


//以下程序待自己编写

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;  //50000*(11.0592/12)ms定时,若晶振为12MHz,则为50ms

count++;

if(count==18)         //此处表示18个以上的数字,即1s,注意有误差

{

count=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

}

Write_sfm(4,shi);

}

Write_sfm(7,fen);

}

Write_sfm(10,miao);


}


推荐阅读

史海拾趣

EAO公司的发展小趣事

在技术创新方面,EAO公司一直走在行业前列。公司拥有一支高素质的研发团队,不断探索新技术、新材料和新工艺在电子产品中的应用。通过技术创新,EAO公司不断推出具有市场竞争力的新产品,满足客户不断变化的需求。同时,公司还积极与高校、科研机构等合作,共同推动电子行业的科技进步。

Honda Tsushin Kogyo Co Ltd公司的发展小趣事

随着电子技术的快速发展,Honda Tsushin Kogyo不断加大研发投入,致力于技术创新和产品升级。公司可能引入了先进的生产设备和技术人才,推动了产品线的拓展。从最初的简单连接器产品,逐步发展到包括Board To Board、Board To Cable、Cable To Cable、I/O、Card、Coxial、Optical、Power等在内的多种电子连接器产品。这些产品广泛应用于通信、计算机、汽车、航空航天等多个领域,为公司带来了更广阔的市场空间。

台湾固锝(GD)公司的发展小趣事
通过合理设计电路布局和元件选择来减少功耗和热量产生。
Elpida Memory公司的发展小趣事

尽管Elpida Memory已经不复存在,但其在DRAM领域的技术和经验仍然对全球半导体产业产生了深远的影响。Elpida Memory在技术研发、生产管理和市场营销等方面的经验,为后来的半导体企业提供了宝贵的借鉴和参考。同时,Elpida Memory的失败也提醒了半导体企业需要时刻保持警惕和创新精神,以应对日益激烈的市场竞争和技术变革。

Elcoma公司的发展小趣事

面对日益变化的市场环境和客户需求,Elcoma公司始终保持创新的精神。他们不断投入研发资金,引进高端人才,加强技术创新和产品研发。同时,Elcoma还积极探索新的商业模式和市场机会,以适应市场变化并抓住发展机遇。这种创新驱动的发展策略使Elcoma在电子行业中保持领先地位,并为企业的未来发展奠定了坚实的基础。

东晨(DC)公司的发展小趣事

东晨(DC)公司注重企业文化的建设,将“创新、务实、协作、共赢”作为企业的核心价值观。公司倡导员工勇于创新、敢于挑战的精神,同时注重团队协作和共赢的理念。这种企业文化不仅增强了员工的凝聚力和向心力,也塑造了公司的良好品牌形象。在业界和客户中,东晨(DC)公司赢得了广泛的赞誉和信任。

请注意,以上故事为虚构内容,旨在展示电子行业公司可能的发展路径和成功要素。如有需要,请结合实际情况进行调整和完善。

问答坊 | AI 解惑

一个DC/DC电感的问题

DC输入端的L1  33uH,能否换成150uH,电感增大一点,滤高频效果更好一点,对电池、对输入有影响吗?…

查看全部问答>

变压器的输出电压比需要的偏高,请教!

大虾们,我有一个输入220V,输出53V的变压器, 但是,我只需要上限不超过28~36伏的可调直流电源 下限当然是。。。。取可调范围大的 请各位多多指教…

查看全部问答>

M/B、N/B

哪位大虾能为我解答一下什么是M/B、N/B 设计?谢谢了…

查看全部问答>

我学习单片机时写的一些简单的程序

这是我刚学C语言时写的一些程序,比较简单,希望对刚接触单片机的同胞们有所帮助吧 我使用的主控是89c51,晶振频率是11.0592m的 [ 本帖最后由 open82977352 于 2010-2-3 14:44 编辑 ]…

查看全部问答>

问个FatFS的问题

读文件, 循环第一次读取 正常, 第二次,就退出循环了,我的文件大, 这个文件 就只读了一次 512个数组, 我看FatFS copy文件的例子,人家是一直读,知道读没了才退出的, 读第二次 那个提示是说  目录对象是无效的。      ...…

查看全部问答>

新成立Linux开发-4号群68906481,欢迎做嵌入式Linux方面的相关人员加入。共同交流与提高

新成立Linux开发-4号群68906481,欢迎做嵌入式Linux方面的相关人员加入。共同交流与提高…

查看全部问答>

Φ5光敏二极管的Φ5是什么意思?

Φ5光敏二极管的Φ5是什么意思?…

查看全部问答>

Intel Xscale WinCE 5.0操作系统基础及实验教程

我的资源下载分用完了,需要10分下载一个文件,请大家帮忙。 上传了“Intel Xscale WinCE 5.0操作系统基础及实验教程”基于PXA270的实验配套教程包括基础篇、实战篇、实验篇。 下载地址:http://download.eeworld.net/source/580934 好心的人帮 ...…

查看全部问答>

[求助]谁有Loadauth.lib文件以及相关的.h文件?

能上传上给我么?急需,收到后再追加分。…

查看全部问答>

交通灯程序加仿真图!

小弟刚学51不久!写的交通灯程序!好的话顶下!不好的话鼓励下哈!继续努力!…

查看全部问答>