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

熱點內容
什麼是萌鴨app 瀏覽:861
變數的數字如何變化python 瀏覽:794
整數壓縮 瀏覽:993
最優停止策略問題演算法 瀏覽:716
pdf圖片背景 瀏覽:766
app的圖標有什麼風格 瀏覽:28
python代碼運行編譯器 瀏覽:936
魔鬼訓練程序員 瀏覽:686
php上傳大文件失敗 瀏覽:602
sw伺服器指定埠怎麼填 瀏覽:189
java有哪些數組 瀏覽:984
程序員戴手錶影響工作嗎 瀏覽:235
游戲皇後解壓視頻 瀏覽:367
c語言怎麼打開文件編譯 瀏覽:436
手機上什麼app可以設計logo 瀏覽:800
pid演算法單片機 瀏覽:375
python數據精度 瀏覽:632
管什麼小女孩App 瀏覽:192
phppdf轉換成圖片 瀏覽:468
十八講pdf 瀏覽:619