标题: 1602液晶显示始终(没用时钟芯片) [打印本页]

作者: NB没B    时间: 2014-8-28 13:25
标题: 1602液晶显示始终(没用时钟芯片)
#include<stc12.h>    //共需要三个按键 一个是功能选择键(时,分。秒的选择) 一个加 一个减
#define uint unsigned int  //我并没用时钟芯片 只使用的定时器中断
#define uchar unsigned char
uchar code table[]={"0123456789:"};
uchar shi,fen,miao;    // 全局变量
sbit beep1=P3^1;    // 蜂鸣器 按键是响
sbit key1=P3^4;     // 功能选择按键
sbit key2=P3^3;     // 时间加按键
sbit key3=P3^2;     //  时间减按键
sbit lcden=P1^2;     // 使能信号
sbit RW=P1^1;     // 读/写选择端
sbit lcdrs=P1^0;     //  数据或者命令选择端
void delay(uint);    // 延时函数
void key();      // 按键扫描
void beep();     // 蜂鸣器
void show();     // 显示函数
void init_T1();     // 定时器初始函数
void init_1602();    // 1602初始函数
void write_com(uchar com);  //  命令选择端
void write_data(uchar date); //  数据选择端
void main()      //  主函数
{
init_1602();
init_T1();
while(1)
{
  key();
  show();
}
}
//##############定时器1的使用############
void init_T1()
{
TMOD=0x10;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
}
void ser_50() interrupt 3
{
uchar a;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
a++;
if(a>=20)      //用>=比用==好
{miao++;a=0;}
if(miao>=60)
{fen++;miao=0;}
if(fen>=60)
{fen=0;shi++;}
if(shi>=24)
shi=0;
}
//###############显示时间##########
void show()
{ uchar shi1,ge1,shi2,ge2,shi3,ge3;
shi1=shi/10;
ge1=shi%10;
shi2=fen/10;
ge2=fen%10;
shi3=miao/10;
ge3=miao%10;
write_com(0x80);
write_data(table[shi1]);
write_data(table[ge1]);
write_data(table[10]);
write_data(table[shi2]);
write_data(table[ge2]);
write_data(table[10]);
write_data(table[shi3]);
write_data(table[ge3]);
}
//###############按键扫描###################
void key()
{
uchar num;
if(key1==0)
{
  delay(20);
  if(key1==0)
  {
   num++;
   while(!key1);
   beep();
   if(num==1)
   {
    TR1=0;     //关定时器 否则会无法调节
    write_com(0x80+7);
    write_com(0x0f);
   }
   if(num==2)
   write_com(0x80+4);
   if(num==3)
   write_com(0x80+1);
   if(num==4)
   {
    num=0;
    write_com(0x0c);   //关光标
    TR1=1;
   }
  }
}
if(num!=0)    //只有功能按键按下去的时候才可以调节
{
  if(key2==0)      //加时间
  {
   delay(5);
   if(key2==0)
   {
    while(!key2);
    beep();
    if(num==1)
    {
     miao++;
     if(miao==60)
     miao=0;
     show();
     write_com(0x80+7);
    }
    if(num==2)
    {
     fen++;
     if(fen==60)
     fen=0;
     show();
     write_com(0x80+4);
    }
    if(num==3)
    {
     shi++;
     if(shi==24)
     shi=0;
     show();
     write_com(0x80+1);
    }
   }
  }
  if(key3==0)      //减时间
  {
   delay(5);
   if(key3==0)
   {
    while(!key3);
    beep();
    if(num==1)
    {
     miao--;
     if(miao==-1)
     miao=59;
     show();
     write_com(0x80+7);
    }
    if(num==2)
    {
     fen--;
     if(fen==-1)
     fen=59;
     show();
     write_com(0x80+4);
    }
    if(num==3)
    {
     shi--;
     if(shi==-1)
     shi=23;
     show();
     write_com(0x80+1);
    }
   }
  }
}
}
//###########################1602部分###############
void write_com(uchar com)//写命令的状态
{
lcdrs=0;//选择写命令模式
P0=com; // 将要写入的命令送到数据总线上
delay(5);// 稍作延时以待数据稳定
lcden=1; //
delay(5);//
lcden=0; //
}
void write_data(uchar date)//写数据的状态
{
lcdrs=1;        // 写数据
P0=date;        // p0使显示数据总线
delay(5);   
lcden=1;     
delay(5);   
lcden=0;      
}
void init_1602()  // 初始化的状态
{  RW=0;
   lcden=0;//
   write_com(0x38);  // 设置16*2显示,5*7点阵,8位数据接口
   write_com(0x0c);  // 设置开显示,不显示光标
   write_com(0x06);  // 写一个字符后地址自动加1
   write_com(0x01);  // 清除所有
   write_com(0x80);
}
//蜂鸣器
void beep()
{
beep1=0;
delay(100);
beep1=1;
}
//延时函数
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}

