#include<reg51.h>
#include<LCD1602.h>
#define uchar unsigned char
#define uint unsigned int
uchar count,jb0,jb2,jb3,jb4,h;
uchar count,jb0_ang,jb2_ang,jb3_ang,jb4_ang,h;
sbit key0=P0^0;
sbit key1=P0^1;
sbit key2=P0^2;
sbit key3=P0^3;
sbit key4=P0^4;
sbit key5=P0^5;
sbit key6=P0^6;
sbit key7=P0^7;
sbit pwm1=P3^4;
sbit pwm2=P3^5;
sbit pwm3=P3^6;
sbit pwm4=P3^7;
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void Init_Timer1()
{
TMOD |=0x10;
EA=1;
ET1=1;
TR1=1;
}
void main(void)
{
LCD_initial();
LCD_set_position(0);
LCD_prints("1:");
LCD_set_position(8);
LCD_prints("2:");
LCD_set_position(0x40);
LCD_prints("3:");
LCD_set_position(0x40+8);
LCD_prints("4:");
Init_Timer1();
jb0=3;jb2=3;jb3=3;jb4=3;
while(1)
{
if(key0 == 0)
{
jb0++;
if(jb0>=8)jb0=8;
while(key0 == 0);
}
if(key1 == 0)
{
jb0--;if(jb0<=3)jb0=3;
while(key1 == 0);
}
if(key2 == 0)
{
jb2++;if(jb2>=8)jb2=8;
while(key2 == 0);
}
if(key3 == 0)
{
jb2--;if(jb0<=3)jb0=3;
while(key3 == 0);
}
if(key4 == 0)
{
jb3++; if(jb2>=8)jb2=8;
while(key4 == 0);
}
if(key5 == 0)
{
jb3--;if(jb3<=3)jb3=3;
while(key5 == 0);
}
if(key6 == 0)
{
jb4++;if(jb4>=8)jb4=8;
while(key6 == 0);
}
if(key7 == 0)
{
jb4--;if(jb4<=3)jb4=3;
while(key7 == 0);
}
LCD_set_position(2);//LCD_printc('1');LCD_printc('2');
switch(jb0){
case 3:LCD_printc('-');LCD_printc('9');LCD_printc('0');
break;
case 4:LCD_printc('-');LCD_printc('8');LCD_printc('0');
break;
case 5:LCD_printc('-');LCD_printc('3');LCD_printc('2');
break;
case 6:LCD_printc('+');LCD_printc('1');LCD_printc('5');
break;
case 7:LCD_printc('+');LCD_printc('6');LCD_printc('2');
break;
case 8:LCD_printc('+');LCD_printc('9');LCD_printc('0');
break;
}
LCD_set_position(10);//LCD_printc('1');LCD_printc('2');
switch(jb2){
case 3:LCD_printc('-');LCD_printc('9');LCD_printc('0');
break;
case 4:LCD_printc('-');LCD_printc('8');LCD_printc('0');
break;
case 5:LCD_printc('-');LCD_printc('3');LCD_printc('2');
break;
case 6:LCD_printc('+');LCD_printc('1');LCD_printc('5');
break;
case 7:LCD_printc('+');LCD_printc('6');LCD_printc('2');
break;
case 8:LCD_printc('+');LCD_printc('9');LCD_printc('0');
break;
}
LCD_set_position(0x42);//LCD_printc('1');LCD_printc('2');
switch(jb3){
case 3:LCD_printc('-');LCD_printc('9');LCD_printc('0');
break;
case 4:LCD_printc('-');LCD_printc('8');LCD_printc('0');
break;
case 5:LCD_printc('-');LCD_printc('3');LCD_printc('2');
break;
case 6:LCD_printc('+');LCD_printc('1');LCD_printc('5');
break;
case 7:LCD_printc('+');LCD_printc('6');LCD_printc('2');
break;
case 8:LCD_printc('+');LCD_printc('9');LCD_printc('0');
break;
}
LCD_set_position(0x4a);//LCD_printc('1');LCD_printc('2');
switch(jb4){
case 3:LCD_printc('-');LCD_printc('9');LCD_printc('0');
break;
case 4:LCD_printc('-');LCD_printc('8');LCD_printc('0');
break;
case 5:LCD_printc('-');LCD_printc('3');LCD_printc('2');
break;
case 6:LCD_printc('+');LCD_printc('1');LCD_printc('5');
break;
case 7:LCD_printc('+');LCD_printc('6');LCD_printc('2');
break;
case 8:LCD_printc('+');LCD_printc('9');LCD_printc('0');
break;
}
}
}
void Timer0_isr(void) interrupt 3 using 1
{
TH1=(65536-250)/256;
TL1=(65536-250)%256;
if(count<jb0)
pwm1=1;
else
pwm1=0;
if(count<jb2)
pwm2=1;
else
pwm2=0;
if(count<jb3)
pwm3=1;
else
pwm3=0;
if(count<jb4)
pwm4=1;
else
pwm4=0;
count++;
count=count%80;
}
51单片机Protues仿真舵机,可以通过按键实现4个舵机角度的变化,并在LCD1602液晶显示舵机角度。仿真+程序。
3星 · 超过75%的资源 需积分: 45 46 浏览量
2017-06-04
20:11:11
上传
评论 17
收藏 62KB RAR 举报
迷离的眼神
- 粉丝: 45
- 资源: 48
最新资源
- 鸢尾花(iris)数据集
- %E8%A7%86%E9%A2%91%E8%BD%AC%E9%9F%B3%E9%A2%9120240424092849.mp3
- 数据库中的分组查询及数据筛选
- J185-VB一款SOT23封装P-Channel场效应MOS管
- 计算整数各位数字之和,利用java代码实现
- J185-T2B-VB一款SOT23封装P-Channel场效应MOS管
- map20231226Kalmanfilter.ipynb
- J185-T1B-VB一款SOT23封装P-Channel场效应MOS管
- ASME Y14.5-2018 尺寸与公差标注 中文版
- J185-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