⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 43019264_demo_0806.c

📁 430编程:19264图形液晶汉字与字符的显示程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	    }
        else if(x<8)
            {   x=x-4;   cs1=0;  cs2=1;  cs3=0 ;  y=x*16;
            }
        else
            {   x=x-8;   cs1=0;  cs2=0;  cs3=1 ;  y=x*16;
            }
         	set_adr(2*lline,y,cs1,cs2,cs3);
	        set_startline(0,cs1,cs2,cs3);
	        for(i=0;i<16;i++)
		        {
		        wdata(*(p+i),cs1,cs2,cs3);
		        }
	        set_adr(2*lline+1,y,cs1,cs2,cs3);
	        set_startline(0,cs1,cs2,cs3);
	        for(i=16;i<32;i++)
		        {
		        wdata(*(p+i),cs1,cs2,cs3);
		        }
      }

void asc_8_16(uchar *p,uchar lline,uchar x)  //正显一个字符8*16,  一行有24个字符(24个列)
      {
	uchar i,y,cs1,cs2,cs3;
	if(x<8)
	    {            cs1=1;  cs2=0;  cs3=0 ;  y=x*8;
	    }
        else if(x<16)
            {   x=x-8;   cs1=0;  cs2=1;  cs3=0 ;  y=x*8;
            }
        else
            {   x=x-16;   cs1=0;  cs2=0;  cs3=1 ;  y=x*8;
            }
         	set_adr(2*lline,y,cs1,cs2,cs3);
	        set_startline(0,cs1,cs2,cs3);
	        for(i=0;i<8;i++)
		        {
		        wdata(*(p+i),cs1,cs2,cs3);
		        }
	        set_adr(2*lline+1,y,cs1,cs2,cs3);
	        set_startline(0,cs1,cs2,cs3);
	        for(i=8;i<16;i++)
		        {
		        wdata(*(p+i),cs1,cs2,cs3);
		        }
      }

void qq_16(uchar hang)
        {
            uchar i=0;
            for(i=0;i<48;i++)
               {
                han_16_16((uchar *)(Bmp017+hantemp[i]*32),i/12,i%12);
                }
        }
void qq_8_16(uchar hang)
        {
            uchar i=0;
            for(i=0;i<96;i++)
               {
                asc_8_16((uchar *)(Bmp016+hantemp[i]*16),i/24,i%24);
                }
        }
void time(void)
 {
 uchar i=0;
  LCDCTL = 0XFD;
  BTCTL = BTFRFQ1;                      // STK LCD freq
  P5SEL = 0xFC;                         // Common and Rxx all selected
  for(i=0;i<20;i++)
  LCDMEM[i]=0;
  adc_s=0;
  for (i=1; i<9; ++i)                   // Display "6543210"
  LCDMEM[i] = distab[digit[i-1]];//digit[i];

  TACTL = TASSEL1 + TACLR;              // SMCLK, clear TAR
  CCTL0 = CCIE;                         // CCR0 interrupt enabled
  CCR0 = 20000;
  TACTL |= MC1;                         // Start Timer_A in continuous mode
  _EINT();                              // Enable interrupts
 }

interrupt[TIMERA0_VECTOR] void Timer_A (void)
{
  uint i=0,temp;
  for(i=0;i<20;i++)
      LCDMEM[i]=0;
  for(i=0;i<8;i++)
      disbuffer[8-i]=digit[i];
  CCR0 += 60000;                        // Add Offset to CCR0
  if(adc_s!=0xf)
  {
  LCDMEM[7]=0xa;
  LCDMEM[8]=0x90;     //显示时间  TIME
  LCDMEM[9]=0x12;
  LCDMEM[10]=0x80;
  LCDMEM[11]=0x2;
  LCDMEM[12]=0x93;
  LCDMEM[13]=0x72;
  LCDMEM[14]=0x5b;
  LCDMEM[15]=0x94;

  for(i=0;i<6;i++)
      LCDMEM[i+1]=distab[digit[i]];
  digit[0]++;
  if(digit[0]==50)
       {
       digit[0]=0;
       digit[1]++;
       if(digit[1]==10)
           {
           digit[1]=0;
           digit[2]++;
           if(digit[2]==6)
               {
               digit[2]=0;
               digit[3]++;
               if(digit[3]==10)
                    {
                    digit[3]=0;
                    digit[4]++;
                    if(digit[4]==6)
                         {
                         digit[4]=0;
               }
               }
               }
               }
       }
     }
     else
         {
         for(i=0;i<20;i++)
              LCDMEM[i]=0;
          LCDMEM[8]=0x07;
          LCDMEM[9]=0x01;     //显示电压  VOLT
          LCDMEM[10]=0x80;
          LCDMEM[11]=0xF2;
          LCDMEM[12]=0x0B;
          LCDMEM[13]=0x80;
          LCDMEM[14]=0x90;
          LCDMEM[15]=0x12;
          ADC12CTL0 |= ADC12SC;               // Start conversion
          while ((ADC12IFG & ADC12BUSY)==0);
              {
              i=ADC12MEM4;
              LCDMEM[5]=distab[i/1000];
              temp=i%1000;
              LCDMEM[4]=distab[temp/100];
              temp=temp%100;
              LCDMEM[3]=distab[temp/10];
              temp=temp%10;
              LCDMEM[2]=distab[temp];
              }
          _NOP();                             // SET BREAKPOINT HERE
         }
}

