① Keil C 51單片機怎樣復用驅動程序控制多個
我也在想如何復用同樣介面函數,同時或輪詢驅動同類型外設;比如8個不同IO驅動8個18B20,但只調用同一個驅動函數,而不需要針對這8個不同IO編寫8個同樣讀寫流程處理函數,增加代碼量、浪費FLASH、低效率,因為驅動方式一樣,函數代碼是一樣的,只指向的IO不同;不過好像實現不了,因為所有單片機好像不支持多個IO(非同匯流排)同時改變輸出,只能一個一個驅動;單核單進程模式;可能是自己還未找到正確處理方式。
② 什麼型號的攝像頭可以用51單片機驅動,單片機的驅動程序怎麼編寫的
直接驅動需要設計相應的電路,估計個人搞很困難。買個攝像頭驅動板。
用51單片機連接攝像頭驅動板,攝像頭驅動板驅動攝像頭。
通過程序,實現對某個電路的控制,使其發揮作用應該叫驅動程序,運行驅動程序的平台不包括在「某個電路」里。
比如:寫一個計算1+1等於幾的程序,計算結果只放在單片機里不輸出出來,這個單片機程序是不能叫驅動程序的。
為了輸出,我們可以寫一個顯示程序,讓單片機驅動液晶屏用字元的形式或者好多個LED用點亮個數來表示計算結果。那麼這個顯示程序應該叫做驅動程序。
再比如,我們用電腦時,都會把管理硬體的程序叫驅動程序,比如「USB驅動程序」,「顯卡驅動」之類
③ 你好..問一下51單片機驅動程序C語言,我按他時序圖寫不轉
這是一個步進電機PWM調速時序圖吧?EN使能高電平五微秒後才能置位DIR(猜測是正反控制位);再五微秒後才能控制PUI(猜測是PWM速度控制),控制T3,T4比來實現速度控制;只能說幾個注意的地方:第一,T1,T2兩個時間一定要大於5微秒;第二,PWM調速頻率不能高於模塊最高響應頻率;第三,要用5V單片機,3.3V單片機直接IO驅動肯定是不行。
④ 51單片機驅動1602 程序
你這個接線就不合理 引腳4、5、6是控制端竟然沒接給你個圖參考
再給你一個模擬中的接線圖和程序 你自己試試看
程序:
RS EQU P3.7
RW EQU P3.6
E EQU P3.5
mov p3,#0ffh
MOV P1,#01H ;清除屏幕
ACALL ENABLE
MOV P1,#38H ;8位點陣
ACALL ENABLE
MOV P1,#0FH ;開顯示
ACALL ENABLE
MOV P1,#06H ;移動游標
ACALL ENABLE
MOV P1,#80H ;顯示位置
ACALL ENABLE
l3: mov p1,#01h
acall enable
mov dptr,#table1 ;送第一句話
call write1
call enable
MOV P1,#0C0H ;寫入顯示起始地址(第二行第一個位置)
ACALL ENABLE ;調用寫入命令子程序
call write1
call enable
mov p1,#01h
call delay1
call delay1
call delay1
jmp l3
ENABLE: ;送命令
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
write1: ;送字元串
mov r1,#00h
a1:mov a,r1
movc a,@a+dptr
call write2
inc r1
cjne a,#00h,a1 ;以00H做字元串結束標志
ret
write2: ;送單個字元
mov p1,a
setb rs
clr rw
clr e
call delay
setb e
ret
delay: ;延時子程序
mov r7,#255
d1:mov r6,#255
d2:djnz r6,d2
djnz r7,d1
ret
delay1:
mov r7,#255
delay2:mov r6,#255
djnz r6,$
djnz r7,delay2
ret
table1: db 20h,20h,20h,57h,45h,4ch,43h,4fh,4dh,45h,20h,54h,4fh,20h,20h,20h,20h,00h
table2: db 20h,57h,57h,57h,2Eh,4dh,43h,55h,39h,39h,2Eh,43h,4Fh,4Dh,20h,20h,20h,00h
end
⑤ 求51單片機的獨立按鍵驅動程序
廣州華電
#include<reg51.h>
sbit s2=P3^4;
sbit led=P1^0;
void main()
{
while(1) //通過大循環不斷掃描按鍵狀態
{
if(s2==0)
led=0;
else
led=1;
}
}
⑥ 51單片機驅動程序安裝點了沒反應,而且電腦其他東西打不開了,求大神解
系統損壞重新安裝系統可以解決問題:1、首先需要一張GHOST版系統盤2、開機按F2鍵選擇從CD啟動3、選擇進入光碟選項中的進入PE系統4、進入系統後使用PE系統中的一鍵還原工具將光碟中的系統鏡像還原至C盤5、還原結束從新啟動計算機,系統將自動安裝驅動和應用程序,一切安裝就緒計算機會自動重啟並進入系統。6、安裝完成。
⑦ 51單片機驅動程序
51單片機沒有驅動程序。你說的是HEX文件嗎?要有具體電路才行,要不怎麼驅動?
⑧ 51單片機怎麼驅動直流電機c語言
51單片機驅動直流電機程序(用的是l298n晶元):
#include<reg51.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char
#define N 100
sbits1=P1^0; //電機驅動口
sbit s2=P1^1; //電機驅動口
sbit s3=P1^2; //電機驅動口
sbit s4=P1^3; //電機驅動口
sbit en1=P1^4; //電機使能端
sbit en2=P1^5; //電機使能端
sbit LSEN=P2^0; //光電對管最左
sbit LSEN1=P2^1; //光電對管左1
sbit LSEN2=P2^2; //光電對管左2
sbit RSEN1=P2^3; //光電對管右1
sbit RSEN2=P2^4; //光電對管右2
sbit RSEN=P2^5; //光電對管最右
uint pwm1=0,pwm2=0,t=0;
void delay(uint xms)
{
uint a;
while(--xms)
{
for(a=123;a>0;a--);
}
}
void motor(uchar speed1,uchar speed2)
{
if(speed1>=-100&&speed1<=100)
{
pwm1=abs(speed1);
if(speed1>0)
{
s1=1;
s2=0;
}
if(speed1==0)
{
s1=1;
s2=1;
}
if(speed1<0)
{
s1=0;
s2=1;
}
}
if(speed2>=-100&&speed2<=100)
{
pwm2=abs(speed2);
if(speed2>0)
{
s3=1;
s4=0;
}
if(speed2==0)
{
s3=1;
s4=1;
}
if(speed2<0)
{
s3=0;
s4=1;
}
}
}
void go_forward(uint speed)
{
s1=1;
s2=0;
s3=1;
s4=0;
pwm1=speed;
pwm2=speed;
}
void go_back(uint speed)
{
s1=0;
s2=1;
s3=0;
s4=1;
pwm1=speed;
pwm2=speed;
}
void stop()
{
s1=1;
s2=1;
s3=1;
s4=1;
pwm1=0;
pwm2=0;
}
void turn_right(uint P1,uint P2) //右轉函數
{
s1=1;
s2=0;
s3=0;
s4=1;
pwm1=P1;
pwm2=P2;
}
void turn_left(uint P1,uint P2) //左轉函數
{
s1=0;
s2=1;
s3=1;
s4=0;
pwm1=P1;
pwm2=P2;
}
void tracking()
{
if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0)) //沒有檢測到
{
go_forward(100);
}
if((LSEN1==1)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0)) //左一檢測到
{
turn_left(40,80); //左轉 右輪 》左輪
delay(N);
}
if((LSEN1==0)&&(LSEN2==1)&&(RSEN1==0)&&(RSEN2==0)) //左二檢測到
{
turn_left(40,60); //左轉 右輪 》左輪
delay(N);
}
if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==1)&&(RSEN2==0)) //右一檢測到
{
turn_right(60,4); //右轉 左輪 》右輪
delay(N);
}
if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==1)) //右二檢測到
{
turn_right(80,40); //右轉 左輪 》右輪
delay(N);
}
if((LSEN1==1)&&(LSEN2==1))
{
turn_left(0,100);
delay(1000);
}
if((RSEN1==1)&&(RSEN2==1))
{
turn_right(100,0);
delay(1000);
}
}
void avoidance()
{
}
void init()
{
TMOD=0x02; //timer0 同時配置為模式2, 8自動重裝計數模式
TH0=156; //定時器初值設置100us中斷
TL0=156;
ET0=1;
EA=1;
TR0=1; //開啟總中斷
}
void main()
{
init();
while(1)
{
tracking();
}
}
void timer0() interrupt 1 //電機驅動 提供PWM信號
{
if(t<pwm1)
en1=1;
else
en1=0;
if(t<pwm2)
en2=1;
else
en2=0;
t++;
if(t>100)
t=0;
}
(8)51單片機驅動程序擴展閱讀
L298N 是一種雙H橋電機驅動晶元,其中每個H橋可以提供2A的電流,功率部分的供電電壓范圍是2.5-48v,邏輯部分5v供電,接受5vTTL電平。一般情況下,功率部分的電壓應大於6V否則晶元可能不能正常工作。
⑨ win10怎麼安裝51單片機驅動
如果驅動支持系統,安裝是狠簡單的事啊。
⑩ stc51單片機彩屏驅動程序怎麼寫希望具體點,謝謝
武漢 谷鑫科技基於STC單片機彩屏驅動程序實例部分展示,篇幅有限
AUXR = 0x8e;//////////////////////////////////注意增加該語句。
#include <reg51.h>
#include <absacc.h>
#define X_ADDR XBYTE[0x0000]
#define Y_ADDR XBYTE[0x0100]
#define CMD XBYTE[0x0200]
#define DAT XBYTE[0x0300]
unsigned char code zk[32] = {//請
0x00, 0x47, 0x20, 0x23, 0x00, 0xEF, 0x20, 0x23, //left
0x22, 0x23, 0x22, 0x23, 0x2A, 0x32, 0x22, 0x02,
0x48, 0xFC, 0x40, 0xF8, 0x40, 0xFE, 0x08, 0xFC, //right
0x08, 0xF8, 0x08, 0xF8, 0x08, 0x08, 0x28, 0x10};
unsigned char code picture[];
main()
{
unsigned int x,y,x2,y2;
unsigned int i;
unsigned char key,x1,y1,j,k,z,m,n,bright;
AUXR = 0x02;//////////////////////////////////注意增加該語句。
bright = 8;
key = 1;//////////////////////////////////////選擇液晶屏型號
//0:TFT2432;
//1:TFT3224;
//2:TFT480234
//3:TFT480272
//4:TFT6448
//5:TFT8048
//6:TFT8060
//7:TFT8060
if(P13==1)
{
if(key==0){x2=240;y2=320;x1=6; y1=16; goto loop1;}//x1/32,y1/20
if(key==1){x2=320;y2=240;x1=8; y1=12; goto loop1;}
if(key==2){x2=480;y2=240;x1=12;y1=12; goto loop1;}
if(key==3){x2=480;y2=272;x1=12;y1=14; goto loop1;}
if(key==4){x2=640;y2=480;x1=16;y1=24; goto loop1;}
if(key==5){x2=800;y2=480;x1=20;y1=24; goto loop1;}
if(key==6){x2=800;y2=600;x1=20;y1=30; goto loop1;}
if(key==7){x2=800;y2=600;x1=20;y1=30; goto loop1;}//亮度測試
}
loop1:
bright--;if(bright==255)bright=7;
CMD = 0x06;
DAT = bright;
///////////////////////以下是清屏功能///////////////////////////////////////
//用紅色清屏
CMD = 0x04;DAT = 0xe0;//背景色
CMD = 0x08;//啟動填充操作
for(y=0;y<260*12;y++);//延時16.6毫秒
CMD = 0x00;//退出填充操作
///////////////////////以上是清屏功能///////////////////////////////////////
while(key==1)
{
for(bright=7;bright!=255;bright--)
{
CMD = 0x06;
DAT = bright;
for(y=0;y<15;y++){x=1;while(x!=0)x++;}
}
CMD = 0x20;//關斷顯示,poweroff
for(y=0;y<15;y++){x=1;while(x!=0)x++;}
key = P1&0x07;
}
for(y=0;y<1;y++){x=1;while(x!=0)x++;}
for(y=0;y<1;y++){x=1;while(x!=0)x++;}
//用紅色清屏
CMD = 0x04;DAT = 0x1c;//背景色
CMD = 0x08;//啟動填充操作
for(y=0;y<260*12;y++);//延時16.6毫秒
CMD = 0x00;//退出填充操作