❶ 51單片機鍵盤介面電路的計算器的實現的畢業設計及開題報告
51單片機計算器的設計(開題報告實物論文)
目 錄
1.課程設計的目的………………………………………………3
2.課程設計題目描述和要求……………………………………3
3.單片機發展簡史………………………………………………4
4.MCS-51單片機系統簡介………………………………………6
5.MCS-51單片機內部定時器/計數器簡介……………………7
6.理論設計………………………………………………………8
7.主要電路分析…………………………………………………8
8.硬體設計………………………………………………………10
9.軟體設計………………………………………………………11
10.程序代碼……………………………………………………12
11.設計總結……………………………………………………18
12.參考文獻……………………………………………………20
隨著社會的發展,科學的進步,人們的生活水平在逐步的提高,尤其是微電子技術的發展,猶如雨後春筍般的變化。電子產品的更新速度快就不足驚奇了。
計算器在人們的日常中是比較的常見的電子產品之一。可是它還在發展之中,以後必將出現功能更加強大的計算器,基於這樣的理念,本次設計是用單片機來設計的四位數計算器。該設計系統是以AT89S51為單片機, P3口作為輸入端,外接4X4的鍵盤,通過鍵盤掃描來對輸入數的控制,在P1口,P2口接了驅動電路。用來保證LED的工作正常。計算器將完成的功能有加,減,乘,除等功能。
功能:
完成0~9999整數的一次加/減/乘/除運算,
減法運算結果可以實現計算結果的負數顯示,
除法運算結果為0~999並保留兩位小數,
按鍵音,
設有清零鍵,
首位零不顯示,
其它的顯示"E"
按鍵排布為:
清零/確認/除/乘
減/加/9/8
7/6/5/4
3/2/1/0
❷ 單片機簡易計算器設計的程序
展開全部
首先會按鍵掃描,再會數碼管或液晶屏顯示,基本上可以了
程序
流程:
掃描按鍵(最多5次,最大65536,簡易計算器嗎)獲得一個數,再掃描按鍵獲得加減乘除符號
掃描按鍵獲得另一個數
掃描按鍵獲得「=」,顯示計算結果
由於程序比較長,且與硬體有關,因此只貼出主程序:
void
main()
{
while(1)
{
c=1;
while(c<6)//輸入第1個5
位數
{
keyval=keyscan();
if(keyval<10)
{
switch(c)
{
case
1:b1=keyval;
break;
case
2:b2=keyval;
break;
case
3:b3=keyval;
break;
case
4:b4=keyval;
break;
case
5:b5=keyval;
break;
}
c++;
}
display1(b1,b2,b3,b4,b5);
}
while(c==6)
//輸入計算符號
{
keyval=keyscan();
if((keyval>=10)&&(keyval<14))
//10-13代表加減乘除
4種符號
{
d=keyval;
}
c=1;
display3(d);
}
while(c<6)
//輸入第2個5
位數
{
keyval=keyscan();
if(keyval<10)
{
switch(c)
{
case
1:d1=keyval;
break;
case
2:d2=keyval;
break;
case
3:d3=keyval;
break;
case
4:d4=keyval;
break;//
除
case
5:d5=keyval;
break;
}
c++;
}
display2(d1,d2,d3,d4,d5);
}
bb=
b1*10000+b2*1000+b3*100+b4*10+b5;//5個按鍵數值合成一個數
dd=d1*10000+d1*1000+d3*100+d4*10+d5;
//另外5個按鍵數值也合成一個數
while(keyval!=14)
//等待按下"="
{
keyval=keyscan();
}
Delay1ms(10);
switch(d)
{
case
10:ee=bb+dd;
break;//+
case
11:
flag1=1;//結果是負數的標志,先假定是負數
if(bb>=dd)
{
ee=bb-dd;
//結果不是負數
flag1=0;
}
else
ee=dd-bb;
//減數和被減數交換
break;
case
12:ee=bb*dd;
break;//*可能會溢出
case
13:ee=bb/dd;
//除法小數部分會丟失,保留2位
ff=bb%dd;
fd1=ff*10/dd;
fd2=ff*100/dd%10;
break;
}
f10=ee/1000000000%10;
f9=ee/100000000%10;
f8=ee/10000000%10;
f7=ee/1000000%10;
f6=ee/100000%10;
f5=ee/10000%10;
f4=ee/1000%10;
f3=ee/100%10;
f2=ee/10%10;
f1=ee%10;
display4(f10,f9,f8,f7,f6,f4,f4,f3,f2,f1,fd1,fd2);
while(keyval!=15)
{
keyval=keyscan();
}
b1=0;b2=0;b3=0;b4=0;b5=0;
d1=0;d2=0;d3=0;d4=0;d5=0;
bb=0;dd=0;ee=0;
init2();
}
}
❸ 怎樣用51單片機做計算器啊
1、硬體模擬圖
4、程序源代碼
#include <reg51.h>#include <intrins.h>
#include <ctype.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
uchar operand1[9], operand2[9];
uchar operator;
void delay(uint);
uchar keyscan();
void disp(void);
void buf(uint value);
uint compute(uint va1,uint va2,uchar optor);
uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xff};
uchar dbuf[8] = {10,10,10,10,10,10,10,10};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar keyscan()
{
uchar skey;
P1 = 0xfe;
while((P1 & 0xf0) != 0xf0)
{
delay(3);
while((P1 & 0xf0) != 0xf0)
{
switch(P1)
{
case 0xee: skey = '7'; break;
case 0xde: skey = '8'; break;
case 0xbe: skey = '9'; break;
case 0x7e: skey = '/'; break;
default: skey = '#';
}
while((P1 & 0xf0) != 0xf0)
;
}
}
P1 = 0xfd;
while((P1 & 0xf0) != 0xf0)
{
delay(3);
while((P1 & 0xf0) != 0xf0)
{
switch(P1)
{
case 0xed: skey = '4'; break;
case 0xdd: skey = '5'; break;
case 0xbd: skey = '6'; break;
case 0x7d: skey = '*'; break;
default: skey = '#';
}
while((P1 & 0xf0) != 0xf0)
;
}
}
P1 = 0xfb;
while((P1 & 0xf0) != 0xf0)
{
delay(3);
while((P1 & 0xf0) != 0xf0)
{
switch(P1)
{
case 0xeb: skey = '1'; break;
case 0xdb: skey = '2'; break;
case 0xbb: skey = '3'; break;
case 0x7b: skey = '-'; break;
default: skey = '#';
}
while((P1 & 0xf0) != 0xf0)
;
}
}
P1 = 0xf7;
while((P1 & 0xf0) != 0xf0)
{
delay(3);
while((P1 & 0xf0) != 0xf0)
{
switch(P1)
{
case 0xe7: skey = '$'; break;
case 0xd7: skey = '0'; break;
case 0xb7: skey = '='; break;
case 0x77: skey = '+'; break;
default: skey = '#';
}
while((P1 & 0xf0) != 0xf0)
;
}
}
return skey;
}
void main()
{
uint value1, value2, value;
uchar ckey, cut1 = 0, cut2 = 0;
uchar operator;
uchar i, bool = 0;
init:
buf(0);
disp();
value = 0;
cut1 = cut2 = 0;
bool = 0;
for(i = 0;i < 9;i++)
{
operand1[i] = '';
operand2[i] = '';
}
while(1)
{
ckey = keyscan();
if(ckey != '#')
{
if(isdigit(ckey))
{
switch(bool)
{
case 0:
operand1[cut1] = ckey;
operand1[cut1+1] = '';
value1 = atoi(operand1);
cut1++;
buf(value1);
disp();
break;
case 1:
operand2[cut2] = ckey;
operand2[cut2+1] = '';
value2 = atoi(operand2);
cut2++;
buf(value2);
disp();
break;
default: break;
}
}
else if(ckey=='+'||ckey=='-'||ckey=='*'||ckey=='/')
{
bool = 1;
operator = ckey;
buf(0);
dbuf[7] = 10;
disp();
}
else if(ckey == '=')
{
value = compute(value1,value2,operator);
buf(value);
disp();
while(1)
{
ckey = keyscan();
if(ckey == '$')
goto init;
else
{
buf(value);
disp();
}
}
}
else if(ckey == '$')
{ goto init;}
}
disp();
}
}
uint compute(uint va1,uint va2,uchar optor)
{
uint value;
switch(optor)
{
case '+' : value = va1+va2; break;
case '-' : value = va1-va2; break;
case '*' : value = va1*va2; break;
case '/' : value = va1/va2; break;
default : break;
}
return value;
}
void buf(uint val)
{
uchar i;
if(val == 0)
{
dbuf[7] = 0;
i = 6;
}
else
for(i = 7; val > 0; i--)
{
dbuf[i] = val % 10;
val /= 10;
}
for( ; i > 0; i--)
dbuf[i] = 10;
}
void disp(void)
{
uchar bsel, n;
bsel=0x01;
for(n=0;n<8;n++)
{
P2=bsel;
P0=table[dbuf[n]];
bsel=_crol_(bsel,1);
delay(3);
P0=0xff;
}
}
(3)單片機計算器課程設計擴展閱讀:
PROTEUS 是單片機課堂教學的先進助手
PROTEUS不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,後者則是實物演示實驗難以達到的效果。
它的元器件、連接線路等卻和傳統的單片機實驗硬體高度對應。這在相當程度上替代了傳統的單片機實驗教學的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟體調試、運行結果等。
課程設計、畢業設計是學生走向就業的重要實踐環節。由於PROTEUS提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數量、質量上難以相比的虛擬儀器、儀表,因而也提供了培養學生實踐精神、創造精神的平台
隨著科技的發展,「計算機模擬技術」已成為許多設計部門重要的前期設計手段。它具有設計靈活,結果、過程的統一的特點。可使設計時間大為縮短、耗資大為減少,也可降低工程製造的風險。相信在單片機開發應用中PROTEUS也能茯得愈來愈廣泛的應用。
使用Proteus 軟體進行單片機系統模擬設計,是虛擬模擬技術和計算機多媒體技術相結合的綜合運用,有利於培養學生的電路設計能力及模擬軟體的操作能力;
在單片機課程設計和全國大學生電子設計競賽中,我們使用 Proteus開發環境對學生進行培訓,在不需要硬體投入的條件下,學生普遍反映,對單片機的學習比單純學習書本知識更容易接受,更容易提高。
實踐證明,在使用 Proteus 進行系統模擬開發成功之後再進行實際製作,能極大提高單片機系統設計效率。因此,Proteus 有較高的推廣利用價值。
❹ 基於51單片機的簡易計算器設計,急
//功能 0 1 2 3 4 5 6 7 8 9 + - × ÷ = 清零 表3-1 3.2 計算器的軟體設計
#include<reg51.h> //頭文件
#define uint unsigned int //
#define uchar unsigned char
sbit lcden=P2^3; //定義引腳
sbit rs=P2^4;
sbit rw=P2^0;
sbit busy=P0^7;
char i,j,temp,num,num_1;
long a,b,c; //a,第一個數 b,第二個數 c,得數
float a_c,b_c;
uchar flag,fuhao;//flag表示是否有符號鍵按下,fuhao表徵按下的是哪個符號
uchar code table[]={ 7,8,9,0, 4,5,6,0, 1,2,3,0, 0,0,0,0};
uchar code table1[]={
7,8,9,0x2f-0x30,
4,5,6,0x2a-0x30,
1,2,3,0x2d-0x30,
0x01-0x30,0,0x3d-0x30,0x2b-0x30};
void delay(uchar z) // 延遲函數
{
uchar y;
for(z;z>0;z--)
for(y=0;y<110;y++);
} void check() // 判斷忙或空閑
{
do{
P0=0xFF;
rs=0; //指令
rw=1; //讀
lcden=0; //禁止讀寫
delay(1); //等待,液晶顯示器處理數據
lcden=1; //允許讀寫
}while(busy==1); //判斷是否為空閑,1為忙,0為空閑
}
void write_com(uchar com) // 寫指令函數
{
P0=com; //com指令付給P0口
rs=0;
rw=0;
lcden=0;
check();
lcden=1;
}
void write_date(uchar date) // 寫數據函數
{
P0=date;
rs=1;
rw=0;
lcden=0;
check();
lcden=1;
}
void init() //初始化
{
num=-1;
lcden=1; //使能信號為高電平
write_com(0x38); //8位,2行
write_com(0x0c); //顯示開,游標關,不閃爍*/
write_com(0x06); //增量方式不移位 顯竟獗暌貧 柚?
write_com(0x80); //檢測忙信號
write_com(0x01); //顯示開,游標關,不閃爍
num_1=0;
i=0;
j=0;
a=0; //第一個參與運算的數
b=0; //第二個參與運算的數
c=0;
flag=0; //flag表示是否有符號鍵按下,
fuhao=0; // fuhao表徵按下的是哪個符號
}
void keyscan() // 鍵盤掃描程序
{
P3=0xfe;
if(P3!=0xfe)
{
delay(20); //延遲20ms
if(P3!=0xfe)
{
temp=P3&0xf0;
switch(temp)
{
case 0xe0:num=0;
break;
case 0xd0:num=1;
break;
case 0xb0:num=2;
break;
case 0x70:num=3;
break;
}
}
while(P3!=0xfe);
if(num==0||num==1||num==2)//如果按下的是'7','8'或'9
{
if(j!=0)
{
write_com(0x01);
j=0;
}
if(flag==0)//沒有按過符號鍵
{
a=a*10+table[num];
}
else//如果按過符號鍵
{
b=b*10+table[num];
}
}
else//如果按下的是'/'
{
flag=1;
fuhao=4;//4表示除號已按
}
i=table1[num];
write_date(0x30+i);
}
P3=0xfd;
if(P3!=0xfd)
{
delay(5);
if(P3!=0xfd)
{
temp=P3&0xf0;
switch(temp)
{
case 0xe0:num=4;
break;
case 0xd0:num=5;
break;
case 0xb0:num=6;
break;
case 0x70:num=7;
break;
}
}
while(P3!=0xfd);
if(num==4||num==5||num==6&&num!=7)//如果按下的是'4','5'或'6'
{
if(j!=0)
{
write_com(0x01);
j=0;
}
if(flag==0)//沒有按過符號鍵
{
a=a*10+table[num];
}
else//如果按過符號鍵
{
b=b*10+table[num];
}
}
else//如果按下的是'/'
{
flag=1;
fuhao=3;//3表示乘號已按
}
i=table1[num];
write_date(0x30+i);
}
P3=0xfb; if(P3!=0xfb)
{
delay(5);
if(P3!=0xfb)
{
temp=P3&0xf0;
switch(temp)
{
case 0xe0:num=8;
break;
case 0xd0:num=9;
break;
case 0xb0:num=10;
break;
case 0x70:num=11;
break;
}
}
while(P3!=0xfb);
if(num==8||num==9||num==10)//如果按下的是'1','2'或'3'
{
if(j!=0)
{
write_com(0x01);
j=0;
}
if(flag==0)//沒有按過符號鍵
{
a=a*10+table[num];
}
else//如果按過符號鍵
{
b=b*10+table[num];
}
}
else if(num==11)//如果按下的是'-'
{
flag=1;
fuhao=2;//2表示減號已按
}
i=table1[num];
write_date(0x30+i);
}
P3=0xf7;
if(P3!=0xf7)
{
delay(5);
if(P3!=0xf7)
{
temp=P3&0xf0;
switch(temp)
{
case 0xe0:num=12;
break;
case 0xd0:num=13;
break;
case 0xb0:num=14;
break;
case 0x70:num=15;
break;
}
}
while(P3!=0xf7);
switch(num)
{
case 12:{write_com(0x01);a=0;b=0;flag=0;fuhao=0;}//按下的是"清零"
break;
case 13:{ //按下的是"0"
if(flag==0) //沒有按過符號鍵
{
a=a*10;
write_date(0x30);
P1=0;
}
else if(flag==1)//如果按過符號鍵
{
b=b*10;
write_date(0x30);
}
}
break;
case 14:{j=1;
if(fuhao==1){write_com(0x80+0x4f);//按下等於鍵,游標前進至第二行最後一個顯示處
write_com(0x04); //設置從後住前寫數據,每寫完一個數據,游標後退一格
c=a+b;
while(c!=0)
{
write_date(0x30+c%10);
c=c/10;
}
write_date(0x3d); //再寫"="
a=0;b=0;flag=0;fuhao=0;
}
else if(fuhao==2){write_com(0x80+0x4f); //游標前進至第二行最後一個顯示處
write_com(0x04); //設置從後住前寫數據,每寫完一個數據,游標後退一格
//(這個照理說順序不對,可顯示和上段一樣)
if(a-b>0)
c=a-b;
else
c=b-a;
while(c!=0)
{
write_date(0x30+c%10);
c=c/10;
}
if(a-b<0)
write_date(0x2d);
write_date(0x3d); //再寫"="
a=0;b=0;flag=0;fuhao=0;
}
else if(fuhao==3){write_com(0x80+0x4f);
write_com(0x04);
c=a*b;
while(c!=0)
{
write_date(0x30+c%10);
c=c/10;
}
write_date(0x3d);
a=0;b=0;flag=0;fuhao=0;
}
else if(fuhao==4){write_com(0x80+0x4f);
write_com(0x04);
i=0;
c=(long)(((float)a/b)*1000);
while(c!=0)
{
write_date(0x30+c%10);
c=c/10;
i++;
if(i==3)
write_date(0x2e);
}
if(a/b<=0)
write_date(0x30);
write_date(0x3d);
a=0;b=0;flag=0;fuhao=0;
}
}
break;
case 15:{write_date(0x30+table1[num]);flag=1;fuhao=1;}
break;
}
}
}
main()
{
init();
while(1)
{
keyscan();
}
}
❺ 單片機簡易計算器設計的程序
首先會按鍵掃描,再會數碼管或液晶屏顯示,基本上可以了
程序 流程: 掃描按鍵(最多5次,最大65536,簡易計算器嗎)獲得一個數,再掃描按鍵獲得加減乘除符號 掃描按鍵獲得另一個數 掃描按鍵獲得「=」,顯示計算結果
由於程序比較長,且與硬體有關,因此只貼出主程序:
void main()
{ while(1)
{
c=1;
while(c<6)//輸入第1個5 位數
{
keyval=keyscan();
if(keyval<10)
{
switch(c)
{
case 1:b1=keyval; break;
case 2:b2=keyval; break;
case 3:b3=keyval; break;
case 4:b4=keyval; break;
case 5:b5=keyval; break;
}
c++;
}
display1(b1,b2,b3,b4,b5);
}
while(c==6) //輸入計算符號
{
keyval=keyscan();
if((keyval>=10)&&(keyval<14)) //10-13代表加減乘除 4種符號
{
d=keyval;
}
c=1;
display3(d);
}
while(c<6) //輸入第2個5 位數
{
keyval=keyscan();
if(keyval<10)
{
switch(c)
{
case 1:d1=keyval; break;
case 2:d2=keyval; break;
case 3:d3=keyval; break;
case 4:d4=keyval; break;// 除
case 5:d5=keyval; break;
}
c++;
}
display2(d1,d2,d3,d4,d5);
}
bb= b1*10000+b2*1000+b3*100+b4*10+b5;//5個按鍵數值合成一個數
dd=d1*10000+d1*1000+d3*100+d4*10+d5; //另外5個按鍵數值也合成一個數
while(keyval!=14) //等待按下"="
{
keyval=keyscan();
}
Delay1ms(10);
switch(d)
{
case 10:ee=bb+dd; break;//+
case 11:
flag1=1;//結果是負數的標志,先假定是負數
if(bb>=dd)
{
ee=bb-dd; //結果不是負數
flag1=0;
}
else ee=dd-bb; //減數和被減數交換
break;
case 12:ee=bb*dd; break;//*可能會溢出
case 13:ee=bb/dd; //除法小數部分會丟失,保留2位
ff=bb%dd;
fd1=ff*10/dd;
fd2=ff*100/dd%10;
break;
}
f10=ee/1000000000%10;
f9=ee/100000000%10;
f8=ee/10000000%10;
f7=ee/1000000%10;
f6=ee/100000%10;
f5=ee/10000%10;
f4=ee/1000%10;
f3=ee/100%10;
f2=ee/10%10;
f1=ee%10;
display4(f10,f9,f8,f7,f6,f4,f4,f3,f2,f1,fd1,fd2);
while(keyval!=15)
{
keyval=keyscan();
}
b1=0;b2=0;b3=0;b4=0;b5=0;
d1=0;d2=0;d3=0;d4=0;d5=0;
bb=0;dd=0;ee=0;
init2();
}
}
❻ 一、設計題目 基於單片機的簡易計算器設計 二、設計任務 1、用單片機設計一簡易計算器。 2、採用4*4鍵盤,
1. 4X4鍵盤輸入,點陣字元型液晶顯示。
2. 由於所採用的浮點程序庫的限制(MCU平台只找到這個……),浮點運算採用3位元組二進制補碼表示,有效數字6位。對於輸入輸出,採用3位元組BCD碼浮點數格式,有效數字只有4位,因此最終有效數字只有4位。
3. 可進行連續輸入,例如:1.23+4.56*8.23/234.8 ,但是運算結果為從左到右,這也是8位簡易計算器的方式。
4. 可進行錯誤判斷,溢出、除零等錯誤將顯示一個字元 E 。
5. 由於鍵盤只有16個按鍵,安排如下:
+---------------+
| 7 | 8 | 9 | + |
| 4 | 5 | 6 | - |
| 1 | 2 | 3 | * |
| 0 | . | = | / |
+---------------+
6. 按鍵的缺少導致取消了一些特殊函數,即開根號,三角函數(sin, cos, tan, ctg)的實現,由於這些函數在浮點程序庫中均已提供,如果硬體允許,在原來的框架上添加這些附加功能是很容易的(可以看作和+, -, *, /等價的按鍵操作,調用不同的子程序進行運算即可)
7. 按兩次 = 等於清靈。因為按鍵實在太少,才採用了這個做法。
8. 相應舉例:
按鍵 結果 說明
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
123+= 123 按下等號而沒有第二個操作數,保留第一個操作數
並認為此次運算結束(等號的功能)
123+321/111 4.0 等價於(123+321) / 111
2.3+5.4=/0.1+ 77 等號後直接按 / ,則將前面的運算結果作為第一個
操作數
1/0= E 錯誤顯示
要源碼去這里:
❼ 怎樣用51單片機做計算器啊
1、首先第一步就是要進行查找元器件並放入到原理圖中,如下圖所示。
(7)單片機計算器課程設計擴展閱讀
電腦模擬:
單片機有了開發系統,隨著單片機的發展開發系統也在不斷發展。 keil是一種先進的單片機集成開發系統。
它代表著匯編語言單片機開發系統的最新發展,首創多項便利技術,將開發的編程/模擬/調試/寫入/加密等所有過程一氣呵成,中間不須任何編譯或匯編。
功能特性:
1、可以模擬63K程序空間,接近64K 的16位地址空間;
2、可以模擬64Kxdata 空間,全部64K 的16位地址空間;
3、可以真實模擬全部32 條IO腳;
4,完全兼容keilC51 UV2 調試環境,可以通過UV2 環境進行單步,斷點, 全速等操作;
5、可以使用C51語言或者ASM匯編語言進行調試 ;
6、可以非常方便地進行所有變數觀察,包括滑鼠取值觀察,即滑鼠放在某 變數上就會立即顯示出它此的值;
7、可選 使用用戶晶振,支持0-40MHZ晶振頻率;
8、片上帶有768位元組的xdata,您可以在模擬時選 使用他們,進行xdata 的模擬;
9、可以模擬雙DPTR 指針;
10、可以模擬去除ALE 信號輸出. ;
11、自適應300-38400bps 的所有波特率通訊;
12、體積非常細小,非常方便插入到用戶板中.插入時緊貼用戶板,沒有連接電纜,這樣可以有效地減少運行中的干擾,避免模擬時出現莫名其妙的故障;
13、模擬插針採用優質鍍金插針,可以有效地防止日久生銹,選擇優質園腳IC插座,保護模擬插針,同時不會損壞目標板上的插座. ;
14,模擬時監控和用戶代碼分離,不可能產生不能模擬的軟故障;
15、RS-232介面不計成本採用MAX202集成電路,串列通訊穩定可靠,絕非一般三極體的簡易電路可比。
功能限制:
模擬器佔用單片機串口及定時器2,與Keil C(PC)通訊,故不支持串口及定時器2 的模擬功能。全速運行時單片機串口及定時器2 可供用戶使用。
使用方法:
1、將模擬器插入需模擬的用戶板的CPU插座中,模擬器由用戶板供電;
2、將模擬器的串列電纜和PC機接好,打開用戶板電源;
3、通過Keil C 的IDE 開發模擬環境UV2 下載用戶程序進行模擬、調試。