久久国产人妻一区二区免费-欧美成人免费全部-99久久99久久久精品齐齐-成熟老妇女视频-波多老师无码av中字专区

stc單片機碼盤(stc單片機圖片)

【發布時間】2023-06-01 【作者】研茂包裝流水線 【瀏覽量】21382

本文目錄一覽:

sTC單片機 用定時器定時 來控制步進電機 驅動器L298求 源碼 可調速

/*-----------------------------------------------

名稱:步進電機實驗

編寫:shifang

日期:2013.12

修改:無

內容:本程序用于測試兩個4相步進電機常規驅動 用矩陣鍵盤 調節速度

? ? ? 紅外傳感器 測速

1602液晶顯示 1-30速度等級,數字越大,速度越大

------------------------------------------------*/

#include reg52.h

#include"LCD1602.h"

#include "jzhjp.h"

sbit cesu1=P3^2;

sbit cesu2=P3^3;

unsigned char code table[11]="0123456789.";// 顯示段碼值0~9

unsigned char code table1[]="A:"; ? //電機1正轉加減速等級

unsigned char code table2[]="B:"; ? //電機1反轉加減速等級

uint count=0; ? //外部中斷0計脈沖定義變量

uchar temp1=0; ? //定時器1計數定義變量

long int v1; ? //電機1的速度

void Init_Timer0(void); ? //定時器中斷初始化函數

/*------------------------------------------------

? ? ? ? ? ? ? ? ? 主函數

------------------------------------------------*/

void main()

{

unsigned char num1,num2;

Init_Timer0(); ? //定時器中斷初始化

LCD_init(); ? //LCD1602初始化

write_com(0x80); ? //顯示A:

for(num1=0;num12;num1++)

{

write_data(table1[num1]);

delay(5);

}

write_com(0x80+0x40); ? //顯示B:

for(num2=0;num22;num2++)

{

write_data(table2[num2]);

delay(5);

}

Coil_OFF //初始化全部斷電

while(1)

{

write_com(0x82); //顯示電機1正轉加速值

write_data(table[Speed/10]);

write_data(table[Speed%10]);

write_com(0x80+0x42); //顯示電機1反轉加速值

write_data(table[Speed1/10]);

write_data(table[Speed1%10]);

write_com(0x80+11); //顯示電機1速度值

write_data(table[v1/100]);

write_data(table[v1%100/10]);

write_data(table[10]);

write_data(table[v1%10]);

keyscan(); ? //矩陣鍵盤掃描

}

}

/*------------------------------------------------

? ? ? ? ? ? ? ? ? 定時器初始化子程序

------------------------------------------------*/

void Init_Timer0(void)

{

TMOD |= 0x11; ? ? ? ? ? ?//使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響 ?

//TH0=0x00; ? ? ? ? ? ?//給定初值

//TL0=0x00;

TH1=(65536-100000)/256; ? ?//給定初值50ms

TL1=(65536-100000)%256;

ET1=1; ? ? ? ? ? ? ? ? ? ? //定時器1中斷打開

PT0=1; ? ? ? ? ? ? ? ? ? ? //優先級打開

EA=1; ? ? ? ? ? ? ? ? ? ? ?//總中斷打開

IT0=1; ? ? ? ? ? ? ? ? ? ? //1表示邊沿觸發

IT1=1; ? ? ? ? ? ? ? ? ? ? //1表示邊沿觸發

}

/*------------------------------------------------

? ? ? ? ? ? ? ?定時器0中斷子程序

------------------------------------------------*/

void Timer0_isr(void) interrupt 1

{

static unsigned char times,i;

static unsigned char times1,j;

TH0=(65536-500)/256; ?//重新賦值 0.5ms

TL0=(65536-500)%256;

if(flag==1) ?//電機1正轉

{

if(times==(50-Speed))

{

times=0;

switch(i)

{

case 0:Coil_a1;i++;break;

case 1:Coil_ab1;i++;break;

case 2:Coil_b1;i++;break;

case 3:Coil_bc1;i++;break;

case 4:Coil_c1;i++;break;

case 5:Coil_cd1;i++;break;

case 6:Coil_d1;i++;break;

case 7:Coil_da1;i++;break;

case 8:i=0;break;

default:break;

} ?

}

else

times++;

}

if(flag1==1) //電機1反轉

{

if(times1==(50-Speed1))

{

times1=0;

switch(j)

{

case 0:Coil_da1;j++;break;

case 1:Coil_d1;j++;break;

case 2:Coil_cd1;j++;break;

case 3:Coil_c1;j++;break;

case 4:Coil_bc1;j++;break;

case 5:Coil_b1;j++;break;

case 6:Coil_ab1;j++;break;

case 7:Coil_a1;j++;break;

case 8:j=0;break;

default:break;

}

}

else

times1++;

}

}

