单片机实验指导书适用专业:计算机控制、网络、物联网等学时:12编写人:孔庆臣2016-5-12实验一 IO口输入输出实验1. 实验内容(1) P2口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
(2) P1口做输入口,接八个扭子开关,P2口接八只发光二极管,编写程序读取开关状态,将此状态在发光二极管上显示出来。
2. 实验目的学习keil仿真软件的使用方法学习IO口的使用方法。
学习延时子程序的编写和使用。
stc-isp软件的使用3.有关说明P1口为准双向口,P1的每一位都能独立地定义为输入或输出线,作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。
单片机IO口在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“1”使它再成为一个输入。
可以用第二个实验做一下实验。
先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1作输入口,会有什么结果。
再来看一下延时程序的实现。
通常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振为11.0592MHZ,则一个时钟周期为0.0904us。
现要写一个延时0.1s的程序,可大致写出如下:void Delay100ms() //@11.0592MHz{ unsigned char i, j, k;i = 5;j = 52;k = 195;do{do{while (--k);} while (--j);} while (--i);}5.实验电路设计(1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合理的电路模块间的电路连接。
(2)画出本次实验独立的原理图5、实验要求(1)完成实验电路设计(2)完成实验程序设计(3)实现要求的实验结果(4)对实验内容做全面总结实验二定时器实验1. 实验内容模拟八台电机延时启动,要求当按下启动按钮后,第一台电机马上启动,其他七台每隔10秒启动一台,当按下停止按钮时所有电机同时停止,同时用发光管显示出启动与停止状态。
启动、停止时低电平有效,电机运行使用发光管电路模拟,低电平运行,高电平停止。
2. 实验目的(1)熟悉定时器工作原理(2)掌握定时器应用编程的方法及使用技巧。
(3)了解单片机技术的基本应用设计3. 实验电路设计(1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合理的电路模块间的电路连接。
(2)画出本次实验独立的原理图4、实验要求(1)完成实验电路设计(2)完成实验程序设计(3)实现要求的实验结果(4)对实验内容做全面总结实验三矩阵键盘及数码管显示器实验1. 实验内容P1口完成4*4键盘输入;P2口连接数码管,显示当前按下的键位号;P0口连接数码管,记录按下按键的次数,超过16次归零从新计数。
2. 实验目的(1)熟悉矩阵键盘与单片机的常用连接方法(2)掌握矩阵键盘的编程方法。
(3)掌握数码管与单片机的接口方式与编程方法3. 实验电路设计(1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合理的电路模块间的电路连接。
(2)画出本次实验独立的原理图4、实验要求(1)完成实验电路设计(2)完成实验程序设计(3)实现要求的实验结果(4)对实验内容做全面总结实验四 A/D转换实验1.实验内容利用实验台上的ADC0809做A/D转换器,实验台上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量用8个数码管显示,显示格式为“模拟电压转换成的数字量(3位数码管显示)- - 模拟电压转换成的数字量对应的电压值(3位数码管显示)”。
2.实验目的掌握A/D转换与单片机的接口方法。
熟悉A/D芯片ADC0809转换性能及编程方法。
掌握动态显示的原理及编程方法。
通过实验了解单片机如何进行数据采集。
3. 实验电路设计(1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合理的电路模块间的电路连接。
(2)画出本次实验独立的原理图4、实验要求(1)完成实验电路设计(2)完成实验程序设计(3)实现要求的实验结果(4)对实验内容做全面总结实验五八路抢答器实验1. 实验内容利用实验系统中的八个独立键盘作为抢答输入端,数码管显示抢答选手号,同时该选手对应的发光管闪烁并伴有嗡名器发声几秒,最后发光管一直保持点亮状态直到新的抢答开始。
要求当抢答开始时,第一个选手抢答后其他选手抢答无效,抢答开始键可由开关替代或使用单片机复位键实现。
2. 实验目的(1)学会单片机基本应用系统的软硬件设计的基本流程及实现方法。
(2)学会对单片机简单接口电路如:数码管、嗡名器等的原理及编程方法(3)提高学生独立设计、开发的能力3. 实验电路设计(1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合理的电路模块间的电路连接。
(2)画出本次实验独立的原理图4、实验要求(1)完成实验电路设计(2)完成实验程序设计(3)实现要求的实验结果(4)对实验内容做全面总结实验六电子钟及计时器实验1. 实验内容学生独立设计一个电子钟与计时器系统,要求:(1)完成显示时、分、秒,时、分、秒中间用“-”分开(2)完成计时器设计,计时器显示格式;“小时.分钟.秒钟.百分秒”(3)电子钟必须可调整显示时间功能(4)计时器具备开始计时、暂停、清零功能(5)电子钟与计时器可通过按键相互切换显示2. 实验目的(1)学会单片机较复杂应用系统的软硬件设计的基本流程及实现方法。
(2)学会对单片机简单接口电路如:数码管动态显示原理及编程方法(3)学会如何根据所完成的功能合理对键盘输入进行软硬件设计(4)提高学生独立设计、开发的能力3. 实验电路(1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合理的电路模块间的电路连接。
(2)画出本次实验独立的原理图4、实验要求(1)完成实验电路设计(2)完成实验程序设计(3)实现要求的实验结果(4)对实验内容做全面总结附录1 单片机实验系统部分原理图总体模块图U_AD 与DA 转换U_IO 输出U_LED 显示U_处理器U_串口下载与通讯U_点阵U_光电隔离及继电器输出电路U_键盘与开关U_其它电路U_系统扩展电路U_液晶与时钟电路U_声音及步进与直流电机电路U_电源原理图总体结构第1页 共14页串口通讯及声音输出电路单片机最小电路独立键盘及开关电路AD转换电路矩阵键盘电路附录2 实验程序及硬件电路连接关系参考实验一第一部分://2JP3 1、2脚分别连接3JP2 1、2脚//2JP2 1-8脚分别连接JPP1 1-8脚//本程序完成发光管循环闪亮//晶振为11.0592MHz#include<reg51.h>void Delay100ms() //延时100ms{ unsigned char i, j, k;i = 5;j = 52;k = 195;do{do{while (--k);} while (--j);} while (--i);}main(){unsigned char i,y=0,temp=1; //取反后为8个发光管控制初值while(1){P2=~temp;for(i=0;i<10;i++) //延时1sDelay100ms();temp=(temp<<1); //左移1位++y; //计数器加1if(y>7) //8个发光管循环点亮一次后从新开始{y=0;temp=1;}}}第二部分://晶振为11.0592MHz//2JP3 1、2脚分别连接3JP2 1、2脚//将1JP2 1-8脚分别与2JP1 1-8脚相连,将JPP1 1-8脚分别与2JP2 1-8脚分相连//将开关全置下,发光管全灭,将开关全置上,发光管全亮#include<reg51.h>main(){P1=0XFF;while(1){P2=P1;}}实验二//晶振为11.0592MHz//设定启动时间为10s,8台逐一启动//2JP3 1、2脚分别连接3JP2 1、2脚//2JP1 1、2脚分别连接1JP1 1、2脚//2JP1 7、8脚分别连接JPP5 4、6脚//2JP2 1-8脚分别连接JPP1 1-8脚//P2口模拟8台电机启停状态,0启动,1停止#include<reg51.h>n1=200; //计数器1,对定时器中断次数进行减1计数,初值200 n2=7; //计数器2,对启动电机台数进行减1计数,初值7+1台sbit start=P1^0; //启动按钮sbit stop=P1^1; //停止按钮sbit led1=P1^6; //运行显示sbit led2=P1^7; //停止运行显示void time_0() interrupt 1{TH0=0x4c; //恢复定时初值TL0=0x00; //恢复定时初值 50msn1--; //定时器中断次数进行减1if(n1==0) //定时器减1到0(达到200*50ms){n1=200; //定时器中断次数恢复计数初值200P2=(P2<<1); //再启动下一台电机n2--; //启动电机台数减1if(n2==0) TR0; //8台全启动,停止定时器}}main(){TMOD=0x01; //设置定时器模式TL0=0x00; //设置定时初值 50msTH0=0x4c; //设置定时初值EA=1; //开定时器0中断ET0=1;led1=1; //停止指示灯亮led2=0; //运行指示灯灭while(1){if(start==0) //判断启动按钮是否按下,0按下{P2=0xfe; //启动第一台电机TR0=1; //启动定时器led1=0; //运行指示灯亮led2=1; //停止指示灯灭}if(stop==0) //判断停止按钮是否按下,0按下{TR0=0; //停止定时器P2=0xff; //停止所有电机TH0=0x4c; //恢复定时初值TL0=0x00; //恢复定时初值 50msn1=200; // 定时器中断次数恢复计数初值200n2=7; //恢复启动电机总台数led1=1; //停止指示灯亮led2=0; //运行指示灯灭}}}实验三/**************** 矩阵键盘实例*******************************P1口连接4*4键盘,行:P1.0-P1.3,列:P1.4-P1.7P0口显示键位号,P2口显示按下该键位的次数,超过16次从0从新计数************************************************************/ //2JP3 1、2脚分别连接3JP2 1、2脚//P1连接4*4键盘,即2JP1连接1JP3//P0口(2JP0)连接共阴极数码管(4JP5),显示按下按键的次数//P2口(2JP2)连接共阳极数码管(4JP2),显示当前按下的键位号//分别将4JP3、4JP4的2、3脚用短路片短接//实验结束后分别恢复原来的4JP3、4JP4的1、2脚用短路片短接状态#include <reg51.h>#define uchar unsigned char#define uint unsigned int//显示段码共阳,如要加上小数点则与上0x7fcode uchar seg7code_a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阴,如要加上小数点则或上0x80uchar code seg7code_c[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//存放0、1、2、3、……、E、F键的键位值,高4位存按下按键所在的列、低4位存按下按键所在的行uchar code key_a[16]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7, 0xb7,0x77};//保存每个按键按下的次数,即:array[0]存放0号键按下的次数,array[1]存放1号键按下的次数,... data uchar array[16];void delay(uint a) // 延时a毫秒{ uint i;while(--a!=0){for(i=0;i<125;i++);}}void main(){uchar k,h;P0=0; //关闭共阴极数码管while(1){uchar h,l; //h:行 l:列P1=0xf0; //列全置高电平,行全置低电平,即列输入、行输出if(P1!=0xf0) //若有键按下则列会出现低电平{delay(10); //按键去抖h=P1&0xf0;P1=0x0f; //电平反转l=P1&0x0f; //读入行值while(P1!=0x0f);delay(10); //按键去抖k=h|l; //行值+列值,即按键值for(h=0;h<16;h++) //键盘处理if(key_a[h]==k) //根据键值查键位号{P0=seg7code_c[h];array[h]=array[h]+1; //保存当前按下的按键对应的数组元素增1if(array[h]>15) array[h]=0 ;P2=seg7code_a[array[h]]; //显示当前按下的按键累计次数}}}}实验四//2JP3 1、2脚分别连接3JP2 1、2脚//2JP2(P2口) 1-8脚分别连接4JP1 8-1脚,输出要显示数字的位码//2JP0连接4JP2,输出要显示数字的段码//2JP1(P1口)按管脚顺序连接5JP7,输入转换成的数字量//2JP3(P3口)按管脚顺序连接5JP2//5JP1 1-3分别连接11JP10 5-7脚//调节电位器11RW1,数码管显示输出的数字量#include<reg51.h>#include<intrins.h>//显示段码共阳,如要加上小数点则与上0x7f//显示内容为0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f、-code unsigned char seg7code_a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e,0xbf};code unsigned char wm[8]={0X80,0X40,0X20,0X10,0X8,0X4,0X2,0x1}; //位码sbit START=P3^0;sbit OE=P3^1;sbit ADD0=P3^2;sbit ADD1=P3^3;sbit ADD2=P3^4;sbit ALE=P3^5;sbit EOC=P3^6;sbit CLK=P3^7;data unsigned int temp; //存放ad转换结果data unsigned int temp1[8]; //存放用于显示的数据,高3位显示ad转换结果,低3位显示电压值data unsigned int i=0; //对显示位数计数void time1() interrupt 1 //定时器T0服务程序{ CLK=~CLK; } //输出25kKHz方波void adzh(void ) //A/D转换程序{P3=0xC0; //原理:时序图_nop_;_nop_;ALE=1;START=1;_nop_;_nop_;ALE=0;START=0;_nop_;_nop_;while(EOC==0){;}OE=1;_nop_;temp=P1; //存转换结果}void xscl(void) //显示处理,得到要显示8位数据的段码{temp1[0]=temp/100; //转换结果数字量temp1[1]=temp%100/10;temp1[2]=temp%10;temp1[3]=16;temp1[4]=16;temp1[5]=((temp*100/51)/100); //转换结果对应的电压值temp1[6]=(temp*100/51)%100/10;temp1[7]=(temp*100/51)%10;}void delayms( unsigned char j) //延时j毫秒程序{ unsigned char k;while(j--){ for(k=0;k<125;k++){;}}}void dtxs(void) //动态显示{P2=0;if(i==5) {P0=seg7code_a[temp1[i]]&0x7f;} //送显示数字段码给P0口 else P0=seg7code_a[temp1[i]]; //加小数点P2=wm[i]; // 送显示数字位码段码给P2口i++;if(i>7) i=0;delayms(2); // 延时}main(){TMOD=0x02; //设置定时器模式,方式2T L0=0xee; //设置定时初值定时时间20usTH0=0xee; //设置定时重载值EA=1; //开定时器中断T0ET0=1;TR0=1; //定时器开始定时while(1){adzh(); //AD转换xscl(); //显示数据处理dtxs(); //数码管动态显示}}实验五/*;八路抢答器(主控用数码管显示,抢答者指示带有闪烁功能);2JP3 1、2脚分别连接3JP2 1、2脚;P1口(2JP1 )连接独立键盘输入(1JP1);从新抢答按钮P3.2(2JP3 3脚)连接1号开关1JP2 1脚,也可不连接,用复位按钮代替;抢答声音提示P3.3(2JP3 4脚)接嗡鸣器8JP4-2;P2口(2JP2 )连接发光管显示(JPP2);P0口(2JP0)连接数码管显示(4JP2);4JP3 2、3脚用短路片短接,注意实验后恢复原来的1、2脚短接*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit P3_3=P3^3; //嗡鸣器控制输出管脚,0响,1不响sbit P3_2=P3^2; //从新抢答,0键入,1无效//共阳极数码管显示段码,如要加上小数点则与上0x7fcode unsigned char seg7code_a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e};code uchar jpsr[8]={1,2,4,8,0x10,0x20,0x40,0x80}; //当1-8号按键分别按下时,口P1取反对应的数值uchar display(uchar temp) //查输入按键的段码即抢答选手号对应的段码{uchar k;for (k=0;k<0x7;k++){ if(jpsr[k]==temp) break; }return(seg7code_a[++k]);}void delay100ms (uchar n) //延时n*100ms{uchar i, j, k,h;for(h=0;h<n;h++){i = 5;j = 52;k = 195;do{do{while (--k);} while (--j);} while (--i);}}main(){ u char input1;bit start;uint j;while(1){i nput1=P1; //临时保存8个按钮但前状态start=P3_2; //临时保存从新抢答按钮状态if(start==0) //是否键入从新抢答,0键入{P1=0xff; // P1、P2、P0口置1,恢复初始状态P2=0xff;P0=0xff;}if(~input1&&input1) //判断是否有选手抢答{P1=0; // 屏蔽其他选手P2=input1; //显示抢答选手P0=display(~input1) ; //调用display(),查抢答选手段码,送P0口显示 P3_3=0; //嗡鸣器响for(j=0;j<5;j++) //闪烁5次{delay100ms(1);P2=0xff; //灭delay100ms(1);P2=input1; //显示}P3_3=1; // 嗡鸣器停止发生}}}实验六//*****单片机stc11f60xe 12MHz晶振**////*******P0段选,P2位选**********////***P1.0:时分秒设置切换********////***P1.1:增1;P1.2:减1*******////2JP3 1、2脚分别连接3JP2 1、2脚//2JP0 1-8脚分别连接4JP2 1-8脚//2JP2 1-8脚分别连接4JP1 8-1脚//2JP1 1、2、3、5、7、8脚分别连接 1JP1 1、2、3、5、7、8脚//1JP1 1脚为时分秒设置切换键,1JP1 2脚增1键,1JP1 3脚为减1键//1JP1 5脚为电子钟与计时器切换键//1JP1 7脚为计时、暂停键,1JP1 8脚为计时器清零键#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; uint int_time; /*定义中断次数计数变量*/char second; /*秒计数变量*/char minute; /*分钟计数变量*/char hour; /*小时计数变量*/uint int_time1; /*定义中断次数计数变量*/char ms1; //毫秒计数1char second1; /*秒计数变量1*/char minute1; /*分钟计数变量1*/char hour1; /*小时计数变量1*/uchar temp=2; //调整时分秒设置变量bit temp1; //显示方式设置变量sbit P2_0=P2^0; //数码管位选sbit P2_1=P2^1;sbit P2_2=P2^2;sbit P2_3=P2^3;sbit P2_4=P2^4;sbit P2_5=P2^5;sbit P2_6=P2^6;sbit P2_7=P2^7;sbit P1_0=P1^0; //时分秒调整切换sbit P1_1=P1^1; //时钟加1sbit P1_2=P1^2; //时钟减1sbit P1_4=P1^4; //时钟、计时切换sbit P1_6=P1^6; //计时启停sbit P1_7=P1^7; //计时清零void T0_interserve(void) interrupt 1 using 0 /*定时器T0中断服务子程序,电子时钟部分*/ { int_time++; /*中断次数加1*/if(int_time==4000) /*若中断次数计满4000次*/{ int_time=0; /*中断次数变量清0*/second++; /*秒计数变量加 1*/}if(second==60) /*若计满60s*/{ second=0; /*秒计数变量清0*/minute++ ; /*分计数变量加 1*/}if(minute==60) /*若计满60分*/{ minute=0; /*分计数变量清0*/hour++; /*小时计数变量加1*/}if(hour==24){ hour++; /*小时计数计满24,将小时计数变量清0*/}}void T1_interserve(void) interrupt 3 /*定时器T1中断服务子程序,电子计时器用*/{ int_time1++; /*中断次数加1*/if(int_time1==800) //到200毫秒{ms1=ms1+20;int_time1=0;} //毫秒位加20if(ms1>=100){ms1=0;second1++;} //1000毫秒时 ms1清0、秒加1// if(int_time1==4000) /*若中断次数计满4000次*/// { int_time1=0; /*中断次数变量清0*/// second1++; /*秒计数变量加 1*/// }if(second1==60) /*若计满60s*/{ second1=0; /*秒计数变量清0*/minute1++ ; /*分计数变量加 1*/}if(minute1==60) /*若计满60分*/{minute1=0; /*分计数变量清0*/hour1++; /*小时计数变量加1*/}if(hour1==24){hour1++; /*小时计数计满24,将小时计数变量清0*/ }}void delay(int m) //延时程序,延时m*0.5毫秒{uint i;uint j;for (i=0;i<m;i++){for(j=0;j<500;j++);}}Display( ) /*显示时钟*/{P0=tab[hour/10];P2_7=1;delay(1);P2_7=0; //小时十位P0=tab[hour%10];P2_6=1;delay(1);P2_6=0; //小时个位P0=tab[10];P2_5=1;delay(1);P2_5=0; //"-"P0=tab[minute/10];P2_4=1;delay(1);P2_4=0; //分钟十位P0=tab[minute%10];P2_3=1;delay(1);P2_3=0; //分钟个位P0=tab[10];P2_2=1;delay(1);P2_2=0; //"-"P0=tab[second/10];P2_1=1;delay(1);P2_1=0; //秒十位P0=tab[second%10];P2_0=1;delay(1);P2_0=0; //秒个位}void Display1( ) /*显示计时*/{P0=tab[hour1/10];P2_7=1;delay(1);P2_7=0; //时十位P0=tab[hour1%10]&0x7f;P2_6=1;delay(1);P2_6=0; //时个位P0=tab[minute1/10];P2_5=1;delay(1);P2_5=0; //分十位P0=tab[minute1%10]&0x7f;P2_4=1;delay(1);P2_4=0; //分个位P0=tab[second1/10];P2_3=1;delay(1);P2_3=0; //秒十位P0=tab[second1%10]&0x7f;P2_2=1;delay(1);P2_2=0; //秒个位P0=tab[ms1/10];P2_1=1;delay(1);P2_1=0; //毫秒十位P0=tab[ms1%10];P2_0=1;delay(1);P2_0=0; //毫秒个位}void time() //计时设置{if(P1_6==0) //计时启停键按下{ delay(20) ; //去抖if(P1_6==0)TR1=~TR1; //TR1=0 停止计时,TR1=1 启动计时while(P1_6==0);delay(20) ; //去抖}if(P1_7==0) //计时清零{ms1=0; //毫秒计数变量second1=0; /*秒计数变量*/minute1=0; /*分钟计数变量*/hour1=0;TH1=6; /*给T0装初值*/TL1=6;int_time1=0; //中断次数}}void clk() //时钟设置{if(P1_0==0) //时分秒调整切换{delay(20); //去抖temp++;if(temp>2) temp=0;while(P1_0==0) ;delay(20); //去抖}if(P1_1==0) //递增调时分秒,temp=0、1、2{delay(20); //去抖switch (temp) //根据temp=0、1、2分别调整时、分、秒{case 0 : { hour++; if(hour>23) hour=0;}; break;case 1: {minute++;if(minute>59) minute=0;}; break;case 2: {second++;if(second>59) second=0;}; break;}while(P1_1==0) ;delay(20); //去抖}if(P1_2==0) //递减向调时分秒{delay(20); //去抖switch (temp) //根据temp=0、1、2分别调整时、分、秒{case 0 : { hour--; if(hour<0) hour=23;}; break;case 1: {minute--;if(minute<0) minute=59;}; break;case 2: {second--;if(second<0) second=59;}; break;}while(P1_2==0) ;delay(20); //去抖}}main(){ TMOD=0x22; /*设置定时器T0、T1为方式2定时*/ EA=1; /* 总中断开 */ET0=1; /* 允许T0中断 */TH0=6; /*给T0装初值*/TL0=6;TR0=1;int_time=0; /*中断次数、秒、分、时单元清0*/ET1=1; /* 允许T1中断 */TH1=6; /*给T1装初值*/TL1=6;TR1=0;int_time1=0; /*中断次数、秒、分、时单元清0*/second=36; //时钟初值minute=24;hour=12;while(1){ if(P1_4==0) //时钟、计时显示切换键{delay(20) ;if(P1_4==0)temp1=~temp1; //显示方式设置变量取反while(P1_4==0);delay(20) ;}if(temp1==0) //temp1==0 时钟显示、设置{Display( ); //显示时钟clk(); //时钟设置}if(temp1==1) //temp1==0 计时显示、设置{Display1( ); //显示计时 time(); //计时设置}}}附录3 实验电路设计要求实验电路设计要求:(1)分析附录1 单片机实验系统部分原理图,选择合适的电路模块,并根据此次实验要求的功能进行合理的电路模块间的电路连接。