


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机实验指导书适用专业:计算机控制、网络、物联网等学时: 12编写人:孔庆臣2016-5-12实验一 IO 口输入输出实验1. 实验内容(1) P2 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。(2) P1 口做输入口,接八个扭子开关,P2 口接八只发光二极管,编写程序读取开关状态,将此状态在发光二极管上显示出来。2. 实验目的学习 keil 仿真软件的使用方法学习 IO 口的使用方法。 学习延时子程序的编写和使用。stc-isp 软件的使用3. 有关说明P1 口为准双向口, P1 的每一位都能独立地定义为输入或输出线,作为输入的口线,必须向锁存器相 应位写入 “1”,该位
2、才能作为输入。单片机 IO 口在复位时均置为 “ 1 ” ,如果后来在口锁存器写入过 “0”, 在需要时应写入一个“ 1”使它再成为一个输入。可以用第二个实验做一下实验。先按要求做好程序并调试成功后,可将P1 口锁存器中置“ 0”,此时将 P1 作输入口,会有什么结果。再来看一下延时程序的实现。通常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实 现。在系统时间允许的情况下 可以采用后一种方法。本实验系统晶振为 11.0592MHZ,则一个时钟周期为 0.0904US。现要写一个延时 0.1s的程序,可大致 写出如下:void Delay100ms() /11.0592MHz uns
3、igned char i, j, k;i = 5;j = 52;k = 195;dodowhile (-k); while (-j); while (-i);5实验电路设计( 1)分析附录 1 单片机实验系统部分原理图, 选择合适的电路模块, 并根据实验要求的功能进行合理 的电路模块间的电路连接。(2) 画出本次实验独立的原理图5、实验要求( 1 )完成实验电路设计(2) 完成实验程序设计(3) 实现要求的实验结果4)对实验内容做全面总结实验二 定时器实验1. 实验内容模拟八台电机延时启动,要求当按下启动按钮后,第一台电机马上启动,其他七台每隔 10 秒启 动一台,当按下停止按钮时所有电机同时
4、停止,同时用发光管显示出启动与停止状态。启动、停止时低电平有效,电机运行使用发光管电路模拟,低电平运行,高电平停止。2. 实验目的(1)熟悉定时器工作原理(2)掌握定时器应用编程的方法及使用技巧。(3)了解单片机技术的基本应用设计3. 实验电路设计( 1)分析附录 1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合 理的电路模块间的电路连接。( 2)画出本次实验独立的原理图4、实验要求( 1)完成实验电路设计( 2)完成实验程序设计( 3)实现要求的实验结果( 4)对实验内容做全面总结实验三 矩阵键盘及数码管显示器实验1. 实验内容P1 口完成 4*4 键盘输入; P
5、2 口连接数码管,显示当前按下的键位号; P0 口连接数码管,记录 按下按键的次数,超过 16 次归零从新计数。2. 实验目的( 1)熟悉矩阵键盘与单片机的常用连接方法 (2)掌握矩阵键盘的编程方法。( 3)掌握数码管与单片机的接口方式与编程方法3. 实验电路设计( 1)分析附录 1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合 理的电路模块间的电路连接。( 2)画出本次实验独立的原理图4、实验要求( 1)完成实验电路设计( 2)完成实验程序设计( 3)实现要求的实验结果( 4)对实验内容做全面总结实验四 A/D 转换实验1实验内容利用实验台上的 ADC0809 做
6、 A/D 转换器 ,实验台上的电位器提供模拟量输入 ,编制程序 ,将模拟量转换成 数字量用 8 个数码管显示,显示格式为“模拟电压转换成的数字量(3 位数码管显示) - - 模拟电压转换成的数字量对应的电压值( 3 位数码管显示)”。2实验目的掌握 A/D 转换与单片机的接口方法。熟悉 A/D 芯片 ADC0809 转换性能及编程方法。 掌握动态显示的原理及编程方法。通过实验了解单片机如何进行数据采集。3. 实验电路设计( 1)分析附录 1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合 理的电路模块间的电路连接。( 2)画出本次实验独立的原理图4、实验要求( 1)完
7、成实验电路设计( 2)完成实验程序设计( 3)实现要求的实验结果( 4)对实验内容做全面总结实验五 八路抢答器实验1. 实验内容利用实验系统中的八个独立键盘作为抢答输入端,数码管显示抢答选手号,同时该选手对应的发光管闪烁 并伴有嗡名器发声几秒,最后发光管一直保持点亮状态直到新的抢答开始。要求当抢答开始时,第一个选手抢答后其他选手抢答无效,抢答开始键可由开关替代或使用单片机复位键 实现。2. 实验目的(1)学会单片机基本应用系统的软硬件设计的基本流程及实现方法。(2)学会对单片机简单接口电路如:数码管、嗡名器等的原理及编程方法3)提高学生独立设计、开发的能力3. 实验电路设计( 1)分析附录 1
8、 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合 理的电路模块间的电路连接。( 2)画出本次实验独立的原理图4、实验要求( 1)完成实验电路设计( 2)完成实验程序设计( 3)实现要求的实验结果( 4)对实验内容做全面总结实验六 电子钟及计时器实验1. 实验内容学生独立设计一个电子钟与计时器系统,要求:( 1) 完成显示时、分、秒,时、分、秒中间用“- ”分开(2) 完成计时器设计 ,计时器显示格式 ;“小时.分钟.秒钟.百分秒 ” (3)电子钟必须可调整显示时间功能(4)计时器具备开始计时、暂停、清零功能(5)电子钟与计时器可通过按键相互切换显示2. 实验目的 (1
9、)学会单片机较复杂应用系统的软硬件设计的基本流程及实现方法。(2)学会对单片机简单接口电路如:数码管动态显示原理及编程方法(3)学会如何根据所完成的功能合理对键盘输入进行软硬件设计(4)提高学生独立设计、开发的能力3. 实验电路( 1)分析附录 1 单片机实验系统部分原理图,选择合适的电路模块,并根据实验要求的功能进行合 理的电路模块间的电路连接。(2)画出本次实验独立的原理图4、实验要求( 1)完成实验电路设计( 2)完成实验程序设计( 3)实现要求的实验结果( 4)对实验内容做全面总结附录1单片机实验系统部分原理图总体模块图U_串口下载与通讯 串口 下载与通讯.SchDoc3PTxDU_声
10、音及步进与直流电机电路 声音及步进与直流电机电路SchDocI电路路.SchDocU_LED显示LED 显示.SchDocU_电源 电源.SchDoc220V0VGND+5V_out-5V_outGND_out9BA9BB9BC9BDSPEAKER1 SPEAKER2 8DIN1 8DIN28DOUT18DOUT2U_AD与DA转换 AD 与 DA 转换.SchDocU_其它电路 其 它电路.SchDoc5D05D15D25D35D45D55D65D75OUT1U光10OUTPUT710INPUT110OUTPUT810INPUT210OUTPUT910INPUT310OUTPUT1010IN
11、PUT410OUTPUT110OUTPUT210OUTPUT310OUTPUT410OUTPUT510OUTPUT6JLF键开开关hDocPortOPort1Port2Port3Port4Port5Port6Port7Port8Port9Port10Port11Port12Port13Port14Port15Port16Port17Port18Port19Port20Port21Port22Port23u_io输出IO输出.SCHDOCU_处理器 处理器SchDoc2P0_02P0_12P0_22P20_32P0_42P0_52P0_62P0_72P1_02P1_12P1_22P1_32P1_
12、42P1_52P1_62P1_72P2_02P2_12P2_22P2_32P2_42P2_52P2_62P2_72P3_02P3_12P3_22P3_32P3_42P3_52P3_62P3_72PORT12PORT22PORT33C30.1uF3C4 0.1uF3PTxD3PRxD ;23JP23U11345IN05IN15IN25IN35IN45IN55IN65IN75ADD05ADD15ADD25START5ALE5EOC5CLK9OUT0 9OUT1 9OUT2 9OUT3 9OUT4 9OUT5 9OUT6 9OUT7 9OUT8 9OUT9 9OUT10 9OUT11 9OUT12
13、9OUT13 9OUT14 9OUT15 9Y0 9Y1 9Y2 9Y3 9Y4 9Y5 9Y6 9Y7 9D0 9D1 9D2 9D3 9D4 9D5 9D6 9D7 9A0 9A1 9A2 9A3 9A4 9A5 9A6 9A79ALE9C19C29A9B9CU_液晶与时钟电路 液晶与时钟电路.SchDocU_点阵 点阵 )oc6SRCLR_R 6OE1_R 6RCLK R 6SRCLK_R 6SER_R 6OE36D6C6B6A6SRCLR_G 6OE1_G 6RCLK G 6SRCLK_G 6SER_G7RS2 7I/O 7R/W2 7E2 7D0_2_0 7RS1 7R/W1 7E1
14、 7D0_0 7D0_1 7D0_2 7D0_3 7D0_4 7D0_5 7D0_6 7D0_7 7PSB1 7RST1 7D0_2_1 7D0_2_2 7D0_2_3 7D0_2_4 7D0_2_5 7D0_2_6 7D0 2 7原理图总体结构串口通讯及声音输出电路VCC 3C2 10uFC23JP14Port14Port24Port34Port44Port54Port64Port7 4Port8 4Port11 4Port12 4Port13 4Port14 4Port15 4Port16 4Port17 4Port18 4Port20 4Port21 4Port22 4Port23 4P
15、ort24 4Port25 4Port26 4Port277CLK7RST3第侦共14页8JP43108D NGVCCVCC2N12C3 10uF+2R21K2JP62R1 10K2C130pF单片机最小电路VCC 2C4 30uFJC2HH2Y22Y12JP530pF 12K12PORT12PORT22PORT32JP42K11232JP32K22K3VCC2K22K32P3 0P3 02P3 1P3 12P3 22P3 3P3_2P3 32P3_42P3 5P3 4P3 5P3 1P3_2P3 32P3 6P3 62P3 7P3 7VCCP0.0/AD0-XTAL1P0.1/AD11 XT
16、AL2P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7卜RSTi EA/VPPP1.0/T21 PSENP1.1/T2EXi ALE/PROGP1.2/ECIP1.3/CEX0P1.4/CEX1,P3.0/RxDP1.5/CEX2,P3.1/TxDP1.6/CEX3卜 P3.2/INT0P1.7/CEX4P3.3/INT1.P3.4/T0P2.0/A8,P3.5/T1P2.1/A9卜 P3.6/WR"P2.2/A10.P3.7/RDP2.3/A11P2.4/A12P2.5/A13P2.6/A14VSSP2.7/A152U1191820S
17、TC11F60XEP3 414P3 010P3 515P3 616P3 717293040+ -独立键盘及开关电路P1 511P1 613P1 715P1 0 2JP1P1 37P1 49P1_13P1 2 5P2 0P2P2P2P2P2P2P21234567891011121314151612345691011121_31415167 15498 P06 135 11372JP039 P0_01P0 13<I3r_P0_25<I3T'P02JP22 P0 04 P0 16 P0 22P0 02P0 110 P012 P014 P016 P02 P1 04P1_1 P1 2
18、8 P1 310 P1 412 P1 514 P1 616 P1 7P2 0P2P2P2P2P2P2P22P0 22P20 32P0 42P0 52P0 62P°_72P1 02P1 12P1 22P1_ 32P1 42P1 52P1 62P1 72P2_02P2 12P2 22P2 32P2 42P2 52P2_62P2 7发光管显示电路JPP2DS1DS3DS4DS6DS7DS8VCC丁 1Z3R1R2JPP1IO OUT 8IO OUT 9IO OUT 10IO OUT 11IO OUT 12IO OUT 13IO OUT 14IO OUT 15DS9DS10DS11DS12D
19、S13DS14DS15K DS165JP15IN05IN15IN25IN35IN45IN55IN65IN75START5OE 5ADD0 5ADD1 5ADD25ALE5E0C5CLK5JP245K789丁23456789丁23456789VCCZ34567891K1KDS26VCCT 13'R3R44567'89123456789123456789VCC1 234561K1KAD转换电路5U25CLK1 10VCC12345678123456781262"273452°6z3°74 口85 口255CLK113ADC0809NCLKSTARTOE
20、VCCIN0D0IN1D1IN2D2IN3D3IN4D4IN5D5IN6D6IN7D7ADDAEOCADD BADD CREF+ALEREF-GND624231117T4758181920211216JPP4IO OUT 16IO OUT 17IO OUT 18IO OUT 19IO OUT 20IO OUT 21IO OUT 22DS17DS18DS19DS20DS21DS22DS23DS24DS25DS27DS28DS29DS30DS31DS32JPP3IO OUT 235JP71Y5D0 2-?5D173-<5D2 >4弋 5D3 5Y5D4 6C 5D5 575D6 J8V
21、CCTIO OUT 24< IO_OUT_25IO OUT 26J IO_OUT_27IO OUT 28 -IO_OUT_29 ;IO_OUT_30 扌 IO_OUT_31数码管显示电路4JP1fg DP4D14D23AAaabAbAccddeefg DPDpy Blue-CAflpy Blue-CA4JP21JP34Q290134D3a bc d e fgDpyAA&4R44D4c d e fg DPDpy Blue-CA4Port114Port124Port134Port144Port154Port164Port17>or12345678110121S14R11470O
22、f4R18470<Port16-Port170Port18-1S51S9Port197ag PDpy Blue-CAVCC4R7Q70134 94R:44Q890134D74D8aAbA且DPDpy Blue-CA38aAbA旧DPDpy Blue-CAtyDpy Blue-CAyg10gDP4R8_1105764矩阵键盘电路4D10gDP0:1K*8Dpy Blue-CC14JP4123VCC1R00H1R111R125.1K5.1K5.1K1S21S61S101S14L J1S31S41R135.1K1R14 5.1K1S71S111S15附录 2 实验程序及硬件电路连接关系参考实验
23、一第一部分:/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;dodowhile (-k); while (-j); while (-i);main()unsigned char i,y=0,temp=1;/ / 取反后为 8 个发光管控制初值while(1)P2=temp;for(i=0;
24、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=P
25、1;实验二/ 晶振为 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 计数,初值 200n2=7; / 计数器 2,对启动电机台数进行减1 计数,初值 7+1 台sbit start=P1A0; /启动按
26、钮sbit stop=P1Al;/停止按钮sbit led1=P1A6; /运行显示sbit led2=P1A7;/停止运行显示void time_0() interrupt 1TH0=0x4c; / 恢复定时初值 TL0=0x00; / /恢复定时初值 50ms n1-; / 定时器中断次数进行减 1 if(n1=0) / /定时器减 1到 0(达到 200*50ms) n1=200; / /定时器中断次数恢复计数初值 200 P2=(P2<<1); / 再启动下一台电机 n2-; / 启动电机台数减 1 if(n2=0) TR0; /8 台全启动,停止定时器 main()TMO
27、D=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; / / 恢复定时初值T
28、L0=0x00; / / 恢复定时初值 50msn1=200; / 定时器中断次数恢复计数初值 200 n2=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)连接共阳极
29、数码管(4JP2),显示当前按下的键位号/分别将4JP3、4JP4的2、3脚用短路片短接/ 实验结束后分别恢复原来的 4JP3、 4JP4 的 1 、 2 脚用短路片短接状态#in elude <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;/ 共阴,如要
30、加上小数点则或上 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_a16=0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7, 0xb7,0x77;/ 保存每个按键按下的次数 , 即: array0 存放 0 号键按下的次数
31、, array1 存放 1 号键按下的次数, data uchar array16;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
32、; / 读入行值 while(P1!=0x0f);delay(10); / 按键去抖 k=h|l; /行值+列值,即按键值for(h=0;h<16;h+)/ 键盘处理if(key_ah=k)/ 根据键值查键位号/ 保存当前按下的按键对应的数组元素增 1P0=seg7code_ch; arrayh=arrayh+1;/ 显示当前按下的按键累计次数if(arrayh>15) arrayh=0 ;P2=seg7code_aarrayh;实验四/2JP3 1 、2 脚分别连接 3JP2 1 、 2 脚/2JP2(P2 口) 1-8 脚分别连接 4JP1 8-1 脚,输出要显示数字的位码/2
33、JP0连接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,0x9
34、2,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e,0xbf;code unsigned char wm8=0X80,0X40,0X20,0X10,0X8,0X4,0X2,0x1;/ 位码sbit START=P3P;sbit OE=P3A1;sbit ADD0=P3A2;sbit ADD1=P3A3;sbit ADD2=P3A4;sbit ALE=P3A5;sbit EOC=P3A6;sbit CLK=P3A7;data unsigned int temp; / 存放 ad 转换结果data unsigned int temp18;/ 存
35、放用于显示的数据 , 高 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) / 显示处理,得到要
36、显示 8 位数据的段码temp10=temp/100; / 转换结果数字量 temp11=temp%100/10;temp12=temp%10;temp13=16;temp14=16;temp15=(temp*100/51)/100); / 转换结果对应的电压值temp16=(temp*100/51)%100/10;temp17=(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;P
37、0 口if(i=5) P0=seg7code_atemp1i&0x7f; / 送显示数字段码给else P0=seg7code_atemp1i; / 加小数点P2=wmi; / 送显示数字位码段码给 P2 口i+;if(i>7) i=0;delayms(2); / 延时main()TMOD=0x02; / 设置定时器模式,方式 2 TL0=0xee; / 设置定时初值 定时时间 20usTH0=0xee; / 设置定时重载值EA=1; / 开定时器中断 T0ET0=1;TR0=1; / 定时器开始定时while(1)adzh(); /AD 转换xscl(); / 显示数据处理dt
38、xs(); / 数码管动态显示实验五/*; 八路抢答器 ( 主控用数码管显示,抢答者指示带有闪烁功能 ) ;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<r
39、eg51.h>#define uchar unsigned char#define uint unsigned intsbit P3_3=P3A3;/嗡鸣器控制输出管脚,0响,1不响sbit P3_2=P3A2;/ 从新抢答,0键入,1无效/ 共阳极数码管显示段码,如要加上小数点则与上 0x7fcode unsigned char seg7code_a=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e;P1 取反对code uchar jpsr8=1,2,4,8,0x10,0x
40、20,0x40,0x80;/ 当 1-8 号按键分别按下时,口应的数值uchar display(uchar temp) / 查输入按键的段码 即 抢答选手号对应的段码 uchar k;for (k=0;k<0x7;k+) if(jpsrk=temp) break; return(seg7code_a+k);void delay100ms (uchar n)/ / 延时 n*100msuchar 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
41、() uchar 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 口显示P0=display(input1) ; /调用 display (),查抢答选手段码
42、,送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脚分别
43、连接 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; /* 定义中断次数计数变
44、量 */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=P2A0;/ 数码管位选sbit P2_ 仁卩2人1;sbit P2_2=P
45、2A2;sbit P2_3=P2A3;sbit P2_4=P2A4;sbit P2_5=P2A5;sbit P2_6=P2A6;sbit P2_7=P2A7;/ 时分秒调整切换/ 时钟加 1/ 时钟减 1/ 时钟、计时切换/ 计时启停/ 计时清零sbit P1_0=P1A0;sbit P1_1=P1A1;sbit P1_2=P1A2;sbit P1_4=P1A4;sbit P1_6=P1A6;sbit P1_7=P1A7;void T0_interserve(void) interrupt 1 using 0 /*定时器TO中断服务子程序,电子时钟部分*/ int_time+; /* 中断次数
46、加 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(v
47、oid) 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*/ seco
48、nd1=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=tabhour/10;P2_7=1;delay(1);P2_7=0;/ 小时十位P0=tabhour%10;P2_6=1;delay(1);P2_6=0;/ 小时个位P0=tab10;P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45125-2025数字印刷材料用酚醛树脂软化点的测定显微熔点仪法
- 河道下踏步施工方案
- 河钢广场施工方案
- 沙坪坝地毯施工方案
- 二零二五年度农村土地坟地租赁与墓园墓碑清洗服务协议
- 美容院员工晋升与发展激励合同(2025年度)
- 2025年度驾校教练员车辆保险承包合同
- 二零二五年度温泉度假村股份合作协议
- 二零二五年度农业技术居间保密合同
- 二零二五年度医院间医疗信息共享与数据安全协议
- PAC人流术后关爱与健康教育
- 公对公打款合同
- 乳腺癌患者的疼痛护理课件
- 研课标说教材修改版 八年级下册
- 抗生素种类归纳分类
- 江西宜春城市文化介绍
- 正常肌肉及常见肌病的病理学表现
- 小学语文新课标学习任务群的基本理解和操作要领
- 国产自主可控数据库采购项目技术标准和服务要求
- 机械设计说明书-激光熔覆送粉器设计
- 01-BUFR格式应用指南(试用版)
评论
0/150
提交评论