/*------------------------------------------------

? ? ? ? ? ? ? ?定時器0中斷子程序

------------------------------------------------*/

void time1() interrupt 3

{

TH1=(65536-10000)/256; //重裝初值10ms

TL1=(65536-10000)%256;

temp1++;

if(temp1==100) ? //1s采樣1次

{

temp1=0;

v1=count*3; ? ? ?//速度單位:轉/min

count=0; ?//v=(count/20/1)*60=count*3;

}

}

/*--------------------------------------------------

外部中斷0子程序

---------------------------------------------------*/

void ISR_INT0(void) interrupt 0

{

if(cesu1==0) ?//電機1碼盤脈沖計數

{

delay(5);

if(cesu1==0)

{

count++;

}

while(!cesu1);

}

}

顯示部分你自己弄一下

求基于51單片機光碼盤測轉速程序

你好!

那就用一個普通的IO口來實現,但是響應速度會受到影響

用單片機怎么讀取直流電機碼盤的數據呢?

單片機測碼盤數據我實際測試了兩種方法,1種是采用計數器計數方法,

void Init_Timer0(void)

{

TMOD |= 0x01 | 0x04; //使用模式1,16位計數器,使用"|"符號可以在使用多個定時器時不受影響

TH0=0x00; //給定初值

TL0=0x00;

EA=1; //總中斷打開

ET0=1; //定時器中斷打開

TR0=1; //定時器開關打開

}

void Timer0_isr(void) interrupt 1

{

TH0=00; //重新給定初值

TL0=00;

OVERFLOWFLAG=1; //溢出標志

}

a=TL0+TH0*256;//讀取計數值

另一種是采用外部中斷

main()

{

P1=0x55; //P1口初始值

EA=1; //全局中斷開

EX0=1; //外部中斷0開

IT0=0; //電平觸發

while(1)

{

//在此添加其他程序

}

}

這是0電平觸發,還有1電平觸發,上升沿觸發,下降沿觸發都類似

怎樣用單片機做一個測試碼盤的程序呢?

碼盤一般不直接拿來使用,它輸出是的兩列正交的方波信號,方波數量表示位移或角度。兩列組合則可以判定方向。先用硬件電路處理一下,得到的是原使信號4倍頻的兩組信號,一組是正方向運動時有信號,另一組是反方向時有信號。后面可以用計數器,也可以不用計數器直接上單片機。

如果信號頻率較高,單片機處理怕丟波的話就上個計數器。

程序沒有什么東西,就記錄正反方向的波頭數

什么是STC單片機

STC系列單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機。

它是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,強干擾場合。

這種工藝的存儲器用戶可以用電的方式瞬間擦除、改寫。而且STC系列單片機支持串口程序燒寫。顯而易見,這種單片機對開發設備的要求很低,開發時間也大大縮短。寫入單片機內的程序還可以進行加密。

擴展資料??

單片機技術的開發

(1)CPU開發。

開發單片機中的CPU總線寬度,能夠有效完善單片機信息處理功能緩慢的問題,提高信息處理效率與速度,開發改進中央處理器的實際結構,能夠做到同時運行2-3個CPU,從而大大提高單片機的整體性能。

(2)程序開發。

嵌入式系統的合理應用得到了大力推廣,對程序進行開發時要求能夠自動執行各種指令,這樣可以快速準確地采集外部數據,提高單片機的應用效率。

(3)存儲器開發。

單片機的發展應著眼于內存,加強對基于傳統內存讀寫功能的新內存的探索,使其既能實現靜態讀寫又能實現動態讀寫,從而顯著提高存儲性能。

(4)計算機開發。

進一步優化和開發單機片應激即分析,并應用計算機系統,通過連接通信數據,實現數據傳遞。

參考資料來源:百度百科-STC12C5A60S2

關于stc單片機碼盤和stc單片機圖片的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

相關文章:

在線稱重的水平穩定性(稱重穩定重量算法)全自動連續封盒包裝機公司(全自動連續盒式包裝機)自動折箱機圖片價格(折疊箱設備廠家)纏膜機張力過大(纏膜機不上升)稱重機graham(稱重機去皮是什么意思)來安沙土裝袋機(沙土自動包裝機)工業碼垛機器人哪家好(工業機器人碼垛生產線)武裝直升機開箱子(武裝直升機圖鑒)封箱機技術參數(封箱機介紹)紐朗工業供袋套袋機(套袋機配件)