TA的每日心情 | 开心 2021-3-15 10:18 |
---|
签到天数: 1027 天 连续签到: 1 天 [LV.10]以坛为家III
|
本帖最后由 dushanwu 于 2013-9-8 19:32 编辑
2013-09-08 更新:
全套的资料请参考我的新帖子:基于PCA8538驱动的LCD模块在白色家电中应用的验证系统
https://www.cirmall.com/bbs/thread-17786-1-1.html
今天终于将这个模块的点阵区、数字区、图标区都验证完了,上图!
主控MCU和LCM整体图:
背面整体图:
背面连线细节:
开机画面:
点阵区显示ASCII字符:
点阵区视频链接:
http://v.youku.com/v_show/id_XNjAxNzQ4OTcy.html
点阵区显示数字字符的视频:
http://v.youku.com/v_show/id_XNjAxNzUwMDYw.html
数字区显示数字,上边一行的数字验证:
数字区显示,全部数字显示:
数字区显示,视频:
http://v.youku.com/v_show/id_XNjAxNzUyMTA0.html
我的板子使用的是STC90LE516AD单片机,时钟22.1184MHz。原理图如下:
最后,跟大家分享一下 这个LCM的COM-SEG对应关系表,很重要的哦!
接下来,开始应用程序喽,哈哈……………………
经过一天的努力,终于搞定了上位机软件,可以从界面中控制NXP_COG模块上的任何一个像素了,哈哈!
接下来该到了模拟白色家电的使用情况了,加油!
上位机软件界面如下:
顺便上传一个例程:显示第一个7段数字,可以显示0--9和A--F,共16个字符,程序如下:
const unsigned char NUM_1_CODE[]={//D, C, B, A, F, G, E
0xfa,//0
0x60,//1
0xb6,//2
0xf4,//3
0x6c,//4
0xdc,//5
0xde,//6
0x70,//7
0xfe,//8
0xfc,//9
0x7e,//A
0xce,//b
0x9a,//C
0xe6,//d
0x9e,//E
0x1e,//F
};
void Show_1NUM(unsigned char dat){
unsigned char n = 0x00;
unsigned char tmp = 0x00;
if(dat < 16){
tmp = NUM_1_CODE[dat];
for(n=0;n<7;n++){
if((tmp & 0x80) == 0x80){
Draw_Line(0x01,(88+n),0x01,0x01,0x01);
}else{
Draw_Line(0x01,(88+n),0x00,0x00,0x01);
}
tmp = tmp << 1;
}
}else{
for(n=0;n<7;n++){
Draw_Line(0x01,(88+n),0x00,0x00,0x01);
}
}
}
8月29日:
PCA8538自带温度传感器,于是编写了程序读取,并显示温度的程序。可以通过上位机软件进行时间校对;时间的更新靠单片机的定时器。
显示温度和时间:
手指触摸芯片后,温度上升:
同时,上位机也可以发命令获得模块的温度值:
手指触摸后,温度上升:
相应的视频如下:
http://v.youku.com/v_show/id_XNjAyNjQ1NjQ4.html
跟大家分享一下温度读取和显示的程序:
unsigned char Read_Temperatue(void){// T = 0.6275 * [T] - 40
unsigned char n = 0x00;
unsigned char tmp = 0x00;
LCD_CLK = 0;
LCD_CS = 0;
SPI_Send_Byte(READ_MODE);//
SPI_Send_Byte(0x80);//读取温度的命令
tmp = 0x00;
for(n=0;n<8;n++){
LCD_CLK = 0;
tmp = tmp << 1;
if(LCD_SDAOUT){
tmp = tmp + 0x01;
}
LCD_CLK = 1;
}
LCD_CS = 1;
return tmp;
}
void Show_Temperatue(void){
unsigned char tmp = 0x00;
unsigned long dat = 0x00000000;
unsigned int TT = 0x0000;
unsigned char bai = 0x00;
unsigned char shi = 0x00;
unsigned char ge = 0x00;
tmp = Read_Temperatue();
if(tmp != 0xff){//读出来的数据不能是0xff
if(tmp > 63){//正温度值
dat = tmp;
dat = dat * 6275;
dat = dat - (400000);//温度值放大10000倍
dat = dat + 5000;// 温度值四舍五入
dat = dat / 10000;// 温度值恢复正常
TT = (unsigned int)(dat);//取整,显示温度区不能显示小数
bai = TT / 100;//温度百位值
shi = (TT - bai*100)/10;//温度十位值
ge = TT % 10;//温度个位值
Show_8NUM(bai,DISABLE);
Show_9NUM(shi,DISABLE);
Show_10NUM(ge,DISABLE);
}else{
dat = tmp;
dat = dat * 6275;
dat = (400000) - dat; // 负温度值
dat = dat - 5000;//温度值 四舍五入
dat = dat / 10000;// 温度回复正常
TT = (unsigned int)(dat);
shi = TT / 10;//温度十位值
ge = TT % 10;//温度个位值
Show_8NUM(FU,DISABLE);
Show_9NUM(shi,DISABLE);
Show_10NUM(ge,DISABLE);
}
Show_11NUM(ICON_SHESHIDU,ENABLE);
}
}
由于试验条件有限,不能做高低温试验,故温度补偿部分暂时不能验证,但程序里已经做了相关函数。
至此,NXP_COG模块能够显示的内容都可以随心所欲的控制了,温度也可以读取了,同时,上位机也可以完全控制该模块的任何一个像素内容,已基本达到试验的目的。
VA液晶是液晶显示行业新推出的显示类型,具有对比度高、响应速度快的优点,是未来液晶显示的趋势,通过这次试用NXP_COG模块,确实亲身体会到了VA液晶的显示效果,果然不凡!
下一步将会把资料整理、上传,跟大家分享。
|
评分
-
查看全部评分
|