12864汉字液晶显示--按键电子时钟程序

发布者:superstar10最新更新时间:2016-01-10 来源: eefocus关键字:汉字液晶显示  电子时钟 手机看文章 扫描二维码
随时随地手机看文章
#include

#include
#define uchar unsigned char
void lcd_ini();
void ascii_change(void);
void delay();
void wri_add(uchar com);
void wri_dat(uchar com1);
void shan(void);
void disp();
void tkey(void);
sbit cs=P1^7;
sbit sid=P1^6;
sbit sclk=P1^5;
bit flag=1;
uchar dat,count,f=1;//f测试哪个单元为当前闪烁状态  
uchar data clock[3]={23,45,12};
uchar code clockname[10]={"北京时间:"};  
uchar data num[6];


void main()
{
 lcd_ini();
 count=10;//机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒
 TMOD=0x01;
 TL0=0XB0;
 TH0=0X3C;
 EA=1;
 ET0=1;
 IT0=1;
 EX0=1;
 TR0=1;
 while(1)
 {
 back:ascii_change();
 disp();
 delay();
 if(flag==1)
 goto back;
 tkey();
 shan();
 delay();
 }
}


 
void lcd_ini()
{

 wri_add(0x30);
 delay();

 wri_add(0x0c);
 delay();

 wri_add(0x01);
 delay();
 
 wri_add(0x06);
 delay();
}
 

 


 void timer1() interrupt 1 using 2
{
 TL0=0XB0;
 TH0=0X3C;
 count--;
 if(count==0)
 {
  count=10;
  clock[2]++;//秒//
  }
  else
  goto out;

  if(clock[2]==60)
  {
   clock[2]=0;
   clock[1]++;//分//
   }

  if(clock[1]==60)
  {
   clock[1]=0;
   clock[0]++;
   }
  
  if(clock[0]==24)//时//
  clock[0]=0;
  
  out:_nop_();
}


 void ascii_change(void)
 {
   num[5]=clock[2]-(clock[2]/10)*10+0x30;
   num[4]=clock[2]/10+0x30;
   num[3]=clock[1]-(clock[1]/10)*10+0x30;
   num[2]=clock[1]/10+0x30;
   num[1]=clock[0]-(clock[0]/10)*10+0x30;
   num[0]=clock[0]/10+0x30;
 }


 
  void delay()
{
  uchar i,j;
  for (i=250;i>0;i--)
  for (j=250;j>0;j--);

}

void wri_add(uchar com)
{
 uchar i,j,k;
 cs=0;
 cs=1;
 dat=0xf8;

 for(i=1;i<=8;i++)
 {
  sid=(bit)(dat&0x80);
  sclk=0;
  sclk=1;
  sclk=0;
  dat=dat<<1;
}
 dat=com;
 dat=dat&0xf0;
 for(j=1;j<=8;j++)
{
 sid=(bit)(dat&0x80);
  sclk=0;
  sclk=1;
  sclk=0;
  dat=dat<<1;
 }

 dat=com;
 dat=_cror_(dat,4);// 此为高低四位交换
 dat=dat&0xf0;

 for(k=1;k<=8;k++)
 {
  sid=(bit)(dat&0x80);
  sclk=0;
  sclk=1;
  sclk=0;
  dat=dat<<1;
  }
 
}


void wri_dat(uchar com1)
{
 uchar i,j,k;
 cs=0;
 cs=1;
 dat=0xfa;
 for(i=1;i<=8;i++)
 {
  sid=(bit)(dat&0x80);
  sclk=0;
  sclk=1;
  sclk=0;
  dat=dat<<1;
}

  dat=com1;
  dat=dat&0xf0;
  for(j=1;j<=8;j++)
{
  sid=(bit)(dat&0x80);
  sclk=0;
  sclk=1;
  sclk=0;
  dat=dat<<1;
 }

 dat=com1;
 dat=_cror_(dat,4);// 此为高低四位交换
 dat=dat&0xf0;

 for(k=1;k<=8;k++)
 {
  sid=(bit)(dat&0x80);
  sclk=0;
  sclk=1;
  sclk=0;
  dat=dat<<1;
  }
 }
         

 
void disp()
{
 uchar i,k=0;
 wri_add(0x80);

 for (i=1;i<=9;i++)
 wri_dat(clockname[i-1]);

 wri_add(0x90);

 for (i=1;i<=6;i++)
 {
 k++;
 if(k==3||k==5)
 wri_dat(clockname[8]);//时间之间的冒号。
 wri_dat(num[i-1]);
 }
}


