[MCU] lcd仪表出现了屏幕抖动的情况

[复制链接]
1563|35
 楼主| liliang9554 发表于 2019-7-6 16:16 | 显示全部楼层 |阅读模式

用430那块板子作一个电池供电的LCD显示仪表
dengdc 发表于 2019-7-6 16:21 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| liliang9554 发表于 2019-7-6 16:23 | 显示全部楼层

我的程序,请大侠们有时间帮我看一下,是什么问题?应该怎么去修改?
//******************************************************************************
//******************************************************************************
#include  <msp430x42x0.h>
// LCD segment definitions.
#define d 0x80
#define e 0x40
#define g 0x20
#define f 0x10
#define h 0x08
#define c 0x04
#define a 0x01
#define b 0x02
const char char_gen[] = {                   // definitions for digits
  a+b+c+d+e+f,                              // Displays "0"
  b+c,
  a+b+g+e+d,                                      // Displays "1"
  a+b+d+c+g,                                // Displays "2"
  b+c+f+g,                                // Displays "3"
  a+f+g+c+d+h,                                  // Displays "4"
  a+f+e+d+c+g,                                // Displays "5"
  a+b+c,                              // Displays "6"
  a+b+c+d+e+f+g,                                 // Displays "7"
  a+b+c+d+f+g                       // Displays "9"
};
unsigned int num=0;
volatile unsigned int i;                  // Use volatile to prevent removal
unsigned int result; // by compiler optimization
unsigned int index;
unsigned char dis_buf[5];
unsigned char n;
void lcd()
{
   
   dis_buf[0]=result/10000%10;
   dis_buf[1]=result/1000%10;
   dis_buf[2]=result/100%10;
   dis_buf[3]=result/10%10;
   dis_buf[4]=result%10;
   
   for (n=0; n<5; ++n)                      // Display "0123456"
   LCDMEM[n] = char_gen[dis_buf[n]];
  
}
//******************************************************************************
//******************************************************************************

void main(void)
{
   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  FLL_CTL0 |= XCAP18PF;                     // Set load cap for 32k xtal
   for (i = 0; i < 10000; i++);              // Delay for 32 kHz crystal to
   
  LCDACTL = LCDON + LCD4MUX + LCDFREQ_128;  // 4mux LCD, ACLK/128
  LCDAPCTL0 = 0x0F;                         // Segments 0-13
  P5SEL  = 0x1C;    // Set COM pins for LCD
  
   for( n = 0; n <20 ; n ++)
  {
    LCDMEM[n] = 0;                          // Clear LCD
   }
  
   index=0;
   num=0;
   
  P1DIR |= 0x01;                            // Set P1.0 as output
  BTCTL = BTDIV + BT_fCLK2_DIV16;           // ACLK/(256*16)
  IE2 |= BTIE;                              // Enable BT interrupt
  while(1)
  {
    SD16CTL = SD16REFON+SD16SSEL1;            // 1.2V ref, SMCLK
    SD16CCTL0 |= SD16SNGL;                    // Single conv
    for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup                                    
    SD16CCTL0 |= SD16SC;                     // Set bit to start conversion
    while ((SD16CCTL0 & SD16IFG)==0);       // Poll interrupt flag
        result = SD16MEM0;   
if (++index == 10)
    {
   
    index = 0;                            // SET BREAKPOINT HERE
    }
    _NOP();
    SD16CTL=0x00;
   IE2=0x80;
    _BIS_SR(LPM3_bits + GIE);                 // Enter LPM3, enable interrupts
  }
}
// Basic Timer Interrupt Service Routine
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{
  P1OUT ^= 0x01;                             // Toggle P1.0
  num=num+1;
  if(num>10)
  {
   num=0;
   lcd();
   for (i = 0; i < 0x9000; i++);             // Delay   
  _BIC_SR_IRQ(LPM3_bits);
  IE2=0x00;
  }
}
zhenykun 发表于 2019-7-6 16:26 | 显示全部楼层
是不是你扫描的频率不够快啊?
dengdc 发表于 2019-7-6 16:28 | 显示全部楼层

这个段式的LCD,一个是扫描时间,还要看硬件连接了
lizye 发表于 2019-7-6 16:32 | 显示全部楼层
你有没有加消影程序  就是一个数码管显示之后,立马把这段数码管关闭。这个必须要加  我以前用C51时遇到过  仅供参考  呵呵
dengdc 发表于 2019-7-6 16:45 | 显示全部楼层
建议在定时器里面执行
spark周 发表于 2019-7-6 16:47 | 显示全部楼层
屏幕抖动是电源的问题吗
午夜粪车 发表于 2019-7-6 16:50 | 显示全部楼层
电池不稳定,建议换成DCDC电源模块。
zhaoxqi 发表于 2019-7-6 16:52 | 显示全部楼层
屏幕刷新的时候有问题
wyjie 发表于 2019-7-6 16:56 | 显示全部楼层
这个屏幕刷新速度更不上吧。
huangchui 发表于 2019-7-6 17:01 | 显示全部楼层
这个抖动可能是电源不稳定
是不是刷新的时候有问题
lizye 发表于 2019-7-6 17:04 | 显示全部楼层
使用的锂电池供电吗?
刷新屏幕的时候坐标出现跳变,变动。
yszong 发表于 2019-7-6 17:08 | 显示全部楼层
锂电池可能不稳定,使用电源供电
看一下楼主的电路和程序,看看是不是有问题
 楼主| liliang9554 发表于 2019-7-6 17:13 | 显示全部楼层

唉,还是没有什么结果,算了,先结贴吧,多谢大家啦
aspoke 发表于 2019-7-7 21:40 | 显示全部楼层
屏幕抖动的情况是什么意思?  
232321122 发表于 2019-7-7 21:41 | 显示全部楼层
没有设置为LCD的最佳分辨率?   
ghuca 发表于 2019-7-7 21:42 | 显示全部楼层
可能烧写的程序问题。      
soodesyt 发表于 2019-7-7 21:42 | 显示全部楼层
有的线路有问题了。   
mnynt121 发表于 2019-7-7 21:42 | 显示全部楼层
屏幕抖动是什么样子呢?     
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部