×
嵌入式 > 技术百科 > 详情

MSP430单片机1602液晶60秒计时程序

发布时间:2022-05-06 发布时间:
|

MSP430 单片机 1602液晶60秒计时程序

//**************************************************************

//             P3BIT5接RS)-- (BIT7接NE)-- (BIT6接RW)

//             P4口送数据 
// 
//                                           08-6-27 
//***************************************************** 
#include "msp430x22x4.h" 
unsigned char  table[]="0123456789"; 
unsigned char a=0,b=0,c=0,d=0,e=0,f=0; 
 char num,count=0;   
//***********************读写数据延时******************  
void delay(int z) 

    int x,y; 
    for(x=z;x>0;x--) 
        for(y=510;y>0;y--);  

//***********************写命令************************ 
void write_com(char com) 
{      
      P3OUT&=~BIT5;               //控制LCD的  R/S口此时为命令为-0        
        P4OUT=com; 
    delay(5);            
    P3OUT|=BIT7;               //控制LCD的  EN口-1       
    delay(5);     
       P3OUT&=~BIT7;                //控制LCD的  EN口-0 
        

//**********************写数据************************* 
void write_data(char date)        
{  
    P3OUT|=BIT5;       // R/S口此时为数据为-1       
    P4OUT=date; 
    delay(5);             
    P3OUT|=BIT7;               //EN口为-1        
    delay(5);     
       P3OUT&=~BIT7;                //EN口为-0     
         

//*********************液晶显初始化*********************** 
void init() 

        WDTCTL=WDTPW+WDTHOLD;                 //关看门狗 
        BCSCTL1 =CALBC1_1MHz;                 //设定DCO为1MHZ 
        DCOCTL =CALBC1_1MHZ; 
        
         TACTL=TASSEL1+TACLR+ID_3;         //定时器A时钟源为MCLK,\式 
         CCR0 =65500;                      //计数值为65535个ACLK周期 
         CCTL0|=CCIE; 
         TACTL|=MC_1; 
         P3SEL  = 0X00; 
         P3DIR  = 0XFF; 
         P3OUT = 0X00; 
         P4DIR = 0XFF; 
         P4SEL = 0X00; 
         P4OUT = 0X00; 
       
    P3OUT&=~BIT6;                // RW口为-0 
    P3OUT&=~BIT7;                //EN口为-0 
         
    write_com(0x38);//显示模式设置         
    write_com(0x0c); //显示开及光标设置 
        write_com(0x04); 
        write_com(0x01); //显示清屏            
       // _EINT(); 
        //_BIS_SR(GIE); 



//**************************主程序*******************// 
  
void main() 

  init();  
  for(;;) 
  { 
  //write_com(0x01);//清屏   
   write_com(0x80+0x05); 
    write_data(table[b]); 
    //delay(5); 
     write_com(0x80+0x06); 
    write_data(table[a]); 
    
  } } 


//*****************************定时中断函数************************ 

  #pragma vector =TIMERA0_VECTOR          //ccr0中断服务 
__interrupt void ta1_isr(void) 
{  
    count++; 
       CCTL0&=~CCIFG;   
    if(count!=2)return; 
    count=0; 
    a++; 
    if(a>9) 
    { 
          a=0;b++; 
    if(b>5) 
        { 
          a=0;b=0; 
        } 
        } 
        CCR0 =65535; 


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
灾难本可避免?美媒:波音偷改737Max防失速系统 少装一个传