#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
void turnLLL(void);//左转45度
void turnLL(void);//左转30度
void turnL(void);//左转15度
void turn(void);//居中
void turnR(void);//右转15度
void turnRR(void);//右转30度
void turnRRR(void);//右转45度
void delay(uint z);//延时0.1ms
void main()
{
uint i;
DDRA=0X00;
DDRB=0XFF;
DDRD|=0X30;
TCCR1A=0x91; //8位相位修正PWM 8000000/(64*2*256)=244.14hz
TCCR1B=0x03; //clk/64
OCR1A=250; //初值占空比100%
while(1)
{
PINA=i;
for(i=0;i<8;i++)
{
if(PINA==0xf7)//加速前进4灯1111,0111
{
OCR1A=170;//占空比100%/202
turn();//居中
}
if(PINA==0xef)//加速前5灯1110,1111
{
OCR1A=170;//占空比100%
turn();//居中
}
if(PINA==0xe7)//加速前进4、5灯1110,0111
{
OCR1A=170;//占空比100%
turn();//居中
}
if(PINA==0xcf)//速度稍减前进5、6灯1100,1111
{
OCR1A=170;//占空比90%/176
turnL();//左转-15度
}
if(PINA==0xdf)//速度稍减前进6灯1101,1111
{
OCR1A=120;//占空比90%/176
turnL();//左转-15度
}
if(PINA==0x9f)//速度再减前进6、7灯1001,1111
{
OCR1A=110;//占空比80%/150
turnLL();//左转-30度
}
if(PINA==0xbf)//速度再减前进7灯1011,1111
{
OCR1A=110;//占空比80%/150
turnLL();//左转-30度
}
if(PINA==0x3f)//速度减前进7、8灯0011,1111
{
OCR1A=90;//占空比70%/150
turnLLL();//左转-45度
}
if(PINA==0X7f)//速度稍减前进8灯0111,1111
{
OCR1A=90;//占空比70%/150
turnLLL();//右转45度
}
if(PINA==0xf3)//速度稍减前进3、4灯1111,0011
{
OCR1A=120;//占空比90%/176
turnR();//右转15度
}
if(PINA==0xfb)//速度稍减前进3灯1111,1011
{
OCR1A=120;//占空比90%/176
turnR();//右转15度
}
if(PINA==0Xf9)//速度再减前进2、3灯1111,1001
{
OCR1A=110;//占空比80%150
turnRR();//右转30度
}
if(PINA==0Xfd)//速度再减前进2灯1111,1101
{
OCR1A=110;//占空比80%/150
turnRR();//右转30度
}
if(PINA==0Xfc)//速度稍减前进1、2灯1111,1100
{
OCR1A=90;//占空比70%/150
turnRRR();//右转45度
}
if(PINA==0Xfe)//速度稍减前进1灯1111,1110
{
OCR1A=90;//占空比70%/150
turnRRR();//右转45度
}
}
}
}
/*-45度*/
void turnLLL()
{
uchar i;
DDRB=0XFF;
PORTB=0XFF;
for(i=0;i<5;i++)
{
PORTB&=~BIT(0);
delay(18);
PORTB|=BIT(0);
delay(4);
}
}
/*-30度*/
void turnLL()
{
uchar i;
DDRB=0XFF;
PORTB=0XFF;
for(i=0;i<5;i++)
{
PORTB&=~BIT(0);
delay(18);
PORTB|=BIT(0);
delay(6);
}
}
/*-15度*/
void turnL()
{
uchar i;
DDRB=0XFF;
PORTB=0XFF;
for(i=0;i<5;i++)
{
PORTB&=~BIT(0);
delay(18);
PORTB|=BIT(0);
delay(8);
}
}
/*0度居中*/
void turn()//居中
{
uchar i;
DDRB=0XFF;
PORTB=0XFF;
for(i=0;i<5;i++)
{
PORTB&=~BIT(0);
delay(18);
PORTB|=BIT(0);
delay(10);
}
}
/*15度*/
void turnR()
{
uchar i;
DDRB=0XFF;
PORTB=0XFF;
for(i=0;i<5;i++)
{
PORTB&=~BIT(0);
delay(18);
PORTB|=BIT(0);
delay(12);
}
}
/*30度*/
void turnRR()
{
uchar i;
DDRB=0XFF;
PORTB=0XFF;
for(i=0;i<5;i++)
{
PORTB&=~BIT(0);
delay(18);
PORTB|=BIT(0);
delay(14);
}
}
/*45度*/
void turnRRR()
{
uchar i;
DDRB=0XFF;
PORTB=0XFF;
for(i=0;i<5;i++)
{
PORTB&=~BIT(0);
delay(18);
PORTB|=BIT(0);
delay(17);
}
}
/*定时0.1MS*/
void delay(uint z)
{
uint i,j;
for(i=0;i<z;i++)
for(j=0;j<90;j++);
}
没有合适的资源?快使用搜索试试~ 我知道了~
ATMEGA16单片机寻迹小车程序及其原理图_51单片机(论文+开题报告+源代码+详解图).zip
共8个文件
txt:4个
ddb:4个
0 下载量 41 浏览量
2024-04-19
03:35:04
上传
评论
收藏 790KB ZIP 举报
温馨提示
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
ATMEGA16单片机寻迹小车程序及其原理图_51单片机(论文+开题报告+源代码+详解图).zip (8个子文件)
ATMEGA16单片机寻迹小车程序及其原理图
0022、ATMEGA16单片机寻迹小车程序及其原理图
小车程序
舵机.txt 2KB
小车程序.txt 731B
小车程序1.txt 3KB
小车程序END.txt 4KB
小车电路
电源电路1.ddb 404KB
电机驱动.ddb 2.9MB
传感器.ddb 1.15MB
电机控制.ddb 1.24MB
共 8 条
- 1
资源评论
小肥羊k
- 粉丝: 1394
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功