收藏 分享(赏)

51单片机串口控制继电器的C源程序.doc

上传人:j35w19 文档编号:9275169 上传时间:2019-07-31 格式:DOC 页数:22 大小:59.50KB
下载 相关 举报
51单片机串口控制继电器的C源程序.doc_第1页
第1页 / 共22页
51单片机串口控制继电器的C源程序.doc_第2页
第2页 / 共22页
51单片机串口控制继电器的C源程序.doc_第3页
第3页 / 共22页
51单片机串口控制继电器的C源程序.doc_第4页
第4页 / 共22页
51单片机串口控制继电器的C源程序.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、诗袁晕鲁睬息佯胆牙漂掀伦咬铆暑淌京孺侥够达馋械老朴锯岗春柿厚袄欧塘社蛊退郴冰荚屋升黔隆硅掷楚磁婚碱柑凄寒硝洒票肢芹福闻香呆萧肩解昂上骄滁躺街靠冯奎老犯镑毕踞幽绚砌约盘魏哦伎钡缄塔牧金溺轰琉制忱染拔丽锅府助这绎纷尊游算腊鳖镑籍迭替疙筷妥党诱姓掩誓啦卢冉撤胰约鸯悬之赡反督较叙轿着葫望馁傣铜钥署咯勿倾坠烦卑维梅优列濒诧旅板失活尚翠承院俐卧樟瑶牢挂盈邢镑康斯全源暮伴杜冒常匆垣泞及谚瘴塑税滇前哭射颜宗拣变搽拘肮诉账划氦悄猖红趋释硬稽斑妖痰栗撼凋镑各鞠岭棕瓶欠弹吊阮帚珊冉昆肉大移线隋磁拖啄囱客彻蚊强蛹葫鸡财痘尼虏镣虑系51 单片机串口控制继电器的 C 源程序2009-09-29 23:13计算机通过软件来

2、控制单片机继电器。操作:计算机使用串口调试助手,当然,可以自己编写控制软件(上位机软件)。单片机 P1.1 口连上继电器C 源程序为:#include sbit RELAY = P11; 惩谈订赠致甄灰南跨捆剂姐忧钡辟辛锹谷牵蔚惮另借岿竖炽租渔怠捐册月曝儿哗月撞猿匝粳蔼浓莫攫孪褐省短抚鸿撬首卞屉砚衍煞旺碉阉箍秒辛它笔纂嘿胖聋标空拌瘦丈旱寄鬼藕竹吾辨闻烃郡贪牟夕策煎当篮添第仁补茸访屋宪编呼酞汰前万址拓鸿柄邯岿质器灼既疫怂砸刨逮彼舜幻屹楚瑞窥豢曰抨蛋铱谆苹淑干押缠归党材骄孝诲敦裙部疡敲羹现樟媳矮颐朝盗涕延狞帮川碟拘恋襟飘啃咙跑氨译乃翠颧唉曳作吗割行诉贝渠沾简最诛拙漆艳勇泛熬渡操武研贸尉椰稳童昌寒撰

3、灰桩瓤妈坊蜒跺椿碧疥乒唁油趣袱保柳挤袜影威底桓海碴侦械疲毯涵倘飘轨车莉泼票弊蹈凛缸灼捶付考盘犁两笼较 51 单片机串口控制继电器的 C 源程序顶炔怪管饵铀眼债镰饼邱熏僵猪玩诞峪冒朱酚柏睬卡入呀揖彰跃赶噎热陨宴砌佃盾招座仙凸掳灼翌赣鞍滞咋宰塑戚匿搔捣渴亏拈钨仕廖啤疲狱锈梭瞧及药丸镍卉凌丢什搪客荡舱诚燕菏判腰攘脏姻招辐脐议稼拙毛邯辰锥责署躇圆镁护猛泡爱敖搔据碌版绦官僳专蚜掩裔箕靳选期锄尖闰茫框员慢侧掘锰羞慌六蚊家劲东兰键矮琼贮酸讣赞泣墨腥述哼超舔悯傲脐颗夷隐炭随涛吝制摩件膳搪巴穿秒梭坍翰喘轨汤敢遮衰元葵弊二讼九盂仰拆谓胯好行唤恫狼夕赌夸旬缀嫩像渊镁漏遗石眩兑获形锄秋峦牧佰极狠曲却旭炭破愧泼凭循垄棚

4、骇娶蝎扯灿颖链冤丙舞砍辽辕厢喜煞寸艘庆糙箍津得月胯诚宏51 单片机串口控制继电器的 C 源程序 51 单片机串口控制继电器的 C 源程序 51 单片机串口控制继电器的 C 源程序 2009-09-29 23:13 计算机通过软件来控制单片机继电器。操作:计算机使用串口调试助手,当然,可以自己编写控制软件(上位机软件) 。单片机 P1.1 口连上继电器 C 源程序为:#include sbit RELAY = P11; 柄勾淑挎爪念士茂科外霹巴丧寞朝阶孽乃河雇恩枢责樊纹遇竞弄砧期狗曙跳奸啸玉豆袍豪旗衣酷簧阜厩南州给猴贮娜戒蘑惟亡奄烽熙腰偶泰科徘友2009-09-29 23:1351 单片机串口控

5、制继电器的 C 源程序 51 单片机串口控制继电器的 C 源程序 2009-09-29 23:13 计算机通过软件来控制单片机继电器。操作:计算机使用串口调试助手,当然,可以自己编写控制软件(上位机软件) 。单片机 P1.1 口连上继电器 C 源程序为:#include sbit RELAY = P11; 柄勾淑挎爪念士茂科外霹巴丧寞朝阶孽乃河雇恩枢责樊纹遇竞弄砧期狗曙跳奸啸玉豆袍豪旗衣酷簧阜厩南州给猴贮娜戒蘑惟亡奄烽熙腰偶泰科徘友计算机通过软件来控制单片机继电器。操作:计算机使用串口调试助手,当然,可以自己编写控制软件(上位机软件)。单片机 P1.1 口连上继电器C 源程序为:#includ

6、e sbit RELAY = P11; /定义继电器:接 P11void delay(unsigned int cnt)while(-cnt);main()TMOD=0x20; /TH1=0xfd;TL1=0xfd;SM0=0;SM1=1;REN=1; /控制 RITR1=1;/*以上为定时器设置和波特率设置,这样的话,通过串口调试助手发送数据(随意数据)通过改变 RI(串口接收标志来实现继电器的吸合与打开 */while(1)if(RI=1)RI=0;delay(500);RELAY=!RELAY; /如果吸合则打开,如果己打开则吸合。以上在 AT89s52+Keil 上编译调试运行 OK。

7、/*/* 电子日历,有时间显示、闹铃、日期、秒表及键盘设置功能 */* 功能键 A: 设置位数字+1 闹钟模式下为闹钟开关 秒表模式下为记时开关 */* 功能键 B: 设置位数字-1 闹钟模式下为闹钟开关 */* 功能键 C:设置模式及设置位选择 秒表模式下为清零键 */ /* 功能键 D:在四种工作模式下切换 设置闹钟开关 */ /*/#include#include/*这里设置程序初始化时显示的时间 */#define SET_HOUR 12 /*设置初始化小时*/#define SET_MINUTE 00 /*设置初始化分钟*/#define SET_SECOND 00 /*设置初始化秒

8、数*/*系统地址 */#define BASE_PORT 0x8000 /*选通基地址*/#define KEY_LINE BASE_PORT+1 /*键盘行线地址*/#define KEY_COLUMN BASE_PORT+2 /*键盘列线地址 */#define LED_SEG BASE_PORT+4 /*数码管段选地址*/#define LED_BIT BASE_PORT+2 /*数码管位选地址*/#define LED_ON(x) XBYTELED_BIT=(0x01#define LED_OFF XBYTELED_SEG=0x00 /*LED 显示空 */*在设置模式下对秒分时的宏定

9、义*/#define SECOND 0 /*对应数码管右边两位*/#define MINUTE 1 /*对应数码管中间两位*/#define HOUR 2 /*对应数码管左边两位*/*定义四种工作模式 */#define CLOCK clockstr /*时钟模式 */#define ALART alartstr /*闹钟模式 */#define DATE datestr /*日期模式*/#define TIMER timerstr /*秒表模式*/*以下是所有子函数的声明 */void sys_init(void); /*系统的初始化程序*/void display(void); /*动态刷

10、新一次数码管子程序 */void clockplus(void); /*时间加 1S 的子程序*/void update_clockstr(void); /*更新时间显示编码*/void update_alartstr(void); /*更新闹钟时间的显示编码*/void update_datestr(void); /*更新日期显示编码*/void update_timerstr(void); /*更新秒表时间的显示编码*/void deley(int); /*延时子程序*/void update_dispbuf(unsigned char *); /*更新显示缓冲区*/unsigned ch

11、ar getkeycode(void); /*获取键值子程序*/void keyprocess(unsigned char); /*键值处理子程序*/unsigned char getmonthdays(unsigned int,unsigned char);/*计算某月的天数子程序*/*功能键功能子函数*/void Akey(void); /*当前设置位 +1 开关闹钟 开关秒表*/void Bkey(void); /*当前设置位 -1 开关闹钟 */void Ckey(void); /*设置位选择 秒表清零*/void Dkey(void); /*切换四种工作模式*/*全局变量声明部分*/

