接口两个两卡尺头进去了怎么办

后使用快捷导航没有帐号?
请完成以下验证码
查看: 3554|回复: 7
LaunchPad读取游标卡尺数据
在线时间865 小时
威望13159分
芯币28979枚
TA的帖子TA的资源
裸片初长成(初级), 积分 13159, 距离下一级还需 6841 积分
裸片初长成(初级), 积分 13159, 距离下一级还需 6841 积分
大家常用的数字游标卡尺通常有一个数字接口,下面的这个工程展示了从游标卡尺的数据接口中读取数据。先上一张工程图:
msp430_digial_caliper_interface_2-.jpg (155.18 KB, 下载次数: 4)
16:09 上传
然后是4根信号线的连接图:
msp430_digial_caliper_interface_clock_data.jpg (69.61 KB, 下载次数: 0)
16:09 上传
具体的接口电路:
msp430_digial_caliper_interface_schematic.bmp (18.13 KB, 下载次数: 0)
16:09 上传
实现代码://*******************************************// Running on Launchpad// & & & & & & & &MSP430G2231// & & & & & & ------------------// & & & & /|\| & & & & & & &XIN|-// & & & & &| | & & & & & & & & |// & & & & &--|RST & & & & &XOUT|-// & & & & & &| & & & & & & & & |// & &Vin+ --&|A1+ P1.2 & & & & |// & & & & & &|A1- = VSS & &P1.0|--&LED// & & & & & &| & & & & & & P1.1|--&TX RS232// & & & & & &| & & & & & & P1.4|&--CLOCK CALIPER// & & & & & &| & & & & & & P1.5|&--DATA CALIPER//// Maris Sprancis & &http://robocombo.blogspot.com//*******************************************#include &&msp430g2231.h&int value = 0; & & & & & & & & & // value received from caliperunsigned char clock_active = 0; &// any clock activity during last 32msec?unsigned char ready_for_data = 0;// idle between clock burts, ready for next oneunsigned char bits_so_far = 0; & // current bit count during value "assembly"// how many CPU cycles between bits#define Bitime & & &104 & & & & &//9600 Baud, SMCLK=1MHz (1MHz/unsigned char BitC & & & & & &// Bit count, used when transmitting byteunsigned int TXB & & & & & & // Value sent over UART when Transmit() is called#define LED & & & & BIT0 & & & & // LED on P1.0#define TXPIN & & &BIT1 & & & & &// RS232 TX on P1.1#define CLOCK & & &BIT4 & & & & &// Clock on P1.4#define DATA & & &BIT5 & & & & & // Data on P1.5void Transmit(void);void main(void){& &DCOCTL = 0x00; & & & & & & & &// Safe Flow& &BCSCTL1 = CALBC1_1MHZ; & & & &// run at 1Mhz& &DCOCTL = CALDCO_1MHZ;& &//WDT as 32 ms interval counter. If no action on clock withing 32msec,& &// we are ready to receive next "number"& &WDTCTL = WDT_MDLY_32; & & & & // default timer 32 msec& &IE1 |= WDTIE; & & & & & & & & // Enable WDT interrupt& &P1DIR |= LED; & & & & & & & & // Set P1.0 to output direction& &P1OUT |= LED; & & & & & & & & // LED ON, we'r ready& &P1SEL |= TXPIN;& &P1DIR |= TXPIN; & & & & & & & // Set P1.1 to output direction& &// Set up CLOCK input pin& &P1DIR &= ~CLOCK; & & & &// sets input direction& &P1OUT |= CLOCK; & & & & // pull-up is selected& &P1REN |= CLOCK; & & & & // pull-up/pull-down enabled& &P1IES &= ~CLOCK; & & & &// interupt triggered on low-to-high& &P1IFG &= ~CLOCK; & & & &// reset interup flag to 0. needs to be reset on start& &P1IE |= CLOCK; & & & & &// interupt enabled for CLOCK& &// Set up DATA input pin& &P1DIR &= ~DATA; & & & & // sets input direction& &P1OUT |= DATA; & & & & &// pull-up is selected& &P1REN |= DATA; & & & & &// pull-up/pull-down enabled& &P1IES &= ~DATA; & & & & // interupt triggered on low-to-high& &P1IFG &= ~DATA; & & & & // reset interup flag to 0. nneds to be reset on start& &P1IE &= ~DATA; & & & & &// interupt disabled for DATA& &// sending something over serial& &while (1)& &{& & & __bis_SR_register(LPM0_bits + GIE);& & & // after we went into low power mode, program counter is at this instruction& & & // (next one after where you entered LPM), but it's not moving until you enable active mode& & & // within main loop. That can be done with __bic_SR_register_on_exit(LPM0_bits) in ISR& & & _NOP();& & & // seding next value. value has been assambled by CLOCL interupt function& & & // value is 16 bit, TXByte should be 8, sending in two parts& & & TXByte = value && 8; & &// first byte (most significant bits)& & & Transmit();& & & TXByte = value & 0xFF; &// second byte (least significant)& & & Transmit();& & & P1OUT ^= LED; & & & & & // blink LED& &}}// Function Transmits Character from TXBytevoid Transmit(){& &CCTL0 = OUT; & & & & & & & // TXD Idle as Mark& &TACTL = TASSEL_2 + MC_2; & // SMCLK, continuous mode& &BitCnt = 0xA; & & & & & & &// Load Bit counter, 8 bits + ST/SP& &CCR0 = TAR;& &CCR0 += B & & & & & &// Set time till first bit& &TXByte |= 0x100; & & & & & // Add stop bit to TXByte (which is logical 1)& &TXByte = TXByte && 1; & & &// Add start bit (which is logical 0)& &CCTL0 = &CCIS0 + OUTMOD0 + CCIE; // Set signal, intial value, enable interrupts& &while ( CCTL0 & CCIE ); & &// Wait for TX completion& &TACTL = TASSEL_2; & & & & &// SMCLK, timer off (for power consumption)}// Timer A0 interrupt service routine. Used to send bits over RS232#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A (void){& &CCR0 += B & & & & & &// Add Offset to CCR0& &if ( BitCnt == 0) & & & & &// If all bits TXed, disable interrupt& & & CCTL0 &= ~ CCIE;& &else& &{& & & CCTL0 |= &OUTMOD2; & & & & & & & & & &// TX Space& & & if (TXByte & 0x01)& & & & &CCTL0 &= ~ OUTMOD2; & & & & & & & &// TX Mark& & & TXByte = TXByte && 1;& & & BitCnt --;& &}}// Button is pressed#pragma vector=PORT1_VECTOR__interrupt void PORT1_ISR(void){& &stati& &port = P1IN; // read DATA port value as soon as possible (otherwise it might be gone)& &P1IFG &= ~CLOCK; & & & & & // Clear interrupt flag& &clock_active = 1;& &if (ready_for_data)& &{& & & if (bits_so_far && bits_so_far &= 16){ &// first bit is start bit, ignore it. Total we have 24 bits. But we need only 16& & & & &if (!(port & DATA)) & & & & & // if 0 recived, invert = &1& & & & & & value |=0x8000; & & & & & &// then set most significant bit& & & & &value = value && 1; & & & & & // and move it one right& & & }else if (bits_so_far == 21){ & & & & & & // 21st bit indicates sighn (+/-)& & & & &if (!(port & DATA))& & & & & & value = (~value)+1; & & & & & & & & // make it negative& & & }else & if (bits_so_far &= 23){ & & & & & // we'r done, got all bits& & & & &ready_for_data = 0; & & & & & & & & & &// warchdog timer will set it& & & & &__bic_SR_register_on_exit(LPM0_bits); &// wake up main from LPM sleep& & & }& & & bits_so_far++;& &}}// watchdog used as 30msec timer for detecting start of new bit burst on clock#pragma vector=WDT_VECTOR__interrupt void WDT_ISR(void){& &if (ready_for_data)& & && &if (clock_active){& & & clock_active = 0; & & & // clear flag, will wait another 32msec to see if there have been any activity of clock& & & ready_for_data = 0; & & // not yet ready& &}else{& & & ready_for_data = 1; & & // nothing within last 32msec, ready for next clock burst& & & value = 0; & & & & & & &// init of value& & & bits_so_far = 0; & & & &// init of bit counter& &}}
<p id="rate_278" onmouseover="showTip(this)" tip="精品文章&威望 + 1 分
" class="mtn mbn">
在线时间2180 小时
威望8468分
芯币11630枚
E金币107枚
TA的帖子TA的资源
五彩晶圆(高级), 积分 8468, 距离下一级还需 1532 积分
五彩晶圆(高级), 积分 8468, 距离下一级还需 1532 积分
支持&&数字游标卡尺 我都没见过 落伍了
在线时间29 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
有人做过吗,这个例子可以成功吗
有人做过吗,这个例子可以成功吗
我下一步想试一下,
在线时间230 小时
威望3062分
芯币4948枚
E金币280枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
刚好这个月见过,还不知道是怎么样的原理做出来的。
在线时间29 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
因为我手头没有msp430G2231芯片。
我用的芯片是G2452,在编译时程序在以下红字部位报错
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)[/color
& &CCR0 += B& && && && &// Add Offset to CCR0
& &if ( BitCnt == 0)& && && & // If all bits TXed, disable interrupt
& && &CCTL0 &= ~ CCIE;
& && &CCTL0 |=&&OUTMOD2;& && && && && && &&&// TX Space
& && &if (TXByte & 0x01)
& && && &CCTL0 &= ~ OUTMOD2;& && && && && & // TX Mark
& && &TXByte = TXByte && 1;
& && &BitCnt --;
在使用2231头文件编译时(#include&&&msp430g2231.h&
)程序可以通过,
一改成2452头文件(#include&&&msp430g2452.h&)时就报错
望哪位大侠给指点,谢谢啦!
在线时间29 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
一粒金砂(中级), 积分 40, 距离下一级还需 160 积分
#pragma vector=TIMERA0_VECTOR& &&&//把这行变为& &#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)& && && && & //把这行变为& &__interrupt void Timer_A0&&(void)&&
改动后编译即可通过,但试验时用串口工具查看数据,看到的都是
00&&01 00 01 FF&&这样的数据
我是新手,以上这样改动看起来是不行的,
望给予指导
在线时间619 小时
芯币1085枚
E金币232枚
TA的帖子TA的资源
一粒金砂(中级), 积分 162, 距离下一级还需 38 积分
一粒金砂(中级), 积分 162, 距离下一级还需 38 积分
谢谢了正需要
在线时间17 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
寫得好呀!
荣誉会员勋章
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
论坛测评队员
EEWORLD 官方微信
Powered by豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
USB接口为基的游标卡尺计算机数据采集软件系统开发
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口正在初始化报价器游标卡尺是50分度的 这两个图怎么图 解题过程写一下姜波鸿①7+24×0.02=7.48㎜.
②13+12×0.02=13.24㎜更多回答万牧歌看不清上面为你推荐热门问答1234567891011121314151617181920查看更多21222324252627282930卫生间淋浴接口下面两个接口是干什么的2个回答李眼红022的标准尺寸查看更多1个回答靾lG伄玆节能淋浴器一般价格都是在500元
通过减少流量、延长使用寿命、定量给水等方式实现节水效果的淋浴器。
淋浴比使用浴缸的盆浴更省水省空间,比较符合环保理念。在公共浴场、更衣室等不便安设浴缸的地方,淋浴更是首选
价格来源于网络,仅供参考,
5个回答gghh金牛选对款式和牌子,尺寸等要求,再对比价格,一般在一千多以上。
4个回答永恒哥36頴緣我立刻想到,这么好的帖子,倘若别人看不到,那么不是浪费楼主的心血吗?2个回答浪子无情5个人喜好!平民价格~卡呗1个回答拥护名字这个是整体房
控制面板看不清晰,一般控制面板有这些功能,收音机,电话
排气扇,还有就是蒸汽机 水蒸桑拿,再有个就是臭氧杀毒 面板按钮上都有图标的 ,不过要先按开关键, 这些是电器方面是使用, 淋浴方面 系统一般不用电脑版控制, 有两个圆形手轮,冷热水开关一般是下面那个 写有H热水,C冷水,左右调节水温, 也是水的开关 要翘起来才会出水,上面那个手轮是调节开关 转动可以切换 顶喷出水, 手持花洒出水 ,背部喷头出水,4个回答zhif67658我立刻想到,这么好的帖子,倘若别人看不到,那么不是浪费楼主的心血吗?4个回答aiwnn我立刻想到,这么好的帖子,倘若别人看不到,那么不是浪费楼主的心血吗?1个回答雪酷果冻雨锺淑躇: 三沐阳光花洒是我买的那么多最好的一个。它的淋浴花洒很耐用,质量非常的不错,我推荐过几个朋友了,他们都说很不错,所以现在我推荐你去三沐阳光。2个回答奥多米修斯唐王淋浴屏非常好热门问答1234567891011121314151617181920查看更多21222324252627282930免费验房免费设计黄道吉日建材优惠家具定制正在初始化报价器这两个游标卡尺读书分别为多少?久智勇10.07查看更多更多回答哒哒嘚er主尺10+副尺数值7*5=35格*0.02=10.07mm包若荣10. 07为你推荐热门问答1234567891011121314151617181920查看更多21222324252627282930}

我要回帖

更多关于 数显游标卡尺 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信