導航:首頁 > 操作系統 > 單片機讀寫sim卡

單片機讀寫sim卡

發布時間:2022-09-27 07:33:26

① SIM卡讀卡器

有。很好買的。

單片機如何存儲數據到sim卡

430沒有用過,如果你的電阻值要存於mmc卡,並且要在電腦用讀卡器讀出,這樣就要用到fat文件系統,先得寫mmc卡驅動,再來寫fat驅動,不過網上都有很多,可以移植...

③ 51單片機讀取SIM卡收到的簡訊內容,然後給I/O口賦值,在線 急等

爸收到的值直接賦值到埠就可以了,不過要注意兩個之間的形態要一致

④ 電信SIM卡突然讀不出來

是手機SIM卡與移動公司基站的交換機進行確認的時候和移動公司的資料庫數據對不上就造成了手機SIM卡注冊失敗,SIM卡識別碼一般是移動事先寫入SIM卡中的,是網路唯一識別用戶身份的代碼,如果SIM受到損壞或者移動公司的交換機出現問題就會有此類問題,一般移動公司出錯幾率不大的。而手機SIM卡損壞與使用者的習慣有關,有的人卡多經常換來換去,有的人喜歡邊充電邊打手機,有的人不使用原裝充電器,或者使用劣質電池,由於這類非原裝的設備的輸出電流時高時低,很容易造成SIM被燒!SIM是一個單片機,裡面有許多的二極體,而且只能一次讀寫的,一個燒壞整個SIM卡就不能用了!
卡輸PUK出錯了不會出現SIM卡注冊失敗,而是直接不連接網路了,或者就是出現SIM鎖死的提示。
建議:將卡拔出來用干凈的白紙擦下卡片上的銅片和手機里的SIM卡接觸點然後裝回開機看看,讓客服人員幫你察看一下你的數據是否正常,並讓她們給你做一下數據同步就可以了,如果還不行那隻有補卡了!

⑤ 怎麼給一個單片機系統接上電話卡讓他可以聯網,需要用到哪些模塊啊

gprs模塊這個淘寶上有現成的模塊,還送例子使用代碼,sim800c這個用的比較多,或者買個dtu也可以但是比較貴,建議買sim800c也就40塊錢

⑥ 用51單片機讀取sim900里的簡訊程序怎麼寫

買模塊商家送資料, 串口配置程序略,主程序如下:
/**********************************************************************************
* 工程名 :簡訊控制LED
* 描述 :通過簡訊控制開發板的LED
* 實驗平台:C51
* 庫版本 :
* 作者 :泥人通信模塊開發平台團隊
* 博客 :http://nirenelec.blog.163.com
* 淘寶 :http://shop105683814.taobao.com

* 硬體連接說明
使用單片串口與GPRS模塊通信
C51 GPRS模塊
P30 (RXD)->RXD
P31 (TXD)->TXD
GND ->GND

* 軟體功能說明
板子上電後運行指示燈RUNING_LED會以一秒的頻率閃爍
手機發送「onled」點亮LED;
手機發送「offled」熄滅LED;
**********************************************************************************/
#include "config.h"
#include "string.h"
#include "delay.h"
#include "uart.h"

#define Automatic_Startup 1 //定義自啟動 V1.2版本起有自啟動功能

#define Buf1_Max 200 //串口1緩存長度
/************* 本地常量聲明 **************/
sbit RUNING_LED = P1^2; //運行指示燈
sbit LED = P1^3; //控制指示燈

/************* 本地變數聲明 **************/
xdata u8 Uart1_Buf[Buf1_Max];

u8 Times=0,First_Int = 0,shijian=0;

bdata u8 Flag;//定時器標志位
sbit Timer0_start =Flag^0; //定時器0延時啟動計數器

/************* 本地函數聲明 **************/
void GPIO_config(void); //引腳初始化
void Timer0Init(void); //定時器0初始化
void CLR_Buf1(void); //清串口接收緩存
u8 Find(u8 *a); //查找字元串
void Second_AT_Command(u8 *b,u8 *a,u8 wait_time);//發送指令
void Wait_CREG(void); //查詢等待模塊注冊成功
void Set_Text_Mode(void); //設置簡訊為TEXT模式
void Check_New_Message(void); //查詢新簡訊

