网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月03日漏签0天
单片机吧 关注:211,724贴子:1,046,240
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 7回复贴,共1页
<<返回单片机吧
>0< 加载中...

请教怎么从液晶中读取数据

  • 只看楼主
  • 收藏

  • 回复
  • 流年滑落nice
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如题,怎么从12864中读取数据,带中文字库的,我是先写进去一些数据,然后想根据需要从写进的数据读取一部分返回。我现在是直接读取的相应数据的地址,然后返回。。但是不行。。


  • 落叶的根藤
  • 少尉
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
读写程序正确?若正确,你怎么看有没有返回值?其次注意下你读写的寄存器有没有不让你写?


2025-06-03 15:06:59
广告
  • 罗朋芳
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<reg52.h>
#include<stdio.h>
#include<intrins.h> sbit RS = P2^0;//定义端口
sbit RW = P2^1;
sbit E = P2^2; #define Data P0 //数据端口
unsigned int tt;
unsigned int bb;
unsigned char TempData[4];
//unsigned char SecondLine[]=" ";
unsigned char FirstLine[] =" ";
//void distime (void);
/******************************************************************/
/* 函数声明 */
/******************************************************************/
void DelayUs(unsigned char us)//delay us
{
unsigned char uscnt;
uscnt=us>>1;/* Crystal frequency in 12MHz*/
while(--uscnt);
}
void init()
{
tt=0;
TMOD=0X01; //设置定时器1为模式一,即16位计算模式
TH0=(65536-50000)/256; //给计数寄存器赋值,50毫秒时间
TL0=(65536-50000)%256;
EA=1; //开启总中断
ET0=1; //开启定时器0中断
TR0=1; //启定定时器0
} //中断函数,关键字"interrupt" , 这是C语言的中断函数表示法,1表时定地器0
void timer() interrupt 1
{
TH0=(65536-50000)/256; //重新赋值
TL0=(65536-50000)%256;
tt++; //50毫秒加1,加20次为一秒
}
/******************************************************************/
void DelayMs(unsigned char ms)//delay Ms
{
while(--ms)
{
DelayUs(250);
DelayUs(250);
DelayUs(250);
DelayUs(250);
}
}
void WriteCommand(unsigned char c)
{
DelayMs(5);//short delay before operation
E=0;
RS=0;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
}
/****************************************************************/
void WriteData(unsigned char c)
{
DelayMs(5); //short delay before operation
E=0;
RS=1;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
RS=0;
}
/*********************************************************************/
void ShowChar(unsigned char pos,unsigned char c)
{
unsigned char p;
if (pos>=0x10)
p=pos+0xb0; //是第二行则命令代码高4位为0xc
else
p=pos+0x80; //是第二行则命令代码高4位为0x8
WriteCommand (p);//write command
WriteData (c); //write data
}
/*************************************************************************/
void ShowString (unsigned char line,char *ptr)
{
unsigned char l,i;
l=line<<4;
for (i=0;i<16;i++)
ShowChar (l++,*(ptr+i));//循环显示16个字符
}
/*********************************************************************/
void InitLcd()
{
DelayMs(15);
WriteCommand(0x38); //display mode
WriteCommand(0x38); //display mode
WriteCommand(0x38); //display mode
WriteCommand(0x06); //显示光标移动位置
WriteCommand(0x0c); //显示开及光标设置
WriteCommand(0x01); //显示清屏 }
void distime (void) //计算时间 {
init();
while(1) {
if(tt==20)
{ //20*50MS定时时间为1秒
tt=0;
bb++; //计数变量加1
}
TempData[0]=bb/1000;
TempData[1]=(bb%1000)/100;
TempData[2]=((bb%1000)%100)/10;
TempData[3]=((bb%1000)%100)%10; }
} /////////////////////////////////////////////////////////////////
void main(void) {
InitLcd();
while(1){
distime ();
FirstLine[2]='t';
FirstLine[3]='=';
FirstLine[4]='0'+TempData[0];
FirstLine[5]='0'+TempData[1];
FirstLine[6]='0'+TempData[2];
FirstLine[7]='0'+TempData[3];
FirstLine[8]='s';
ShowString(0,FirstLine);
}


  • 罗朋芳
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其实这段程序是对的,但是显示不出来,你能看出来是哪里错了么?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 7回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示