找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5603|回复: 32
收起左侧

1602液晶显示始终(没用时钟芯片)

  [复制链接]
ID:63839 发表于 2014-8-28 13:25 | 显示全部楼层 |阅读模式
#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--);
}

评分

参与人数 2威望 +35 黑币 +30 收起 理由
a110 + 5 + 5 绝世好帖!
admin + 30 + 25 共享资料的积分奖励,希望大家多多发布各种.

查看全部评分

回复

使用道具 举报

ID:63839 发表于 2014-8-28 13:44 | 显示全部楼层
大家还有什么想要的?看看我有没  有的话就放出来大家交流交流  大家有什么好玩的作品吗?暑假无聊想做些东西 LED旋转显示 贪吃蛇 摇摇棒 光立方小车循迹 之类的就不要了 这些都做过le
回复

使用道具 举报

ID:44262 发表于 2014-8-28 15:38 | 显示全部楼层

回帖奖励 +1

楼主果然是 大牛   用定时器模拟的时钟  楼主有做过蓝牙小车吗?
回复

使用道具 举报

ID:44262 发表于 2014-8-28 15:38 | 显示全部楼层
很好 回帖还有奖励
回复

使用道具 举报

ID:63839 发表于 2014-8-28 15:45 | 显示全部楼层
a110 发表于 2014-8-28 15:38
楼主果然是 大牛   用定时器模拟的时钟  楼主有做过蓝牙小车吗?

还没有准备做呢
回复

使用道具 举报

ID:63839 发表于 2014-8-28 15:46 | 显示全部楼层
a110 发表于 2014-8-28 15:38
很好 回帖还有奖励

给评点分呗
回复

使用道具 举报

ID:44262 发表于 2014-8-28 15:58 | 显示全部楼层

必须的,我现在准备做蓝牙小车  还没有头绪啊  

评分

参与人数 1黑币 +5 收起 理由
大胸男 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:64270 发表于 2014-8-28 16:30 | 显示全部楼层
NB没B 发表于 2014-8-28 13:44
大家还有什么想要的?看看我有没  有的话就放出来大家交流交流  大家有什么好玩的作品吗?暑假无聊想做些东 ...

电子密码锁,要不要?
回复

使用道具 举报

ID:63839 发表于 2014-8-28 16:32 | 显示全部楼层
liuxin198405 发表于 2014-8-28 16:30
电子密码锁,要不要?

这个可以 我做做看 谢啦
回复

使用道具 举报

ID:64270 发表于 2014-8-28 16:48 | 显示全部楼层
不错的程序,易懂
回复

使用道具 举报

ID:64270 发表于 2014-8-28 17:08 | 显示全部楼层
NB没B 发表于 2014-8-28 16:32
这个可以 我做做看 谢啦

要原理图还是程序?
回复

使用道具 举报

ID:63839 发表于 2014-8-28 17:09 | 显示全部楼层
liuxin198405 发表于 2014-8-28 17:08
要原理图还是程序?

你有吗?
回复

使用道具 举报

ID:64270 发表于 2014-8-28 17:10 | 显示全部楼层
想要吗?
回复

使用道具 举报

ID:63839 发表于 2014-8-28 17:15 | 显示全部楼层

我也有资料  但是资料多多益善
回复

使用道具 举报

ID:66338 发表于 2014-9-21 10:00 | 显示全部楼层
学习学习,谢谢分享。。。
回复

使用道具 举报

ID:65286 发表于 2014-10-4 20:31 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:57570 发表于 2014-10-18 21:51 来自手机 | 显示全部楼层
给我一个1602菜单!
回复

使用道具 举报

ID:60989 发表于 2014-10-19 15:23 | 显示全部楼层
下下来看看
回复

使用道具 举报

ID:66787 发表于 2014-10-24 21:49 | 显示全部楼层
高手呀高手,我还没有资格交流
回复

使用道具 举报

ID:86421 发表于 2015-11-16 16:27 | 显示全部楼层
很有创意,学习了
回复

使用道具 举报

ID:98898 发表于 2015-12-9 20:19 | 显示全部楼层
有电路原理图吗  ?
回复

使用道具 举报

ID:99083 发表于 2015-12-10 07:30 | 显示全部楼层
楼主也是够牛啊
回复

使用道具 举报

ID:113764 发表于 2016-4-16 16:07 | 显示全部楼层
楼主想要仿真文件
回复

使用道具 举报

ID:113764 发表于 2016-4-16 16:17 | 显示全部楼层
简介好程序,推荐
回复

使用道具 举报

ID:111350 发表于 2016-8-8 16:08 | 显示全部楼层
移植成功,学习了,谢谢!
回复

使用道具 举报

ID:136054 发表于 2016-8-22 14:22 | 显示全部楼层
键盘扫描程序IF语句用的太多,看起来有点累,有用SWITH做的键盘扫描吗?
回复

使用道具 举报

ID:137385 发表于 2016-8-23 13:11 | 显示全部楼层
好东西,能把原理图一并发出来,更适合初学者了
回复

使用道具 举报

ID:138194 发表于 2016-9-29 16:40 | 显示全部楼层
1602不用判忙吗
回复

使用道具 举报

ID:148321 发表于 2017-2-28 19:57 | 显示全部楼层

谢谢分享
回复

使用道具 举报

ID:211766 发表于 2017-6-17 07:55 来自手机 | 显示全部楼层
这个不错,谢谢
回复

使用道具 举报

ID:211766 发表于 2017-6-17 15:39 来自手机 | 显示全部楼层
这个不错,谢谢
回复

使用道具 举报

ID:212157 发表于 2017-6-17 23:33 | 显示全部楼层
学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表