资源简介
红外遥控小车代码的实现,可以使用红外模块遥控小车的加减速和转向,另外程序还附带了车速的显示模块。可以控制小车的转速和方向,控制小车的行进。主要是利用红外原理。
代码片段和文件信息
#include /* common defines and macros */
#include /* derivative information */
#pragma link_INFO DERIVATIVE “mc9s12xs128“
#define uint unsigned int
#define uchar unsigned char
#define DJ_MID_RUDDER 4500 //最右4160最左4900
#define DJ_MID_CAMERA 4500 //最右1200最左6900
#define in_y PTIH_PTIH7
unsigned char ly_ct=0;
unsigned char ly_flag=1;
unsigned char ly_lhj[4];
uchar table[]= {0xc00xf90xa40xb00x990x920x820xf80x800x90};//表:共阳数码管 0-9
#define H1 PT1AD0_PT1AD07 //片选
#define H2 PT1AD0_PT1AD06
#define H3 PT1AD0_PT1AD05
#define H4 PT1AD0_PT1AD04
#define DA PT1AD0_PT1AD03 //数据输出
#define SC PT1AD0_PT1AD02 //移位时钟
#define ST PT1AD0_PT1AD01 //锁存信号
//超频到48MHz
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)即 锁相环时钟=2*16*(2+1)/(1+1)=48MHz
{
REFDV=0x01; //总线时钟=48/2=24MHz
SYNR=0x02;
while(!(CRGFLG&0x08)); //wait until pll_lock=0;锁相环频率为锁定;
CLKSEL=0x80; //置位PLLSEL=1;选定锁相环时钟;
}
void delay(int time){//0.1ms
uint i;uint j;
for (i=0;ifor (j=0;j<400;j++);
ly_ct++;
}
void delayus(int time){//1us
uint i;uint j;
for (i=0;ifor (j=0;j<4;j++);
ly_ct++;
}
//PWM初始化
void PWM_Init(void)
{
PWME=0x00;
PWMCTL=0xF0; ///级联01234567
PWMPRCLK=0x22; /// A时钟、B时钟为总线时钟的1/4分频 A=B=24M/4=6M
PWMSCLA=0x01; //时钟SA=时钟A/2/1=3M 时钟SA =时钟A/(2*PWMSCLA)
PWMSCLB=0x01; //时钟SB=时钟B/2/1=3M 时钟SB =时钟B/(2*PWMSCLB)
PWMCLK=0xF0; ////时钟A控制01,B控23,SA控制45,SB控制67
PWMPOL=0xFF; ///对外输出波形先是高电平然后再变为低电平
PWMCAE=0x00; ///左对齐输出
PWMPER23=600; //pwm3控制 PWM3_Period=6M/600=10KHZ
PWMDTY23=0;
PWMPER01=600; //pwm1控制 PWM1_Period=6M/600=10KHZ
PWMDTY01=0;
PWMPER45=60000; //45摄像头舵机 频率为3MHz/60000=50Hz 周期为20ms
PWMDTY45=DJ_MID_CAMERA; ///摄像头舵机初值归中
PWMPER67=60000; //67方向舵机 频率为3MHz/60000= 50Hz 周期为20ms
PWMDTY67=DJ_MID_RUDDER; ///方向舵机初值归中
PWME=0xFF; //启动PWM
}
void PH7_Init(void){
PPSH_PPSH7=0;//0下降沿触发
PIEH_PIEH7=0;//中断disable
DDRH_DDRH7=0;//输入
PTIH_PTIH7=0;//input reg
}
void IO_Init(void){
DDR1AD0=0xFF;
RDR1AD0=0XFF;
}
void output(uchar dat) //移出一字节
{
uchar i;
for(i=0;i<8;i++)
{
SC=0;
if((dat)&(0x80))
DA=1;
else
DA=0;
SC=1;
dat<<=1;
}
}
void display(uint data){
uint data_lowdata_middata_highi;
data_low=data%10; //个位
data_mid=(data/10)%10;//十位
data_high=data/100;//百位
//H3=1;
H4=1;
ST=0;
for(i=2;i>1;i--){
H1=1;
H3=1;
H2=0; //十位
output(table[data_mid]);
ST=1;
delay(50);ST=0;
}
for(i=2;i>1;i--){
H1=1;
H2=1;
H3=0; //个位
output(table[data_low]);
ST=1;
delay(50);ST=0;
}
for(i=2;i>1;i--){
H2=1;
- 上一篇:温度场分析
- 下一篇:软件项目开发报价模板
相关资源
- springboot教程项目代码
- 服务端代码Server
- BC26-STM32系列源代码
- 美赛模型代码和注释
- 串口调试助手源代码详细中文注释
- K60中文完整版.zip
- 卷积码软硬判决误码率曲线及其代码
- 合成孔径雷达成像与算法实现含代码
- 入侵检测系统IDS,配套源代码分析
- 水平集牛人李春明老师文章代码
- 使用SerialPort类编写的串口调试助手源
- 基于神经网络的人脸识别方法包含代
- 现代控制系统中文12版+课后答案(英
- 代码大全2中文版高清晰完美PDF版,索
- 《数据科学中的R语言》中文PDF源代码
- Game Engine Gems Volume 1 ~ 3合集&代码Part
- Game Engine Gems Volume 1 ~ 3合集&代码Part
- Bitcoin代码整体框架(根据源码分析)
- 红外变焦设计,设计培训
- 飞机小目标红外图像
- OpenCV3.4.4 源代码
- 深入浅出强化学习:原理入门 高清
- slam高博随书代码slambook-master.rar
- STM32F407实现鸣志步进电机S型加速实现
- 《程序员代码面试指南》-左程云(高
- 30多个漂亮的各类型网站源代码打包分
- 尚硅谷大数据之Zookeeper视频笔记+代码
- h.266参考代码VTM1.1已编译
- Scikit-Learn与TensorFlow机器学习实用指南
- 奔跑吧 Linux内核:基于Linux 4.x内核源
评论
共有 条评论