❶ 宏晶生產的所有 stc單片機 的指令集都是一樣的嗎...
是的,都是51內核,51指令集
晶宏單片機系列
89C系列:工作頻率0~40M相當於普通8051的0~80M,FLASH程序儲存4K-64K,RAM數據儲存512B-1280B,內部集成EEPROM 2K-16K及看門狗和專用復位電路,帶A/D功能. 12C系列:單時鍾/機器周期。超小封裝。2-4路PWM, 8-10位高速A/D轉換。 FLASH程序儲存512B-60K,RAM數據儲存256B-1280B,集成EEPROM及硬體WDT.產品都有為低功耗。有ISP和IAP功能,強抗干擾和降低EMI性能.15F系列有STC最少引腳8引腳的單片機.最顯著的特點就是支持ISP在線下載功能。
❷ 宏晶的單片機用的多嗎現在用那些單片機用的比較多呢
51系列中,STC用的算多了。問題是,51系列在工業用單片機上的份額並不大。
1、51的最大好處無非就是學習資料眾多,學習條件比較好,但51單片機性能偏弱且價格高,因此性價比其實並不好。
2、現在比較熱門的是STM8或STM32,大有代替51之勢,它的價格比STC51更便宜,性能也強得多(特別是STM32,32位單片機,性能非常不錯,根本不是STC這種8位單片機能比得),穩定性也好。其他的還有PIC,AVR系列單片機,飛思卡爾也是很不錯的單片機,工業上也有一定使用。
3、另外一大領域是專用的工業用單片機,這種單片機往往突出某個方面的性能,比如AD,而簡化了其他性能,但好處是價格非常便宜。但這種單片機資料往往要少得多,燒寫器等都是專用的,比較貴,不適合學習者而更適合工業化大批量生產。比如三星、義隆、合泰的一些單片機都是這樣,他們比51更便宜,性能上在自己的強項上一點不比51弱。
4、說51好的,一般都是學生,出門之後的人基本上不會這么說。STC雖然性價比在51系列中算突出的了,但也有自身的缺陷,就是穩定性差,抗干擾能力比較弱(這也是它為何那麼便宜,而很多上規模的正規企業不願意用STC的關鍵原因;ATMEL公司的51 穩定性上要比STC好,但價格貴,功能弱)。
5、個人理解,如果你要學單片機,51起步是很不錯的,先學匯編把硬體底層搞熟,然後轉到C語言編程(匯編扎實,轉到C語言輕而易舉,直接學C,表面上看進度很快,但實際上基礎很不牢固,以後要吃苦頭)。等51熟悉了之後,轉到另外更實用,功能更強的單片機比如STM8,是一種比較好的途徑。
❸ 查閱網路資料 STC系列單片機是宏晶科技設計生產的一款新型單片機。與傳統的單片機相比,具有價格低、運算
1、 所選晶元型號為STC11F16XE 35I-LQFP 44G單片機為何種封裝形式?LQFP44
引腳間距為多少?0.8mm
引腳數量是多少?44
最高工作頻率是多少?35MHz
外形尺寸(不含引腳)為多少10*10mm
2、 STC11F16XE 35I-LQFP 44G單片機其工作電壓范圍是多少?5.5V~4.1/3.7V
工作溫度范圍為多少?-40~85攝氏度
3、 其程序存儲器空間(FLASH)有多少位元組?16K
數據存儲器空間(SRAM)有多少位元組?1280
4、 其EEPROM有多少位元組?32K
扇區數是多少?64個
扇區起始地址與結束地址分別是多少?0000H~7FFFH
5、 若單片機選用22.1184MHZ晶振,其機器周期為多少?0.045微秒
❹ 宏晶科技STC生產的51單片機有自己的知識產權嗎它用的是Atmel的51內核啊
51內核專利不是Atmel的,是Intel的。
而且內核專利早就過期了,在沒過期時,Intel就大量授權其他廠家生產了。
51內核其實現在有點過時了,速度比較慢的。
❺ STC宏晶有32位的單片機嗎
好像沒有哦,主要是基於MCS-51內核的8位單片機。
❻ 宏晶單片機,如何在斷電程序中,保護數據。請附程序
單片機中有EPROM,我用的是STC12C5A60S2,有1K空間的EPROM,是可以斷電保存用戶數據的,其他型號STC單片機的EPROM大小不一,參考手冊,但程序差不多的,程序如下:
/********************************************************************
* *
* 單片機學習開發板BP-51A - 內部EPROM讀寫演示程序 *
* 版本: V1.0 (2011/10/13) *
* 作者: BestProvider *
* 說明: STC12C5A60S2單片機有1K位元組的內部EPROM,可以用來存放用戶數 *
* 據(斷電不丟失),EPROM分2個扇區,地址為0X0000-0X1FFF和0X2000 *
* -0X3FFF,需要注意的是在進行寫操作時,必須先要進行所在扇區 *
* 的清除操作 *
* 硬體: 本實驗需要液晶屏LCD1602來顯示數據 *
* 參考: 《STC12C5A60S2中文資料》- 第12章 STC12C5A60S2系列單片機 *
* EPROM的應用 *
* *
********************************************************************/
#include <stc12c5a60s2.h>
typedef unsigned char BYTE; // 數據范圍0-255
typedef unsigned int WORD; // 數據范圍0-65535
typedef bit BOOL ; // 數據范圍0-1
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_WRITE 2
#define CMD_ERASE 3
#define ENABLE_IAP 0X82
BYTE write_data[5]={0,1,2,3,4};
BYTE read_data[5];
BYTE code dis1[ ] = {"EPROM Write/Read"} ;
BYTE code dis2[ ] = {"Data: "} ;
sbit LCD_RS = P2^0; // LCD控制線
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
/* ms級延時 */
/********************************/
void delay_ms(WORD n)
{
WORD i=0;
WORD j;
while(i<n)
{
for(j=0;j<1000;j++){}
i++;
}
}
/* 測試LCD忙碌狀態 */
/********************************/
BOOL lcd_bz()
{
BOOL result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delay_ms(1);
result = (BOOL)(P0 & 0x80);
LCD_EN = 0;
return result;
}
/* 寫入指令數據到LCD */
/********************************/
void lcd_wcmd(BYTE cmd)
{
while(lcd_bz());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
delay_ms(1);
P0 = cmd;
delay_ms(1);
LCD_EN = 1;
delay_ms(1);
LCD_EN = 0;
}
/* 設定顯示位置 */
/********************************/
void lcd_pos(BYTE pos)
{
lcd_wcmd(pos | 0x80);
}
/* 寫入字元顯示數據到LCD */
/********************************/
void lcd_wdat(BYTE dat)
{
while(lcd_bz());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delay_ms(1);
LCD_EN = 1;
delay_ms(1);
LCD_EN = 0;
}
/* LCD初始化設定 */
/********************************/
void lcd_init()
{
lcd_wcmd(0x38);
delay_ms(10);
lcd_wcmd(0x0c);
delay_ms(10);
lcd_wcmd(0x06);
delay_ms(10);
lcd_wcmd(0x01); // 清除LCD的顯示內容
delay_ms(10);
}
/* EPROM 扇區清除 */
/********************************/
void Iaperasesector(unsigned char addr)
{
IAP_ADDRH=addr;
IAP_ADDRL=0x00;
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_ERASE;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
delay_ms(10);
}
/* EPROM 寫操作 */
/********************************/
void Iapwritebyte()
{
BYTE i;
Iaperasesector(0x00); // 在進行內部EPROM寫操作前需進行扇區清除操作
IAP_CONTR=ENABLE_IAP;
for(i=0;i<5;i++)
{
IAP_ADDRH=0x00;
IAP_ADDRL=0x00+i;
IAP_DATA=write_data[i];
IAP_CMD=CMD_WRITE;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
delay_ms(10);
}
IAP_CONTR=0x00;
}
/* EPROM 讀操作 */
/********************************/
void Iapreadbyte()
{
BYTE i;
for(i=0;i<5;i++)
{
IAP_DATA=0;
IAP_CONTR=ENABLE_IAP;
IAP_ADDRH=0x00;
IAP_ADDRL=0x00+i;
IAP_CMD=CMD_READ;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
delay_ms(10);
read_data[i]=IAP_DATA;
}
IAP_CONTR=0x00;
}
/* 數據顯示 */
/********************************/
void Display()
{
BYTE m ;
lcd_pos(0) ; // 設置顯示位置為第一行的第1個字元
m = 0 ;
while(dis1[m] != '\0')
{
lcd_wdat(dis1[m]) ; // 顯示字元
m++ ;
}
lcd_pos(0x40) ; // 設置顯示位置為第二行第1個字元
m = 0 ;
while(dis2[m] != '\0')
{
lcd_wdat(dis2[m]) ; // 顯示字元
m++ ;
}
lcd_pos(0x46); // 顯示讀取的第1個數據
lcd_wdat(0x30+read_data[0]);
lcd_pos(0x48); // 顯示讀取的第2個數據
lcd_wdat(0x30+read_data[1]);
lcd_pos(0x4a); // 顯示讀取的第3個數據
lcd_wdat(0x30+read_data[2]);
lcd_pos(0x4c); // 顯示讀取的第4個數據
lcd_wdat(0x30+read_data[3]);
lcd_pos(0x4e); // 顯示讀取的第5個數據
lcd_wdat(0x30+read_data[4]);
}
/* 主程序 */
/********************************/
main()
{
delay_ms(200); // 通電後延遲200ms,再進行EPROM操作
Iapwritebyte(); // 將4個數據存入單片機內部EPROM中
delay_ms(10);
Iapreadbyte(); // 從EPROM中讀取數據
lcd_init(); // 初始化LCD
delay_ms(10);
Display(); // 顯示讀取的數據
while(1);
}
❼ 求DXP2004中51單片機的元件庫
我給你畫了一個宏晶公司的STC89C51的原理圖,你把他安裝到你的原理圖庫中就可以使用了。但是我只畫了原理圖庫,封裝庫文件沒有畫。如果要導入到pcb文件的話,還要畫出封裝庫但是上傳失敗了,
你發個郵箱過來,我發到你郵箱里
❽ 宏晶STC12C5A60S2單片機
到宏晶科技的網站可以下載到各種型號單片機的頭文件,因為頭文件里定義了這個型號單片機內部寄存器的物理地址,STC單片機比原51機新增加了許多內部寄存器。如果還用reg51.h或reg2.h頭文件,就需要自己定義新增的寄存器的物理地址了。如果僅僅是模擬的話就無所謂了。
❾ 誰用過宏晶STC單片機,怎麼樣
質量還可以,就是基本沒技術支持。今天調試增強PWM就是不行,要求很簡單就是在P1.7輸出一個脈寬能變化的方波作為DA。搞了大半天就是不行,打電話給梁工,好像就他一個技術,和他說幫我看一下程序錯在哪裡,他態度非常惡劣,拒絕看程序,就讓我看常式,我看這方面常式很少且寫了很繁瑣,有個只有匯編。求助不到只能自己找原因,終於發現STC的頭文件里地址和手冊不一樣,把頭文件內PWMCR地址改成手冊上的就有反應了,但是還是不對,後來再細查,發現頭文件相關地址錯了好多,改好頭文件後總於成功了。其實我的程序沒問題,問題出在STC的頭文件不對,以後碰到問題再也不能找STC,不會幫你解決的,特別是梁工。