|
这次让MEGA169V驱动LCD把我彻底整惨了!
[复制链接]
进现在的公司工作才刚刚1年半,以前虽然一直在这个行业做,但是都是做一些维修和售后之类的工作,而在这里因为经过熟人的介绍,做了开发——我最向往的工作。因为我自己本身的学历只有夜大的大专,年纪也早已过了而立之年,所以我非常珍惜这个机会,工作学习一直非常卖力。
这次是我进公司后第一次挑大梁,从硬件选型,到画SCH,PCB,乃至整个软件的编制都是我一个人独立完成,而且整个设计基本上可以说是非常成功的,填补了公司技术方面的很多个空白。
然而,就在今天,就在整个设计即将进行最后送检的样机试制时,我发现一直困扰我的LCD显示不均匀问题,原来不是出在LCD设计上,而是出在我选用的——ATMEGA169V!!!!!
因为在样机的研发过程中,LCD模块是同步进行开发设计的,之前有个厂商一共送过3批次的工程样片过来测试,但是在ATMEGA169V上测试都有笔画显示深浅不均的现象,因为对方是一个小厂,而ATMEGA169V是大厂的产品,所以在排除软件问题后,就想当然地以为是LCD没有设计好,直到今天,第二个供应厂商送来他们的样片,测试结果惊人地相似!我才意识到原来的判断有问题!经过仔细的对比和应用HT1621B驱动测试,最终确认问题在于我一直信任有加的——ATMEGA169V!!!!是它的驱动能力不够所致!我的LCD是段式扫描,面积大约40×100mm,19×4=76段。
第一次挑大梁眼看就要砸了,为了这个项目,我付出了太多太多,可是眼下的结局让我沮丧头顶!我心里真是不甘啊,欲苦无泪!
我想,事到如今,怨天尤人是没有任何用处的,辞职也许还能给自己留些许的尊严,总比从此被人冷落,然后被迫离开要好一些,反正颜面现在已经不重要了,重要的是今后,我要如何在这个行业里混?我很迷惘,也许现在我还不能下什么结论,做什么决定,只有等心情恢复平静之后。
所以我首要的任务是让自己恢复平静,然后仔细考虑自己的未来。但是眼下这一关如何去面对,如何去度过,我现在脑子里是一片混乱。
附部分和LCD驱动有关的子程序:
//--------------------------------------------
// LCD初始化,使用外部32768Hz异步时钟,51Hz帧频
//--------------------------------------------
void lcd_init( void )
{
LCDCRA = 0x00; // 使用外部32768Hz异步时钟
LCDCRB = 0xB3; // 1/3偏置(1/3:B3),1/4占空比,19条SEG
LCDFRR = 0x04;
LCDCCR = 8;
LCDCRA = 0x80; // 正常显示模式,非低功耗
/* LCDCRA = 0x00; // 使用内部主系统时钟1MHz
LCDCRB = 0x33;
LCDFRR = 0x44;
LCDCCR = 0x80;
LCDCRA = 0x80; //*/
}
//----------------------------------------------------------
// I/O端口初始化※※※※※※※※※※※※※※※※※※※※※※※※
//----------------------------------------------------------
void port_init( void )
{
PORTA = 0xFF;
DDRA = 0xFF;
PORTB = 0x7f;
DDRB = 0xbe;
PORTC = 0xFF;
DDRC = 0xFF;
PORTD = 0xFF;
DDRD = 0xFF;
PORTE = 0xFc; // RS232的3条I/O
DDRE = 0x07; // 设置为输出0
DDRF = 0x78;
PORTF = 0x08;
PORTG = 0xe7; // PG3,PG4
DDRG = 0x1F;
}
//--------------------------------------------
// T2初始化,使用外部32768Hz异步时钟,1024预分频
// 1Hz中断秒信号,作软RTC※※※※※※※※※※※※
//--------------------------------------------
void timer2_init( void )
{
TCCR2A = 0x00; // 先停止T2
ASSR = 0x08; // 设置为异步模式
TCNT2 = 0xE0;
OCR2A = 0x20;
TCCR2A = 0x07; // 启动T2
}
|
|