µ¥Æ¬»úÔÀí¼°Ó¦ÓÃ
ʵÑéÖ¸µ¼Êé
²â¿ØÏµ
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
20/39
}
}
}
if(k1 == 1&k2 == 1) { P13 = 0; }
2.ʵÑé2
#include
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
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
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 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