完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
将红外传感器感知距离用LCD显示,在小于30cm时,发出报警 相关代码及资源代码位置:https://github.com/duganlx/DSPADC0832模数转换和LCD显示 操作小记ADC0832相关函数#include #include #include #include#define INT8U unsigned char#define INT16U unsigned int#define INT32U unsigned long***it CS=P0^2; ***it CLK=P0^1; ***it DIO=P0^0;INT8U Get_AD_Result(){ INT8U i=0,dat1=0x00,dat2=0x00; CS=0;//片选 CLK=0;_nop_();_nop_(); DIO=1;//启动0832 CLK=1;_nop_();_nop_(); CLK=0;_nop_();_nop_(); DIO=1;//选择单通道还是双通道 CLK=1;_nop_();_nop_(); CLK=0;_nop_();_nop_(); DIO=0;//选择0还是1通道 CLK=1;_nop_();_nop_(); CLK=0; DIO=1;_nop_();_nop_(); //释放总线,准备采集 for(i=0;i<8;i++)//下降沿采集数据,从高位到低位 { CLK=1;_nop_();_nop_(); CLK=0; _nop_();_nop_(); dat1=(dat1<<1)|((INT8U)DIO); } for(i=0;i<8;i++)//下降沿采集数据,从低位到高位 { dat2=(dat2)|(((INT8U)DIO)<ADC0382相关函数#include#include#include#include#define INT8U unsigned char#define INT16U unsigned int#define INT32U unsigned long***it DS = P3^5; //数据串行输入端***it SH_CP = P3^6; //数据串行输入移位时钟信号,上升沿有效***it ST_CP = P3^7; //数据并行输出时钟信号,上升沿有效void serialInputData(INT8U dat){ INT8U i = 0; for(i=0; i<8; i++) { if(dat&0x80) //1000_0000 DS=1; else DS=0; dat=dat<<1; SH_CP=0; _nop_();_nop_(); SH_CP=1; _nop_();_nop_(); } SH_CP=0; _nop_();_nop_();}void paralledOutputData(){ ST_CP=0; _nop_();_nop_(); ST_CP=1; _nop_();_nop_(); ST_CP=0; _nop_();_nop_(); }主函数#include #include #include #include#define INT8U unsigned char#define INT16U unsigned int#define INT32U unsigned long#define MC 1388#define BC -5#define KC 2INT8U code segment7[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};INT8U numstr[4];***it beeppin = P1^0;extern INT8U Get_AD_Result();extern void serialInputData(INT8U dat);extern void paralledOutputData();//凤鸣void beep(){ INT8U i=0, j=150; beeppin = 1; for(i=0; i<60; i++) { beeppin = !beeppin; j=150; while(j--); }}//获取距离float getDistance(){ float d=0.00, sum=0, avg=0; INT8U i=0; for(i=0; i<10; i++) { sum = sum + Get_AD_Result(); } avg = (INT8U)(sum/10.0); d = ( (MC*1.0) / ((avg+BC)*1.0) ) - (KC*1.0); return d;}void distance2numstr(float d){ INT16U dis = (INT16U)(d*10); numstr[0] = dis/100+'0'; numstr[1] = ((dis/10)%10)+'0'; numstr[2] = dis%10+'0';}void main(){ float dis = 0; while(1) { dis = getDistance(); if(dis<30) beep(); distance2numstr(dis); serialInputData(~segment7[numstr[2]-'0']); serialInputData((~segment7[numstr[1]-'0'])&0x7F); serialInputData(~segment7[numstr[0]-'0']); paralledOutputData(); }}
只看该作者
举报
发布
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
3237 浏览 0 评论
RK3568教学实验箱_操作案例:5-19 超声波测距实验
790 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
3670 浏览 0 评论
DSP新手小白最简单的程序编译时报错
4431 浏览 1 评论
DSP28335移植官方IIC库读写EEPROM遇到问题
1371 浏览 1 评论
电子发烧友网
电子发烧友论坛
查看 »
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 01:54 , Processed in 0.628787 second(s), Total 46, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com