導航:首頁 > 操作系統 > stc單片機實例

stc單片機實例

發布時間:2023-02-09 23:00:05

① STC單片機位地址的問題,比如在官網的AD轉換例子中有這樣的定義:ADC_FLAG EQU 10H怎麼是10H啊

你該對著ADC相關的寄存器來看才知道怎麼回事,我看過資料,ADC_FLAG是寄存器ADC_CONTR中的一個標志位,ADC_CONTR中每一位的定義是:
ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0
即ADC_FLAG是這寄存器的第5位,其掩碼就是00010000,即0x10。
所以在使用的時候,判斷ADC_FLAG是否為1的方法就是if(ADC_CONTR&ADC_FLAG)或if(ADC_CONTR&0x10),如果判斷結果為0,即ADC_FLAG為0,反之為1。

所以ADC_FLAG EQU 10H定義的是一個掩碼,而不是位地址,你不要搞錯了。

② stc12c5a60s2單片機,如何將串口接收的數據寫入擴展flash

STC單片機的假EEPROM可以用,但不好玩,以下是將從串口接收到的一個位元組數據寫入Flash 0單元的應用實例,供參考。最好在內存中開辟一段緩存,將從串口接收到的數據先置於緩存,之後一並寫入Flash。
IAP_CONTR = 0x83; //設置操作等待時間

IAP_CMD = 0x03; //扇區擦除命令
IAP_ADDRH = 0; //設置高8位地址
IAP_ADDRL = 0; //設置低8位地址
IAP_TRIG = 0x5A; //晶元規定必須的操作
IAP_TRIG = 0xA5; //晶元規定必須的操作
_nop_();

IAP_CMD = 0x02; //設置寫命令
IAP_ADDRH = 0; //設置高8位地址
IAP_ADDRL = 0; //設置低8位地址
IAP_DATA = SBUF; //將串口接收到的一個位元組數據寫入擴展Flash的0x0000H單元
IAP_TRIG = 0x5A;
IAP_TRIG = 0xA5;

IAP_CONTR = 0; //關閉IAP
IAP_CMD = 0; //關閉命令
IAP_TRIG = 0; //清命令觸發寄存器
IAP_ADDRH = 0; //指向非Flash擴展區
IAP_ADDRL = 0;

③ 電流互感器檢測在單片機實例應用

電流互感器P1是一個線圈呀,會產生感應電流的,才叫電流互感器嗎。感應電流通過電阻R1就產生交流電壓。再用二極體D1整流,就得直流電壓,後面的電阻電容都是濾波的,這樣,送到單片機P1.1的是模擬電壓,電壓大小與交流220Ⅴ的電流成正比。
編程,這應該是STC單片機,P1.1輸入模擬電壓,利用內部A/D電路轉換數字量就行了。所以,編程,一是完成A/D轉換,二是把轉換的數字量換算成交流電流的大小,三是顯示出交流電流值。

④ STC15F2K60S2單片機PWM調光例子

#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit Key1 =P3^2 ; //PWM值增加鍵
sbit Key3 =P3^3; //PWM值減少鍵
sbit GND=P3^4;
unsigned char PWM=0x7f ; //賦初值

void delay(uchar z);

/*********************************************************/
void main()
{
PWM=0x7f;
GND=0; //P3.4拉低 組成獨立按鍵
P1=0xff;
TMOD=0x21 ;
TH0=0xfc ; //1ms延時常數
TL0=0x66 ; //頻率調節

TH1=PWM ; //脈寬調節
TL1=0 ;

EA=1;
ET0=1;
ET1=1;

TR0=1 ;

while(1)
{
do{
if(PWM!=0xff)
{PWM++ ;delay(10);}
}
while(Key1==0);
do{
if(PWM!=0x02)
{PWM-- ;delay(10);}
}
while(Key3==0);
}
}

/*********************************************************/
// 定時器0中斷服務程序 (頻率)
/*********************************************************/
void timer0() interrupt 1
{
TR1=0 ;
TH0=0xfc ;
TL0=0x66 ;
TH1=PWM ;
TR1=1 ;
P1=0x00 ; //啟動輸出
}

/*********************************************************/
// 定時器1中斷服務程序
/*********************************************************/
void timer1() interrupt 3
{
TR1=0 ;
P1=0xff ; //結束輸出
}

/*********************************************************/

/*********************************************************/
// 延時子程序
/*********************************************************/
void delay(uchar z)

{
uchar i ;
while(z--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}

/*********************************************************/

⑤ STC單片機初始化方法怎麼個初始化在主程序上調用嗎給個實例,謝謝

void main(void)
{
SysInit(); //可以在這初試化
while(1)
{;}
}

⑥ 怎麼以stc單片機為例編寫一個LED指示燈閃爍工程。

我的個天,不能讓你家幫你作作業吧。
給個框架和思路吧。LED二極體正極串一個限流電阻接在+5V電源上,負極接在MCU一個管腳上,如P20,如果燈不夠亮,可以加個三極體放大電流。
程序思路:
main(void)
{
while(1)
{
延時
P20=~P20
//P20取反
點亮和熄滅LED
}
}

閱讀全文

與stc單片機實例相關的資料

熱點內容
程序員標配條件 瀏覽:211
免費電腦解壓app排行榜前十名 瀏覽:189
順序表查找演算法 瀏覽:463
整合包解壓後是亂碼 瀏覽:300
xp系統如何查找伺服器名 瀏覽:983
土的壓縮系數的確定方法 瀏覽:647
程序員家裡健身 瀏覽:620
電視看籃球app哪個好 瀏覽:47
高中畢業當程序員 瀏覽:245
php標簽屬性大全 瀏覽:897
遠程訪問伺服器ip地址 瀏覽:312
程序員吃雞蛋炒菜 瀏覽:174
在哪裡看俄羅斯電視劇app 瀏覽:308
怎麼找資料庫伺服器地址 瀏覽:487
伺服器調試怎麼翻譯 瀏覽:921
php如何處理ajax請求 瀏覽:211
php數組下標存在 瀏覽:707
php獲取ip歸屬地 瀏覽:175
撩女程序員怎麼辦 瀏覽:508
百度伺服器做什麼 瀏覽:193