历史上的今天
今天是:2025年03月05日(星期三)
2020年03月05日 | MSP430停车位感应装置设计
2020-03-05 来源:eefocus
硬件:MSP430f5529,光电传感器,数码管(共阴极)
#include /*********************************************************************** 红外光电传感器输入信号到P2.0,模拟车的信号,当用手遮挡时输入高电平, 系统检测到上升沿,进入寄存器中断,P1.0灯亮,接着在寄存器中断中使能定时器的 捕获/比较寄存器(TA0CCTL0),定时器开始计时,数码管开始滚动数字,当把手挪开后, 传感器输入低电平,系统检测到下降沿,再次进入寄存器中断,P1.0取反,灯灭,接着 禁止定时器的捕获/比较寄存器(TA0CCTL0),定时器停止计时,数码管停止滚动,直到 下次上升沿到来 ************************************************************************/ unsigned char i=0,j=0,k=0,key=0; const unsigned char num[10]={0xfc,0x90,0x7a,0xda,0x96,0xce,0xee,0x9c,0xfe,0xde}; //数码管管脚:DP,g,f,a,b,e,d,c 分别对应 P3.0,P3.1,P3.2,P3.3,...,P3.7 void delay(int ms) { while(ms--) for(i=0;i<120;i++); } void main( void ) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P1DIR |= BIT0; //定义P1.0为输出,默认为输出高电平 P1OUT ^= BIT0; //初始化的时让P1.0输出低电平 P2IE |= BIT0; //中断使能P2.0 P2IES |= BIT0; //选择中断标志为P2.0 _BIS_SR(LPM0_bits+GIE); //开启中断,并让CPU休眠 } #pragma vector = TIMER0_A0_VECTOR //CCR0中断程序 __interrupt void Timer0_A(void) { j++; if(j>9) j=0; P3OUT = num[j]; //数码管开始计数输出 } #pragma vector = PORT2_VECTOR //寄存器中断程序 __interrupt void PORT2_ISR(void) { key = P2IFG&BIT0; //按键防抖 delay(10); //自定义的延时函数 if((P2IFG&BIT0)==key) P1OUT ^= 0x01; //上升沿输出高电平,下降沿输出低电平 P2IFG=0; //退出中断前必须手动清除IO口中断标志 k = j; j = 0; //让数码管每次都从0开始计数 TA0CTL |= TASSEL_1+MC_1+TAIE+ID_0+TACLR; //选择ACLK时钟信号,增计数模式,中断使能,一分频,自动复位 TA0CCTL0 ^= CCIE; //捕获/比较寄存器使能与禁止 TA0CCR0 = 32768; //ACLK计数32768次为一秒 P3DIR = 0XFF; //定义P3为输出,默认为输出高电平,整个P3都接的是数码管 P3OUT = num[k]; //初始化时让P3保持输出停止计数前的最后一个数 } 红外光电传感器如图:
史海拾趣
|
电解电容在电路板掉电了电容还是有300V电压。 用你的坏表笔中间串接一个30K的电阻,修板子时先把大电容的电放了就可以了,不然就会有 你的教训。没大电容的话直接用手放也不错。 电容容量大了放电慢 有些电路的放电电阻很大,电解电容放电需几 ...… 查看全部问答> |
|
重新看一遍backlight背光驱动 发现几个问题请教各位: 1、pBKLinfo->hCoreDll = LoadLibrary(TEXT(\"coredll.dll\")); if (NULL != pBKLinfo->hCoreDll) { &n ...… 查看全部问答> |
|
我根据下述步骤创建ram文件系统: char *ramDiskDevName = \"/ram0\" ; CBIO_DEV_ID cbio ; cbio = ramDiskDevCreate((unsigned char *)RAM_DISK_ADDRESS, 128, 1024* ...… 查看全部问答> |
|
我用mini2440的串口FIFO模式, 从电脑上的SSCOM32发来txt文件, 开发板上接收, 为什么最多只能收到255个字节, 一旦超过256就收不到了?但是如果发225k的bmp图片, 可以正常接收, 解析后可以显示。请高手解答啊。… 查看全部问答> |
|
EDIT控件数据光标选中数字反向 后 改变当前数字(ucgui界面 EDIT数据光标选中数字反向 后 改变当前数字,如 1234.56中3 选中及反向显示。同时通过控制键,修改此(3)值 ,其范围(0~9)修改,在ucos+ucgui3.9怎么修改???… 查看全部问答> |
|
static const int coeffslp[9] = { 5225, 5175, 7255, 9453, 11595, 13507, 15016, 15983, 16315 }; // Highpass FIR filter coefficients for 17 taps to filter < 2Hz static const int coeffshp[9] = { &nb ...… 查看全部问答> |




