ÖØÇì¿Æ¼¼Ñ§Ôºµ¥Æ¬»úʵÑé¿Î³ÌÖ¸µ¼new - ͼÎÄ

µ¥Æ¬»úÔ­Àí¼°Ó¦ÓÃ

ʵÑéÖ¸µ¼Êé

²â¿ØÏµ

2016Äê4ÔÂ

1/39

Ŀ ¼

1 µ¥Æ¬»úʵÑé°å ............................................................................................................................. 3

1.1 ×ÊÔ´½éÉÜ ........................................................................................................................... 3 1.2Ô­Àíͼ ................................................................................................................................ 4 1.3 PCB˿ӡͼ ....................................................................................................................... 6 2 KEILÈí¼þµÄʹÓà ..................................................................................................................... 7 3 STC-ISPÏÂÔØÈí¼þµÄʹÓ÷½·¨ ............................................................................................. 15 ʵÑéһʵÑé¶þʵÑéÈýʵÑéËÄʵÑéÎåʵÑéÁùʵÑéÆßʵÑé°Ë

ÊìϤKEILÈí¼þµÄʹÓà ................................................................................................ 18 Keil C51³ÌÐòÉè¼ÆÉÏ»úÁ·Ï° ....................................................................................... 20 µ¥Æ¬»úÖжÏʵÑé ........................................................................................................... 23 Öжϼ°¶¨Ê±Æ÷¨M¼ÆÊýÆ÷ʵÑé ....................................................................................... 25 ÊýÂë¹ÜÏÔʾÆ÷ʵÑé ....................................................................................................... 28 ´®¿ÚͨÐÅʵÑé ............................................................................................................... 30 ADת»»Æ÷ʵÑé ............................................................................................................ 33 DAת»»Æ÷ʵÑé ............................................................................................................ 36

2/39

1 µ¥Æ¬»úʵÑé°å

1.1 ×ÊÔ´½éÉÜ

1£©²ÉÓÃSTC8952RC£¨Óë±ê×¼51Ö¸Áî¡¢½ÅλÍêÈ«¼æÈÝ£©£¬Ö§³ÖÔÚÏß´®ÐÐISPÏÂÔØ¡£ 2£©¹©µç·½Ê½£ºUSB¹©µç¼°ÏÂÔØ 3£©USBת´®¿ÚRS232 (PL2303оƬ) 4£©4¸öLED·¢¹â¹Ü£¬1¸öµçԴָʾµÆ 5£©ËÄλÊýÂë¹Ü

6£©4¸ö¶ÀÁ¢Ê½¼üÅÌ£¨°üº¬ÍⲿÖжϰ´¼ü£©£¬1¸ö¸´Î»»òÏÂÔØ°´¼ü 7£©DS1302 һƬ 8£©AT24C02һƬ 9£©ÈÈÃôµç×è1Ö§ 10) ¼ÓÈȵç×è 1¸ö 11£©12864Òº¾§ÏÔʾ½Ó¿Ú 12£©PCF8573һƬ 13£©ADµçλÆ÷Ò»¸ö 14) ·äÃùÆ÷Ò»¸ö

15£©DS18B20ζȴ«¸ÐÆ÷£¨Ñ¡Åä¼þ£© 16£©IrDAºìÍâ½ÓÊÕÍ·£¨Ò£¿ØÆ÷ΪѡÅä¼þ£© ²úƷͼƬ£º

×ÊÔ´·ÖÅäͼÈçÏ£º

3/39

¼ÓÈÈָʾµÆ ÈÈÃôµç×è ·¢Èȵç×è DS18B20½Ó¿Ú MCU£º STC89C52 ËùÓÐIOÒý³ö 12864Òº¾§½Ó¿Ú DAָʾPCF8573 ADµçλÆ÷ ·äÃùÆ÷ ºìÍâ½ÓÊÕ USB µçÔ´ 24C02 DS130

PL2303 ÏÂÔØÐ¾Æ¬ Ëĸö¶ÀÁ¢°´¼ü µçÔ´ ָʾµÆ ¸´Î» ÏÂÔØ¼ü 5V GND 1.2Ô­Àíͼ

4/39

5/39

1.3 PCB˿ӡͼ

6/39

2 KEILÈí¼þµÄʹÓÃ

KEILÊÇ51µ¥Æ¬»ú¿ª·¢µÄ×î³£¼ûµÄ¿ª·¢Èí¼þ¡£

³É¹¦°²×°ºÃKEILÈí¼þºó£¬¼´¿É¿´µ½µçÄÔ×ÀÃæÉÏKeilÈí¼þͼ±ê,ÈçÏÂͼ¡£

1.Ë«»÷ͼ±ê£¬´ò¿ªÈí¼þ£¬³öÏÖÈçϽçÃæ¡£ÔÚ´ò¿ªµÄ´°¿ÚÖУ¬Ñ¡Ôñ¡°Project¡±²Ëµ¥£º

2.µã»÷¡°New Project¡±³öÏÖÒ»¸ö´´½¨¹¤³Ì¶Ô»°¿ò£¬Ñ¡Ôñ¹¤³ÌËù½¨Â·¾¶£¬²¢ÊäÈ빤³ÌµÄÎļþÃû£¨½¨ÒéÓÃÓ¢ÎÄ£©£¬µã»÷¡°±£´æ¡±£º

3.Ö®ºó³öÏÖоƬѡÔñ½çÃæ£¬ÈçÏÂͼ£º

7/39

4.ÕâÀѡȡ³£ÓÃ51оƬ¼´¿É£¬Ñ¡Ôñ¡°Philips¡±Ïµġ°8Xc51RC+¡±Ð¾Æ¬£º

5.µã»÷¡°È·¶¨¡±£¬ÔÚ³öÏÖÈç϶Ի°¿òʱ£¬Ñ¡Ôñ¡°·ñ¡±£º

