導航:首頁 > 操作系統 > 單片機isd1760

單片機isd1760

發布時間:2022-12-22 05:01:46

㈠ 使用51單片機控制ISD1760實現語音播放時,1760的SP+不能使8歐0.25w的揚聲器發聲,但是通過9012三極體放大後

驅動能力還是比較低的,一般可以加一個LM386來放大一下。

㈡ isd1760語音晶元的上位機軟體如何使用

你好!

1、首先 isd1760 只是一個語音晶元,不具備MCU的功能
2、isd1760 接入單片機,然後用單片機發指令控制晶元
3、上位機通過串口和單片機連接,通過上位機間接控制晶元

㈢ 基於52單片機ISD1760語音晶元的原理圖和程序代碼。

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//******************定義埠******************//
sbit SS = P1^0;
sbit SCK = P1^1;
sbit MOSI = P1^2;
sbit MISO = P1^3;
sbit PR = P1^4;//PLAY = 0;REC = 1;
sbit STOP = P1^5;
sbit AN = P1^6;
sbit LED = P1^7;
//******************定義ISD1700狀態寄存器及各標志位******************//
uchar bdata SR0_L;//SR0寄存器低位、高位
uchar bdata SR0_H;
uchar bdata SR1;//SR1寄存器
uchar APC_L = 0, APC_H = 0;//APC寄存器
uchar PLAYADDL = 0, PLAYADDH = 0;//放音指針低位、高位
uchar RECADDL = 0, RECADDH = 0;//錄音指針低位、高位

