導航:首頁 > 操作系統 > 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單片機實例相關的資料

熱點內容
加密貴還是植發貴 瀏覽:660
陽光壓縮機繼電器 瀏覽:969
修改阿里雲伺服器密碼 瀏覽:815
lk4102加密晶元 瀏覽:588
怎麼更改app店面 瀏覽:489
設備部門如何做好伺服器 瀏覽:849
androido下載 瀏覽:478
神奇高量戰法副圖源碼 瀏覽:830
匯編語言設計凱撒密碼加密器 瀏覽:392
主次梁加密是加在哪裡 瀏覽:664
模板匹配演算法matlab 瀏覽:825
外地程序員去北京 瀏覽:24
安卓機換蘋果12如何轉移數據 瀏覽:420
互聯網ntp伺服器地址及埠 瀏覽:613
pdf到word轉換器 瀏覽:269
飛行解壓素材 瀏覽:498
51單片機指令用背嗎 瀏覽:936
unityai演算法 瀏覽:834
我的世界ice伺服器如何打開pvp 瀏覽:975
c語言編程如何做標記 瀏覽:884