各位大侠STC89C52单片机控制12864点阵液晶的程序,检测里面显示0处错误,但有34处警告,帮忙解决下,谢谢

各位大侠STC89C52单片机控制12864点阵液晶的程序,检测里面显示0处错误,但有34处警告,帮忙解决下,谢谢,第1张

您好:

我看了一下你的程序,有一部分警告是你用关键字extern声明外部函数和外部变量的问题。如果你打算就用一个用.c文件把程序写完,就建议把extern删除。因为extern是声明函数已经在外面定义的。另外一些警告是因为你只声明了函数没有详细定义函数,还有一个警告是你声明了一个函数,但你在程序中没有用到它。我帮你改了一下,经编译没有警告了。你可以参考一下。希望可以帮到您。

//-------主函数模块-------

#include <reg52.h>

#include <intrins.h>

#define uc unsigned char

#define ui unsigned int

/*

//声明外部变量和外部函数

extern uc LCD_x

extern uc LCD_y

extern uc Neg_hang//反色显示的行

extern void init_lcd(void)

extern void clr_lcd(uc hang)

extern void clr_lie(uc rl,uc lie_shu)//清若干列

extern void disp_vol(unsigned char vol)

extern void disp_str( char *p)

*/

void init_lcd()

void clr_lcd(uc hang)

//void clr_lie(uc rl,uc lie_shu)//清若干列

void disp_vol(uc vol)

void disp_str(char *p)

uc LCD_x

uc LCD_y

uc Neg_hang//反色显示的行

//定义时钟相关变量

uc time250us

uc time50ms

uc time1s

uc min

uc hour

void time0(void) interrupt 1 using 1//To中断函数,使时钟自动计时

{

if(++time250us>199)

{

time250us=0

if(++time50ms>19)

{

time50ms=0

if(++time1s>59)

{

time1s=0

if(++min>59)

{

min=0

hour++

}

}

}

}

}

//------CPU初始函数------

void init()

{

TMOD=0x20

TH0=256-250

TL0=256-250

IE=0x82

TR0=1

time250us=0

time50ms=0

time1s=0

min=0

hour=0

}

//------主函数------

void main()

{

init()

Neg_hang=6//第四行反色显示的行

init_lcd()

LCD_x=0

LCD_y=0

clr_lcd(1)//清屏

clr_lcd(2)

clr_lcd(3)

clr_lcd(4)

P1=0xff

LCD_x=0

LCD_y=0//从第一行第一列开始显示下面的字符串

disp_str("happy birthday!")

LCD_x=0

LCD_y=2//从第2行第一列开始显示下面的字符串

disp_str("love you forver")

LCD_x=127-(16*5)

LCD_y=4//从第3行第37列开始显示下面的字符串

disp_str("jayant")

while(1)

{

if(!time50ms)

{

LCD_x=30

LCD_y=6

disp_vol(hour/10)

disp_vol(hour%10)

disp_str(":")

disp_vol(min/10)

disp_vol(min%10)

disp_str(":")

disp_vol(time1s/10)

disp_vol(time1s%10)

}

}

}

void init_lcd()

{}

void clr_lcd(uc hang)

{

hang=hang

}

/*

void clr_lie(uc rl,uc lie_shu)//清若干列

{

rl=rl

lie_shu=lie_shu

}

*/

void disp_vol(uc vol)

{

vol=vol

}

void disp_str(char *p)

{

p=p

}

     12864是属于LCD 液晶显示的,LCD是 Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

     12864就是利用这样的原理实现字符与图片的显示的。但是单纯的液晶屏仅仅指那两片玻璃屏,不容易 *** 作,所以一般都会加上驱动IC。

     下面我以图片详细像你说明:

这个就是那两片玻璃,中间夹有液体。 *** 作它很麻烦,要用到很多的连接线:

那上下两侧的就是用来控制屏幕的,这些接口和玻璃瓶是通过两个小东西连接的:

连接之后就是这个样子了:

当然只是这样还是不行的,还要加上背光,不然显示出来的字符或图片看不到,背光是用很多串联的LED实现的:

大体就是这样了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12097567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存