❶ 求STC12C5A60S2單片機驅動12864的程序(注意看問題補充)
12864不需要精確延時,可以改下延時函數,原51程序放到STC12上就能用,我試過貌似延時函數不改也能用
❷ 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;//退出填充操作
❸ stc單片機驅動怎麼設置參數,例如波特率
stc單片機串口下載程序時
單片機的波特率可以任意設置,它會自適應。原則上在能夠正確握手的情況下設置高的波特率,這樣下載速度快。在使用光耦等隔離器件產生信號延時時,可以用低的速率,保證正確握手。
❹ 本人正在用開發板給STC單片機燒寫程序,沒有USB下載器的驅動軟體----「電腦無法無法識別的USB設備」
下個軟體就好了 有個usb驅動軟體 你網路下
再不行在聯系我 我給你個 我以前的那個開發板上用的是stc89c52rc stc的那個usb 基本都可以用的
❺ 我想用STC12C5A60S單片機控制STI6608驅動步進電機動作,請問C程序怎麼寫
這個STI6608驅動器輸入信號是Pluse+DIR方式控制,可以帶2個步進電機。Reset可以置位步進電機到位置1。剛啟動是置位1次就可以了。以下編一簡單的演示程序:
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedchar
sbitpluse1=P1^0;
sbitpluse2=P1^1;
sbitdir1=P1^2;
sbitdir2=P1^3;
sbitreset1=P1^4;
sbitreset2=P1^5;
voiddelay(uinta)
{
uinti;
while(a--)for(i=0;i<1100;i++);
}
main()
{
uinti;
reset1=0;
reset2=0;
delay(1000);
reset1=1;
reset2=1;
while(1)
{
for(i=0;i<4800;i++)
{
pluse1=~pluse1;
dir1=1;
delay(5);
}
for(i=0;i<4800;i++)
{
pluse2=~pluse2;
dir2=1;
delay(5);
}
for(i=0;i<4800;i++)
{
pluse1=~pluse1;
dir1=0;
delay(5);
for(i=0;i<4800;i++)
{
pluse2=~pluse2;
dir2=0;
delay(5);
}
}
}
❻ 那位老大能提供一個stc單片機驅動oled屏(128*64)的keil c程序,要很簡單的就行
#define LCM_RW P2_0 //定義引腳
#define LCM_RS P2_1
#define LCM_E P2_2
#define LCM_Data P1
#define Busy 0x80 //用於檢測LCM狀態字中的Busy標識
#i nclude <at89x51.h>
void WriteDataLCM(unsigned char WDLCM);
void WriteCommandLCM(unsigned char WCLCM,BuysC);
unsigned char ReadDataLCM(void);
unsigned char ReadStatusLCM(void);
void LCMInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
unsigned char code uctech[] = {"uctech"};
unsigned char code net[] = {"uctech.icpcn.com"};
void main(void)
{
Delay400Ms(); //啟動等待,等LCM講入工作狀態
LCMInit(); //LCM初始化
Delay5Ms(); //延時片刻(可不要)
DisplayListChar(0, 5, uctech);
DisplayListChar(0, 0, net);
ReadDataLCM();//測試用句無意義
while(1);
}
//寫數據
void WriteDataLCM(unsigned char WDLCM)
{
ReadStatusLCM(); //檢測忙
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //若晶振速度太高可以在這後加小的延時
LCM_E = 0; //延時
LCM_E = 1;
}
//寫指令
void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測
{
if (BuysC) ReadStatusLCM(); //根據需要檢測忙
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}
//讀數據
unsigned char ReadDataLCM(void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
return(LCM_Data);
}
//讀狀態
unsigned char ReadStatusLCM(void)
{
LCM_Data = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while (LCM_Data & Busy); //檢測忙信號
return(LCM_Data);
}
void LCMInit(void) //LCM初始化
{
LCM_Data = 0;
WriteCommandLCM(0x38,0); //三次顯示模式設置,不檢測忙信號
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,1); //顯示模式設置,開始要求每次檢測忙信號
WriteCommandLCM(0x08,1); //關閉顯示
WriteCommandLCM(0x01,1); //顯示清屏
WriteCommandLCM(0x06,1); // 顯示游標移動設置
WriteCommandLCM(0x0C,1); // 顯示開及游標設置
}
//按指定位置顯示一個字元
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大於15,Y不能大於1
if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;
X |= 0x80; // 算出指令碼
WriteCommandLCM(X, 0); //這里不檢測忙信號,發送地址碼
WriteDataLCM(DData);
}
//按指定位置顯示一串字元
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大於15,Y不能大於1
while (DData[ListLength]>0x20) //若到達字串尾則退出
{
if (X <= 0xF) //X坐標應小於0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字元
ListLength++;
X++;
}
}
}
//5ms延時
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//400ms延時
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};
❼ 我新買了一個stc的單片機,是用USB轉串口的。安裝完驅動程序後,每次只能下載一次,下載第二次是就不行了
你是用USB轉串口線吧,如果那樣的話,是線的兼容性不好,換一根USB轉串口下載線試試吧!
❽ 求STC12C5A單片機控制兩相步進電機驅動器c程序參考
這種程序和你的驅動器有很大關系
❾ STC系列單片機驅動OV7670方法
可以驅動單片機,但是速度會很慢,用高速一點的晶振每秒鍾最多也只能取到4幀這樣子,建議用stm32會快一點
❿ stc12c5204ad單片機對sht30的驅動程序
說法都對。如果每次亮不超過5個,符合要求。
可以用74HC595串列鎖存一下,兩片可以帶16個。用3個IO口
或用74HC573並行鎖存,也是兩片帶16個,要用8+2個口