8/39

6.ÖÁ´Ë£¬Òѳɹ¦½¨Á¢¹¤³Ì¡£½çÃæÈçÏÂͼËùʾ£º

7.µã»÷¡°Project¡±²Ëµ¥ÏÂÃæµÄ¡°options for Target¡®Target 1¡¯¡±Ñ¡Ï³öÏÖÈçÏÂÑ¡Ïî¿ò£º

9/39

8£®Ñ¡Ôñ¡°output¡±Ò³Ã棬ѡÖС°create Hex File¡±£¬²¢¿ÉÔÚ¡°Name of Executable:¡±ÊäÈë¿òÖУ¬ÖØÐÂÊäÈëÉú³ÉHEXÎļþµÄÎļþÃû£¬È»ºóµã¡°È·¶¨¡±£¬ÒÔÔÚ³ÌÐò±àÒëʱ£¬ÊµÊ±Éú³ÉÐèÏÂÔØµ½µ¥Æ¬»úÖеÄHEXÎļþ¡£

10/39

9.µã»÷¡°File¡± ²Ëµ¥ÏÂÃæµÄ¡°New¡±Ñ¡ÏÔÙµã»÷¡°File¡±²Ëµ¥ÏÂÃæµÄ¡°Save¡±Ñ¡Ï±£´æÎļþ¡£ÊäÈëÎļþÃû£¨CÎļþÀ©Õ¹ÃûΪ¡°.c¡±£¬»ã±àÎļþÀ©Õ¹ÃûΪ¡°.asm¡±£©£¬ÈçÏÂͼ£ºÈ¡ÃûΪmain.c£º

10.ÔÚн¨µÄÎļþÀ½øÐгÌÐò±àÖÆ£¬Èçͼ£º

11/39

11.³ÌÐò±àÖÆÍê³Éºó£¬±£´æÎļþ¡£½«Ô´³ÌÐòÎļþ¼ÓÔØµ½¹¤³ÌÖС£¼ÓÔØ·½·¨Îª£ºÓÒ»÷¡°Source Group¡±,ÔÚ³öÏÖµÄÑ¡ÏîÁбíÖУ¬Ñ¡Ôñ¡°Add Files to Group ¡®source Group 1¡¯¡±,ÈçÏÂͼËùʾ£º

12/39

12.ÔÚ³öÏֵĶԻ°¿òÖУ¬Ñ¡Ôñ¸Õ±à¼­µÄÔ´Îļþ£¨main.c£©,µã»÷¡°Add¡±,Èçͼ£º

13.Ìí¼Ó³É¹¦ºó£¬µã»÷¡°Project¡±²Ëµ¥ÏÂÃæµÄ¡°Rebuild all target files¡±Ñ¡Ïî¡£µ±±àÒëͨ¹ýÖ®ºóHEXÎļþ²ÅÄÜÉú³É£¬ÈçÏÂͼ¡£Èç¹û³ÌÐòÓдíÎ󣬱àÒë½á¹û¿òÖлáÓÐÌáʾ´íÎó¡£Ë«»÷¶ÔÓ¦µÄ´íÎóÁÐ±í£¬¿É¶¨Î»µ½Ô´³ÌÐòµÄλÖã¬ÒÔ±ã¿ìËÙѰÕÒ´íÎó¡£

13/39

14/39

3 STC-ISPÏÂÔØÈí¼þµÄʹÓ÷½·¨

¸ÃÈí¼þ½«ÒÑÉú³ÉµÄHEXÎļþÏÂÔØµ½µ¥Æ¬»úÖС£¾ßÌå²½ÖèÈçÏ£º 1.Ë«»÷STC-ISPͼ±ê£º

2.È»ºóÔÚ¡°µ¥Æ¬»úÐͺš±ÁбíÖÐÑ¡Ôñµ¥Æ¬»úÐͺţ¨Ó¦Ñ¡Ôñµ¥Æ¬»ú°åÖеÄCPUÐͺţ©£¬ÈçÏÂͼ£º

3.µã»÷¡°´ò¿ª³ÌÐòÎļþ¡±°´Å¥£¬ÕÒµ½ËùÒªÏÂÔØµÄHEXÎļþ£¬²¢Ñ¡ÖУ¬Ñ¡Ôñ¡°´ò¿ª¡±£¬ÈçÏÂͼ:

15/39

4.Ñ¡Ôñ´®¿ÚµÄ¶ÔÓ¦¶Ë¿ÚºÅ£¬£¨¸ù¾Ý×Ô¼ºµÄÓ²¼þÁ¬½Ó¶Ë¿Ú£©(ÈçCOM1)¡£

Ìáʾ£ºÊ¹ÓõçÔ´Ïß¼´¿ÉÏÂÔØ¡£µ«ÏÂÔØÖ®Ç°Ðè°²×°USBת´®¿ÚÇý¶¯³ÌÐò¡£ ½«°å×ÓÓëµçÄÔÁ¬½Óºó£¬Çë²é¿´¡°É豸¹ÜÀíÆ÷¡±ÖеÄCOMʶ±ð¶Ë¿ÚºÅ¡£

16/39

5.È»ºóÑ¡¡°MaxBuad¡±ÖеIJ¨ÌØÂÊ£¬Ò²¿ÉÒÔѡĬÈÏÖµ¡£

6.µã»÷¡°ÏÂÔØ/±à³Ì¡±°´Å¥£¬È»ºó°´Ï°å×ÓÉϵĺìÉ«ÏÂÔØ¼ü£¬½øÐÐÎļþÏÂÔØ¡£

7.ÉԵȼ¸Ã룬¼´¿ÉÏÂÔØÍê³É,Èçͼ£º

17/39

ʵÑéÒ» ÊìϤKEILÈí¼þµÄʹÓÃ

Ò»¡¢ÊµÑéÄ¿µÄ