/************* 外部函數和變數聲明*****************/

/*******************************************************************************
* 函數名 : main
* 描述 : 主函數
* 輸入 :
* 輸出 :
* 返回 :
* 注意 : 串口波特率是9600,GPRS模塊默認波特率是115200,需要自己通過串口助手修改
為9600方可使用。
程序會刪除手機卡上的簡訊,請注意
*******************************************************************************/
void main(void)
{
Timer0Init(); //初始化定時器0
GPIO_config();
EA=1; //開總中斷
Uart1Init(); //初始化串口9600
Wait_CREG(); //查詢等待模塊注冊成功
Set_Text_Mode();//設置簡訊為TEXT模式
//Second_AT_Command("AT+CMGD=1,4","OK",3);//刪除卡上所有簡訊
while(1)
{
Check_New_Message();
}

}

/*******************************************************************************
* 函數名 : Uart1
* 描述 : 串口1中斷服務入口函數
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Uart1() interrupt 4
{
if (RI)
{
RI = 0; //清除RI位
Uart1_Buf[First_Int] = SBUF; //將接收到的字元串存到緩存中
First_Int++; //緩存指針向後移動
if(First_Int > Buf1_Max) //如果緩存滿,將緩存指針指向緩存的首地址
{
First_Int = 0;
}
}
if (TI)
{
TI = 0; //清除TI位
}
}

/*******************************************************************************
* 函數名 : Timer0_ISR
* 描述 : 定時器0中斷服務入口函數,20ms中斷一次
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Timer0_ISR() interrupt 1
{
static u8 Time_count=0;
TR0=0;//關定時器
TL0 = 0x00; //重設定時器初值
TH0 = 0xB8; //重設定時器初值
Time_count++;
if(Time_count>=50)
{
Time_count = 0;
RUNING_LED =~RUNING_LED;
}
if(count_20ms) //20ms延時計數器
count_20ms--;
if(Timer0_start)
Times++;
if(Times > (50*shijian))
{
Timer0_start = 0;
Times = 0;
}
TR0=1;//開定時器
}
/*******************************************************************************
* 函數名 : GPIO_config
* 描述 : IO口配置函數
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void GPIO_config(void)
{
LED=1;
RUNING_LED=1;
}
/*******************************************************************************
* 函數名 : Timer0Init
* 描述 : 定時器0初始化,20ms定時
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Timer0Init(void) //20毫秒@11.0592MHz
{
AUXR &= 0x7F; //定時器時鍾12T模式
TMOD &= 0xF0; //
TMOD |= 0x01; //設置定時器模式,16位定時器
TL0 = 0x00; //設置定時器初值
TH0 = 0xB8; //設置定時器初值
TF0 = 0; //清TF0標志
TR0 = 1; //定時器0開始計時
ET0 = 1; //使能定時器0中斷
}
/*******************************************************************************
* 函數名 : CLR_Buf1
* 描述 : 清除串口2緩存數據
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void CLR_Buf1(void)
{
u16 k;
for(k=0;k<Buf1_Max;k++) //將緩存內容清零
{
Uart1_Buf[k] = 0x00;
}
First_Int = 0; //接收字元串的起始存儲位置
}

/*******************************************************************************
* 函數名 : Find
* 描述 : 判斷緩存中是否含有指定的字元串
* 輸入 :
* 輸出 :
* 返回 : unsigned char:1 找到指定字元,0 未找到指定字元
* 注意 :
*******************************************************************************/

u8 Find(u8 *a)
{
if(strstr(Uart1_Buf,a)!=NULL)
return 1;
else
return 0;
}

