c51用Lcd12864(无字库 )设计闹钟项目

该博客介绍了如何利用51单片机、C语言以及无字库的LCD12864显示器,结合CS1和CS2片选及5个按键,设计一个具备闹钟设置、定时功能的系统。系统能根据日历显示星期,并根据时间区分上午和下午。代码中LCD12864的部分参考他人,其余模块为作者自编,可能较为复杂。
摘要由CSDN通过智能技术生成

本人一共用到了lcd12864(无字库),cs1,cs2片选,5个按键

可以实现功能,进行闹钟设置,进行定时,根据日历显示周几,根据时间显示上午下午,其中时间大于十二小时,显示下午,小于12小时显示上午。

本代码的lcd12864程序是借鉴的,其他模块是是自己写的,由于这个代码是我在实验课上做出来的,可能程序比较冗杂,请见量

下面是程序文件和仿真程序,还有视频展示,我放在百度网盘里了,提取码:dgwo

百度网盘 请输入提取码

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define port P0  //DB0~DB7数据口
sbit e=P2^7;//使能
sbit rw=P2^6;//读写
sbit rs=P2^5;//数据/命令
sbit cs2=P2^4;//片选     电路板上CS2和CS1线需要接反
sbit cs1=P2^3;
sbit control=P3^3;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit beep=P1^3;
sbit k4=P1^4;
//sbit busy=P0^7;//检测忙
uchar flag=0,clearflag=255,set=0,seta,month=10,day=1;
uint year=2023,W;
char G=-1;
uchar ms=0,s=58,m=59,h=23	,back,ams=0,as=0,am=0,ah=0,tms=0,ts=10,tm=0,th=0,stop;
uchar code hz[][32]=
{
/* [字库]:[HZK1616宋体] [数据排列]:从左到右从上到下 [取模方式]:纵向8点下高位 [正负反色]:否 [去掉重复后]共3个字符
[总字符库]:"时间:"*/

/*-- ID:0,字符:"时",ASCII编码:CAB1,对应字:宽x高=16x16,画布:宽W=16 高H=16,共32字节*/
0x00,0xfc,0x84,0x84,0x84,0xfe,0x14,0x10,0x90,0x10,0x10,0x10,0xff,0x10,0x10,0x00,
0x00,0x3f,0x10,0x10,0x10,0x3f,0x00,0x00,0x00,0x23,0x40,0x80,0x7f,0x00,0x00,0x00,

/*-- ID:1,字符:"间",ASCII编码:BCE4,对应字:宽x高=16x16,画布:宽W=16 高H=16,共32字节*/
0x00,0xf8,0x01,0x02,0xf6,0x10,0x12,0x12,0x12,0x12,0xfa,0x12,0x02,0xff,0x02,0x00,
0x00,0xff,0x00,0x00,0x3f,0x11,0x11,0x11,0x11,0x11,0x3f,0x40,0x80,0x7f,0x00,0x00,

/*-- ID:2,字符:":",ASCII编码:A3BA,对应字:宽x高=16x16,画布:宽W=16 高H=16,共32字节*/
0x00,0x00,0x00,0x00,0x80,0xc0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x31,0x7b,0x7b,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00


};
uchar code num[][16]=
{
	
/* [字库]:[ASC8x16E字库] [数据排列]:从左到右从上到下 [取模方式]:纵向8点下高位 [正负反色]:否 [去掉重复后]共10个字符
[总字符库]:"0123456789"*/

/*-- ID:0,字符:"0",ASCII编码:30,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0xf0,0x08,0x04,0x04,0x08,0xf0,0x00,0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,

/*-- ID:1,字符:"1",ASCII编码:31,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0x00,0x08,0x08,0xfc,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x1f,0x10,0x10,0x00,

/*-- ID:2,字符:"2",ASCII编码:32,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0x38,0x04,0x04,0x04,0x84,0x78,0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x18,0x00,

/*-- ID:3,字符:"3",ASCII编码:33,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0x18,0x04,0x84,0x84,0x44,0x38,0x00,0x00,0x0c,0x10,0x10,0x10,0x11,0x0e,0x00,

/*-- ID:4,字符:"4",ASCII编码:34,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0x00,0xc0,0x20,0x18,0xfc,0x00,0x00,0x00,0x03,0x02,0x12,0x12,0x1f,0x12,0x12,

/*-- ID:5,字符:"5",ASCII编码:35,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0xfc,0x44,0x44,0x44,0x84,0x04,0x00,0x00,0x0c,0x10,0x10,0x10,0x08,0x07,0x00,

/*-- ID:6,字符:"6",ASCII编码:36,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0xf0,0x88,0x44,0x44,0x48,0x80,0x00,0x00,0x07,0x08,0x10,0x10,0x10,0x0f,0x00,

/*-- ID:7,字符:"7",ASCII编码:37,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0x0c,0x04,0x04,0xc4,0x34,0x0c,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,

/*-- ID:8,字符:"8",ASCII编码:38,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0x38,0x44,0x84,0x84,0x44,0x38,0x00,0x00,0x0e,0x11,0x10,0x10,0x11,0x0e,0x00,

/*-- ID:9,字符:"9",ASCII编码:39,对应字:宽x高=8x16,画布:宽W=8 高H=16,共16字节*/
0x00,0xf8,0x04,0x04,0x04,0x88,0xf0,0x00,0x00,0x00,0x09,0x11,0x11,0x08,0x07,0x00


};
uchar code week[][16]=
{
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xF8,0xF8,0x20,0xC0,0x20,0xF8,0xF8,0x00,0x0F,0x0F,0x00,0x01,0x00,0x0F,0x0F,

/*--  文字:  o  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xC0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,

/*--  文字:  n  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,

/*--  文字:  T  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x08,0x08,0xF8,0xF8,0x08,0x08,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,

/*--  文字:  u  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x0F,0x00,

/*--  文字:  e  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xC0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x09,0x09,0x09,0x01,0x00,

/*--  文字:  W  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xF8,0xF8,0x00,0xC0,0x00,0xF8,0xF8,0x00,0x01,0x0F,0x0E,0x01,0x0E,0x0F,0x01,

/*--  文字:  e  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xC0,0xE0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x09,0x09,0x09,0x01,0x00,

/*--  文字:  d  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xC0,0xE0,0x20,0x20,0xF8,0xF8,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x0F,0x00,

/*--  文字:  T  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x08,0x08,0xF8,0xF8,0x08,0x08,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,

/*--  文字:  h  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xF8,0xF8,0x20,0x20,0xE0,0xC0,0x00,0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,

/*--  文字:  u  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x0F,0x00,

/*--  文字:  F  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  r  --*/
/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0xE0,0x80,0x40,0x60,0x60,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  i
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值