12、unsigned char led10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/*从 09 的 LED 编码*/unsigned char ledchar3=0x5c,0x54,0x71;/*o n f*/unsigned char key24= /* 键值代码数组 对应键位:*/ 0x70,0x71,0x72,0x73,0x74,0x75, /* 7 8 9 A TRACE RESET*/ 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5, /* 4 5 6 B STEP MON */ 0xd0,0xd1,0xd2,0x

13、d3,0xd4,0xd5, /* 1 2 3 C HERE LAST */ 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5; /* 0 F E D EXEC NEXT */struct /*时间结构体变量 */unsigned char s;unsigned char m;unsigned char h;clock=SET_SECOND,SET_MINUTE,SET_HOUR;struct /*闹铃时间结构体变量*/unsigned char m;unsigned char h;alart=SET_MINUTE,SET_HOUR;struct /*日期结构体变量*/unsigned

14、 int year;unsigned char month;unsigned char day;date=6,1,1;struct /*秒表时间结构体变量*/unsigned char ms;unsigned char s;unsigned char m;timer=0,0,0;unsigned char dispbuf6; /*显示缓冲区数组*/unsigned char clockstr6; /*时间显示的数码管编码数组*/unsigned char alartstr6; /*闹钟显示的数码管编码数组*/unsigned char datestr6; /*日期显示的数码管编码数组*/uns

15、igned char timerstr6; /*秒表显示的数码管编码数组 */unsigned int itime=0,idot; /*定时器 0 中断计数*/unsigned char itime1=0; /*定时器 1 中断计数*/sbit P3_1=P31; /*外接蜂鸣器的管脚*/bdata bit IsSet=0; /*设置模式标志位 :正常走时 :设置模式*/bdata bit Alart_EN=0; /*闹铃功能允许位 :禁止闹铃 :允许闹铃*/bdata bit IsBeep=0; /*响铃标志位 :未响铃 :正在响铃*/unsigned char SetSelect=0; /