void shan(void)
{
 uchar i,k=0;
 wri_add(0x90);
 if(f==1)
 {
 num[0]=' ';
 num[1]=' ';
 }
 else
 goto next;
  for (i=1;i<=6;i++)
 {
 k++;
 if(k==3||k==5)
 wri_dat(clockname[8]);//时间之间的冒号。
 wri_dat(num[i-1]);
 }
goto return1;

next: if(f==2)
 {
 num[2]=' ';
 num[3]=' ';
 }
 else
 goto next1;
  for (i=1;i<=6;i++)
 {
 k++;
 if(k==3||k==5)
 wri_dat(clockname[8]);//时间之间的冒号。
 wri_dat(num[i-1]);
 }
goto return1;

next1: if(f==3)
 {
 num[4]=' ';
 num[5]=' ';
 }
 else
 goto return1;

  for (i=1;i<=6;i++)
 {
 k++;
 if(k==3||k==5)
 wri_dat(clockname[8]);//时间之间的冒号。
 wri_dat(num[i-1]);
 }
 return1:_nop_();

 


 

void intr0() interrupt 0 using 2
{
flag=~flag;//判断是否闪烁位//
TR0=~TR0;  //闪关定时否则开定时
f=1;

    

 void tkey(void)
{
  uchar judcekey;
  judcekey=P1&0x0f;
  if(judcekey==0x0f)
  goto return2;

 
  if (judcekey==0x0e)
  f++;
  if (f==4)
  f=1;
 
  if(judcekey==0x0d)
  {clock[f-1]++;}

  if (f==1)
  { if (clock[f-1]==24){
  clock[f-1]=0;}
   }
  else{  if (clock[f-1]==60)
   clock[f-1]=0;
   }

  
 if(judcekey==0x0b)
  {clock[f-1]--;}

  if (f==1)
  { if (clock[f-1]==0xff){
  clock[f-1]=23;}
   }
  else
   if (clock[f-1]==0xff)
   clock[f-1]=59;
  
 
return2:_nop_();

   


关键字:汉字液晶显示  电子时钟 引用地址:12864汉字液晶显示--按键电子时钟程序

上一篇:51单片机 + ds12c887时钟芯片 开发的电子时钟
下一篇:51单片机中关于波特率的介绍

推荐阅读最新更新时间:2024-03-16 14:43

AT89C51单片机驱动液晶显示汉字C语言
此程序的完整工程文件下载:http://www.51hei.com/f/8952lkj_c.rar 上图是 原理图 及其仿真效果. /******************************************************************* AT89C51 单片机 驱动 液晶显示 汉字C语言 ****************************************************************/ #include AT89x51.h #define uchar unsigned char /************************************
[单片机]
AT89C51单片机驱动<font color='red'>液晶显示</font><font color='red'>汉字</font>C语言
基于STC12C5410AD的字库型12864的使用
12864和1602还是有一些相似之处的,但是论功能来看,12864还是强大很多的! 12864的操作方式有两种----(串行和并行),就我个人而言是比较倾向于串行的,虽然程序稍微麻烦一点,但是很节省GPIO的资源,这是很重要的,12864也可以实现绘制各种图形的功能,和1602相似,个人认为还是弄一个比较好用的取模软件比较好,生成代码后就可以显示自己想要的图形了(1602的使用里是有介绍的^_^)! STC12C5410AD这款单片机和51单片机是十分相似的,相对比51而言,它更有了推挽输出功能,AD转换功能等;它内部锁相环也照比51强大的多,最高工作频率可达30+M。它的基本操作方法和51是一样的。 我来简单的介绍一下1
[单片机]
12864LCD带中文字库(PIC程序)
#include p16f877a.inc ; __CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define RS PORTA,5 ;命令/数据选择 #DEFINE RW PORTA,4 ;读/写选择 #DEFINE E PORTA,3 ;使能信号 #DEFINE PSB PORTA,2 ;并口/串口选择(H/L) #DEFINE
[单片机]
12864 OLED屏显示日历
calendar.c #include ./I2C_OLED/oled.h #include string.h #include stdint.h #include stdio.h #define DAYS_PER_WEEK 7 #define MONTHS 12 #define is_leap_year(year) ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) //返回当前年份是否为闰年 #define Date_Distance 16 //存储平年每月的天数 code uint8_t month_days = { 31, 28, 31, 30,
[单片机]
<font color='red'>12864</font> OLED屏显示日历
STC89C52+LCD12864+DS1302+DS18B20时钟原理图+源程序
STC89C52+LCD12864+DS1302 +DS18B20+PCB 时钟供大家学习。 电子智能时钟程序 单 片 机:STC89C52 晶 振:12MHz 时钟芯片:DS1302 液 晶 屏:LCD12864 时 间:2020年1月1日 LCD12864使用并口连接方式,PSB、RST接高电平 /*-------------------------------头文件---------------------------------------*/ #include reg52.h #include intrins.h
[单片机]
STC89C52+LCD<font color='red'>12864</font>+DS1302+DS18B20时钟原理图+源程序
MSP430 12864显示
/******************************************************************** //DM430开发板控制带字库型12864液晶模块显示测试程序 //显示模式为汉字模式,直接将12864插入12864接口即可 //注意选择液晶的电源,位于电位器附近,可选5V或3.3V,根据液晶电压进行选择 //调试环境:EW430 V5.30 // ********************************************************************/ #include msp430x16x.h #define CPU_F ((do
[单片机]
LCD12864测试程序
LCD12864的控制器为ST7920,带中文字库与图形库,并口驱动。 #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char #define P0 P0 uchar co de table1 ={ Wallacer }; uchar co de table2 ={ 我喜欢单片机! }; uchar co de table3 ={ I Like MCU! }; uchar co de table4 ={ 河北科技师范学院 }; sbit lcd_rs=P1^0; sbit lcd_rw=P1^1; s
[单片机]
C8051F LCD12864程序
摘要: /********************************************************************************************************** File : LCD12864.c* Hardware Environment: DVK501 F320 EX* Build Environment : Silicon LABs 3 ... /******************************************************************************************************** * * F
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved