网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
10月24日
漏签
0
天
单片机吧
关注:
209,553
贴子:
1,039,476
看贴
图片
吧主推荐
视频
游戏
7
回复贴,共
1
页
<<返回单片机吧
>0< 加载中...
【加急!】求大神指教怎么编辑proteus里的12864字库
只看楼主
收藏
回复
只看贴的安纳金
新兵
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我做了一个单片机作息时间控制器的设计,要求要在LCD上显示预设的汉字,实物上人家给我做出来了,但是我把代码用到仿真上时12864就没有显示。大神帮我看一下我12864是不是接错了?或者是代码有问题
楼下放图
只看贴的安纳金
新兵
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这是仿真运行时的样子,可以看到12864是没有显示的
深圳市汇美创电子有限公司
单片机
首先汇美创-价格优势现货库存
单片机
价格美丽-质量优
2024-10-24 13:20
广告
立即查看
只看贴的安纳金
新兵
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
是不是我12864管脚接的不对啊
楼主菜鸟,人家只给我PCB原件图和代码,我自己从proteus里找的原件搭的电路
只看贴的安纳金
新兵
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
代码太长发不出来
只看贴的安纳金
新兵
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
#include "reg52.h"
#include "typedef.h"
#include "delay.h"
#include "12864.h"
sbit LCD_CLK = P0^5;
sbit LCD_SID = P0^6;
sbit LCD_CS = P0^7;
xdata uchar LCD_Buf[64]=0;
uchar SparkF = 0; //闪烁开关
uchar SparkA = 0; //闪烁缓存地址
uchar SparkL = 1; //闪烁长度默认1
uchar LCD_RefFlag = 0;
void LCD_Write_Byte(uchar Data) //往12864写一个字节
{
uchar i;
for(i=0;i<8;i++)
{
LCD_CLK = 0; //时钟拉低
if(Data & 0x80)
{ LCD_SID = 1; }
else
{ LCD_SID = 0; }
LCD_CLK = 1; //时钟拉高,传入1bit数据
Data = Data<<1; //数据左移一位
}
}
void LCD_Write_Command(uchar COMMAND) //写控制命令
{
LCD_CS = 1;
LCD_Write_Byte(SENDCOMM);
LCD_Write_Byte(COMMAND & 0XF0); //写入高四位
LCD_Write_Byte((COMMAND << 4) & 0XF0); //写入低四位
LCD_CS = 0;
}
void LCD_Write_Data(uchar Data) //写数据
{
LCD_CS = 1;
LCD_Write_Byte(SENDDATA);
LCD_Write_Byte(Data & 0XF0); //写入高四位
LCD_Write_Byte((Data << 4)&0XF0); //写入低四位
LCD_CS = 0;
}
void LCD_XY(uchar x,uchar y) //设置显示位置 X(1~16),Y(1~4)
{
switch(y)
{
case 1:LCD_Write_Command(0X7F+x);break;
case 2:LCD_Write_Command(0X8F+x);break;
case 3:LCD_Write_Command(0X87+x);break;
case 4:LCD_Write_Command(0X97+x);break;
default: break;
}
}
void LCD_Init(void)
{
Delay_1ms(100);
LCD_Write_Command(0x34);//一次送8位数据
LCD_Write_Command(0x30);//基本操作指令
LCD_Write_Command(0x0C);//整体显示,游标off,
LCD_Write_Command(0x01);//清屏
Delay_1ms(100);
LCD_Clr();
}
//void Display_Char(uchar x,uchar y, uchar Char)
//{
// uchar add = 2*(x-1)+16*(y-1);
// LCD_Buf[add]=Char;
// LCD_RefFlag = 1;
//}
void Display_String(uchar x,uchar y,uchar *string)
{
uchar add = 2*(x-1)+16*(y-1);
LCD_RefFlag = 0;
while(*string!='\0')
{
LCD_Buf[add]=*string;
add++;
string++;
}
LCD_RefFlag = 1;
}
//void Display_u8(uchar x,uchar y,uchar num)
//{
// uchar buff[4]=0;
//
//buff[0]=num / 100 +'0';
//buff[1]=num%100/10 +'0';
//buff[2]=num%10+'0';
//buff[3]='\0';
//if(buff[0]=='0')
//{
// buff[0]=' ';
// if(buff[1]=='0')
// buff[1]=' ';
//}
//Display_String(x,y,buff);
//}
void LCD_TimeDis(uchar x,uchar y,uchar *time) //[0][1][2] 时分秒
{
uchar add = 2*(x-1)+16*(y-1);
LCD_RefFlag = 0;
LCD_Buf[add+0] = time[0] /10 +'0';
LCD_Buf[add+1] = time[0] %10 +'0';
LCD_Buf[add+2] = ':';
LCD_Buf[add+3] = time[1] /10 +'0';
LCD_Buf[add+4] = time[1] %10 +'0';
LCD_Buf[add+5] = ':';
LCD_Buf[add+6] = time[2] /10 +'0';
LCD_Buf[add+7] = time[2] %10 +'0';
LCD_RefFlag = 1;
}
void LCD_WeekDis(uchar x,uchar y,uchar week)
{
switch(week)
{
case 1:{ Display_String(x,y,"星期一"); }break;
case 2:{ Display_String(x,y,"星期二"); }break;
case 3:{ Display_String(x,y,"星期三"); }break;
case 4:{ Display_String(x,y,"星期四"); }break;
case 5:{ Display_String(x,y,"星期五"); }break;
case 6:{ Display_String(x,y,"星期六"); }break;
case 7:{ Display_String(x,y,"星期日"); }break;
default:{ Display_String(x,y," "); }break;
}
}
void LCD_DateDis(uchar x,uchar y,uchar *Date) //[0][1][2 年月日
{
uchar add = 2*(x-1)+16*(y-1);
LCD_RefFlag = 0;
Display_String(x+2,y,"年");
Display_String(x+4,y,"月");
Display_String(x+6,y,"日");
/*--------------年份----------------------*/
LCD_Buf[add] = '2';
LCD_Buf[add+1] = '0';
LCD_Buf[add+2] = Date[0] /10 +'0';
LCD_Buf[add+3] = Date[0] %10 +'0';
/*--------------月份----------------------*/
LCD_Buf[add+6] = Date[1] /10 +'0';
LCD_Buf[add+7] = Date[1] %10 +'0';
/*--------------日期----------------------*/
LCD_Buf[add+10] = Date[2] /10 +'0';
LCD_Buf[add+11] = Date[2] %10 +'0';
LCD_RefFlag = 1;
}
void LCD_Clr(void)
{
uchar i = 0;
LCD_RefFlag = 0;
for(i=0;i<64;i++)
{
LCD_Buf[i]=0x20;
}
LCD_RefFlag = 1;
}
void LCD_Ref(void) //更新12864显示缓存
{
uchar i = 0;
uchar j=0;
LCD_XY(1,1);
LCD_RefFlag = 0;
for(i=0;i<64;i++)
{
if(i==16)
LCD_XY(1,2);
else if(i==32)
LCD_XY(1,3);
else if(i==48)
LCD_XY(1,4);
LCD_Write_Data(LCD_Buf[i]);
}
LCD_RefFlag = 1;
}
只看贴的安纳金
新兵
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我12684是不是接的不对啊。。。。
流年碎影警
新兵
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你最后怎么整的
一只芦苇
下士
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
放个清楚的图啊,把LCD管脚放大看看
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示