采用ATM89S52单片机来作为整机的控制单元。红外线探头采用市面上通用的发射管与及接收头,经过单片机调制后发射。铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,黑带采用光敏二极管对光源信号采集,再经过ADC0809转化为数字信号送到单片机系统处理。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,能很好地满足题目的要求。
课程设计论文的截图:
测角的程序:
- #include"reg51.h"
- #define uchar unsigned char
- #define uint unsigned int
- uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar code segnode[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
- #define digport P0
- #define dataport P1
- #define wordport P2
- #define r 45
- sbit eoc= P3^3;
- sbit clk= P3^4;
- sbit start= P3^6;
- sbit oe= P3^7;
- bit flag;
- uchar a[4]={0xff,0xff,0xff,0xff};//黑屏
- uchar dig=0x01;
- void delay(uint t)
- {for(;t<0;t--);}
- /*void display()
- {
- uchar i;
- wordport=0xff;
- for(i=0;i<4;i++)
- {
-
- wordport=a[i];
- digport=dig<<1;
- delay(300);
- }
- }*/
- void Display(void)
- {
- uchar i,k,select=0x01;
- for(i=0;i<=5;i++)
- { digport=select;
- wordport=a[i];
- select<<=1;
- for(k=0;k<=100;k++)//改
- {;}
- }
- }
- void time0() interrupt 1
- { clk=~clk; }
- void chuli()
- {
- unsigned long int da;
- //eoc=0;
- start=1;
- oe=1;
- da=dataport;
- delay(10);
- oe=0;
- // da=da*196;
- if(da<127)a[3]=0xbf;//128改127//127.5=127
- if(da>=127)a[3]=0xff;
- // if(da<5000||da>45000){da=0;}
-
- if(a[3]==0xff) {da=da-127; da=da*1961;} //}if(da>49000)da=50000;}
- if(a[3]==0xbf) {da=128-da; da=da*1961;}//128改127
-
- da=da*r;
- if(da>9000000)da=9000000;
- a[0]=seg[da/10000%10];
- if((da/1000%10)>5)
- a[0]=seg[da/10000%10+1];
- a[1]=segnode[da/100000%10];
- a[2]=seg[da/1000000];
- start=0;
- delay(10);
- }
- void main(void)
- { uchar k;
- delay(30);
- // IT1=1;EX1=1;
- TMOD=0x02;TH0=253;TL0=253;
- TR0=1;ET0=1;PT0=1;
- EA=1;
- //eoc=0;
- start=0;
- start=1;
- start=0;
- for(;;)
- {
- if(eoc) chuli();
- for(k=0;k<100;k++)
- { Display();}
- }
-
- }
复制代码
所有设计资料下载:
测障测角小车.rar
(126.75 KB, 下载次数: 17)
|