1. ÈÏʶµ¥Æ¬»úʵÑéϵͳµÄ¹¹³É¼°Ê¹Óá£

2. ѧϰKEILÈí¼þºÍSTC-ISPÏÂÔØÈí¼þµÄʹÓ÷½·¨¡£ 3. µ¥Æ¬»úI/O¿ÚµÄʹÓ÷½·¨£» ¶þ¡¢ÊµÑéÄÚÈÝ

1. P13¿Ú×öÊä³ö¿Ú£¬½Ó·¢¹â¶þ¼«¹Ü£¬±àд³ÌÐò£¬Ê¹ÆäÉÁ˸¡£

2. P13¡¢P35~P37¿Ú½ÓËÄÖ»·¢¹â¶þ¼«¹ÜLED1-LED4, P20¿Ú½Ó¿ª¹ØK1£¬±àд³ÌÐò£¬Óÿª¹Ø¿ØÖÆ·¢

¹â¶þ¼«¹ÜÉϵÄÁÁÃð¡£

Èý¡¢ÊµÑé²½Öè

1.Éè¼ÆÊµÑéµç·£¬»­³öµç·ԭÀíͼ 2.°´ÕÕ KEILÈí¼þµÄʹÓò½Ö裬½¨Á¢¹¤³Ì¡£ 3.±àд³ÌÐò£¬±£´æÎļþ£¬½«Ô´³ÌÐòÎļþ¼ÓÔØµ½¹¤³ÌÖУ¬µ±±àÒëͨ¹ýÖ®ºóÉú³ÉHEXÎļþ¡£ 4. ÓÃSTC-ISPÏÂÔØÈí¼þÏÂÔØHEXÎļþµ½µ¥Æ¬»úϵͳ¡£ 5.ÔËÐС¢µ÷ÊÔ³ÌÐò£¬¹Û²ìʵÑé½á¹û¡£ ËÄ¡¢ÊµÑé²Î¿¼µç·¼°²Î¿¼³ÌÐò 1.²Î¿¼µç·

2.²Î¿¼³ÌÐò

ʵÑé1£º

#include \sbit P13=P1^3; //¶¨ÒåLEDָʾµÆµÄIO¿Ú void main() {

int i;//¼ÆÊ±±äÁ¿

while(1) {

for(i=0;i<30000;i++);//ÑÓʱ

18/39

P13=!P13;//ָʾµÆIO¿Ú·´×ª } }

ʵÑé2£º

#include \sbit P13=P1^3; //¶¨ÒåLEDָʾµÆµÄIO¿Ú sbit P20=P2^0; //¶¨ÒåkeyµÄIO¿Ú void main() {

int i;//¼ÆÊ±±äÁ¿

while(1) {

for(i=0;i<30000;i++);//ÑÓʱ

if( P20==0) P13=0; // °´¼ü,LEDÁÁ else P13=1;// LEDÁÁ } }

Î壮˼¿¼Ìâ

1. P35- P37¿Ú×öÊä³ö¿Ú£¬½Ó·¢¹â¶þ¼«¹Ü£¬±àд²¢µ÷ÊÔ³ÌÐò£¬Ê¹ÆäÉÁ˸¡£

2. P35- P37¿Ú×öÊä³ö¿Ú£¬½Ó·¢¹â¶þ¼«¹Ü£¬±àд²¢µ÷ÊÔÅÜÂíµÆ³ÌÐò¡£

19/39

ʵÑé¶þ Keil C51³ÌÐòÉè¼ÆÉÏ»úÁ·Ï°

Ò»¡¢ÊµÑéÄ¿µÄ

1. ѧϰKEILÈí¼þµÄ³ÌÐòµ÷ÊÔ·½·¨¡£

2. ѧ»áKEIL C³ÌÐòÉè¼Æ¼°µ÷ÊÔ£¬Öصãѧ»áÔ¤´¦ÀíÃüÁî¡¢Êý¾ÝÀàÐ͵͍Òå¡£ ¶þ¡¢ÊµÑéÄÚÈÝ

1.µ¥Æ¬»úP2¿ÚµÄP20ºÍP21¸÷½ÓÒ»¸ö¿ª¹ØK1¡¢K2£¬P13¡¢P35¡¢P36ºÍP37¸÷½ÓÒ»Ö»·¢¹â¶þ¼«¹Ü¡£ÓÉK1ºÍK2µÄ²»Í¬×´Ì¬À´È·¶¨·¢¹â¶þ¼«¹ÜµÄµãÁÁ¡£

K2 0 0 1 1 K1 0 1 0 1 ÁÁµÄ¶þ¼«¹Ü L1 L2 L3 L4 2.Éè¼ÆÒ»¸ö¶þ½øÖƼÓ1¼ÆÊýÆ÷£¬°´Ò»´Î¼ü£¬¼Ó1£¬²¢ÓÃ3¸öLEDÏÔʾ¼ÆÊý½á¹û£¬¼ÓÖÁ8ʱÇåÁãÖØÐ¼ÆÊý¡£ Èý¡¢ÊµÑé²½Öè

1.Éè¼ÆÊµÑéµç·£¬»­³öµç·ԭÀíͼ 2.°´ÕÕ KEILÈí¼þµÄʹÓò½Ö裬½¨Á¢¹¤³Ì¡£ 3.±àд³ÌÐò£¬±£´æÎļþ£¬½«Ô´³ÌÐòÎļþ¼ÓÔØµ½¹¤³ÌÖУ¬µ±±àÒëͨ¹ýÖ®ºóÉú³ÉHEXÎļþ¡£ 4. ÓÃSTC-ISPÏÂÔØÈí¼þÏÂÔØHEXÎļþµ½µ¥Æ¬»úϵͳ¡£ 5.ÔËÐС¢µ÷ÊÔ³ÌÐò£¬¹Û²ìʵÑé½á¹û¡£

ËÄ¡¢ÊµÑé²Î¿¼µç·¼°²Î¿¼³ÌÐò

1.ʵÑé1#include sbit k1 = P2^0; sbit k2 = P2^1; sbit P13 = P1^3; void main(){ while(1) { if(k1 == 0&k2 == 0) { P3 = 0x7f; } if(k1 == 1&k2 == 0) { P3 = 0xbf; } if(k1 == 0&k2 == 1) { P3 = 0xdf;

20/39

}

}

}

if(k1 == 1&k2 == 1) { P13 = 0; }

2.ʵÑé2

#include sbit key = P3^2; unsigned char a ;

unsigned char count = 0; void delay(int i) { while(i) i--; }

void main() { while(1) { P32=1; if( key==0 ) { delay(10); if( key==0) { count++; while(!key); if( count==8) count = 0; a = count; a = ~a; a = a<<5; P3 = a; } } } }

Î塢˼¿¼Ìâ

1.Éè¼ÆÒ»¸ö¶þ½øÖƼõ1¼ÆÊýÆ÷£¬°´Ò»´Î¼ü£¬¼õ1£¬²¢ÓÃ3¸öLEDÏÔʾ¼ÆÊý½á¹û£¬¼õÖÁ0ʱ£¬ÖØÐ´Ó7¿ªÊ¼¼ÆÊý¡£

2.ÓÃ1¸ö°´¼ü¿ØÖÆLEDµÄÏÔʾ£¬ÒªÇóÏÔʾ3ÖÖÒÔÉϵIJ»Í¬Ä£Ê½¡£È磬°´µÚÒ»´Î¼ü£¬3¸öµÆÂÖÁ÷ÁÁÃ𣻰´µÚ¶þ´Î¼ü£¬1¡¢2µÆºÍ2¡¢3µÆÂÖÁ÷ÏÔʾ£»°´µÚÈý´Î¼ü£¬3µÆÍ¬Ê±ÁÁÃð¡£

21/39

22/39

ʵÑéÈý µ¥Æ¬»úÖжÏʵÑé

Ò»¡¢ÊµÑéÄ¿µÄ

1.ÕÆÎÕµ¥Æ¬»úµÄÖжÏϵͳ£¬Ñ§»áµ¥Æ¬»úÖжÏϵͳµÄ³õʼ»¯¡£ 2.ѧ»áµ¥Æ¬»úÍⲿÖжϵÄÓ¦Óᣠ¶þ¡¢ÊµÑéÄÚÈÝ

1.²ÉÓÃÍⲿÖжϵķ½Ê½ÊµÏÖ°´¼ü¿ØÖÆ1¸öLEDµÄÁÁÃð¡£ 2.²ÉÓÃÍⲿÖжϵķ½Ê½ÊµÏÖ3¸öLEDµÄÂÖÁ÷ÁÁÃð¡£ Èý¡¢ÊµÑé²½Öè

1.Éè¼ÆÊµÑéµç·£¬»­³öµç·ԭÀíͼ 2.°´ÕÕ KEILÈí¼þµÄʹÓò½Ö裬½¨Á¢¹¤³Ì¡£ 3.±àд³ÌÐò£¬±£´æÎļþ£¬½«Ô´³ÌÐòÎļþ¼ÓÔØµ½¹¤³ÌÖУ¬µ±±àÒëͨ¹ýÖ®ºóÉú³ÉHEXÎļþ¡£ 4.ÓÃSTC-ISPÏÂÔØÈí¼þÏÂÔØHEXÎļþµ½µ¥Æ¬»úϵͳ¡£ 5.ÔËÐС¢µ÷ÊÔ³ÌÐò£¬¹Û²ìʵÑé½á¹û¡£ ËÄ¡¢ÊµÑé²Î¿¼µç·ºÍ²Î¿¼³ÌÐò

1.ʵÑé1

#include \

sbit P35=P3^5;

void main() {

IT0=1; //ÍⲿÖжÏ0Á¬ÑØ´¥·¢·½Ê½ EX0=1; //ʹÄÜÍⲿÖжÏ0 EA=1; //¿ª²¿ÖÐ¶Ï P34=0; //ָʾµÆ³õʼΪÁÁ

while(1) ; }

void int0() interrupt 0 //ÍⲿÖжÏ0³ÌÐòÈë¿Ú {

P35=!P35; }

2.ʵÑé2

23/39

#include \

//sbit P32=P3^2;

void main() {

IT0=1; //ÍⲿÖжÏ0Á¬ÑØ´¥·¢·½Ê½ EX0=1; //ʹÄÜÍⲿÖжÏ0 EA=1; //¿ª²¿ÖжÏ

while(1) ; }

void int0() interrupt 0 //ÍⲿÖжÏ0³ÌÐòÈë¿Ú {

static unsigned char Bit=0; Bit++;

if(Bit>=3)Bit =0; switch(Bit) {

case 0: P3 = 0xef; break; case 1: P3 = 0xdf; break; case 2: P3 = 0xbf; break; }

P32=1; }

Î塢˼¿¼Ìâ

1. ²ÉÓÃÍⲿÖжϵķ½Ê½ÊµÏÖÒ»¸ö¶þ½øÖƼõ1¼ÆÊýÆ÷£¬°´Ò»´Î¼ü£¬¼õ1£¬²¢ÓÃ3¸öLEDÏÔʾ¼ÆÊý½á¹û£¬¼õÖÁ0ʱ£¬ÖØÐ´Ó7¿ªÊ¼¼ÆÊý¡£

2. ²ÉÓÃÍⲿÖжϵķ½Ê½ÊµÏÖÓÃ1¸ö°´¼ü¿ØÖÆLEDµÄÏÔʾ£¬ÒªÇóÏÔʾ3ÖÖÒÔÉϵIJ»Í¬Ä£Ê½¡£

24/39

ʵÑéËÄ Öжϼ°¶¨Ê±Æ÷¨M¼ÆÊýÆ÷ʵÑé

Ò»¡¢ÊµÑéÄ¿µÄ

1.ÕÆÎÕµ¥Æ¬»úµÄÖжÏϵͳ¡¢¶¨Ê±Æ÷µÄ¹¤×÷Ô­Àí¡£ 2.ѧ»áµ¥Æ¬»úÖжÏϵͳ¡¢¶¨Ê±Æ÷µÄÓ¦Óᣠ¶þ¡¢ÊµÑéÄÚÈÝ

1.²ÉÓõ¥Æ¬»ú¶¨Ê±Æ÷ʵÏÖ1¸öLEDµÄÁÁÃð£¬ÖÜÆÚΪ1s¡£

2. ²ÉÓõ¥Æ¬»ú¶¨Ê±Æ÷ʵÏÖ4¸öLEDµÄÂÖÁ÷ÁÁÃð£¬Ã¿¸öLEDµãÁÁʱ¼äΪ1s¡£ Èý¡¢ÊµÑé²½Öè

1.Éè¼ÆÊµÑéµç·£¬»­³öµç·ԭÀíͼ 2.°´ÕÕ KEILÈí¼þµÄʹÓò½Ö裬½¨Á¢¹¤³Ì¡£ 3.±àд³ÌÐò£¬±£´æÎļþ£¬½«Ô´³ÌÐòÎļþ¼ÓÔØµ½¹¤³ÌÖУ¬µ±±àÒëͨ¹ýÖ®ºóÉú³ÉHEXÎļþ¡£ 4.ÓÃSTC-ISPÏÂÔØÈí¼þÏÂÔØHEXÎļþµ½µ¥Æ¬»úϵͳ¡£ 5.ÔËÐС¢µ÷ÊÔ³ÌÐò£¬¹Û²ìʵÑé½á¹û¡£ ËÄ¡¢ÊµÑé²Î¿¼µç·ºÍ²Î¿¼³ÌÐò

1.ʵÑé1

#include #define THC0 0xee #define TLC0 0x00 sbit led0=P1^3; void main() {

TMOD=0x01; TH0=THC0; TL0=TLC0; TR0=1; ET0=1; EA=1; while(1); }

void timer0_ISR(void) interrupt 1 {

25/39

static unsigned char count=0; TL0=TLC0; TH0=THC0; count++;

if(count>=200) {

count=0; led0=!led0; } } 2.ʵÑé2

#include #define THC0 0xee #define TLC0 0x00 sbit led0=P1^3; sbit led1=P3^5; sbit led2=P3^6; sbit led3=P3^7; void main() {

TMOD=0x01; TL0=TLC0; TH0=THC0; TR0=1; ET0=1; EA=1; while(1); }

void timer0_ISR(void) interrupt 1 {

static unsigned char count=0,Bit=0; TL0=THC0; TH0=TLC0; count++;

if(count>=200) {

count=0; Bit++; if(Bit>=4) Bit=0;

P3=P3|0xf0; P1=P1|0x0f;

switch(Bit) {

26/39

case 0:led0=0;break;

case 1:led1=0;break; case 2:led2=0;break; case 3:led3=0;break; } } } Î塢˼¿¼Ìâ

1.Éè¼Æ1¸öÃë¼ÆÊýÆ÷£¬Ã¿Ãë¼Æ1´ÎÊý£¬ÔÚLEDÉÏÏÔʾ³öÀ´£¬¼ÆÖÁ16ÇåÁãºóÖØÐ¼ÆÊý¡£ 2.ÔÚÉÏÌâ»ù´¡ÉÏÓð´¼ü¿ØÖÆÃë¼ÆÊýÆ÷µÄÆôÍ££¬°´Ò»´Î¼ü¿ªÊ¼¼ÆÊý£¬°´2´ÎÍ£Ö¹¼ÆÊý£¬°´3´ÎÓÖ¿ªÊ¼¼ÆÊý¡­¡£

27/39

ʵÑéÎå ÊýÂë¹ÜÏÔʾÆ÷ʵÑé

Ò»¡¢ÊµÑéÄ¿µÄ

1.ÕÆÎÕµ¥Æ¬»úµÄ°´¼ü¡¢ÊýÂë¹ÜÏÔʾÆ÷µÄ¹¤×÷Ô­Àí¡£ 2.ѧ»áµ¥Æ¬»ú¶ÀÁ¢Ê½°´¼ü¡¢ÊýÂë¹ÜÏÔʾÆ÷µÄÓ¦Óᣠ¶þ¡¢ÊµÑéÄÚÈÝ

1.ÔÚÒ»¸öÊýÂë¹ÜÉÏÏÔʾ×Ö·û¡°1¡±¡£ 2.ÔÚ4¸öÊýÂë¹ÜÉÏÏÔʾ×Ö·û¡°1¡±¡¢¡°2¡±¡¢¡°3¡±¡¢¡°4¡±¡£

3.Éè¼ÆÒ»¸ö2λ10½øÖƼÆÊýÆ÷£¬Ã¿Ãë¼Ó1£¬ÔÚLEDÉÏÏÔʾ¡£ Èý¡¢ÊµÑé²½Öè

1.Éè¼ÆÊµÑéµç·£¬»­³öµç·ԭÀíͼ 2.°´ÕÕ KEILÈí¼þµÄʹÓò½Ö裬½¨Á¢¹¤³Ì¡£ 3.±àд³ÌÐò£¬±£´æÎļþ£¬½«Ô´³ÌÐòÎļþ¼ÓÔØµ½¹¤³ÌÖУ¬µ±±àÒëͨ¹ýÖ®ºóÉú³ÉHEXÎļþ¡£ 4.ÓÃSTC-ISPÏÂÔØÈí¼þÏÂÔØHEXÎļþµ½µ¥Æ¬»úϵͳ¡£ 5.ÔËÐС¢µ÷ÊÔ³ÌÐò£¬¹Û²ìʵÑé½á¹û¡£ ËÄ¡¢ÊµÑé²Î¿¼µç·ºÍ²Î¿¼³ÌÐò

1.²Î¿¼µç·

2£®²Î¿¼³ÌÐò

#include \

#define THCO 0xee #define TLCO 0x0

unsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//¹²Òõ¼«ÊýÂë¹Ü£¬0-9¶ÎÂë±í

28/39

unsigned char Data_Buffer[4]={1,2,3,4};//ËĸöÊýÂë¹ÜÏÔʾÊýÖµ£¬Êý×é±äÁ¿¶¨Òå

sbit P24=P2^4; //ËĸöÊýÂë¹ÜµÄλÂë¿Ú¶¨Òå sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7;

void main() { TMOD=0x11; //¶¨Ê±Æ÷0³õʼ»¯ TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

while(1) ; }

void timer0() interrupt 1 {

static unsigned char Bit=0; //¾²Ì¬±äÁ¿£¬Í˳ö³ÌÐòºó£¬Öµ±£Áô

TH0=THCO; TL0=TLCO;

Bit++;

if(Bit>=4)Bit=0; P2|=0xf0; //ÏȹØÎ»Âë P0=Duan[Data_Buffer[Bit]]; //¿ª¶ÎÂë switch(Bit) //ËÍλÂë {

case 0: P24=0;break; case 1: P25=0;break; case 2: P26=0;break; case 3: P27=0;break; } }

Î塢˼¿¼Ìâ

Óð´¼ü×÷ÏÔʾģʽѡÔñ¼ü£¬ÊµÏÖÉÏÊöʵÑéÖÐ3¸öÏÔʾ»­ÃæµÄÇл»£¬¼´ÉϵçÏÔʾ¡°1¡±£¬°´1´Î¼üÏÔʾ¡°1234¡±£¬ÔÙ2´Î¼üÏÔʾ2λÃë¼ÆÊýÆ÷£¬°´3´Î¼üÓÖÏÔʾ¡°1¡±¡­¡­¡£

29/39

ʵÑéÁù ´®¿ÚͨÐÅʵÑé

Ò».ʵÑéÄ¿µÄ

ÀûÓõ¥Æ¬»úµÄTXD¡¢RXD¿Ú£¬Ê¹Óû§Ñ§»áµ¥Æ¬»úµÄ´®ÐпڵÄʹÓᣠ¶þ.ʵÑéÉ豸¼°Æ÷¼þ

PC»ú һ̨ µ¥Æ¬»úʵÑé°å һ̨ Èý.ʵÑéÄÚÈÝ

±àдһ¶Î³ÌÐò£¬Ê¹ÊýÂë¹ÜÏÔʾ´ÓÉÏλ»ú½ÓÊÕµ½µÄ¶ÔÓ¦ÊýÖµ£¨0-9£©,²¢½«´ËÖµ·¢Ë͸øÉÏλ»ú¡££¨×¢£º´ËʵÑéÖ»ÄÜÓÃSTCоƬ£¬½«HEXÎļþÏÂÔØ½øÈ¥²ÅÄܹۿ´ÔËÐнá¹û£© ËÄ.ʵÑé²½Öè

1£®°´ÕÕ KEILÈí¼þµÄʹÓò½Ö裬½¨Á¢¹¤³Ì¡£ 2.±àд³ÌÐò£¬±£´æÎļþ£¬½«Ô´³ÌÐòÎļþ¼ÓÔØµ½¹¤³ÌÖУ¬µ±±àÒëͨ¹ýÖ®ºóÉú³ÉHEXÎļþ¡£ 3.ÓÃSTC-ISPÏÂÔØÈí¼þÏÂÔØHEXÎļþµ½µ¥Æ¬»úϵͳ¡£

4.ÔËÐС¢µ÷ÊÔ³ÌÐò£¬ÀûÓÃSTC-ISPµÄ´®¿ÚÖúÊÖ´°¿ÚÖз¢ËÍÊý¾Ý¸øµ¥Æ¬»ú£¬ÔÚµ¥Æ¬»úµÄÊýÂë¹ÜÉϹ۲ì½ÓÊÕµ½µÄÊý¾Ý£»²¢ÔÚSTC-ISPµÄ´®¿ÚÖúÊÖ´°¿ÚÖй۲ì½ÓÊÕµ½µÄÊý¾Ý¡£

±¾ÊµÑéÖн«Ê¹Óô®¿ÚÖúÊÖ½øÐе÷ÊÔ£¬Ê¹Ó÷½·¨ÈçÏ£º £¨1£©ÔÚSTC-ISPÈí¼þ´°¿ÚÖУ¬µã»÷ ¡°´®¿ÚÖúÊÖ¡±£¬PC»úÉÏÏÔʾÏÂͼËùʾ´°¿Ú£¬ÔÚ·¢ËÍ»º³åÇøºÍ½ÓÊÕ»º³åÇø¾ùÑ¡ÔñHEXģʽ£¬ÕýÈ·Ñ¡ÔñͨѶµÄ´®¿ÚºÅºÍ²¨ÌØÂÊ£¬¸ù¾Ýµ¥Æ¬»úÓëPC»úÁ¬½ÓµÄ´®¿ÚÑ¡Ôñ´®¿ÚºÅ£¬²¨ÌØÂʵÄÑ¡ÔñÒªÓë³ÌÐòÖÐÉ趨µÄ²¨ÌØÂÊÒ»Ö£¬±¾ÊµÑéÖÐÑ¡ÔñµÄ²¨ÌØÂÊΪ9600¡£

£¨2£©ÔÚ·¢ËÍ»º³åÇøÊäÈë0-9µÄÊý¾Ý£¬È»ºóµã»÷¡°·¢ËÍÊý¾Ý¡±£¬¹Û²ìµ¥Æ¬»úʵÑé°åÉÏLEDÏÔʾµÄ½á¹û£¬²¢¹Û²ìSTC-ISPÈí¼þ´°¿ÚÖС°½ÓÊÕ»º³åÇø¡±ÖÐÏÔʾµÄÊý¾ÝÊÇ·ñÓëLEDÏÔʾÊý¾ÝÒ»Ö¡£

ͼ2.7 PC»ú´®¿ÚÖúÊÖ½çÃæ

Îå.²Î¿¼Àý³Ì

#include \

30/39

#define THCO 0xee #define TLCO 0x0 unsigned

char

code

Duan[]={0x3F,

0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //¹²Òõ¼«ÊýÂë¹Ü£¬0-9¶ÎÂë±í

unsigned char Data_Buffer[4]={1,2,3,4}; //ËĸöÊýÂë¹ÜÏÔʾÊýÖµ£¬Êý×é±äÁ¿¶¨Òå

sbit P24=P2^4; //ËĸöÊýÂë¹ÜµÄλÂë¿Ú¶¨Òå sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7; //sbit P34=P3^4; void main() {

TMOD=0x20; SCON=0x50;

TH1=0xfd; //ÉèÖò¨ÌØÂÊΪ9600 TL1=0xfd;

TR1=1; //¿ª¶¨Ê±Æ÷1 ES=1;

TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

while(1); }

void timer0() interrupt 1 {

static unsigned char Bit=0; //¾²Ì¬±äÁ¿£¬Í˳ö³ÌÐòºó£¬Öµ±£Áô TH0=THCO; TL0=TLCO;

31/39

//·½Ê½¿ØÖÆ×Ö

Bit++;

//ÏȹØÎ»Âë

if(Bit>=4)Bit=0; P2|=0xf0;

P0=Duan[Data_Buffer[Bit]]; //¿ª¶ÎÂë switch(Bit) {

case 0: P24=0;break; case 1: P25=0;break; case 2: P26=0;break; case 3: P27=0;break; }

}

void seri()interrupt 4 {

unsigned char temp; if(RI==1) {

temp=SBUF; RI=0;

if(temp>=0&&temp<=9)//½ÓÊÕµ½µÄÊý¾ÝΪ0-9ʱÏÔʾµ½ÊýÂë¹ÜÉÏ { TI=0; SBUF=temp; while(TI==0); TI=0; } }

32/39

//ËÍλÂë

}

Data_Buffer[0]=temp; Data_Buffer[1]=temp; Data_Buffer[2]=temp; Data_Buffer[3]=temp; //P34=!P34;

7.˼¿¼Ìâ

ÀûÓõ¥Æ¬»úµÄ´®ÐпÚÏòPC»ú·¢ËÍÊý¾Ý0x55,ÔËÐнá¹û¿ÉÒÔͨ¹ýÔÚPCµÄ½ÓÊÕÈí¼þÉÏ¿´¼û£¬ÑéÖ¤½ÓÊÕÊý¾ÝÊÇ·ñÕýÈ·¡£

ʵÑéÆß ADת»»Æ÷ʵÑé

Ò»¡¢ÊµÑéÄ¿µÄ

ѧ»áÓÃ51µ¥Æ¬»úÄ£ÄâI2C×ÜÏß½Ó¿Ú£¬ÊµÏÖÓëPCF8591 8λADת»»Æ÷µÄ½Ó¿Ú£¬Ñ§»áÓõ¥Æ¬»úʵÏÖÊý¾Ý²É¼¯µÄ·½·¨¡£ ¶þ¡¢ÊµÑéÉ豸¼°Æ÷¼þ

PC»ú һ̨

51µ¥Æ¬»úʵÑé°åһ̨£¨º¬PCF8951оƬ£© ÍòÓÃ±í¡¢Ê¾²¨Æ÷ Èý¡¢ÊµÑéÄÚÈÝ

±àдһ¶Î³ÌÐò£¬²É¼¯PCF8591 ADͨµÀµÄÄ£ÄâÐźÅÖµ£¬½«²É¼¯µÄµçѹֵÓÃËÄλÊýÂë¹ÜÏÔʾ³öÀ´¡£

ËÄ¡¢ÊµÑéµç·ԭÀíͼ

AIN0-AIN3Ϊ4·ģÄâÊäÈëÐźţ¬Ê±ÖÓÐźÅSCL½ÓÖÁµ¥Æ¬»úP36£¬Êý¾ÝÏßSDA½ÓÖÁP37¡£ Îå¡¢²Î¿¼Àý³Ì

#include \#include #define uchar unsigned char #define uint unsigned int

#define PCF8591 0x90 //PCF8591 µØÖ· #define THCO 0xf8 //11.0592MHZ¾§Õñ #define TLCO 0xcb //¶¨Ê±2msʱ¼ä³£ÊýÖµ unsigned char Data_Buffer[4]={1,2,3,4};

33/39

uchar code

Duan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};

sbit P24=P2^4; sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7; bit flag=0;

bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val); bit ISendByte(unsigned char sla,unsigned char c); unsigned char IRcvByte(unsigned char sla); /******************************/ void main(void) //Ö÷³ÌÐò {

unsigned int v;

unsigned char AD_CHANNEL=1; unsigned int D[5]={0,0,0,0,255};

TMOD=0x11; TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

//ËĸöÊýÂë¹ÜµÄλÂë¿Ú¶¨Òå

//ÉèÖö¨Ê±Æ÷0¹¤×÷ģʽ,16λ¼ÆÊýģʽ

//Æô¶¯¶¨Ê±Æ÷

//ʹÄܶ¨Ê±Æ÷ÖÐ¶Ï //¿ª×ÜÖжÏ

while(1) {

if(flag==1) {flag=0;

ISendByte(PCF8591,0x41);

v=IRcvByte(PCF8591);

Data_Buffer[0]=0; Data_Buffer[1]=v/100;

34/39

Data_Buffer[2]=v/10;

Data_Buffer[3]=v; }

} }

void timer0() interrupt 1 //¶¨Ê±Æ÷ÖжϷþÎñ×Ó³ÌÐò {

static unsigned int count=0;//Èí¼ÆÊ±±äÁ¿¶¨Òå

static unsigned char Bit=0; //¾²Ì¬±äÁ¿£¬Í˳ö³ÌÐòºó£¬Öµ±£Áô

TH0=THCO; TL0=TLCO; Bit++; if(Bit>=4)Bit=0; P2|=0xf0;

//ÏȹØÎ»Âë //¿ª¶ÎÂë

P0=Duan[Data_Buffer[Bit]]; if(Bit==0)P0|=0x80; switch(Bit) {

case 0: P24=0;break; case 1: P25=0;break; case 2: P26=0;break; case 3: P27=0;break; }

count++; if(count>=250) {

count=0; flag=1; } }

//ËÍλÂë

//°ëSʱ¼äµ½

Áù¡¢Ë¼¿¼Ìâ

35/39

1.½«PCF8591µÄ4¸öÄ£ÄâÊäÈëͨµÀµÄ²ÉÑùÖµÂÖÁ÷ÔÚÊýÂë¹ÜÉÏÏÔʾ³öÀ´¡£

ʵÑé°ËDAת»»Æ÷ʵÑé

Ò»¡¢ÊµÑéÄ¿µÄ

ѧ»áÓÃ51µ¥Æ¬»úÄ£ÄâI2C×ÜÏß½Ó¿Ú£¬ÊµÏÖÓëPCF8591µÄ8λADת»»Æ÷µÄ½Ó¿Ú£¬Ñ§»áÓõ¥Æ¬»úʵÏÖ²¨Ðη¢ÉúÆ÷µÄ·½·¨¡£ ¶þ¡¢ÊµÑéÉ豸¼°Æ÷¼þ

PC»ú һ̨

51µ¥Æ¬»úʵÑé°åһ̨£¨º¬PCF8951оƬ£© ÍòÓÃ±í¡¢Ê¾²¨Æ÷ Èý¡¢ÊµÑéÄÚÈÝ

±àдһ¶Î³ÌÐò£¬Óõ¥Æ¬»ú¿ØÖÆPCF8591 DAת»»Æ÷Êä³ö·½²¨£¬ÓÃʾ²¨Æ÷¹Û²ìPCF8591Êä³öµÄ·½²¨¡£

ËÄ¡¢ÊµÑéµç·ԭÀíͼ

ʱÖÓÐźÅSCL½ÓÖÁµ¥Æ¬»úP36£¬Êý¾ÝÏßSDA½ÓÖÁP37¡£ Îå¡¢²Î¿¼Àý³Ì

#include \#include

#define uchar unsigned char #define uint unsigned int

#define PCF8591 0x90 //PCF8591 µØÖ·

#define THCO 0xf8 //11.0592MHZ¾§Õñ #define TLCO 0xcb //¶¨Ê±2msʱ¼ä³£ÊýÖµ

36/39

unsigned char Data_Buffer[4]={1,2,3,4}; uchar

5e,0x79,0x71,0x76};

sbit P24=P2^4; sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7;

bit flag=0;

bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val); bit ISendByte(unsigned char sla,unsigned char c); unsigned char IRcvByte(unsigned char sla); /******************************/ void main(void) //Ö÷³ÌÐò {

unsigned int v;

unsigned char AD_CHANNEL=0; unsigned int D=255;

TMOD=0x11; TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1; while(1) {

if(flag==1) {flag=0;

code

Duan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x

//ËĸöÊýÂë¹ÜµÄλÂë¿Ú¶¨Òå

//ÉèÖö¨Ê±Æ÷0¹¤×÷ģʽ,16λ¼ÆÊýģʽ

//Æô¶¯¶¨Ê±Æ÷

//ʹÄܶ¨Ê±Æ÷ÖжÏ

//¿ª×ÜÖжÏ

DACconversion(PCF8591,0x40, D); //DAC Êýģת»» D=255-D;//Êä³ö·½²¨

37/39

}

Data_Buffer[1]=D/100; Data_Buffer[2]=D/10; } }

void timer0() interrupt 1 //¶¨Ê±Æ÷ÖжϷþÎñ×Ó³ÌÐò {

static unsigned int count=0;//Èí¼ÆÊ±±äÁ¿¶¨Òå static unsigned char Bit=0;

TH0=THCO; TL0=TLCO; Bit++;

//ÏȹØÎ»Âë

if(Bit>=4)Bit=0; P2|=0xf0;

P0=Duan[Data_Buffer[Bit]]; //¿ª¶ÎÂë if(Bit==0)P0|=0x80; switch(Bit) {

case 0: P24=0;break; case 1: P25=0;break; case 2: P26=0;break; case 3: P27=0;break; }

count++;

if(count>=250) {

count=0;

38/39

Data_Buffer[3]=D; }

//¾²Ì¬±äÁ¿£¬Í˳ö³ÌÐòºó£¬Öµ±£Áô

//ËÍλÂë

//°ëSʱ¼äµ½

flag=1; } }

Áù¡¢Ë¼¿¼Ìâ

ÀûÓõ¥Æ¬»ú¿ØÖÆPDF8591 DAת»»Æ÷Êä³öÈý½Ç²¨£¬ÓÃʾ²¨Æ÷¹Û²ìPCF8591Êä³öµÄ·½²¨¡£

39/39

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)