作者: NB没B    时间: 2014-8-28 13:44
大家还有什么想要的?看看我有没  有的话就放出来大家交流交流  大家有什么好玩的作品吗?暑假无聊想做些东西 LED旋转显示 贪吃蛇 摇摇棒 光立方小车循迹 之类的就不要了 这些都做过le
作者: a110    时间: 2014-8-28 15:38
楼主果然是 大牛   用定时器模拟的时钟  楼主有做过蓝牙小车吗?
作者: a110    时间: 2014-8-28 15:38
很好 回帖还有奖励
作者: NB没B    时间: 2014-8-28 15:45
a110 发表于 2014-8-28 15:38
楼主果然是 大牛   用定时器模拟的时钟  楼主有做过蓝牙小车吗?

还没有准备做呢
作者: NB没B    时间: 2014-8-28 15:46
a110 发表于 2014-8-28 15:38
很好 回帖还有奖励

给评点分呗
作者: a110    时间: 2014-8-28 15:58
NB没B 发表于 2014-8-28 15:46
给评点分呗

必须的,我现在准备做蓝牙小车  还没有头绪啊  
作者: liuxin198405    时间: 2014-8-28 16:30
NB没B 发表于 2014-8-28 13:44
大家还有什么想要的?看看我有没  有的话就放出来大家交流交流  大家有什么好玩的作品吗?暑假无聊想做些东 ...

电子密码锁,要不要?

作者: NB没B    时间: 2014-8-28 16:32
liuxin198405 发表于 2014-8-28 16:30
电子密码锁,要不要?

这个可以 我做做看 谢啦
作者: liuxin198405    时间: 2014-8-28 16:48
不错的程序,易懂

作者: liuxin198405    时间: 2014-8-28 17:08
NB没B 发表于 2014-8-28 16:32
这个可以 我做做看 谢啦

要原理图还是程序?

作者: NB没B    时间: 2014-8-28 17:09
liuxin198405 发表于 2014-8-28 17:08
要原理图还是程序?

你有吗?

作者: liuxin198405    时间: 2014-8-28 17:10
想要吗?

作者: NB没B    时间: 2014-8-28 17:15
liuxin198405 发表于 2014-8-28 17:10
想要吗?

我也有资料  但是资料多多益善
作者: xing3198    时间: 2014-9-21 10:00
学习学习,谢谢分享。。。
作者: wmt333    时间: 2014-10-4 20:31
谢谢分享
作者: 吴宇    时间: 2014-10-18 21:51
给我一个1602菜单!
作者: anzaichao    时间: 2014-10-19 15:23
下下来看看
作者: zxj366    时间: 2014-10-24 21:49
高手呀高手,我还没有资格交流
作者: 1qaz2wsx77    时间: 2015-11-16 16:27
很有创意,学习了
作者: xiaoxu    时间: 2015-12-9 20:19
有电路原理图吗  ?
作者: zjzkl    时间: 2015-12-10 07:30
楼主也是够牛啊
作者: 郭263337    时间: 2016-4-16 16:07
楼主想要仿真文件
作者: 郭263337    时间: 2016-4-16 16:17
简介好程序,推荐
作者: linymda    时间: 2016-8-8 16:08
移植成功,学习了,谢谢!
作者: 大胸男    时间: 2016-8-22 14:22
键盘扫描程序IF语句用的太多,看起来有点累,有用SWITH做的键盘扫描吗?
作者: nj1104    时间: 2016-8-23 13:11
好东西,能把原理图一并发出来,更适合初学者了
作者: 龚红    时间: 2016-9-29 16:40
1602不用判忙吗
作者: chenwqq    时间: 2017-2-28 19:57

谢谢分享
作者: kening@6    时间: 2017-6-17 07:55
这个不错,谢谢
作者: kening@6    时间: 2017-6-17 15:39
这个不错,谢谢
作者: lywtz    时间: 2017-6-17 23:33
学习学习




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1