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

[复制链接]
1612|21
 楼主| liliang9554 发表于 2017-4-3 20:17 | 显示全部楼层 |阅读模式
用430那块板子作一个电池供电的LCD显示仪表
dengdc 发表于 2017-4-3 20:20 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| liliang9554 发表于 2017-4-3 20:21 | 显示全部楼层

我的程序,请大侠们有时间帮我看一下,是什么问题?应该怎么去修改?
//******************************************************************************
//******************************************************************************
#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 发表于 2017-4-3 20:23 | 显示全部楼层

是不是你扫描的频率不够快啊?
dengdc 发表于 2017-4-3 20:24 | 显示全部楼层
这个段式的LCD,一个是扫描时间,还要看硬件连接了
lizye 发表于 2017-4-3 20:27 | 显示全部楼层

你有没有加消影程序  就是一个数码管显示之后,立马把这段数码管关闭。这个必须要加  我以前用C51时遇到过  仅供参考  呵呵
dengdc 发表于 2017-4-3 20:29 | 显示全部楼层
建议在定时器里面执行
 楼主| liliang9554 发表于 2017-4-3 20:31 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家,结贴了哈
usysm 发表于 2017-4-3 21:33 | 显示全部楼层
屏幕抖动是电源的问题吗
usysm 发表于 2017-4-3 21:34 | 显示全部楼层
电池不稳定,建议换成DCDC电源模块。
quickman 发表于 2017-4-7 21:30 | 显示全部楼层
屏幕刷新的时候有问题
quickman 发表于 2017-4-7 21:37 | 显示全部楼层
liliang9554 发表于 2017-4-3 20:21
我的程序,请大侠们有时间帮我看一下,是什么问题?应该怎么去修改?
//******************************** ...

这个屏幕刷新速度更不上吧。
usysm 发表于 2017-4-15 22:18 | 显示全部楼层
这个抖动可能是电源不稳定
typeof 发表于 2017-4-15 22:18 | 显示全部楼层
是不是刷新的时候有问题
yujielun 发表于 2017-4-15 22:19 | 显示全部楼层
使用的锂电池供电吗?
htmlme 发表于 2017-4-15 22:19 | 显示全部楼层
楼主的硬件电路是什么
usysm 发表于 2017-4-15 22:20 | 显示全部楼层
建议使用DCDC供电,提高效率
typeof 发表于 2017-4-15 22:20 | 显示全部楼层
刷新屏幕的时候坐标出现跳变,变动。
yujielun 发表于 2017-4-15 22:20 | 显示全部楼层
锂电池可能不稳定,使用电源供电
htmlme 发表于 2017-4-15 22:20 | 显示全部楼层
看一下楼主的电路和程序,看看是不是有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

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