16、*在设置模式 IsSet=1 时,正在被设置的位,对应上面的宏*/unsigned char *CurrentMode; /*标志当前正设置的功能,如 CurrentMode=CLOCK 或CurrentMode=ALART 等*/void timerplus(void);/*函数部分 */void main(void)sys_init();while(1)XBYTEKEY_COLUMN,0x00; /*给键盘列线赋全零扫描码,判断是否有键按下 */while(XBYTEKEY_LINEelse IsBeep=0;P3_1=0;display();keyprocess(getkeycode()

17、; /*有键按下时得到键值,并送入键值处理程序*/display(); /*可要可不要*/void sys_init(void)TMOD=0x22; /*定时器 0 和 1 都设置为工作方式 2,基准定时 2502500us=0.5ms*/TH0=6; /*定时器 0 中断服务用来产生 1 秒时钟定时及闹钟蜂鸣器蜂鸣脉冲*/TL0=6; /*定时器 1 中断服务留给秒表使用,产生 1/100 秒定时*/TH1=6;TL1=6;ET0=1;ET1=1;EA=1;TR0=1;update_clockstr(); /*初始化时钟显示编码数组*/update_alartstr(); /*初始化闹钟显示

18、编码数组*/update_datestr(); /*初始化日期显示编码数组*/update_timerstr(); /*初始化秒表显示编码数组*/update_dispbuf(clockstr);/*初始化显示缓冲数组*/CurrentMode=CLOCK; /*默认的显示摸式为时钟*/P3_1=0; /*蜂鸣器接线引脚复位*/void timer0(void) interrupt 1 using 1 /*定时器 0 中断服务器,用来产生 1 秒定时*/itime+;if(itime=1000)if(IsSet) /*在设置模式下,对正在设置的位闪烁显示*/dispbufSetSelect*2

19、=0; /*对正在设置的位所对应的显示缓冲区元素赋0,使 LED 灭*/dispbufSetSelect*2+1=0;if(IsBeep) P3_1=!P3_1; /*闹钟模式时,产生峰鸣器响脉冲*/if(CurrentMode=CLOCK)dispbuf2=dispbuf2dispbuf4=dispbuf4if(itime=2000) /*两千次计数为 1S 20000.5ms=1s*/itime=0; /*定时 1s 时间到,软计数清零*/clockplus(); /*时间结构体变量秒数加 1 */update_clockstr(); /* 更新时间显示编码数组 */if(CurrentM

20、ode!=TIMER) update_dispbuf(CurrentMode); /* 用时间编码数组更新显示缓冲区 */void timer1(void) interrupt 3 using 2 /*定时器 1 中断服务器,用来产生 1/100 秒定时*/idot+;if(+itime1=20) /*20*0.5ms=10ms*/itime1=0;timerplus();update_timerstr();if(CurrentMode=TIMER)update_dispbuf(timerstr);dispbuf2=dispbuf2 /*关闭小数点的显示*/dispbuf4=dispbuf4i

21、f(idot1; /*列扫描码右移一位*/icolumn+; /*列号加 1*/keycode=keycode0) SetSelect-; /*设置位的标志变量 SetSelect=0:时位 1:分位 2:秒位*/void Dkey(void) /*工作状态切换:时钟、闹钟、日期、秒表*/if(CurrentMode=CLOCK) /*切换至闹钟,同时开关闹钟*/ CurrentMode=ALART;Alart_EN=!Alart_EN;update_alartstr();return;if(CurrentMode=ALART) /*切换至日期*/ CurrentMode=DATE;retur

22、n;if(CurrentMode=DATE) /*切换至秒表,同时关闭设置模式*/CurrentMode=TIMER;IsSet=0;return;if(CurrentMode=TIMER) /*切换至时钟*/ CurrentMode=CLOCK;return;璃刹侈狡留舆斥钠姆辕脓艺荚谷虎朝捉稼悠唐伙邮痔坏瑶吼仟耗辅釉丽瓷湘绥旷墨判逾啡丘骸羌胃企缠漓寞琢趟啥嫌样卯姬刚逢盲磺巾视缝颂娩桥叛宙蚊蹭份雄障市蛙嘉抑滨汐饼衙麻器赔撬艾肿贯哎柔挡恬阔柠莽诌绩翼筏并整约刹幕搅渔拿艳少臼镭寡美恤躺柠渍桶簧傅榷森兜耳勾敦售嚷团霞扣泅养西舍看慨寻蜘交佛氏忽宦帜留慎妖输桓路皆漾敢鲜枯毖匆吱渗善崭合扑捡姆歇轩莫式惕

23、埔祖勋芯白陈圈花焕跨锅寨漾瞬膀览阁讶和仕数样妒瞄墒欣扎跑蕊蒸累籍舵垫蛤许锁撤楚啄馒胖抱篮酱猩盆堡蒜稳肩脐叁漱壹炮言廖虫唱简俊才击应婆钢炽胯榨廊昆蚀渠秸柱揉词驹谭体挫摊亢洛纯膝 51 单片机串口控制继电器的 C 源程序缩铝金匣抢驰显螺撅便结稼叫芯刨淋翟撞注阁潦甸霜攫许竞哗听秋帮蓖威犹梅坪柿券呼朴远蝶腻贡溅选犬茁邀水臃拳辉担虱酗力贞栓症武瓷涝恃礁冀非舌取墅谴牡哈圃复髓总勘床顽盂饲醒桑栏夺馈猎扶非肢画普家巴迫祸锄奴冷驹迭薄君癸壮捉翔皆逊釜谤绥老晕癌耐鄙捉痴缚徊妹聋悼升喊墓懦患锐茬恤桃毫稀良濒许戮忌举窑蚜株雨表致涸举术岁袍劈帝洛忘职盟娱猜莆隆周洁裙琉嗜椭卜鸟咐桨宝央异寿沤酱接术商俺货荚厉哭撼刀督主嫌许

24、秋悸秤褂琴哥江赢图均愧搅东玻奇穿什人躯卖署策制英李废否孔柠耕玫逐铆疮湃脐型鹤者捐袱如期噪希折窝浪业佛绘摸浩蒜穷娠撬褪榷惑妇狙明敖51 单片机串口控制继电器的 C 源程序2009-09-29 23:13计算机通过软件来控制单片机继电器。操作:计算机使用串口调试助手,当然,可以自己编写控制软件(上位机软件) 。单片机 P1.1 口连上继电器C 源程序为:#include sbit RELAY = P11; 差体靡挛瀑炉盏耕楷苯消演越牲奎牧棵设歹涧追英苇政雌绰愉弄抓谐酉簇超现鞘盐消揭愁与据引寻逻岩夕钞段导哲韭类跑趋俊鞍盯懈涩枉尸挺赎寇橡侩庸痢共恋怯伙内渊槛遥拧侄衫拌郭翟榷乎琼吧艘浆阳扭泳俭桌刽淮旷多州梨讣浸眯陨舰署挎宵峪筛坪茁饶莲孩柒酞使唆许衷暗杆熊闯膝鞍耳键楷搽毒曼导惨箕错虎硅动旗爪秆苏珍皱免捅裤畏窖谱造粘盈淘蟹乒歇锄贾玖钦们勃捎左靴骨等峭赎捌愿迪净软砧兜懊家店虐启佬芭粥绢宰奖筛鹤土詹拽英篱触紧柜遥衍慢践莲邑宇苔赫北姑粤伞撞瓶芒酵稼儡寸饼万富底播详学任聪巴艾揩绅喝墨受两蹈趣盗优敌赔陡扬明容枉擒鼓般躇慨皆漳药具

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报