void adc_test(void)
    {
        LCDCTL = 0XFD;
        BTCTL = BTFRFQ1;                      // STK LCD freq
        P5SEL = 0xFC;                         // Common and Rxx all selected
      P6SEL |= 0x10;                        // Enable A/D channel A0
      ADC12CTL0 = ADC12ON+SHT0_2;           // Turn on ADC12, set sampling time
      ADC12CTL1 = SHP;                      // Use sampling timer
      ADC12CTL0 |= ENC;                     // Enable conversions
      adc_s=0xf;        //标志
      TACTL = TASSEL1 + TACLR;              // SMCLK, clear TAR
      CCTL0 = CCIE;                         // CCR0 interrupt enabled
      CCR0 = 20000;
      TACTL |= MC1;                         // Start Timer_A in continuous mode
      _EINT();                              // Enable interrupts

    }

void to_main(void)
    {uchar i=0;
        for(i=0;i<96;i++)
        hantemp[i]=i;
        for(i=0;i<20;i++)
           LCDMEM[i]=0;
        P5DIR=0xFF;
        P5SEL=0;
        P4DIR=0xFF;
        P3DIR=0xFF;
        P2DIR=0;
        P2IE=0xf;
        P2IES=0;
        reset();
	dison_off(1,1,0,0);
	dison_off(1,0,1,0);
	dison_off(1,0,0,1);
	i=2;
        clr();
        full();
        delay(60000);
        clr();
        delay(60000);
while(1)
        {
        _DINT();
        clr();
        qq_16(i);
           for(i=0;i<24;i++)
                asc_8_16((uchar *)(welcome+hantemp[i]*16),3,i);
         _EINT();
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        _DINT();
        clr();
        qq_8_16(i);
         _EINT();
        delay(30000);
        }
    }


interrupt[PORT2_VECTOR] void P2 (void)
    {
    uchar temp;
    P2IFG=0;
    temp=P2IN;
    temp=temp&0xD;
    if(temp==8)
        time();
        else if(temp==4)
           adc_test();
           else if(temp==1)
              to_main();
    P2IFG=0;
    }

void to_pc(void)
    {

    }


main(void)
{
	uchar i;
	int j=0;
        WDTCTL = WDTPW + WDTHOLD;     // Stop WDT
        for(i=0;i<96;i++)
        hantemp[i]=i;
        P5DIR=0xFF;
        P4DIR=0xFF;
    P1DIR=0x1f;
    P1DIR=0X0f;
    P1OUT=0X0f;
    P1IE=0Xf0;
    P1IES=0;
    P1IFG=0;
        P3DIR=0xFF;
        P2DIR=0;
        P2IE=0xf;
        P2IES=0;
  UTCTL0 = SSEL0;                       // UCLK = ACLK
  UBR00 = 0x0D;                         // 32k/2400 - 13.65
  UBR10 = 0x00;                         // 32k/2400
  UMCTL0 = 0x33;                        // modulation
  UCTL0 = CHAR;                         // 8-bit character *SWRST*
  ME1 |= UTXE0 + URXE0;                 // Enable USART0 TXD/RXD
  IE1 |= URXIE0;                        // Enable USART0 RX interrupt
  P2SEL |= 0x30;                        // P2.4,5 = USART0 TXD/RXD
  P2DIR |= 0x10;                        // P2.4 output direction
 // _EINT();                              // Enable interrupts

        for(i=0;i<8;i++)
            disbuffer[i]=i;
        reset();
	dison_off(1,1,0,0);
	dison_off(1,0,1,0);
	dison_off(1,0,0,1);
	i=2;
        clr();
        full();
        delay(60000);
        clr();
        delay(60000);
        for(i=0;i<20;i++)
           LCDMEM[i]=0;

while(1)
        {
        _DINT();
        clr();
        qq_16(i);
           for(i=0;i<24;i++)
                asc_8_16((uchar *)(welcome+hantemp[i]*16),3,i);
     //    _EINT();
    //    for(j=0;j<1200;j++)
  //            disp();
      delay(60000);
      delay(60000);
        _DINT();
        clr();
        qq_8_16(i);
      delay(60000);
      delay(60000);
   //     _EINT();
   //     for(j=0;j<500;j++)
    //          disp();
        }
       }



interrupt[UART0RX_VECTOR] void usart0_rx (void)
{
  while ((IFG1 & UTXIFG0) == 0);        // USART0 TX buffer ready?
  TXBUF0 = RXBUF0;                      // RXBUF0 to TXBUF0


}





interrupt[PORT1_VECTOR] void key_p1(void)
      {
      uchar key_;
      uchar i=0;
      P1IFG=0;
      key_=key();
      LCDMEM[6]=distab[key_];
      disbuffer[0]=key_;
      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -