實(shí)驗(yàn)一: 一、實(shí)驗(yàn)?zāi)康模?/font> 1、學(xué)會(huì)使用Keil、Proteus仿真軟件; 2、掌握P口的輸入、輸出工作方式,學(xué)會(huì)C51編程與調(diào)試方法; 3、掌握發(fā)光二極管的控制方法。
二、實(shí)驗(yàn)內(nèi)容: 如圖1所示,要求采用軟件延時(shí)、查表方法控制指示燈,指示燈的花樣至少4個(gè)以上;
三、實(shí)驗(yàn)步驟:
1、在Keil軟件下輸入源程序,然后編譯生成HEX文件; (放調(diào)試好的程序,希望有注釋) - #include<reg51.h>
- #include<intrins.h>
- Unsignchar led[] =
- {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff };/*LED字模*/
- unsigned int count = 0;/*流水花樣序號(hào)*/
- unsigned int speed=20000;/*流水燈初速度*/
- void delay(unsigned inttime){ /*不可變延時(shí)函數(shù)*/
- unsigned char c=250;
- for( ;time>0;time--)
- for( ;c>0;c--);
- }
- void key1() interrupt 0using 1/*K0中斷*/
- {
- EX0 = 0;
- count++;
- if (count == 4) { count = 0; }
- EX0 = 1;
- }
- void key2() interrupt 2 using2/*K1中斷*/
- {
- speed = speed - 10000;
- if (speed <= 0) {
- speed = 20000;
- }
- delay(3500);
- }
- void main() {
- int i;
- unsigned char Num = 0xff;
- IT0 = 1; /*脈沖觸發(fā)方式*/
- IT1 = 1;
- EX0 = 1; /*開中斷*/
- EX1 = 1;
- EA = 1;
- while (1) {
- if (count == 0) { /*花樣1*/
- for (i = 0; i<= 8;i++){ P0 = 0xff;delay(speed); P0 = 0x00;delay(speed);}
- }
- else if (count == 1) { /*花樣2*/
- for (i = 8;i >= 0;i--) { P0 = led[i ];delay(speed); }
- }
- else if (count == 2) { /*花樣3*/
- P0 = Num;delay(speed);Num--;
- }
- else if (count == 3) {/*花樣4*/
- for( i = 0;i < 8;i++) { P0 = led[ i];delay(speed); }
- }
- }
- }
復(fù)制代碼
2、在Proteus軟件下畫出電路圖,然后裝載HEX文件運(yùn)行,反復(fù)調(diào)試直到看到結(jié)果。
(放運(yùn)行下的圖)
S_3{ITYJ64]YL1(_Q9C5CXV.png (143.9 KB, 下載次數(shù): 84)
下載附件
2017-6-9 09:55 上傳
四、實(shí)驗(yàn)心得:這是我第一次接觸單片機(jī)實(shí)驗(yàn),覺(jué)得很有趣,在這個(gè)過(guò)程中也學(xué)到了不少東西。學(xué)會(huì)了使用proteus和keil兩個(gè)軟件,學(xué)會(huì)基本的畫圖,知道畫圖中也有許多細(xì)節(jié)的部分,例如如何劃斜線,這些畫圖就像女孩子繡花一個(gè)道理,要追求美觀,簡(jiǎn)短。怎樣才可以低成本的畫出來(lái)等等,都是一個(gè)細(xì)心活。再有就是寫編程,一開始我就是一個(gè)菜鳥,什么都不會(huì),幸虧開始接觸的不是很難,要不然就要崩潰了。想學(xué)好編程,第一步就是要看懂別人怎么寫,為什么要這樣寫。然后自己跟著那思路畫一次,接下來(lái)就是自己學(xué)會(huì)創(chuàng)造,怎么寫更加簡(jiǎn)單明了 |