郑重申明
本人呈交的毕业实习报告(设计),是在导师的指导下,独立进行实习和研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本毕业实习报告(设计)的成果不包含他人享有著作权的内容。对本毕业实习报告(设计)所涉及的实习和研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本毕业实习报告(设计)的知识产权归属于作者与培养单位。
学生签名
日期0000.00
《□□□》 第1页 共42页
摘要
该电子时钟是采用STC89C52单片机进行的电子时钟设计,其设计包括:显示模块,按键模块,闹铃模块,无线接收模块。时钟采用STC89C52单片机自身定时器进行计时,按键模块采用独立式键盘(4个按键),闹铃部分由8550三极管和蜂鸣器构成,无线接收模块采用1838接收窗,显示时、分、秒用8位数码管显示,具有可调整时间功能,在设计过程中硬件和软件应同时进行。
关键词:电子时钟 单片机 闹钟 蜂鸣器
《□□□》 第2页 共42页
目录
1绪论
1.1课题背景及意义……………………………………………………………5 1.2课题内容……………………………………………………………………5 2方案论证
2.1功能要求……………………………………………………………………7 2.2数字时钟方案论证与比较…………………………………………………7 2.3数码管显示方案论证与比较………………………………………………8 3.电子时钟的硬件设计
3.1电子时钟的组成……………………………………………………………9 3.2单片机最小系统图…………………………………………………………9 3.3 STC89C52引脚功能…………………………………………………………10 3.4数码显示模块………………………………………………………………11 3.5闹铃部分……………………………………………………………………11 3.6按键模块……………………………………………………………………12 4电子时钟的软件设计
4.1电子时钟程序流程框图……………………………………………………14 4.2按键调整流程图……………………………………………………………16 4.3子程序的设计………………………………………………………………17
4.4.1数码管显示模块……………………………………………………17 4.4.2按键子模块…………………………………………………………18 4.4.3 主程序………………………………………………………………34
5硬件的制作与测试分析
5.1电子时钟的硬件制作 ………………………………………………………37
《□□□》 第3页 共42页
5.2硬件测试……………………………………………………………………37 4.3软件调试……………………………………………………………………37 5.4测试结果分析与结论………………………………………………………38
5.4.1 数码管测试结果分析………………………………………………38 5.4.2按键测试结论………………………………………………………38 5.4.3测试结论……………………………………………………………39
结论 …………………………………………………………………………………40 参考文献 ……………………………………………………………………………42
《□□□》 第4页 共42页
1论述
1.1课题背景及意义
二十一世纪的今天,电子时钟已经融入到千千万万户家庭中,它已经成为了人们生活中不可或缺的一部分。电子时钟通过数码管显示,使其直观明了,更能实现整点报时,遥控控制等功能,使其更符合当今人们的生活需求,电子时钟的出现使人们的生活更加的有条不紊。
目前市场上的电子时钟很多,为了迎合市场的需要,满足广大的消费人群,人们通过自己的DIY设计让电子时钟富有创意。电子时钟通过不断地改进,使其更具有市场。
本次设计的电子时钟利用单片机STC89C52进行控制的,利用单片机自身的定时器功能,外加遥控器进行控制,采用数码管显示,可对电子时钟进行调整校准。电子时钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。
1.2课题内容
本次设计的题目是:基于51单片机的电子时钟设计与制作。
利用单片机的计时、校时等功能,设计并制作出一个以单片机STC89C52为核心组件,采用数码管显示“时“分“秒”的电子时钟,要求能正常显示,并可用按键进行调整校准以及用遥控器进行相同操作。此次设计与传统的机械表相比,它具有走的更精准,显示更直观等特点,同时具有不同的操作方式,让此次设计更符合现代生活的需求,而且单片机的数字时钟具有编程灵活,便于功能扩充等特点。
本次设计可分为两部分:软件部分、硬件部分。
《□□□》 第5页 共42页
硬件部分包括: STC89C52单片机模块,数码管模块,蜂鸣器模块,按键模块,闹铃模块。通过正确连接电路以及单片机的编程来实现上述要求。
软件部分的主程序包括:数码管显示程序,按键控制程序,遥控器操作程序。使其实现时分秒正常显示,并可通过按键以及遥控器进行调试功能。
《□□□》第6页 共42页
2方案论证
2.1功能要求
1、能显示时、分、秒
2、通过按键可以对电子时钟进行调整校准 3、通过遥控器可对电子时钟进行调整校准 4、可实现设定闹钟并报警功能
5、上电后,电子钟显示“14-00-00”,蜂鸣器同时发出声音
2.2数字时钟方案论证与比较
在本次设计中,数字时钟是最主要的部分,根据此次设计的需要,可利用两种方案实现。 方案一:
采用时钟芯片DS12887A进行控制时,由于该芯片具有完备的时钟闹钟功能,所以可以直接用它来进行显示或设置,这样可以让软件的编程相对简单。而且为了保证时钟在电网电压不足或突然断电的情况下仍能正常工作,芯片内部本身就包含锂电池,当电网电压不足或者突然掉电的时候,系统会自动转换到内部锂电池供电系统,而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。 方案二:
采用单片机本身的定时器进行计时,来实现数字时钟功能。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,
《□□□》 第7页 共42页
每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。 基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.3数码管显示方案论证与比较
方案一:
采用静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。 方案二:
采用动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。 从节省I/O口和降低能耗出发,本设计采用方案二。
综上所诉:我们采用单片机完成数字时钟的功能,采用数码管的动态显示来完成显示部分。
《□□□》 第8页 共42页
3.电子时钟的硬件设计
3.1 电子时钟的组成
本次设计制作的电子时钟组成部分为:STC89C52主控制模块,按键模块,复位电路,数码管显示模块,闹铃模块。组成图如图3-1所示
闹铃模块 STC89C52 主控制模块 数码管显示模块 按键模块 1838红外接收窗 复位电路
图3-1 电子时钟系统组成
3.2 单片机最小系统图
单片机最小系统又称为最小应用系统,即用最少的元器件组成单片机可以工作的系统。一般应包括:电源、单片机、晶振电路、复位电路等。如图3-2所示为单片机最小系统图。
《□□□》 第9页 共42页
图 3-2 单片机最小系统图
3.3 STC89C52引脚功能
《□□□》 第10页 共42页
图3-3 STC89C52引脚
如图3-3所示,STC89C52主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为功能控制端口,分别与其相应功能管脚相连接,13 脚定义为IR输入端。
3.4 数码管显示模块
《□□□》 第11页 共42页
图3-4 数码管显示模块
如图3-4所示,在这次的设计中,数码管接在单片机的P0和P2口,P0控制段选信号,P2控制位选信号。通过位选信号依次点亮各个数码管,由于人眼有视觉暂留的特性,因此如果第一个数码管灭和第二个数码管亮之间的时间足够短,人眼是感觉不出数码管的变化的。
3.5 闹铃部分
闹铃如下图3-5所示,主要由8550三极管和蜂鸣器构成,可通过手动设置来实现闹铃功能。
图3-5 闹铃图
《□□□》 第12页 共42页
3.6 按键模块
如图3-6所示,本次设计是采用四个独立式按键,分别为“时间设置”键,“闹钟设置”键,“+”键,“-”键,,通过这四个按键来调整电子时钟的时间显示和闹钟响应。
“时间设置” “ 闹钟设置 “+”
图3-6按键图
《□□□》 第13页 共42页
“—”
4电子时钟的软件设计
本次设计主要是对单片机,数码管,红外遥控器,按键和闹铃部分进行编写的。
4.1电子时钟程序流程框图
开始 初始化单片机、数码管、按键等 数码管固定显示 扫描按键、遥控器扫 描,数码管正常显示 调用时间,设置子程序 刷新 正常时间显示
图4-1 系统程序流程框图
《□□□》 第14页 共42页
本次的设计主程序是根据每个模块的特性来进行编写,先对各个模块进行初始化,然后再按照各自不同来分模块编写,最后得出总的流程图。
进入程序后,先将单片机,数码管,按键等进行初始化,数码管显示固定数值“14-00-00”,程序开始等待按键按下,当有按键按下,单片机检测一次,确定按下,单片机调用程序,同时数码管刷新一次,显示当前操作结果。完后,程序返回按键等待,如此循环执行
《□□□》第15页 共42页
4.2按键调整流程图
开始 设置键1按下1次,进入时调整 设置2键按下1次,进入闹钟时设置 等待按键程序 等待按键程序 加键有效 减键有效 加键有效 减键有效 时加1 时减1 时设定加1 时设定减1 设置1键按下2次,进入分调整 设置2键按下2次,进入闹钟分调整 等待按键程序 等待按键程序 加键有效 减键有效 加键有效 减键有效 分加1 分减1 分设定加1 分设定减1 设置1键按下3次,进入秒调整 等待按键程序 加键有效 减键有效 秒加1 秒减1
《□□□》 第16页 共42页
图4-2 按键调整流程图
4.4子程序的设计
4.4.1数码管显示模块
4位独立数码管显示,电路相对简单,主要特点,简单易用,显示清晰,性价比高。 数码管显示程序: void display(void) {
P0=led[hour/10]; //p0口送数据 拆数显示 P2=0xFE; delay(); P2=0xFF;
P0=led[hour%10]; P2=0xFD; delay(); P2=0xFF; P0=0x40; P2=0xFB; delay(); P2=0xFF;
//片选
//延时 //片选关
《□□□》 第17页 共42页
P0=led[minit/10]; P2=0xF7; delay(); P2=0xFF;
P0=led[minit%10]; P2=0xEF; delay(); P2=0xFF; P0=0x40; P2=0xDF; delay(); P2=0xFF;
P0=led[second/10]; P2=0xBF; delay(); P2=0xFF;
P0=led[second%10]; P2=0x7F; delay(); P2=0xFF;
}
4.4.2按键子模块
第18页 共42页 《□□□》
本次设计是采用四个独立式按键,分别为“设置”键,“+”键,“-”键,“复位”键,通过这四个按键来调整电子时钟的时间显示和闹钟响应。
按键操作子程序:
void Keykonzhi() {
if(time==0) //键盘时间设定键按下
{ delay(); delay(); if(time==0) { while(!time);
timenum1++; //标记++ TR1=0; f2=0;
}
}
if(timenum1==1) //如果timenum1==1 调时
第19页 共42页 《□□□》
dsflg=0; st=0;
if(add==0) //加键按下
{ delay(); delay();
if(add==0) { while(!add); //松手检测 hour++;
//小时++
}
}
if(dec==0) //减键按下
{ delay(); delay(); if(dec==0) { while(!dec); //松手检测 hour--;
//小时--
}
}
第20页 共42页
{
《□□□》
if(hour>23) //限位
{hour=0;}
P0=led[hour/10];//显示小时函数 P2=0xFE; delay(); P2=0xFF;
P0=led[hour%10]; //显示小时函数 P2=0xFD; delay(); P2=0xFF;
}
if(timenum1==2) ////如果timenum1==2 调分
{ dsflg=0; st=0;
if(add==0) {
delay(); //以下也是和调时一样的方法 《□□□》 第21页 共42页
delay(); if(add==0) { while(!add); minit++;
}
}
if(dec==0) { delay(); delay(); if(dec==0) { while(!dec); minit--;
}
}
if(minit>60) {minit=0;}
第22页 共42页
《□□□》
P0=led[minit/10]; P2=0xF7; delay(); P2=0xFF;
P0=led[minit%10]; P2=0xEF; delay(); P2=0xFF;
}
第23页 共42页
《□□□》
if(timenum1==3) ////如果timenum1==3 调秒
{ dsflg=0; st=0;
if(add==0) { delay(); delay(); if(add==0) { while(!add); second++;
}
}
if(dec==0) { delay(); delay(); if(dec==0) { while(!dec); second--;
}
第24页 共42页
《□□□》
}
if(second>60) {second=0;}
P0=led[second/10]; P2=0xBF; delay(); P2=0xFF;
P0=led[second%10]; P2=0x7F; delay(); P2=0xFF;
}
if(timenum1==4) ////如果timenum1==4 退出 第25页 共42页
《□□□》
{ TR1=1; timenum1=0; dsflg=1; f2=1; st=1;
}
}
void almset() { timenum1=0;
if(timer==0) //键盘上的闹钟键按下 {
delay(); 第26页 共42页
《□□□》
delay();
if(timer==0) { while(!timer); //松手 timenum2++; //标记++ f1=0;
}
}
if(timenum2==1) { dsflg=0; st=0;
if(add==0) { delay();
delay();
//如果timenum2=1设定脑钟的小时 //加键按下
第27页 共42页
《□□□》
if(add==0) { while(!add);//松手 hour1++; //小时++
}
}
if(dec==0) //减键按下
{ delay(); delay();
if(dec==0) { while(!dec);//松手 hour1--; //小时--
}
}
if(hour1>23) //限位 {hour1=0;}
P0=led[hour1/10];//小时显示 P2=0xFE; delay();
第28页 共42页
《□□□》
P2=0xFF;
P0=led[hour1%10]; P2=0xFD; delay(); P2=0xFF;
P0=0x77; //显示 一 P2=0xBF; delay();
P2=0xFF; //显示 一 P0=0x38; P2=0x7F; delay(); P2=0xFF;
}
第29页 共42页
《□□□》
if(timenum2==2) //如果timenum2=1设定脑钟的分钟 和上面小时一样
{ dsflg=0; st=0;
if(add==0) { delay(); delay(); if(add==0) { while(!add); minit1++;
}
}
if(dec==0) { delay(); delay(); if(dec==0) { while(!dec); minit1--; }
}
《□□□》 第30页 共42页
if(minit1>60) {minit1=0;}
P0=led[minit1/10]; P2=0xF7; delay(); P2=0xFF;
P0=led[minit1%10]; P2=0xEF; delay(); P2=0xFF; P0=0x77; P2=0xBF; delay(); P2=0xFF; P0=0x38; P2=0x7F; delay();
第31页 共42页
《□□□》
P2=0xFF;
}
if(timenum2==3) //如果timenum2=3退出
{
timenum2=0; dsflg=1; f1=1; st=1; }
}
第32页 共42页
《□□□》
当用手按下一个键时,如图3-4所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。
图3-4按键抖动新号波形
此次设计过程中电路的工作原理 :
数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作, 将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下设置键进入时设置,按下“+”时加一次,按下“-”键,时减一次,同理,按设置键两次即进行分调整,按下三次进行秒调整。
《□□□》 第33页 共42页
4.4.3 主程序
void main(void) { second=59; //时间初始化为00:00:00 minit=59; hour=13; second1=0; //闹钟默认为12:00:00
minit1=05; hour1=14; count0=0x00; count1=0x00; timenum1=0; f1=1; f2=1; dsflg=1;
m=0;
f=0; st=1; P1=0xFF;
TMOD=0x11; TL1=tl; TH1=th; EA=1; TR1=1; ET1=1;
IT1=1;
第34页 共42页 《□□□》
TH0=0;
TL0=0;
TR0=1;
EX1=1; while(1) { if(zhengdian==1)
{
speaker=0; delay1(1); speaker=1; delay1(1);
}
if(f1==1) { Keykonzhi ();
} if(f2==1) { almset();
} almkozi();
if(dsflg==1)
第35页 共42页 《□□□》
{ display();
}
if(st==1) {
if(add==0) { delay(); delay(); if(add==0) { while(!add);
second=00; minit=00; hour=00; }
}
} }
}
//时间初始化为00:00:00
第36页 共42页 《□□□》
5 硬件的制作与测试分析
5.1电子时钟的硬件制作
次的电子时钟是根据所设计的原理图,把每个部分都焊接好,连接起来,然后接入电源,上电,最后将所编写的程序烧入单片机中。
5.2硬件测试
电子时钟的硬件相对简单,只用几个模块构成,但在检查电路的时候容易因掉以轻心而出错,主要检查电路连接是否有短路或者短路现象(通过万用表检测),元器件的型号和规格是否使用合理。
其次,检测电源。检测方法:一种是断开稳压电源的输出端,检查空载时电源工作情况;另一种是拔下电源上的主要集成芯片,检查电源的负载能力(用假负载),确保电源无故障并性能符合设计要求。
检测完电路,确保其不发生电路故障的前提下才可上电。
5.3软件调试
电子时钟虽然看着硬件比较少,但是写起程序来并非那么简单,在设计阶段,因为我们是刚入手单片机没多久的,所以对挺多的程序并不是很了解,我们看了郭天祥的“十天学会单片机”,他里面讲了很多关于按键,数码管,遥控器等方面的内容,我们就仿照他的例子,
《□□□》 第37页 共42页
根据自己的删改添加终于完成了自己的程序。
在电子时钟的程序设计阶段,让数码管显示“14-00-00”,由于对十六进制不够熟练,所以在实现显示的时候总是出现乱码,后面静下心慢慢算,终于能够正常显示,不过只是实现数码管的静态显示,动态显示才是关键,通过我们在课上讲的数码管累加计时,仿照其原理,通过改进,也实现了动态显示。
在按键方面,按键因为是独立的,所以我一个个按键的功能慢慢实现,先做加减后做调整和复位,刚开始做按键的时候因为考虑的不够全面,虽然按键能够实现加减,但是出现按一次跳很多次的现象,经过查找资料并观看视频,原来按下去的时候会出现所谓的“抖动”,这时候就需要多添加几句程序来进行消抖,最终数码管才正常加减,同样道理实现选择位跟复位功能,在一步步添加程序的同时也一步步地掌握了按键的使用方法。
红外遥控器是我最头疼的,红外遥控器是头一次接触,平时在看别人操作的时候感觉很神奇,也很好奇,但是做起来没想到却没那么简单,因为在设计的时候总是出现乱码,或者说实现一个功能的时候另一个功能容易出错,后面经过询问学长学姐,也终于能够实现加减调整功能,虽然遥控器上面的所有按键我们没有全部用上,但是对我来说已经是一个很大的进步。
5.4测试结果分析与结论
5.4.1 数码管测试结果分析
数码管主要是分清楚共阴还是共阳,在写程序的时候一定要注意,通过肉眼看数码管是否出现亮度不够判断其电路是否供电异常或者程序占用太多CPU,进 行电路调整及程序修改,让数码管正常显示。
5.4.2按键测试结论
在对按键进行测试的时候主要出现按键按下去有时候会出现连续加跟连续减的现象,经过查找相关资料,原来按键按下去的时候会出现“抖动”,所以我们就要在程序中进行删改,做“消抖”处理。
《□□□》 第38页 共42页
5.4.3测试结论
经过多次的反复测试,分析跟修改,程序越来越完善,我也对电路的原理跟功能更加熟悉,同时在编程方面也更加的熟练,很多平时老师没有教到的知识我通过自学,也都能基本掌握,可说在编程上得到了很大的提高,以及对所学的知识也得到很大的巩固。
《□□□》 第39页 共42页
结论
经过这一段时间以来的努力,我们的毕业设计终于完成了,心中充满了无尽的喜悦!虽
然在设计中仍有很多的不足之处,需要我们去改进并完善,但是对我们来说,我们的付出终于得到了回报,这是一件多么有意义的事。
从课堂的理论学习到现在的毕业设计成果,这不仅加强了我们对课本知识的理解和巩
固,也培养了我们的实际动手能力,分析力以及学习能力。
在我们整个毕业设计的过程中,两人分工合作,充分发挥个人的主观能动性,团结合作,
攻克在设计与制作过程中的种种困难和挫折,一路都来,汗水跟喜悦一路相伴,每每攻克一个难点,心里就美滋滋的,也许这就是我们坚持下来的动力。
我是负责软件编程的,通过这次的设计,我对单片机有了一个新的认识,在单片机的编
程中,管脚的使用很重要,要学会合理设计与编程;在数码管的显示上,主要是实现动态显示,并且不会乱码;在按键的设计阶段是比较复杂的,因为按键只有4个,每个按键要实现不同的功能,有的一个按键实现两个功能,这就需要我在原有的学习基础上自己揣摩思考,设计程序;遥控器是我们后面添加上去的功能,用遥控器来控制,实现了不用通过电路板上面的按键就可实现调试校准功能,这是我们在原有的软件和硬件上面的一个很大的提升!
在整个调试的过程中遇到很多的问题,一个原因是自己的理论知识还不够扎实,没有很
好的将所学的知识充分利用起来,另一方面是由于实物跟仿真相差比较大,起初调试的时候是在仿真图上面调整的,很多现象在仿真上面是正常的,但是在实物调试中却遇到很多问题,所以把课本的理论知识结合到实物产品中是非常重要的,在软件的设计中,细心与耐心也是相当重要的,有时候稍微一个不注意,就可能导致整个电路的功能无法实现,所谓“世上无难事只怕有心人”,我们相信,其实当我们用心去做每件事的时候,事情并没有我们想象的
《□□□》 第40页 共42页
那么困难。 这次毕业设计是对我们三年以来所学内容的综合应用,在这次设计中我们学习到了很多课本上有的和没有的知识,为我们以后走向工作岗位和继续深造奠定了良好基础。
在本次设计的时间里我们得到了指导老师的悉心指导,以及同学们的帮助。在此感谢你
们的支持和鼓励。
《□□□》 第41页 共42页
参考文献
[1] 张道德,单片机接口技术,中国水利水电出版社,2007
[2] 新概念 51单片机C语言教程--入门、提高、开发、拓展全攻略,电子工业出版社,2010 [3] 张靖武,周灵斌,单片机原理、应用与PROTEUS仿真,电子工业出版社,2008 [4] 郭天祥,51单片机C语言教程,电子工业出版社,2010 [5] 郭天祥,10天学会单片机教学视频
[6] 单片机开发箱附赠的光盘--STC89C52单片机开发箱原理图 [7] 单片机资料:www.csdn.net
《□□□》 第42页 共42页
因篇幅问题不能全部显示,请点此查看更多更全内容