久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
51單片機(jī)帶速度顯示(12864液晶)步進(jìn)電機(jī)程序
[打印本頁(yè)]
作者:
冰冰潔潔
時(shí)間:
2018-10-18 02:51
標(biāo)題:
51單片機(jī)帶速度顯示(12864液晶)步進(jìn)電機(jī)程序
20181017_222527.jpg
(28.98 KB, 下載次數(shù): 24)
下載附件
2018-10-18 02:48 上傳
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/***************************功能定義***************************/
#define LCD12864_W_COM 0xF8 //寫指令
#define LCD12864_R_COM 0xFC //讀指令
#define LCD12864_W_DAT 0xFA //寫數(shù)據(jù)
#define LCD12864_R_DAT 0xFE //讀數(shù)據(jù)
#ifndef __LCD12864_H__
#define __LCD12864_H__
#define LCD12864_COM 0 //輸入指令
#define LCD12864_DAT 1 //輸入數(shù)據(jù)
#define LCD12864_CLEAR 0x01 //清除顯示
#define LCD12864_CURSOR 0x02 //位址歸位,游標(biāo)回原點(diǎn)
#define LCD12864_CURSOR_RLF 0x04 //光標(biāo)左移,整體顯示不移動(dòng)
#define LCD12864_CURSOR_RRF 0x06 //光標(biāo)右移,整體顯示不移動(dòng)
#define LCD12864_CURSOR_RLN 0x05 //光標(biāo)左移,整體顯示移動(dòng)
#define LCD12864_CURSOR_RRN 0x07 //光標(biāo)右移,整體顯示移動(dòng)
#define LCD12864_DIS_OFF 0x08 //顯示狀態(tài)全關(guān)
#define LCD12864_DIS_ON 0x0E //顯示狀態(tài)開
#define LCD12864_DIS_CUR_ON 0x0E //游標(biāo)顯示開
#define LCD12864_DIS_CURS_ON 0x0F //游標(biāo)位置顯示開
#define LCD12864_CURSOR_RL 0x10 //游標(biāo)左移
#define LCD12864_CURSOR_RR 0x14 //游標(biāo)右移
#define LCD12864_CURDIS_RL 0x18 //整體顯示左移,光標(biāo)跟隨
#define LCD12864_CURDIS_RR 0x1C //整體顯示又移,光標(biāo)跟隨
#define LCD12864_COM_BASIC 0x30 //基本指令集動(dòng)作
#define LCD12864_COM_PLOT_ON 0x36 //擴(kuò)展指令集動(dòng)作,繪圖顯示ON
#define LCD12864_COM_PLOT_OFF 0x34 //擴(kuò)展指令集動(dòng)作,繪圖顯示OFF
#define LCD12864_STAND_TO 0x31 //進(jìn)入待命模式
#define LCD12864_PLACE_ROLL 0x03 //允許輸入卷動(dòng)位址
#define LCD12864_PLACE_IRAM 0x02 //允許輸入IRAM位址
#define LCD12864_REVERES_13 0x04 //選擇一、三行同時(shí)作反白顯示
#define LCD12864_REVERES_24 0x05 //選擇二、四行同時(shí)作反白顯示
#define LCD12864_REST_ON 0x08 //進(jìn)入睡眠模式
#define LCD12864_REST_OFF 0x0C //脫離睡眠模式
#define LCD12864_W_COM 0xF8 //寫指令
#define LCD12864_R_COM 0xFC //讀指令
#define LCD12864_W_DAT 0xFA //寫數(shù)據(jù)
#define LCD12864_R_DAT 0xFE //讀數(shù)據(jù)
//======串口模式=======
sbit LCD12864_CS = P2^7; //片選信號(hào)輸入
sbit LCD12864_STD = P2^6; //串行數(shù)據(jù)輸入
sbit LCD12864_SCLK = P2^5; //串行移位脈沖輸入
sbit LCD12864_PSB = P2^4; //串并模式選擇 0:串口,1:并口
sbit LCDRST = P2^3;
unsigned char code tabe[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//查表法//0-9數(shù)字
uint r=1; //步進(jìn)電機(jī)速度
sbit clk=P1^0; //步進(jìn)電機(jī)速度PIN
sbit cw=P1^1; //步進(jìn)電機(jī)方向PIN
sbit en=P1^2; //步進(jìn)電機(jī)使能PIN
sbit k1=P1^4; //
sbit k2=P1^5; //
sbit k3=P1^6; //
/*******************************延時(shí)函數(shù)**********************************************/
void Delay1Ms(uint t)
{
uchar i;
for (;t>0;t--)
{
for (i=0;i<138;i++)
{
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
}
void Delay1s(uchar t)
{
for (;t>0;t--)
{
Delay1Ms(250);
Delay1Ms(250);
Delay1Ms(250);
Delay1Ms(250);
}
}
void delayus()//us微秒延時(shí)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
void Delay1000us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
/*****************************向12864寫入8位數(shù)據(jù)*************************************/
void LCD12864_Wbyte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
LCD12864_SCLK = 0;
byte <<= 1; //左移待寫入數(shù)據(jù),使最高位移至CY
LCD12864_STD = CY; //寫入一位數(shù)據(jù)
LCD12864_SCLK = 1;
LCD12864_SCLK = 0;
}
}
/***************************從12864讀出8位數(shù)據(jù)***返回:sdat************************************/
uchar LCD12864_Rbyte(void)
{
uchar i,sdat,temp1,temp2;
temp1 = 0;
temp2 = 0;
//==========12864的串行數(shù)據(jù)輸出形式是D7-D6-D5-D4-0-0-0-0-D3-D2-D1-D0-0-0-0-0,故要度兩個(gè)八位整合==============
for(i=0;i<8;i++)
{
temp1=temp1 << 1;
LCD12864_SCLK = 0;
LCD12864_SCLK = 1;
LCD12864_SCLK = 0;
if( LCD12864_STD ) temp1|=0x01; //tempe1:D7-D6-D5-D4-0-0-0-0
}
for(i=0;i<8;i++)
{
temp2=temp2 << 1;
LCD12864_SCLK = 0;
LCD12864_SCLK = 1;
LCD12864_SCLK = 0;
if( LCD12864_STD ) temp2|=0x01; //tempe2:D3-D2-D1-D0-0-0-0-0
}
sdat = ((temp1 & 0xf0)|(temp2 >> 4)); //取出D7\D6\D5\D4\D3\D2\D1\D0
return sdat; //返回一個(gè)值(sdat)
}
/****************************讀忙狀態(tài)**************************************/
void LCD12864_busy( void )
{
do LCD12864_Wbyte( LCD12864_R_COM ); //LCD12864_RW=11111,RW(1),RS(0),0
while( LCD12864_Rbyte() & 0x80 ); //讀BF,直到BF == 0
}
/*************************dat_com=0寫指令,dat_com=1寫數(shù)據(jù)*****************************************/
void LCD12864_W (bit dat_com,uchar byte)
{
uchar temp;
if(dat_com == 0) //為零,寫入指令
temp = LCD12864_W_COM; //11111,RS(0),RW(0),0
else //否則,寫入數(shù)據(jù)
temp = LCD12864_W_DAT; //11111,RS(1),RW(0),0
LCD12864_CS = 1; //片選使能
LCD12864_busy(); //LCD忙檢測(cè)
LCD12864_Wbyte(temp); //寫入模式選擇,指令還是數(shù)據(jù)
LCD12864_Wbyte(byte&0xf0); //寫入字節(jié)
LCD12864_Wbyte((byte<<4)&0xf0); //寫入字節(jié)
LCD12864_CS = 0; //片選關(guān)閉
}
/****************************LCD12864初始化**************************************/
void LCD12864_Init(void)
{
LCDRST=1;
LCD12864_PSB = 0; //選擇串口模式
LCD12864_W(LCD12864_COM,0x30); //基本指令功能.
LCD12864_W(LCD12864_COM,0x03); //允許輸入卷動(dòng)位址
LCD12864_W(LCD12864_COM,0x0c); //脫離隨眠狀態(tài),顯示打開,關(guān)光標(biāo),反白關(guān).
LCD12864_W(LCD12864_COM,0x01); //清屏指令.
LCD12864_W(LCD12864_COM,0x06); //AC自動(dòng)加一,光標(biāo)右移,整體顯示不移動(dòng)
}
/**************************LCD12864字符位置自定義顯示****************************************/
void LCD12864_WPoss(uchar x,uchar y,uchar *buff)
{
uchar addr,i=0;
switch (x)
{
case 0:addr=0x80;break;
case 1:addr=0x90;break;
case 2:addr=0x88;break;
case 3:addr=0x98;break;
}
addr=addr+y;
LCD12864_W(LCD12864_COM,LCD12864_COM_BASIC); //8BitMCU,基本指令集合
LCD12864_W(LCD12864_COM,addr); //顯示在自定義位置
while(buff[i]!='\0')
{
LCD12864_W(LCD12864_DAT,buff[i++]);
if(++y==16)
{
y=0;
if(++x==4) x=0;
switch (x)
{
case 0:addr=0x80;break;
case 1:addr=0x90;break;
case 2:addr=0x88;break;
case 3:addr=0x98;break;
}
addr=addr+y;
LCD12864_W(LCD12864_COM,addr);
}
}
}
/************************顯示1 *********************************/
void display1(long temp)
{
uchar dt1,dt2,dt3,dt4,dt5,dt6,dt7,dt8;
//temp=12345678;
temp=r;
dt1 = temp%10;//1位
dt2 = temp%100/10;//2位
dt3 = temp%1000/100;//3位
dt4 = temp%10000/1000;//4位
dt5 = temp%100000/10000;//5位
dt6 = temp%1000000/100000;//6位
dt7 = temp%10000000/1000000;//7位
dt8 = temp/10000000;//8位 最高位
LCD12864_WPoss(0,2,"步進(jìn)電機(jī)");//第1行顯示表1
LCD12864_WPoss(2,0,"速度:");//第1行顯示表1
// LCD12864_W(0,0x80+3);//LCD12864_W ((0或1),****) 0寫指令 1寫數(shù)據(jù)
//LCD12864_W(1,tabe[dt8]);//6位
//LCD12864_W(1,tabe[dt7]);//5位
//LCD12864_W(1,tabe[dt6]);//4位
//LCD12864_W(1,tabe[dt5]);//3位
LCD12864_W(1,tabe[dt4]);//4位
LCD12864_W(1,tabe[dt3]);//3位
//LCD12864_W(1,0x2e);
LCD12864_W(1,tabe[dt2]);//4位
LCD12864_W(1,tabe[dt1]);//3位
// LCD12864_WPoss(2,6,"M");//第1行顯示表1
}
void Disp_img(unsigned char *img) //圖形方式12864顯示字模221 橫向取膜
{
unsigned char i,j;
unsigned int k = 0;
LCD12864_W(0,0x36); //圖形方式
for(i=0;i<32;i++)
{
LCD12864_W(0,0x80+i);
LCD12864_W(0,0x80);
for(j=0;j<16;j++)
{
LCD12864_W(1,img[k++]);
}
}
for(i=0;i<32;i++)
{
LCD12864_W(0,0x80+i);
LCD12864_W(0,0x88);
for(j=0;j<16;j++)
{
LCD12864_W(1,img[k++]);
}
}
}
void run()//步進(jìn)電機(jī)運(yùn)行脈沖
{
uint i;
for(i=0;i<r;i++)
{
clk=0;
Delay1000us();
clk=1;
Delay1000us();
}
}
void keyscan() //按鍵掃描
{
if(k1==0)
{
delayus();
if(k1==0)
{
r++;if(r>1000)r=1000;
cw=0; //
en=0; //
}
}
if(k2==0)
{
delayus();
if(k2==0)
{
r--;if(r<1)r=1;
cw=1; //
en=0; //
}
}
if(k3==0)
{
delayus();
if(k3==0)
{
en=1;
}
}
}
/*****************************main**********************************************/
void main()
{
LCD12864_Init();
en=1;
while(1)
{
keyscan() ;
run();//步進(jìn)電機(jī)運(yùn)行脈沖
display1();//顯示//溫度顯示
}
}
復(fù)制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
波多野结衣一区二区三区
|
成人国产精品久久久
|
中文字幕在线观看www
|
欧美日韩成人影院
|
黄色片网站在线观看
|
国产精品久久久久aaaa九色
|
特黄特黄a级毛片免费专区 av网站免费在线观看
|
久久国产亚洲
|
中文字幕国产一区
|
91久久久久久久久久久久久
|
亚洲精选一区二区
|
午夜免费
|
91精品久久久久久久久
|
二区不卡
|
久久精品网
|
日韩和的一区二在线
|
久久精品视频在线观看
|
精品一级
|
免费精品久久久久久中文字幕
|
国产精品久久久久国产a级 欧美日韩国产免费
|
成人福利网
|
久久逼逼
|
国产小视频在线
|
精品91
|
成人网av
|
久久精品国产亚洲
|
中文字幕不卡视频在线观看
|
久久久久综合
|
精品中文字幕一区二区
|
亚洲国产一区二区三区在线观看
|
亚洲激情一区二区
|
欧美日韩一区二区三区四区
|
一二三区av
|
在线观看h视频
|
精品粉嫩超白一线天av
|
蜜桃传媒av
|
台湾a级理论片在线观看
|
91亚洲欧美
|
精品国产乱码久久久久久蜜退臀
|
中文字幕一区二区三区在线视频
|
成年精品
|