标题:
跪求,用不带字库12864写时钟程序!
[打印本页]
作者:
153956635
时间:
2014-5-7 17:49
标题:
跪求,用不带字库12864写时钟程序!
群里的几个例子都是带字库的,手上没有带字库的屏,请高指点,CS1和CS2怎么用,跟1602用法有区别吗?
作者:
电子创新工作室
时间:
2014-5-15 11:13
性质差不多、、、但是也有很多不同的地方
作者:
153956635
时间:
2014-5-15 21:57
求硬件是路图?
作者:
枯叶
时间:
2014-5-18 16:30
#define Lcm P1 sbit p_csl=P2^4; sbit p_csr=P2^3; sbit p_di=P2^2; sbit p_rw=P2^1; sbit p_e=P2^0; sbit p_rst=P2^7; void delay(unsigned int k) { unsigned int i; for(;k>0;k--) for(i=0;i<124;i++); } //Lcm忙判断 void lcd_busy(void) { p_di=0; p_rw=1; /*Lcm=0xff; while(1) { p_e=1; if(Lcm<0x80) break; p_e=0; } p_e=0; */ } //写指令到Lcm void wcode(unsigned char c,unsigned char csl,unsigned char csr) { p_csl=csl; p_csr=csr; lcd_busy(); p_di=0; p_rw=0; Lcm=c;//将变量C赋予Lcm p_e=1; p_e=0; } //写数据到Lcm子函数 void wdata(unsigned char c,unsigned char csl,unsigned char csr) { p_csl=csl; p_csr=csr; lcd_busy(); p_di=1; p_rw=0; //写 Lcm=c; //将变量C赋予Lcm p_e=1; //下降沿 p_e=0; } //设定起始行 void set_startline(unsigned char i) { i=0xc0+i; wcode(i,1,1); } //定位X方向,Y方向 void set_xy(unsigned char x,unsigned char y) { x=x+0x40; y=y+0xb8; wcode(x,1,1); wcode(y,1,1); } //屏幕开启、关闭 void dison_off(unsigned char o) { o=o+0x3e; //o为1为开,为0是关 wcode(o,1,1); } //复位子函数 void reset() { p_rst=0; delay(20); p_rst=1; delay(20); } //Lcm初始化 void lcd_init(void) { unsigned char x,y; reset(); dison_off(0); for(y=0;y<8;y++) { for(x=0;x<128;x++) lw(x,y,0); } dison_off(1); set_startline(0); } //写数据到Lcm void lw(unsigned char x,unsigned char y,unsigned char dd) //dd代码 { if(x>=64) { set_xy(x-64,y); wdata(dd,0,1); } else { set_xy(x,y); wdata(dd,1,0); } } /*=============================================================================================== 功能:显示汉字函数 说明:1. xx是字显示的列数,共8列 2.yy显示的页(共8页,只给四列就行),只要给一个页的地址与yy相邻的下一页就会自动显示 3.n是要显示第几个字 4.纵向取模下高位,数据排列:从上到下从左到右 ================================================================================================*/ #include"HZ.H" void display_Hz(unsigned char xx,unsigned char yy,unsigned char g[2]) //xx是列,yy是页 { unsigned char i,j,dx; for(j = 0;j < 3;j++) if ((GB16[j].Index[0]==g[0])&&(GB16[j].Index[1]==g[1])) //判断第k个汉字的编码是否与输入汉字g[2]相等 { for(i=0;i<16;i++) {dx=GB16[j].Msk[2*i]; //2*i为选择偶数行,因其为列扫描 lw(xx+i,yy,dx); dx = GB16[j].Msk[(2*i+1)]; //(2*i+1)为选择奇数行,因其为列扫描 lw(xx+i,yy+1,dx); } } } /*============================================================================================= 功能:显示数字或英语函数 说明:1. xx是字显示的列数,共16列 2.yy显示的页(共8页,只给四列就行行),只要给一个页的地址与yy相邻的下一页就会自动显示 3.n是要显示第几个字 4.纵向取模下高位,数据排列:从上到下从左到右 ===============================================================================================*/ #include"ASCII.H" void display_Ez(unsigned char xx,unsigned char yy,unsigned char Ascii_Char) //显示数字或英语 { unsigned char i,dx; for(i=0;i<16;i++) { dx=Font8x16[(Ascii_Char-0x20)*16+i]; //提取c字符的第i个字节以,c减去0x20是由于Ascii码库中的0~1f被去掉 if(i<8) lw(xx+i,yy,dx); else lw(xx+i-8,yy+1,dx); }
作者:
枯叶
时间:
2014-5-18 16:32
实践真是程序没有问题 ,就是不知道怎么发的工整点
作者:
胡德立22
时间:
2014-6-17 19:24
真的蛮好的哦
作者:
JIUSHI
时间:
2014-6-27 16:51
不好说
作者:
JIUSHI
时间:
2014-6-27 16:56
性质差不多、、、
作者:
153956635
时间:
2014-11-28 14:40
还是谢了!
作者:
fsj5098
时间:
2015-6-26 20:33
看不懂
作者:
dely2009
时间:
2015-6-29 19:32
刚开始我也遇到你同样的问题,但不知道你用的哪种芯片的单片机,这个程序是有区别了,我是AVR 正在写
12864的 时钟 万年历 温度 有设置代码,还没最后完成 有空交流下
作者:
LLZ
时间:
2015-7-4 16:30
按时序图来写就可以了
作者:
wangjianb01978
时间:
2016-11-21 22:43
看看这个有用吗
Lcd12864大时钟万年历 农历生肖温度.rar
2016-11-21 22:41 上传
点击文件名下载附件
43.27 KB, 下载次数: 15
作者:
zl2168
时间:
2016-11-22 11:07
14年5月的帖子!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1