久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
一個電機+藍牙+按鍵+PWM控制的小作品,大家看看可以給我什么建議
[打印本頁]
作者:
221
時間:
2017-6-3 20:12
標題:
一個電機+藍牙+按鍵+PWM控制的小作品,大家看看可以給我什么建議
無標題.png
(231.84 KB, 下載次數: 105)
下載附件
2017-6-3 20:12 上傳
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar ch,temp=0;
uchar news[]="gdmec--G1-717";
uchar speed[14]="Speed: r/s";
sbit K1=P1^1;//減速
sbit K2=P1^2;//加速
sbit K3=P1^3;//啟動
sbit K4=P1^4;//停止
sbit RS=P2^0; //指示命令、狀態或數據的引腳
sbit RW=P2^1; //讀寫引腳
sbit EN=P2^2; //使能引腳
sbit LED=P1^0;
sbit motor=P2^4;
uchar motornum=50;
bit stratflag;
//----------------------------------------------
void delay(uchar x)
{
while(x--);
}
void delay_ms(uchar x)
{
uchar i,y;
for(i=0;i<x;i++)
for(y=0;y<200;y++);
}
//----------------------------------------------
bit lcd1602_read_status()
{//讀取LCD1602的狀態,結果為0說明不忙,可以對LCD1602寫入數據或命令
uchar temp;
RW = 1; //RW=1為讀操作:單片機將LCD1602中的數據讀出來
delay(2);
RS = 0; //RS=0為讀寫命令或狀態,=1讀寫數據
delay(2);
EN = 1; //使能LCD1602
delay(2);
temp = P0;//將從LCD1602讀到的信息存入臨時變量temp中
delay(2);
EN = 0; //關LCD1602
delay(2);
return (bit)(temp&0x80);//返回讀到數據的最高位也即狀態位
}
//----------------------------------------------
void lcd1602_write_cmd(uchar cmd)
{//對LCD1602寫入命令的函數
while(lcd1602_read_status()!=0);
RW = 0;
delay(2);
RS = 0;
delay(2);
EN = 1;
delay(2);
P0 = cmd;
delay(2);
EN = 0;
delay(2);
}
//---------------------------------------------
void lcd1602_write_dat(uchar dat)
{//對LCD1602寫入數據的函數
while(lcd1602_read_status()!=0);
RW = 0;
delay(2);
RS = 1;
delay(2);
EN = 1;
delay(2);
P0 = dat;
delay(2);
EN = 0;
delay(2);
}
//---------------------------------------------
void lcd1602_init()
{
lcd1602_write_cmd(0x38);//設置LCD1602的數據位數
lcd1602_write_cmd(0x0c);//設置LCD1602的顯示開關和光標
lcd1602_write_cmd(0x01);//清屏,將光標置于第1行第1列
lcd1602_write_cmd(0x06);//設置光標移動的方式并確定整體顯示是否移動
delay(200); //仿真中這里的延時要足夠長,否則有可能出錯
}
void motor_init(uchar num)
{
motor=1;
delay_ms(num);
motor=0;
delay_ms(100-num);
}
/*串口初始化程序*/
void Uart_init()
{
PCON|=0X80;
TMOD=0X20;
SCON = 0x50; //8位數據,可變波特率
TL1 = 0xFA; //設定定時初值 0xFA為11.0592MHz的晶振頻率
TH1 = 0xFA; //設定定時初值 0xFD為12MHz的晶振頻率
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
EA=1;
ES=1;
}
uchar key_init()
{
if(stratflag)
{
if(K1==0)
{
delay_ms(2000);
if(K1==0)
{
delay_ms(2000);
motornum=motornum-5;
if((motornum<1)||(motornum>230))
motornum=1;
}
}
if(K2==0)
{
delay_ms(2000);
if(K2==0)
{
delay_ms(2000);
motornum=motornum+5;
if(motornum>=99)
motornum=99;
}
}
}
if(K3==0)
{
delay_ms(2000);
if(K3==0)
{
delay_ms(2000);
stratflag=1;
}
}
if(K4==0)
{
delay_ms(2000);
if(K4==0)
{
delay_ms(2000);
stratflag=0;
}
}
return motornum;
}
/*液晶顯示函數*/
void display()
{
uchar i;
speed[6]=temp/100+'0';
speed[7]=temp%100/10+'0';
speed[8]=temp%10+'0';
lcd1602_write_cmd(0x80+1);
for(i=0;i<14;i++)
{
lcd1602_write_dat(news[i]);
}
lcd1602_write_cmd(0xC0+1);
for(i=0;i<14;i++)
{
lcd1602_write_dat(speed[i]);
}
}
/*主函數*/
void main()
{
lcd1602_init();
Uart_init();
while(1)
{
key_init();
if(stratflag)
{
LED=0;
temp=key_init();
display();
motor_init(temp);
}
else
{
LED=1;
display();
motor=1;
}
}
}
/*串口外部中斷函數*/
void Uart_server() interrupt 4
{
if(RI==1)
{
ch=SBUF;
RI=0;
}
switch(ch)
{
case'a':
if(stratflag)
{
motornum=motornum-5;
if((motornum<1)||(motornum>230))
motornum=1;
};break;
case's':
if(stratflag)
{
motornum=motornum+5;
if(motornum>=99)
motornum=99;
};break;
case'd':stratflag=1;break;
case'f':stratflag=0;break;
temp=motornum;
}
}
復制代碼
作者:
lovesbboy
時間:
2017-12-12 14:18
大哥,有成品嗎
作者:
lovesbboy
時間:
2017-12-12 14:18
大哥,有成品嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
av在线天天
|
精品免费国产一区二区三区四区介绍
|
国产精品成人在线播放
|
在线视频91
|
免费一级片
|
性国产丰满麻豆videosex
|
亚洲国产成人精品久久久国产成人一区
|
亚洲视频在线看
|
羞羞视频在线观免费观看
|
国产精品精品3d动漫
|
国产精品高清在线
|
亚洲国产偷
|
国产免费拔擦拔擦8x高清
|
夜夜操天天干
|
7777精品伊人久久精品影视
|
欧美黄在线观看
|
日韩精品视频一区二区三区
|
免费1区2区3区
|
国产视频一区二区在线观看
|
国产精品永久免费
|
色综合激情
|
男女激情网站免费
|
一二三区视频
|
毛片链接
|
99久久精品免费看国产小宝寻花
|
国产美女精品视频
|
欧美日韩亚洲在线
|
三级免费av
|
国产乱肥老妇国产一区二
|
中文字幕 国产
|
国产一区二区不卡
|
天天干夜夜操
|
国产91久久久久久久免费
|
五月免费视频
|
国产精品久久久久影院色老大
|
www.天天操
|
国产成人精品区一区二区不卡
|
一区二区久久
|
国产精品99久久久久久久vr
|
久久久精品在线
|
欧美久久精品
|