sbit CMD_ERR = SR0_L^0;//SPI指令無效標志位
sbit FULL = SR0_L^1;//晶元存儲空間滿標志位
sbit PU = SR0_L^2;//上電標志位
sbit EOM = SR0_L^3;//EOM標志位
sbit INT = SR0_L^4;//操作完成標志位
sbit RDY = SR1^0;//晶元空閑標志位
sbit ERASE = SR1^1;//擦除標志位
sbit PLAY = SR1^2;//放音標志位
sbit REC = SR1^3;//錄音標志位
//******************定義標志位******************//
uchar bdata fang;
sbit PR_fang = fang^1;//錄音、放音標志位,放音=0,錄音=1
sbit Erase_fang = fang^4;//擦出標志位
sbit STOP_fang = fang^7;//停止放音標志位
//******************延時μs******************//
void delay(uint time)//延時n微秒
{
while(time!=0)
{
time--;
}
}
//******************延時ms******************//
void delayms(uint time)//延時n毫秒
{
for(time; time>0; time--)
{
TH0 = 0xfc;
TL0 = 0x18;
TR0 = 1;//計數器0啟動
while(TF0!=1);//計數溢出處理
TF0 = 0;
TR0 = 0;
}
}
//******************CPU初始化******************//
void cpu_init (void)
{
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
TMOD = 0x01;//定時器初始化,工作於方式1
EA = 0;//關中斷
fang = 0;//標志位歸0
LED = 1;//關指示燈
}
//******************發送、讀回數據******************//
uchar isd_senddata (uchar dat)
{
uchar i, BUF_ISD = dat;
SS = 0;
SCK = 1;
delay(4);
for(i=0; i<8; i++)
{
SCK = 0;
if((BUF_ISD&0x01)==1)
{
MOSI = 1;
}
else
{
MOSI = 0;
}
BUF_ISD = BUF_ISD >> 1;
if(MISO)
{
BUF_ISD = BUF_ISD|0x80;
}
SCK = 1;
delay(6);
}
MOSI = 0;
return(BUF_ISD);
}
//******************上電******************//
void isd_pu (void)
{
isd_senddata (0x01);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************停止當前操作******************//
void isd_stop (void)
{
isd_senddata (0x02);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************復位******************//
void isd_reset (void)
{
isd_senddata (0x03);
isd_senddata (0x00);
SS = 1;
}
//******************清除中斷******************//
void isd_clr_int (void)
{
isd_senddata (0x04);
isd_senddata (0x00);
SS = 1;
}
//******************讀狀態寄存器內容******************//
void isd_rd_status (void)
{
isd_senddata (0x05);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x05);
SR0_H = isd_senddata (0x00);
SR1 = isd_senddata (0x00);
SS = 1;
}
//******************讀放音指針******************//
void isd_rd_playptr (void)
{
isd_senddata (0x06);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x06);
SR0_H = isd_senddata (0x00);
PLAYADDL = isd_senddata (0x00);
PLAYADDH = isd_senddata (0x00);
SS = 1;
}
//******************下電******************//
void isd_pd (void)
{
isd_senddata (0x07);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************讀錄音指針******************//
void isd_rd_recptr (void)
{
isd_senddata (0x08);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x08);
SR0_H = isd_senddata (0x00);
RECADDL = isd_senddata (0x00);
RECADDH = isd_senddata (0x00);
SS = 1;
}
//******************讀晶元ID******************//
uchar isd_devid (uchar deviceNO)
{
isd_senddata (0x09);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
isd_senddata (0x09);
isd_senddata (0x00);
deviceNO = isd_senddata (0x00);
SS = 1;
return(deviceNO);
}
//******************放音******************//
void isd_play (void)
{
isd_senddata (0x40);
isd_senddata (0x00);
SS = 1;
}
//******************錄音******************//
void isd_rec (void)
{
isd_senddata (0x41);
isd_senddata (0x00);
SS = 1;
}
//******************擦除******************//
void isd_erase (void)
{
isd_senddata (0x42);
isd_senddata (0x00);
SS = 1;
}
//******************全部擦出******************//
void isd_g_erase (void)
{
isd_senddata (0x43);
isd_senddata (0x00);
SS = 1;
}
//******************讀APC寄存器內容******************//
void isd_rd_apc (void)
{
isd_senddata (0x44);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x44);
SR0_H = isd_senddata (0x00);
APC_L = isd_senddata (0x00);
APC_H = isd_senddata (0x00);
SS = 1;
}
//******************寫APC寄存器******************//
void isd_wr_apc2 (uchar apcdatl,apcdath)
{
isd_senddata (0x65);
isd_senddata (apcdatl);
isd_senddata (apcdath);
SS = 1;
}
//******************將APC寄存器內容寫入NVCFG******************//
void isd_wr_nvcfg (uchar apcdatl,apcdath)
{
isd_senddata (0x46);
isd_senddata (apcdatl);
isd_senddata (apcdath);
SS = 1;
}
//******************將NVCFG內容寫入APC******************//
void isd_ld_nvcfg (void)
{
isd_senddata (0x47);
isd_senddata (0x00);
SS = 1;
}
//******************快進******************//
void isd_fwd (void)
{
isd_senddata (0x48);
isd_senddata (0x00);
SS = 1;
}
//******************空檢查******************//
void isd_chk_mem (void)
{
isd_senddata (0x49);
isd_senddata (0x00);
SS = 1;
}
//******************外部時鍾的啟用、關閉******************//
void isd_extclk (void)
{
isd_senddata (0x4a);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址放音******************//
void isd_set_play (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x80);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址錄音******************//
void isd_set_rec (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x81);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址擦除******************//
void isd_set_erase (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x82);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************晶元系統初始化******************//
void isd_init (void)
{
uchar i = 2;
SS = 1;
SCK = 1;
MOSI = 0;
do
{
isd_pu ();
isd_rd_status ();
}while(CMD_ERR||(!PU));
isd_wr_apc2 (0x40,0x04);
do
{
isd_rd_status ();
}while(RDY==0);
do
{
LED = 0;
delayms(300);
LED = 1;
delayms(300);
i--;
}while(i>0);
}
//******************isd1700的相關操作******************//
void isdwork (void)
{
uchar i;
switch (fang)
{
case 0x00:
{
do
{
isd_rd_status ();
}while(RDY==0);
delayms(10);
isd_play ();
delayms(2);
LED = 0;
do
{
isd_rd_status ();
if(STOP==0)
{
delayms (10);
if(STOP==0)
{
LED = 1;
isd_clr_int ();
isd_stop ();
isd_reset ();
isd_pd ();
isd_init ();
return;
}
}
}while(PLAY==1);
LED = 1;
isd_clr_int ();
do
{
isd_rd_status ();
}while(RDY==0);
delayms (10);
isd_fwd ();
do
{
isd_rd_status ();
}while(RDY==0);
}
break;
case 0x02:
{
isd_clr_int ();
do
{
isd_rd_status ();
}while(RDY==0);
delayms(10);
isd_rec ();
delayms(2);
LED = 0;
do
{
isd_rd_status ();
if(FULL==1)
{
for(i=3; i>0; i--)
{
LED = 0;
delayms (300);
LED = 1;
delayms (200);
}
}
}while(AN==0);
isd_clr_int ();
isd_stop ();
LED = 1;
}
break;
case 0x10:
{
do
{
isd_rd_status ();
}while(RDY==0);
delayms (10);
isd_g_erase ();
delayms (2);
do
{
isd_rd_status ();
}while(RDY==0);
for(i=3; i>0; i--)
{
LED = 0;
delayms (300);
LED = 1;
delayms (200);
}
}
break;
case 0x80:
{
isd_clr_int ();
isd_stop ();
isd_reset ();
isd_pd ();
}
break;
}
}
//******************主程序******************//
void main (void)
{
uchar i;
cpu_init ();
delayms (1);
isd_init ();
while(1)
{
if(AN==0)
{
delayms (10);
if(AN==0)
{
if(PR==1)
{
PR_fang = 1;
}
else
{
PR_fang = 0;
}
isdwork ();
}
}
if(STOP==0)
{
delayms (10);
if(STOP==0)
{
for(i=100; i>0; i--)
{
if(STOP==1)
{
STOP_fang = 1;
isdwork ();
isd_init ();
break;
}
delayms(30);
}
if (STOP_fang==1)
{
fang = 0;
continue;
}
Erase_fang = 1;
isdwork ();
}
}
}
}
這個是按鍵錄放的常式,你可以根據這個常式自己修改一下

㈣ ISD1760的問題解決了嗎我現在也在用 能讀到ID 但其他的都沒反應了 你能給點信息嗎 校友哈哈

額、我們之前用的時候出現這種問題最後檢查出來好像是和單片機連接的四根杜邦線接觸不好、、

㈤ 請問和單片機相連的語音晶元哪個比較簡單好用,ISD系列的哪個簡單好用求連接圖

isd系列的有ISD25xxISD14xxISD17xxISD40xx等系列,前2種已停產,不推薦使用。ISD17xxISD40xx都可以使用SPI介面與單片機連接,此外,ISD1700系列還可以使用獨立按鍵控制,完全不用單片機都可以,音質也不錯,推薦使用此款,如ISD1730,ISD1760...根據需要選擇合適的錄音時長的具體晶元。

㈥ 求stc12c5a60s2單片機與ISD1760語音模塊的接法,謝謝

MCU ISD1760
-----------------------
P1.0 SS
P1.1 MISO
P1.2 MOSI
P1.3 SCLK

㈦ 單片機控制語音模塊

單片機控制語音模塊功能特點:
1、語音內容存儲在外掛SPI FLASH中,可重復擦寫100000次以上,保存時間超過100年;
2、主控晶元採用九芯高性能語音DSP,NV020作為主控;
3、簡潔易用的操作方式(三線串口);
4、可以存入WAV、ADPCM格式的文件,語音可以組合播放以節省存儲空間;
5、兩種輸出方式(DAC以及PWM輸出,DAC可外接功放輸出,PWM可直接驅動0.5W喇叭);
6、可外掛1Mbit~128Mbit容量SPI FLASH快閃記憶體,語音時長40秒~2560秒(6K采樣率計算);
7、靈活的分段放音操作,可方便地控制任意段語音播放,語音組合極大地節省空間;
8、音質好、性能高,物美價廉;
9、 有忙狀態電平信號指示;
10、內置DSP高速處理器,響應時間極短,接收完指令到播放,響應時間控制在微秒級范圍;
11、電壓工作范圍2.7V~3.6V;
12、靜態電流30uA,可滿足大多數低功耗場合。

㈧ 單片機控制ISD1760語音晶元

5.2 語音晶元ISD1760介紹
ISD1700系列晶元是Winbond推出的單片優質語音錄放電路,該晶元提供多項新功能,包括內置專利的多信息管理系統,新信息提示(vAlert),雙運作模式(獨立&嵌入式),以及可定製的信息操作指示音效。晶元內部包含有自動增益控制、麥克風前置擴大器、揚聲器驅動線路、振盪器與內存等的全方位整合系統功能。
5.2.1 特點
可錄、放音十萬次,存儲內容可以斷電保留一百年。兩種控制方式,兩種錄音輸入方式,兩種放音輸出方式可處理多達255 段以上信息,有豐富多樣的工作狀態提示,多種采樣頻率對應多種錄放時間,音質好,電壓范圍寬,應用靈活,價廉物美。
5.2.2 電特性
工作電壓:2.4V-5.5V,最高不能超過6V,靜態電流:0.5 - 1 μA,工作電流:20mA,
用戶可利用震盪電阻來自定晶元的采樣頻率,從而決定晶元的錄放時間。
5.2.3 獨立按鍵工作模式
ISD1760 的獨立按鍵工作模式錄放電路非常簡單,而且功能強大。不僅有錄、放功能,還有快進、擦除、音量控制、直通放音和復位等功能。這些功能僅僅通過按鍵就可完成。
(1) 錄音操作
按下錄音鍵後,開始錄制當前段編號對應的段的語音。
(2) 放音操作
按下此鍵後播放當前段編號對應的語音,如果在語音播放過程中按此鍵則可以停止播放。
(3) 擦除鍵
按下此鍵後擦除當前段編號對應的語音,如果按住此鍵保持2s後,則擦除存儲器內除提示音以外的所有語音。
(4) 音量調節鍵
按住此鍵,則音量自動有大變小,到最小後,音量再增大。
(5) 下一段鍵
按下此鍵後,段編號會自動加1,播放下一段語音。如果按住此鍵不放,段編號會自動連續加1,直到按鍵釋放為止,當前段編號為最大時再按此鍵無效。
主控單片機主要通過四線(SCLK,MOSI,MISO,/SS)SPI協議對ISD1760進行串列通信。ISD1760作為從機,幾乎所有的操作都可以通過這個SPI協議來完成。為了兼容獨立按鍵模式,一些SPI命令:PLAY,REC,ERASE,FWD,RESET和GLOBAL_ERASE的運行類似於相應的獨立按鍵模式的操作。另外,SET_PLAY,SET_REC,SET_ERASE命令允許用戶指定錄音、放音和擦除的開始和結束。此外,還有一些命令可以訪問APC寄存器,用來設置晶元模擬輸入的方式。ISD1700系列的SPI串列介面操作遵照以下協議:
一個SPI處理開始於/SS管腳的下降沿。在一個完整的SPI指令傳輸周期,/SS管腳必須保持低電平。
數據在SCLK的上升沿鎖存在晶元的MOSI管腳,在SCLK的下降沿從MISO管腳輸出,並且首先移出低位。SPI指令操作碼包括命令位元組,數據位元組和指令位元組,這決定於1760的指令類5、當命令字及數據輸入到MOSI管腳時,同時狀態寄存器和當前行信息從MISO管腳移出。一個SPI處理在/SS變高後啟動。在完成一個SPI命令的操作後,會啟動一個中斷信息,並且持續保持為低,直到晶元收到CLR_INT命令或者晶元復位。

㈨ 基於51單片機控制ISD1760的c程序

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//******************定義埠******************//
sbit SS = P1^0;
sbit SCK = P1^1;
sbit MOSI = P1^2;
sbit MISO = P1^3;
sbit PR = P1^4;//PLAY = 0;REC = 1;
sbit STOP = P1^5;
sbit AN = P1^6;
sbit LED = P1^7;
//******************定義ISD1700狀態寄存器及各標志位******************//
uchar bdata SR0_L;//SR0寄存器低位、高位
uchar bdata SR0_H;
uchar bdata SR1;//SR1寄存器
uchar APC_L = 0, APC_H = 0;//APC寄存器
uchar PLAYADDL = 0, PLAYADDH = 0;//放音指針低位、高位
uchar RECADDL = 0, RECADDH = 0;//錄音指針低位、高位

sbit CMD_ERR = SR0_L^0;//SPI指令無效標志位
sbit FULL = SR0_L^1;//晶元存儲空間滿標志位
sbit PU = SR0_L^2;//上電標志位
sbit EOM = SR0_L^3;//EOM標志位
sbit INT = SR0_L^4;//操作完成標志位
sbit RDY = SR1^0;//晶元空閑標志位
sbit ERASE = SR1^1;//擦除標志位
sbit PLAY = SR1^2;//放音標志位
sbit REC = SR1^3;//錄音標志位
//******************定義標志位******************//
uchar bdata fang;
sbit PR_fang = fang^1;//錄音、放音標志位,放音=0,錄音=1
sbit Erase_fang = fang^4;//擦出標志位
sbit STOP_fang = fang^7;//停止放音標志位
//******************延時μs******************//
void delay(uint time)//延時n微秒
{
while(time!=0)
{
time--;
}
}
//******************延時ms******************//
void delayms(uint time)//延時n毫秒
{
for(time; time>0; time--)
{
TH0 = 0xfc;
TL0 = 0x18;
TR0 = 1;//計數器0啟動
while(TF0!=1);//計數溢出處理
TF0 = 0;
TR0 = 0;
}
}
//******************CPU初始化******************//
void cpu_init (void)
{
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
TMOD = 0x01;//定時器初始化,工作於方式1
EA = 0;//關中斷
fang = 0;//標志位歸0
LED = 1;//關指示燈
}
//******************發送、讀回數據******************//
uchar isd_senddata (uchar dat)
{
uchar i, BUF_ISD = dat;
SS = 0;
SCK = 1;
delay(4);
for(i=0; i<8; i++)
{
SCK = 0;
if((BUF_ISD&0x01)==1)
{
MOSI = 1;
}
else
{
MOSI = 0;
}
BUF_ISD = BUF_ISD >> 1;
if(MISO)
{
BUF_ISD = BUF_ISD|0x80;
}
SCK = 1;
delay(6);
}
MOSI = 0;
return(BUF_ISD);
}
//******************上電******************//
void isd_pu (void)
{
isd_senddata (0x01);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************停止當前操作******************//
void isd_stop (void)
{
isd_senddata (0x02);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************復位******************//
void isd_reset (void)
{
isd_senddata (0x03);
isd_senddata (0x00);
SS = 1;
}
//******************清除中斷******************//
void isd_clr_int (void)
{
isd_senddata (0x04);
isd_senddata (0x00);
SS = 1;
}
//******************讀狀態寄存器內容******************//
void isd_rd_status (void)
{
isd_senddata (0x05);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x05);
SR0_H = isd_senddata (0x00);
SR1 = isd_senddata (0x00);
SS = 1;
}
//******************讀放音指針******************//
void isd_rd_playptr (void)
{
isd_senddata (0x06);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x06);
SR0_H = isd_senddata (0x00);
PLAYADDL = isd_senddata (0x00);
PLAYADDH = isd_senddata (0x00);
SS = 1;
}
//******************下電******************//
void isd_pd (void)
{
isd_senddata (0x07);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************讀錄音指針******************//
void isd_rd_recptr (void)
{
isd_senddata (0x08);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x08);
SR0_H = isd_senddata (0x00);
RECADDL = isd_senddata (0x00);
RECADDH = isd_senddata (0x00);
SS = 1;
}
//******************讀晶元ID******************//
uchar isd_devid (uchar deviceNO)
{
isd_senddata (0x09);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
isd_senddata (0x09);
isd_senddata (0x00);
deviceNO = isd_senddata (0x00);
SS = 1;
return(deviceNO);
}
//******************放音******************//
void isd_play (void)
{
isd_senddata (0x40);
isd_senddata (0x00);
SS = 1;
}
//******************錄音******************//
void isd_rec (void)
{
isd_senddata (0x41);
isd_senddata (0x00);
SS = 1;
}
//******************擦除******************//
void isd_erase (void)
{
isd_senddata (0x42);
isd_senddata (0x00);
SS = 1;
}
//******************全部擦出******************//
void isd_g_erase (void)
{
isd_senddata (0x43);
isd_senddata (0x00);
SS = 1;
}
//******************讀APC寄存器內容******************//
void isd_rd_apc (void)
{
isd_senddata (0x44);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x44);
SR0_H = isd_senddata (0x00);
APC_L = isd_senddata (0x00);
APC_H = isd_senddata (0x00);
SS = 1;
}
//******************寫APC寄存器******************//
void isd_wr_apc2 (uchar apcdatl,apcdath)
{
isd_senddata (0x65);
isd_senddata (apcdatl);
isd_senddata (apcdath);
SS = 1;
}
//******************將APC寄存器內容寫入NVCFG******************//
void isd_wr_nvcfg (uchar apcdatl,apcdath)
{
isd_senddata (0x46);
isd_senddata (apcdatl);
isd_senddata (apcdath);
SS = 1;
}
//******************將NVCFG內容寫入APC******************//
void isd_ld_nvcfg (void)
{
isd_senddata (0x47);
isd_senddata (0x00);
SS = 1;
}
//******************快進******************//
void isd_fwd (void)
{
isd_senddata (0x48);
isd_senddata (0x00);
SS = 1;
}
//******************空檢查******************//
void isd_chk_mem (void)
{
isd_senddata (0x49);
isd_senddata (0x00);
SS = 1;
}
//******************外部時鍾的啟用、關閉******************//
void isd_extclk (void)
{
isd_senddata (0x4a);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址放音******************//
void isd_set_play (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x80);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址錄音******************//
void isd_set_rec (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x81);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址擦除******************//
void isd_set_erase (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x82);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************晶元系統初始化******************//
void isd_init (void)
{
uchar i = 2;
SS = 1;
SCK = 1;
MOSI = 0;
do
{
isd_pu ();
isd_rd_status ();
}while(CMD_ERR||(!PU));
isd_wr_apc2 (0x40,0x04);
do
{
isd_rd_status ();
}while(RDY==0);
do
{
LED = 0;
delayms(300);
LED = 1;
delayms(300);
i--;
}while(i>0);
}
//******************isd1700的相關操作******************//
void isdwork (void)
{
uchar i;
switch (fang)
{
case 0x00:
{
do
{
isd_rd_status ();
}while(RDY==0);
delayms(10);
isd_play ();
delayms(2);
LED = 0;
do
{
isd_rd_status ();
if(STOP==0)
{
delayms (10);
if(STOP==0)
{
LED = 1;
isd_clr_int ();
isd_stop ();
isd_reset ();
isd_pd ();
isd_init ();
return;
}
}
}while(PLAY==1);
LED = 1;
isd_clr_int ();
do
{
isd_rd_status ();
}while(RDY==0);
delayms (10);
isd_fwd ();
do
{
isd_rd_status ();
}while(RDY==0);
}
break;
case 0x02:
{
isd_clr_int ();
do
{
isd_rd_status ();
}while(RDY==0);
delayms(10);
isd_rec ();
delayms(2);
LED = 0;
do
{
isd_rd_status ();
if(FULL==1)
{
for(i=3; i>0; i--)
{
LED = 0;
delayms (300);
LED = 1;
delayms (200);
}
}
}while(AN==0);
isd_clr_int ();
isd_stop ();
LED = 1;
}
break;
case 0x10:
{
do
{
isd_rd_status ();
}while(RDY==0);
delayms (10);
isd_g_erase ();
delayms (2);
do
{
isd_rd_status ();
}while(RDY==0);
for(i=3; i>0; i--)
{
LED = 0;
delayms (300);
LED = 1;
delayms (200);
}
}
break;
case 0x80:
{
isd_clr_int ();
isd_stop ();
isd_reset ();
isd_pd ();
}
break;
}
}
//******************主程序******************//
void main (void)
{
uchar i;
cpu_init ();
delayms (1);
isd_init ();
while(1)
{
if(AN==0)
{
delayms (10);
if(AN==0)
{
if(PR==1)
{
PR_fang = 1;
}
else
{
PR_fang = 0;
}
isdwork ();
}
}
if(STOP==0)
{
delayms (10);
if(STOP==0)
{
for(i=100; i>0; i--)
{
if(STOP==1)
{
STOP_fang = 1;
isdwork ();
isd_init ();
break;
}
delayms(30);
}
if (STOP_fang==1)
{
fang = 0;
continue;
}
Erase_fang = 1;
isdwork ();
}
}
}
}

㈩ STC89C52單片機如何在線調試,初次接觸,不太理解。

如果單片機與外部的聯絡通信也要用單片機的串口,就不能將串口與STC-ISP固定連接了,只能下載一次程序,再重新接線實驗一次效果了,否則,如果單片機的串口端能夠與STC-ISP固定連接時,只要勾選ISP軟體上的「當目標代碼發生變化時*******」的選項,只要Keil完成一次編譯,ISP就會自動下載一次,真的很方便。

閱讀全文

與單片機isd1760相關的資料

熱點內容
at89c51編程器 瀏覽:339
項目經理叫醒程序員 瀏覽:342
autocad旋轉命令 瀏覽:660
手機版wpsoffice怎麼打包文件夾 瀏覽:579
在成都學車用什麼app 瀏覽:818
grep命令管道 瀏覽:426
java修改重啟 瀏覽:567
單片機供電方案 瀏覽:770
airpodspro一代怎麼連接安卓 瀏覽:218
豌豆莢app上有什麼游戲 瀏覽:283
公路商店app標簽選什麼 瀏覽:338
linuxoracle命令行登錄 瀏覽:227
android深度休眠 瀏覽:172
php微信開發例子 瀏覽:845
醫得app登錄密碼是什麼 瀏覽:142
spring開發伺服器地址 瀏覽:411
伺服器上如何查看伺服器的埠 瀏覽:678
單片機伺服器編譯 瀏覽:770
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:956