±±¾©º½¿Õº½Ìì´óѧÑо¿Éú¿Î³Ì¿¼ºË¼Ç¼
±±¾©º½¿Õº½Ìì´óѧÑо¿Éú¿Î³Ì¿¼ºË¼Ç¼
2009£2010 ѧÄê µÚһѧÆÚ
ѧºÅ ÐÕÃû ³É¼¨
¿Î³ÌÃû³Æ£º¡¶µ¥Æ¬»úϵͳÊÔÑé(1)¡·
ÂÛÎÄÌâÄ¿£ºÊµÑ鱨¸æ
Ò»¡¢ ʵÑéÄ¿µÄ
1. Á˽ⵥƬ»úµÄÔÀí¼°ÆäÓ¦Óã¬ÊìϤµ¥Æ¬»úµÄ×ÊÔ´£¬ÕÆÎÕµ¥Æ¬»úµÄ×îСϵ
ͳÉè¼Æ¼°À©Õ¹¼¼Êõ£¬ÕÆÎÕÒ»Ãŵ¥Æ¬»úµÄÓïÑÔ£¨»ã±àÓïÑÔ»òµ¥Æ¬»úµÄC51ÓïÑÔ£©¡£
2. ͨ¹ý±¾ÊµÑéÁ˽âI2C×ÜÏßµÄÌØµã£¬ÒÔ¼°51ϵͳÖжÔI2CÆ÷¼þµÄʹÓúͱà
³Ì·½·¨£¬°üÀ¨£ºÁ˽âI2C×ÜÏßϵͳÖÐÏÔʾ¼üÅÌÇý¶¯Æ÷ZLG7290£¬ÕÆÎÕÆäʹÓúͱà³Ì·½·¨£»ÁË½â´øÓÐI2C×ÜÏß½Ó¿ÚµÄʵʱʱÖÓоƬPCF8563µÄ¹¤×÷ÔÀí£¬ÕÆÎÕÆäʹÓúͱà³Ì·½·¨£»ÕÆÎÕ×Ö·ûÐÍÒº¾§Çý¶¯Ð¾Æ¬PCF8576µÄ¹¤×÷ÔÀí£¬ÕÆÎÕÆäʹÓúͱà³Ì·½·¨¡£
3. ͨ¹ý±¾ÊµÑéÁ˽â×Ö·ûÐÍÒº¾§µÄÏÔʾ·½·¨¡£ ¶þ¡¢ ʵÑéÉ豸
µ¥Æ¬»ú×ۺϷÂÕæÊµÑéÒÇһ̨£¬PC»úһ̨¡£ Èý¡¢ ʵÑéÔÀí
£¨1£©I/O¿ÚʵÑ飺P1¿Ú×÷Ϊ׼˫Ïò¿Ú£¬Ã¿Ò»Î»¿É¶ÀÁ¢¶¨ÒåΪÊäÈëÊä³ö¡£CPU¶ÔP1¿ÚµÄ²Ù×÷¿ÉÒÔÊÇ×Ö½Ú²Ù×÷£¬Ò²¿ÉÒÔÊÇλ²Ù×÷¡£ÊµÑéÖÐP1.0£P1.3½Ó·¢¹â¶þ¼«¹Ü£¬±àд³ÌÐò£¬Í¨¹ýP1¿Ú¿ØÖÆLED״̬£¬ÊìϤCPU¶ÔP1¿Ú²Ù×÷Ö¸Áî¡£P1.4½Å½Ó°´¼ü£¬×÷ΪÊý×ÖÊäÈë¡£
£¨2£©I2CÆ÷¼þʵÑ飺I2C×ÜÏßµÄÔÀí¼°Èí¼þ°ü£¬¸÷¸öÆ÷¼þµÄÆ÷¼þµØÖ·¼°µØÖ·Òý½ÅµÈÔÀí¡£¾ßÌåÔÀíͼ¿É²Î¿´²Î¿¼ÊéÄ¿¡¾1¡¿»ò´ÓÍøÉÏÏÂÔØwww.21IC.com¡£
£¨3£©µãÕóÒº¾§ÊµÑé£ºÕÆÎÕLCD12864µãÕóÒº¾§µÄ¿ØÖÆ·½·¨¡£ ËÄ¡¢ ÄÚÈÝÓë²½Öè
1. ѧ»áʹÓÃKEIL C51µÄ·ÂÕæµ÷ÊÔ»·¾³ÒÔ¼°·ÂÕæÆ÷µÄʹÓ㬲¢ÄÜʹ4¸öµÆÈ«
ÁÁ¡£
2. I/O¿ÚʵÑ飺ѻ·¶¨Ê±£¨Óö¨Ê±Æ÷×ö£©µãÁÁ4¸öµÆ£¬¼´Ã¿2ÃëÉÁ˸µãÁÁ(ÁÁ
1Ã룬Ãð1Ãë)Ò»¸öµÆ£¬Ñ»·Íù¸´£¨»ò½ÐÅÜÂíµÆÊµÑ飩¡£
3. Ñ¡×÷ÆäÖÐÈÎÒâÒ»¸öʵÑ飺£¨1£©PCF8576Çý¶¯µÄ×Ö·ûÒº¾§ÉÏÏÔʾ¡°ENG¡£¡±£»
(2)ÄܶÔTLC549оƬµÄÄÚ²¿¼Ä´æÆ÷½øÐвÙ×÷£¬ÊäÈëµçѹ±ä»¯ÊǸø³öÏàÓ¦µÄÖµ¡£
±±¾©º½¿Õº½Ìì´óѧÑо¿Éú¿Î³Ì¿¼ºË¼Ç¼
4. ÈçÓиÐÐËȤµÄͬѧ»¹¿ÉÒÔ×öʵÑéÏäÉϾ߱¸µÄÆäËûʵÑé×éºÏ¡£ Îå¡¢ Ô´´úÂëºÍ˵Ã÷ 1¡¢4¸öµÆÈ«ÁÁʵÑé
C51Ô´´úÂëÈçÏ£º
# include
delay(); while(1) { P1_0=0;
P1_1=0;
P1_2=0; P1_3=0; }
}
void delay() { }
int i;
for(i=0;i<10000;i++) { }
_nop_();
±±¾©º½¿Õº½Ìì´óѧÑо¿Éú¿Î³Ì¿¼ºË¼Ç¼
ʵÑéʱ¿´µ½P1¿ÚµÍ4λ¶ÔÓ¦µÄ4¸öLEDµÆ¾ùµãÁÁ¡£Òò¹²Òõ¼«LED¶ÔÓ¦µÄP1¿ÚµÄÊýλ¾ùÖá°0¡±¡£ 2¡¢I/O¿ÚʵÑé
¶¨Ê±1Ãë¿ØÖÆ4¸öµÆÑ»·µãÁÁµÄC51Ô´³ÌÐòÈçÏ£º
#include
sbit LED0=P1^0; //¶¨ÒåLED¶ÔÓ¦µÄP1¿Ú sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3;
void Timer0() interrupt 1 {
static uint count=0; if(++count=25)
{
P0=_crol_(P0.1); }
TH0=(65536-40000)/256; TL0=(65536-40000)%6; } main() {
P0=0xFE;
TMOD=0x01; //timer0·½Ê½1
±±¾©º½¿Õº½Ìì´óѧÑо¿Éú¿Î³Ì¿¼ºË¼Ç¼
TH0=(65536-40000)/256; //³õʼ»¯¼ÆÊý³õÖµ(¼ÙÉè¾§ÕñƵÂÊΪ12MHz£© TL0=(65536-40000)%6; //40ºÁÃëÒç³öÒ»´Î
EA=1; //¿ª×ÜÖжÏÔÊÐí ET0=1; //¿ªtimer0ÖÐ¶Ï TR0=1; //Æô¶¯timer0 for(;;){}
}
ʵÑéʱ£¬P1.0-P1.3¶ÔÓ¦µÄLEDµÆÃ¿1ÃëÉÁ˸µãÁÁÒ»¸ö£¬Ñ»·Íù¸´¡£ Ñ¡ÔñµÄ¶¨Ê±/¼ÆÊýÆ÷Ϊtimer0·½Ê½1£¬¶¨Ê±³õÖµ£¨65536-40000£©ÓÉ
1212?106?40000?0.01s?40msÈ·¶¨£¬ÖжÏÖÜÆÚΪ10ms¡£
3¡¢Ñ¡×öʵÑ飬PCF8576¿ØÖƵÄ×Ö·ûÒº¾§ÉÏÏÔʾ¡°ENG¡±¡£
C51Ô´´úÂëÈçÏ£º
#include
#define uchar unsigned char #define uint unsigned int sbit SDA=P1^7; sbit SCL=P1^6;
//P1.7×÷ΪÊý¾ÝÏßSDA //P1.6×÷ΪʱÖÓÏßSCL
sbit RST=P1^0;
extern void sta(); //º¯ÊýÉùÃ÷ extern void stop(); extern void cack();
extern void wrbyt(uchar shu); extern void wrbyt0(); extern void wrbyt1();
extern void wrnbyta(uchar slaw,uchar gg[],uchar n);
extern void wrnbyt(uchar slaw,uchar number,uchar ff[]); void sta() //Æô¶¯I2C×ÜÏß {
SDA=1;
SCL=1;
while(SCL==0){;} _nop_(); SDA=0; _nop_(); _nop_(); SCL=0;
±±¾©º½¿Õº½Ìì´óѧÑо¿Éú¿Î³Ì¿¼ºË¼Ç¼
}
void stop()
{ SDA=0; SCL=1;
while(SCL==0){;} _nop_(); SDA=1; _nop_();
_nop_();
SCL=0; }
void cack() { SDA=1; SCL=1; F0=0;
if(SDA==0) { SCL=0;
_nop_();
_nop_(); } else { F0=1; SCL=0; _nop_(); _nop_();
}
}
void wrbyt(uchar shu) { uchar i;
if((shu&0x80)>0) { SDA=1; } else { SDA=0; } SCL=1;
while(SCL==0){;} _nop_();
SCL=0; SDA=0;
shu=_crol_(shu,1);
//Í£Ö¹I2C×ÜÏß
//Ó¦´ðλ¼ì²é
//·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ý