经过反复分析和测试,LCD5110显示屏终于成功驱动,最主要的原因还是程序中的数组指针传递和定时器中断影响问题,数据指针传递问题在原来测试Atmega4809时就遇到过,只是时间太久忘记了,这次也是反复检查不出原因才想起。 在我的驱动代码中有两种显示字符的方式,一是直接发送字符编码显示一个字符,另一个是发送要显示的字符串,由显示函数逐个识别字符内码并显示,这种方式就要用到指针。开始用显示字符串的函数,一直不能正确显示,直到改用显示单个字符的函数才行。代码如下:
void Display_main(void)
{
uint8_t id;
LCD_clear();
// LCD_write_ASCII(12,0,(uint8_t *)"AVR128DA48");
LCD_write_ASC_SIN(12,0,65);
LCD_write_ASC_SIN(18,0,86);
LCD_write_ASC_SIN(24,0,82);
LCD_write_ASC_SIN(30,0,49);
LCD_write_ASC_SIN(36,0,50);
LCD_write_ASC_SIN(42,0,56);
LCD_write_ASC_SIN(48,0,68);
LCD_write_ASC_SIN(54,0,65);
LCD_write_ASC_SIN(60,0,52);
LCD_write_ASC_SIN(66,0,56);
// LCD_write_string(0,1,(uint8_t *)"单片机智能门铃");
for(id=0; id<7; id++){
LCD_write_char(id*12,1,id); //字符编码0~6正好是字库中“单片机智能门铃”的顺序。
}
// LCD_write_ASCII(0,5,(uint8_t *)"2020 00:00:00");
}
下图为显示结果:
为了便于测试,我还在屏幕末行显示了动态的年月日和时分秒,每秒钟更新一次,下面是测试的视频文件:
LCD5110_1.rar
(11.65 MB)
这是测试项目的压缩包:
mytest.X.rar
(241.92 KB)
|