完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
3个回答
|
|
void Init_Devices(void)
{ WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF) { while(1); // If calibration constants erased, trap CPU!! } //设置时钟,内部RC振荡器。 DCO:8MHz,供CPU时钟; SMCLK:1MHz,供定时器时钟 BCSCTL1 = CALBC1_8MHZ; // Set range DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO IFG1 &= ~OFIFG; // Clear OSCFault flag BCSCTL2 |= DIVS_3; // SMCLK = DCO/8 Port_Init(); //初始化I/O口 Timer0_Init(); //初始化定时器0 _BIS_SR(GIE); //开全局中断 //all peripherals are now initialized } void Timer0_Init(void) { // Configure Timer0 TA0CTL = TASSEL_2 + MC_1 ; // Source: SMCLK=1MHz, UP mode, TA0CCR0 = 5000; // 1MHz时钟,计满5000次为 5 毫秒 CCTL0 = CCIE; // CCR0 interrupt enabled } // Timer0_A0 interrupt service routine #pragma vector=TIMER0_A0_VECTOR |
|
|
|
AD 装换 #include #define uchar unsigned char #define uint unsigned int #define CLR_RS P1OUT&=~BIT1 //RS = P1.1 #define SET_RS P1OUT|=BIT1 #define CLR_RW P1OUT&=~BIT2 //RW = P1.2 #define SET_RW P1OUT|=BIT2 #define CLR_EN P1OUT&=~BIT4 //EN = P1.4 #define SET_EN P1OUT|=BIT4 #define DATA P2OUT int p,ad,sum=0,v,i=0,state=0,b; uchar dis_num[],adc[]; void delay(long unsigned int time) { while(time--); //延时子程序 } void WriteCommandLcd(unsigned char wdata)//向1602液晶写入命令子程序; { CLR_RS; //RS清零,代表命令; CLR_RW; //RW清零; CLR_EN; //使能E清零; delay(100); //短暂延时,代替检测忙状态 SET_EN;//使能E置1; DATA=wdata;//送出命令或数据 delay(100);//短暂延时,代替检测忙状态 CLR_EN;//使能E清零,下降沿将命令或数据送入1602; } void WriteDataLcd(unsigned char wdata)//向1602液晶写入数据子程序; { SET_RS;//RS置1,代表数据; CLR_RW;//RW清零; CLR_EN;//使能E清零; delay(100); //短暂延时,代替检测忙状态 SET_EN;//使能E置1; DATA=wdata;//送出命令或数据 delay(100);//短暂延时,代替检测忙状态 CLR_EN;//使能E清零,下降沿将命令或数据送入1602; } //LCD初始化 void lcd_init(void) { DATA = 0; delay(1000); WriteCommandLcd(0x38);//显示模式设置,设置为16X2显示,5X7点阵,8位数据接口 delay(500); delay(500); WriteCommandLcd(0x01); //显示清屏 WriteCommandLcd(0x0c); //开显示,显示光标,光标不闪烁; WriteCommandLcd(0x06); //读写操作时地址自动加1 } /************************************************** ** 函数名称: display_xy ** 入口参数:x(unsigned char型),y(unsigned char型) ** 出口参数:无 ** 功能描述: 设置光标位置, x是行号,y是列号 ****************************************************/ void display_xy(unsigned char x,unsigned char y) { if(y==0x01) { x = x + 0x80+0x40; } else { x = x+0x80; } WriteCommandLcd(x); } /********************************************************************* ** 函数名称: display_string ** 入口参数:x(unsigned char型),y(unsigned char型),s(指针型) ** 出口参数:无 ** 功能描述: 在具体位置显示字符串,以/0结束,x是列号,y是行号 **********************************************************************/ void display_string(unsigned char x,unsigned char y,unsigned char *s) { display_xy(x,y); while(*s) { WriteDataLcd(*s); s++; } } void count_num(unsigned int n) //显示无符号数字 { dis_num[0]=n/1000+0x30; dis_num[1]=n/100%10+0x30; dis_num[2]=n/10%10+0x30; dis_num[3]=n%10+0x30; dis_num[4]='m'; dis_num[5]='V'; dis_num[6]=' |