打印

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

[复制链接]
1223|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2017-4-3 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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 | 只看该作者

是不是你扫描的频率不够快啊?

使用特权

评论回复
5
dengdc| | 2017-4-3 20:24 | 只看该作者
这个段式的LCD,一个是扫描时间,还要看硬件连接了

使用特权

评论回复
6
lizye| | 2017-4-3 20:27 | 只看该作者

你有没有加消影程序  就是一个数码管显示之后,立马把这段数码管关闭。这个必须要加  我以前用C51时遇到过  仅供参考  呵呵

使用特权

评论回复
7
dengdc| | 2017-4-3 20:29 | 只看该作者
建议在定时器里面执行

使用特权

评论回复
8
liliang9554|  楼主 | 2017-4-3 20:31 | 只看该作者
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
9
usysm| | 2017-4-3 21:33 | 只看该作者
屏幕抖动是电源的问题吗

使用特权

评论回复
10
usysm| | 2017-4-3 21:34 | 只看该作者
电池不稳定,建议换成DCDC电源模块。

使用特权

评论回复
11
quickman| | 2017-4-7 21:30 | 只看该作者
屏幕刷新的时候有问题

使用特权

评论回复
12
quickman| | 2017-4-7 21:37 | 只看该作者
liliang9554 发表于 2017-4-3 20:21
我的程序,请大侠们有时间帮我看一下,是什么问题?应该怎么去修改?
//******************************** ...

这个屏幕刷新速度更不上吧。

使用特权

评论回复
13
usysm| | 2017-4-15 22:18 | 只看该作者
这个抖动可能是电源不稳定

使用特权

评论回复
14
typeof| | 2017-4-15 22:18 | 只看该作者
是不是刷新的时候有问题

使用特权

评论回复
15
yujielun| | 2017-4-15 22:19 | 只看该作者
使用的锂电池供电吗?

使用特权

评论回复
16
htmlme| | 2017-4-15 22:19 | 只看该作者
楼主的硬件电路是什么

使用特权

评论回复
17
usysm| | 2017-4-15 22:20 | 只看该作者
建议使用DCDC供电,提高效率

使用特权

评论回复
18
typeof| | 2017-4-15 22:20 | 只看该作者
刷新屏幕的时候坐标出现跳变,变动。

使用特权

评论回复
19
yujielun| | 2017-4-15 22:20 | 只看该作者
锂电池可能不稳定,使用电源供电

使用特权

评论回复
20
htmlme| | 2017-4-15 22:20 | 只看该作者
看一下楼主的电路和程序,看看是不是有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