AT89C51这个电路图,和c语言程序在在这里,求解释下步骤,或者解释下按钮的用处 请问下面的这个程序怎样在AT89c51单片机开发板上连接电路...
\u6c42\u89e3\u91ca\u4e0b\u56feAT89C51\u590d\u4f4d\u7535\u8def\u662f\u600e\u4e48\u5de5\u4f5c\u7684\uff0c\u8d8a\u8be6\u7ec6\u8d8a\u597d\u8fd9\u56fe\u662f\u9519\u7684
9\u5f15\u811aRST\u8868\u793a\u9ad8\u7535\u5e73\u590d\u4f4d\uff0c\u4f46\u662f\u8fd9\u7535\u8def\u5374\u662f\u57289\u5f15\u811a\u63a5\u5730\uff0c\u6839\u672c\u6ca1\u6548\u679c\u3002
\u968f\u4fbf\u753b\u7684\u5c06\u5c31\u4e00\u4e0b
P3\u63a5\u77e9\u9635\u952e\u76d8
P2\u9001\u6570\u7801\u7ba1\u6570\u636e
当不按按钮时,只执行主函数循环中的流水灯闪烁,从低位到高位依次闪烁。(i初值1,*2就是2进制由低到高依次取1,P0&=~i,就是P0对应位取0)。
图片根本是看不清楚,好像是R11(单片机复位之后就是高电平,P32口里面也有上拉电阻,不用上拉电阻),R12(有那么多电阻,前面加一个没用的)就是多余的。
P0口是开漏,要接上拉电阻,一般都是接的排阻
int main(void) using 0 没这种写法,应该是int main(void) 或 void main(void)
EX0=1; // 外部中断0 打开
IT0=1; // 下降沿触发, 就是说P32口由高电平变为低电平的过程,就会执行 void int0()interrupt 0 using 1 内的代码
其它都是 P0赋值操作,没什么好说的
其中 &是一个位运算符 ,例如
1111 0001 & 0000 0011 就是每一位进行运算,有一个1是0,两个1是1
1111 0001
0000 0011
结果: 0000 0001 换成16进制 0x01
绛旓細鍥句笉澶竻妤氾紝鐪嬭繛绾夸綅缃紝鎸夐挳杩炵殑鏄閮ㄤ腑鏂0銆備唬鐮佷腑IT0=1銆傚氨鏄笅闄嶆部瑙﹀彂锛屾寜閽寜涓嬫椂鎺ュ湴锛岃Е鍙戜腑鏂0锛屾墽琛屼腑鏂殑浠g爜锛屼娇寰楁墍鏈塋ed浜伃涓娆°傚綋涓嶆寜鎸夐挳鏃讹紝鍙墽琛屼富鍑芥暟寰幆涓殑娴佹按鐏棯鐑侊紝浠庝綆浣嶅埌楂樹綅渚濇闂儊銆傦紙i鍒濆1锛*2灏辨槸2杩涘埗鐢变綆鍒伴珮渚濇鍙1锛孭0&=锝瀒锛屽氨鏄疨0瀵瑰簲浣嶅彇0锛夈
绛旓細濡備笅鍥炬墍绀猴紝绾㈣壊鐨勬槸姝e鸡娉紝鍥犲懆鏈熷ぇ锛屾樉绀轰笉瀹屽叏銆
绛旓細鎬濊矾锛氱孩鐏仠锛岀豢鐏锛岄粍鐏棯鐑佹彁绀鸿浜虹孩缁跨伅鍗冲皢鍒囨崲銆傚洓涓柟鍚戝悇鏈変竴涓孩銆侀粍銆佺豢鏄剧ず鍜屼袱涓暟鐮佺銆備笢瑗块亾涓轰汉琛岄亾(20绉)锛屽崡鍖楅亾涓鸿溅琛岄亾锛60绉掞級,榛勭伅寤舵椂鏈鍚庝笁绉掓椂锛岄棯鐑佸苟鍒囨崲銆備笁銆佺‖浠鐢佃矾璁捐 姝ょ數涓矾璁捐閲囩敤AT89C51鍗曠墖鏈猴紝74LS47锛堟暟鐮佺椹卞姩锛74LS373锛堟暟鐮佺椹卞姩杈撳嚭閿佸瓨锛夛紝8涓...
绛旓細include <AT89X51.H> unsigned char temp;unsigned char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;unsigned int code tab[]={64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178};void main(void){ TMOD=0x01;ET0=1;EA=...
绛旓細1銆丳ROTEUS瀹夎濂藉悗锛岄粯璁や笉浼氬湪妗岄潰涓婁骇鐢熷揩鎹锋柟寮忋傚厛鎵撳紑寮濮嬭彍鍗曪紝渚濇鐐瑰嚮鈥滅▼搴忋丳roteus7Professional銆両SIS7Professional鈥濇墦寮PROTEUS銆2銆佸崟鍑诲浘涓殑P锛屾坊鍔犲崟鐗囨満绛夊厓浠躲3銆佺敤鍏抽敭瀛楁悳绱紝89C51锛屽啀鍔犲嚑涓狶ED锛屽洜涓烘槸浠跨湡灏变笉鐢ㄥ姞闄愭祦鐢甸樆鍜屾櫠鎸浣嶇殑鍏冧欢浜嗐4銆佹妸鍏冧欢鎺掑垪鏀惧ソ锛屽啀鏀句竴涓數婧...
绛旓細涓锛孋51绋嬪簭锛屾垜鐨勬槸 鐢↙CD1602鏄剧ず鐨勬俯搴﹁锛屽彟澶 鎴戠粰鐨勫浘鏄疉T89C2051 浣犲彲浠ユ寜绋嬪簭缁欑殑鎺ュ彛鎹㈠仛51 include<reg52.h> define uint unsigned int define uchar unsigned char define lcd P0 define n 5 sbit lcd_e=P2^6;sbit lcd_rw=P2^5;sbit lcd_rs=P2^4;sbit ds18b20_io=P1^7;uc...
绛旓細//杩欎簺绔彛瑕佹牴鎹紑鍙戞澘鐨勬帴鍙i夋嫨sbit lcdrw = P2^5;sbit lcden = P2^6;sbit busy = P0^7;uchar num;void init();void wait();void write_cmd(uchar cmd);void write_data(uchar dat);void display(uchar add,uchar *a);void delay(uint z);void main(){ uchar buf1[]=" 012...
绛旓細AT89C51锛孋鏄疌MOS鍨嬶紝鏄疉TMEL鍏徃鐨勪骇鍝侊紝鏄涓涓妸FLASH宸ヨ壓搴旂敤鍒51鍗曠墖鏈轰腑锛屾妸绋嬪簭瀛樺偍鍣‵LASH-ROM闆嗘垚鍒板崟鐗囨満鍐呫備粠姝わ紝鎺ㄨ繘浜51鍗曠墖鏈虹殑骞挎硾搴旂敤銆傚ROM缂栫▼鏃堕渶瑕12V鐢靛帇锛屽苟閲囩敤骞惰鏂瑰紡锛屾墍浠ワ紝缂栫▼寰堥夯鐑︼紝浣嗗嵈鏄51鍗曠墖鏈哄彂灞曠殑涓涓爣蹇楁х殑闃舵銆侫T89S51鏄疉TMEL鍦ㄥ墠鑰呯殑鍩虹涓婂紑鍙戠殑灏变竴浠51...
绛旓細鍗曠墖鏈虹殑鍙摝闄ゅ彧璇诲瓨鍌ㄥ櫒鍙互鍙嶅鎿﹂櫎100娆°傝鍣ㄤ欢閲囩敤ATMEL楂樺瘑搴﹂潪鏄撳け瀛樺偍鍣ㄥ埗閫犳妧鏈埗閫狅紝涓庡伐涓氭爣鍑嗙殑MCS-51鎸囦护闆嗗拰杈撳嚭绠¤剼鐩稿吋瀹广傜敱浜庡皢澶氬姛鑳8浣岰PU鍜岄棯鐑佸瓨鍌ㄥ櫒缁勫悎鍦ㄥ崟涓姱鐗囦腑锛孉TMEL鐨AT89C51鏄竴绉嶉珮鏁堝井鎺у埗鍣紝AT89C2051鏄畠鐨勪竴绉嶇簿绠鐗堟湰銆侫T89C鍗曠墖鏈轰负寰堝宓屽叆寮忔帶鍒剁郴缁熸彁渚涗簡涓绉...
绛旓細{ uint i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);} void main(){ while(1){ EA=1;ET0=1;while(P3^2==0){ if(k1==0){ LED_1=0;relay(100);} if(k2==0){ LED_2=0;relay(100);} if(k3==0){ LED_3=0;relay(100);} } } 绋嬪簭瀹屾瘯锛佷笅闈㈡槸鐢佃矾鍥锛...