#include #include #define uchar unsigned char #define uint unsigned int #define LED P1 //因为步进电机是减速步进电机,减速比的1/64 , //所以N=64时,步进电机主轴转一圈 //使用前请短接J2跳线帽,串口助手设置为比特率9600,无校验位,停止位1,发送数据为16进制形式 uchar code CCW[8] ={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆时钟旋转相序表 uchar code CW[8] ={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正时钟旋转相序表 uchar code table[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管显示数字表 sbit P2_0 = P2^0; sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit FMQ=P3^6; //蜂鸣器 uchar flag_rec; uint data_rec; /********************************************************************* 中断服务特殊功能寄存器配置 *********************************************************************/ void init_interrupt() { TMOD=0x20; //用定时器1设置串口波特率 9600 TH1=0xfd; //T1定时器装初值 TL1=0xfd; //T1定时器装初值 TR1=1; //启动T1定时器 REN=1; //串口初始化 SM0=0; //设定串口工作方式1 SM1=1; //设定串口工作方式1 EA=1; //开启总中断 ES=1; //开启串口中断 } /************************************************************* 串口中断函数 **************************************************************/ void receive() interrupt 4 { RI=0; //RI清零;因为收到数据或者或者发送了数据会由硬件置1 data_rec=SBUF; //接收数据SBUF,将SBUF中的数据读走给data_rec,即将计算机的数据接收。 //a=SBUF; ES = 0; //关闭串口中断 flag_rec=1; //中断标志位置1 } /***************************************************************** 设置延时 ******************************************************************/ void delaynms(uint aa) { uchar bb; while(aa--) { for(bb=0;bb<115;bb++) //1ms基准延时程序 { ; } } } void delay500us() { int j; for(j=0;j<57;j++) { ; } } /******************************************* 蜂鸣器 ******************************************/ void beep() { uchar t; for(t=0;t<100;t++) { delay500us(); FMQ=!FMQ; //产生脉冲 } FMQ=1; //关闭蜂鸣器 } /*************************************** 正反转设计 ****************************************/ void motor_ccw_deta(uchar deta,uchar speed) //电机逆时针转deta度 deta=11时30度,deta=66d时180度 { uchar i; while(deta--) { for(i=0;i<8;i++) //数组循环一周 { P1=CCW[i]; delaynms(speed); //调节转速 } } } void motor_cw_deta(uchar deta,uchar speed) //电机顺时针转deta度 deta=11时30度,deta=66时180度 { uchar i; while(deta--) { for(i=0;i<8;i++) //内部循环一周 { P1=CW[i]; delaynms(speed); //调节转速 } } } void Digital_tube_display(uint num) { //4位数码管显示控制 uchar temp,count; temp = 0; count = 0; if(num > 999 || num < 0) return; while(num) { temp = num % 10; P0 = table[temp]; switch(count) //判断 { case 0:P2_3=0;break; //点亮第1个灯 case 1:P2_2=0;break; //点亮第2个灯 case 2:P2_1=0;break; //点亮第3个灯 case 3:P2_0=0;break; //点亮第4个灯 } delaynms(5); switch(count) //判断 { case 0:P2_3=1;break; //点亮第1个灯 case 1:P2_2=1;break; //点亮第2个灯 case 2:P2_1=1;break; //点亮第3个灯 case 3:P2_0=1;break; //点亮第4个灯 } num = num / 10; count++; } } /************************************************************** 中断处理函数 ****************************************************************/ void deal_interrupt_Date(uint dat) { SBUF=dat; //发送数据dat_rec到SBUF,即将单片机的数据发送到计算机 while(!TI); TI = 0; beep(); motor_cw_deta(11,1); //电机顺转deta度,deta=11时30度,deta=66时180度 delaynms(10*dat); //由于目前还没有找到如何传输255以上的数的方法,所以先乘以10 motor_ccw_deta(11,1); //电机逆转deta龋琩eta=11时30度,deta=66时180度 ES=1; //打开串口中断 flag_rec=0; } /************************************************************** 主程序 ****************************************************************/ void main() { init_interrupt(); Digital_tube_display(0); while(1) { Digital_tube_display(data_rec);
上一篇:用单片机数码管和矩阵按键实现密码锁功能
下一篇:一种利用串口51单片机远程升级 OTA
推荐阅读最新更新时间:2024-10-28 06:06
设计资源 培训 开发板 精华推荐
- AM6TW-4803SH35Z 3.3V 6瓦单路输出DC-DC转换器的典型应用
- 使用 Microchip Technology 的 MIC2772-L3T3YML 的参考设计
- AD8506ACBZ-REEL7 脉搏血氧计红色和红外电流源作为电压基准器件的缓冲器的典型应用电路
- 使用 MaxLinear, Inc 的 AS431L 的参考设计
- L3GD20H适配器板,标准DIL 24插座
- AM2F-0515SH52Z 15V 2 瓦 DC-DC 转换器的典型应用
- LTC3374IFE 8 通道 1A 多输出降压稳压器的典型应用电路
- LTM4622EV 4 至 20Vin、1.2V 两相并联 5A 降压模块稳压器的典型应用电路
- 使用 Microchip Technology 的 SY89535L 的参考设计
- SSM2602,评估板是一款适用于便携式数字音频应用的低功耗、高质量立体声音频编解码器
- mini LED芯片扩产加速 晶元光电明年提升50%
- 贸泽电子将亮相2021 ELEXCON深圳国际电子展
- IC分销商:8英寸产能吃紧将继续推升明年Q1的芯片价格
- 氮化镓对“双碳”能起何种作用?
- 用于汽车接口、安全和计算密集型负载FPGA的选择和使用
- 06-S3C2440学习之移植2012u-boot到S3C2440(移植过程一)新建单板+修改时钟+SDRAM+UART
- NVIDIA 发布适用于医疗设备和计算传感系统的 AI 计算平台
- tiny4412学习(四)之移植linux-设备树(1)设备树基础知识及GPIO中断
- 意法半导体推出多款天线匹配射频集成无源器件
- 以10倍计提升带宽与算力,sensAI 6.0为低功耗机器视觉应用立标杆
- 趣味电子技术史话之通信技术史——科技与人文的结合,传奇故事在这里!
- 观看福禄克计量校准视频 参与调查问卷好礼送!
- 邀请小伙伴一起学AM437x,好礼有你!
- 下载喽:PCIe要了解的10件事和识别协议的BSX系列BERTScope误码率测试仪技术资料
- DIY电子钟套件,有兴趣来做啊
- 【TI 嵌入式研讨会集锦】小站添加了很多新内容,欢迎提货!
- 等你报名做客黑科技直播间:基于 TI DLP®技术的工业创新应用介绍
- 有奖直播:Microchip适用于CryptoAuthentication™系列的可信任平台
- 调查:量身定制你的 M0 单片机!参与问卷有好礼!
- EEworld新春感恩回馈之ST新出道“高富帅”STM32F746G-DISCO 199元包邮