1.
给你个at89c51的程序,自己稍微改一下就可以了。
这个是用数码管显示的。#include MSP430是3.3V供电单片机,自然他的所有的I/O口的逻辑高电平就是3.3V的。你的LCD1602如果与3.3V的单片机连接,首先你的液晶屏要支持3.3V的逻辑电平。如果你的1602是5V供电的,那么他的数据端口一般也采用5V作为逻辑高电平,如果5V供电的LCD1602与3.3V的单片机连接,从理论上来说,5V的LCD1602应该无法识别3.3V的逻辑高电平,造成的后果就是1602无法接收到单片机发送的数据。不过在实际使用的时候,5V的LCD1602可能也偶尔因为某种原因识别到3.3V电平,在液晶屏上显示乱码甚至正确显示,但是一定很不稳定。 市场上有卖3.3V逻辑电平的1602,可以与MSP430这样的3.3V单片机连接,如果你只有5V供电的1602,还要与MSP430连接,直接连接肯定是不行的。这个时候你可以在这二者之间加电平转换芯片(比如74LVC4245),就可以实现3.3-5V的电平转换! 你的要求说的不是太清,没有说明当哪个IO口输入低时驱动蜂鸣器,也没有说明是高还是低电平驱动蜂鸣器。我这个程序的作用是p30输入低时,p67输出高,否则p67输出低,不合适的话,你只需稍微改下,即可满足你的要求 #include <msp430x14x.h>; //声明库 void main(void) //主函数 { WDTCTL=WDTPW+WDTHOLD; //关掉看门狗 P6DIR |=0x80; //设定P67为输出 P3DIR &=0xfe; //设定P30为输输入 while(1) { if(P3IN&0X01==0) P6OUT|=0x80; else P6OUT&=0x7f; } } 你是想开始记时间还是记下脉冲个数? 我理解为一个开关 控制定时! 关键是要把两个引脚连在一起比如p2.0 p2.1 那么程序如下 P2IFG = 0x00; //P2中断标志位清零 P2DIR &=~ (BIT0+BIT1); //为输入 P2IES |= BIT0; //P2.0选择下降沿中断 P2IES&=~BIT1; //P2.1上升沿中断 P2IE |= BIT0+BIT1; //打开P2.0中断使能 CCR0 = 32768/2+1; //设置定时器A的中断时间为0.5S(可改) TACTL = TASSEL_1 + MC_1; //计数时钟ACLK, 增计数模式8分频+ID_3 CCTL0 |= CCIE; #pragma vector=PORT2_VECTOR __interrupt void PORT2_ISR(void) { if(P2IFG & BIT0) { CCTL0&=~CCIE; } f(P2IFG & BIT1) { CCTL0 |= CCIE; } } /******************************************* 函数名称:TimerA_ISR 功 能:定时器A的中断服务函数 参 数:无 返回值 :无 ********************************************/ #pragma vector=TIMERA0_VECTOR __interrupt void TimerA_ISR(void) { //NUM++; //写计数程序吧 } 转载请注明出处育才学习网 » msp430f149高电平怎么写2.MSP430F149单片机和LCD1602怎么连接
3.求单片机msp430f149 C程序 :当I/O口输入低电平时,驱动蜂鸣器响 ,
4.最近再写一段程序关于msp430f149的,就是用定时器A计数,求解答,