/*******************************************************************************
* 函數名 : Second_AT_Command
* 描述 : 發送AT指令函數
* 輸入 : 發送數據的指針、希望收到的應答、發送等待時間(單位:S)
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/

void Second_AT_Command(u8 *b,u8 *a,u8 wait_time)
{
u8 i;
u8 *c;
c = b; //保存字元串地址到c
CLR_Buf1();
i = 0;
while(i == 0)
{
if(!Find(a)) //查找需要應答的字元
{
if(Timer0_start == 0)
{
b = c; //將字元串地址給b
for (b; *b!='\0';b++)
{
UART1_SendData(*b);
}
UART1_SendLR();
Times = 0;
shijian = wait_time;
Timer0_start = 1;
}
}
else
{
i = 1;
Timer0_start = 0;
}
}
CLR_Buf1();
}

/*******************************************************************************
* 函數名 : Set_Text_Mode
* 描述 : 設置簡訊為TEXT文本模式
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Set_Text_Mode(void)
{
Second_AT_Command("ATE0","OK",3); //取消回顯
Second_AT_Command("AT+CNMI=3,2,0,0,0","OK",3); //新簡訊直接輸出
Second_AT_Command("AT+CMGF=1","OK",3); //TEXT模式
Second_AT_Command("AT+CPMS=\"SM\",\"SM\",\"SM\"","OK",3);//所有操作都在SIM卡中進行
}

/*******************************************************************************
* 函數名 : Check_Message_rec
* 描述 : 檢查是否有新信息,並執行信息內容指令
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/

void Check_New_Message(void)
{
u8 temp=0;
if(strstr(Uart1_Buf,"+CMT")!=NULL) //若緩存字元串中含有"+CMT"就表示有新的簡訊
{
delay_ms(3);//等待數據全部接收完成
if(strstr(Uart1_Buf,"onled")!=NULL)
{
LED = 0;
}
if(strstr(Uart1_Buf,"offled")!=NULL)
{
LED = 1;
}
CLR_Buf1();
//Second_AT_Command("AT+CMGD=1,4","OK",3);//刪除簡訊
}
}

/*******************************************************************************
* 函數名 : Wait_CREG
* 描述 : 等待模塊注冊成功
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Wait_CREG(void)
{
u8 i;
u8 k;
i = 0;
CLR_Buf1();
while(i == 0)
{
CLR_Buf1();
UART1_SendString("AT+CREG?");//查詢模塊網路注冊狀態
UART1_SendLR();
delay_ms(250);
for(k=0;k<Buf1_Max;k++)
{
if(Uart1_Buf[k] == ':')
{
if((Uart1_Buf[k+4] == '1')||(Uart1_Buf[k+4] == '5')) //表明網路注冊成功
{
i = 1;
break;
}
}
}
}
}

⑦ 怎樣用51單片機讀寫sim卡

讀Sim卡幹嘛?一般Sim卡作為通訊用口,通常沒有單獨與單片機介面的讀寫晶元。你可以買個GSM模塊,一般GSM模塊帶的AT指令集可以讀寫操作SIM卡的。而且還可以打電話,發簡訊等功能。

⑧ 怎樣用51單片機讀寫sim卡

你好!
1樓正解,
單片機沒法讀寫sim卡,
只能藉助周邊設備,
比如GSM模塊.
通過GSM模塊來讀寫Sim卡.
如有疑問,請追問。

閱讀全文

與單片機讀寫sim卡相關的資料

熱點內容
印度搶打火機的電影叫什麼 瀏覽:291
求在線觀看資源2020年 瀏覽:946
聚優電影可以在哪些影院使用 瀏覽:124
阿里雲伺服器怎麼安裝bt面板 瀏覽:630
霍爾瓦特大街小說 瀏覽:857
可以看的網址大全 瀏覽:416
一個名叫尼克和保姆的電影 瀏覽:613
電影里有戒尺的 瀏覽:845
徐英演的哪些大尺度電影 瀏覽:412
鬼片英文版 瀏覽:600
《前度2》完整未刪減 瀏覽:851
大陸類似春的森林電影 瀏覽:526
1受多攻獸世 瀏覽:849
軍嫂肉文 瀏覽:935
javamariadb 瀏覽:876
未刪減的網站在線觀看 瀏覽:899
雞雞加長叫什麼電影 瀏覽:387
愛情電影網址 瀏覽:726
激情戲愛情電影 瀏覽:51
哪裡可以免費在線看輕小說 瀏覽:61