单片机试题库程序及答案
- 格式:doc
- 大小:139.50 KB
- 文档页数:17
单片机c语言试题和答案一、选择题1. 以下哪项不是51单片机的特点?A. 内部集成定时器/计数器B. 内部集成中断系统C. 内部集成TCP/IP协议栈D. 具有丰富的外设接口答案:C2. 在51单片机中,下列哪个寄存器用于存储程序计数器(PC)的值?A. AB. BC. DPTRD. PC答案:D3. 在51单片机中,下列哪个特殊功能寄存器用于控制定时器/计数器?A. TMODB. TCONC. TH0/TH1D. TL0/TL1答案:A4. 以下哪个函数用于初始化51单片机的串行通信接口?A. void Serial_Init(void)B. void Uart_Init(void)C. void SSI_Init(void)D. void SCI_Init(void)答案:B二、填空题5. 在51单片机中,外部中断0的入口地址是________。
答案:0x00036. 在51单片机的I/O端口中,P0口既可以作为________,也可以作为________使用。
答案:数据总线,地址总线7. 51单片机中的定时器/计数器共有________个。
答案:2个三、判断题8. 51单片机的时钟频率越高,程序执行速度越快。
(对/错)答案:对9. 在51单片机中,外部中断0和外部中断1都可以设置为边沿触发或电平触发。
(对/错)答案:对10. 51单片机的串行通信接口可以设置为8位数据位、1位停止位和可变的波特率。
(对/错)答案:对四、编程题11. 编写一个程序,使用51单片机的定时器/计数器实现一个简单的秒表功能。
要求:秒表计时到60秒时自动停止,并显示“Time Out!”。
```c#include <reg51.h>sbit LED = P1^0; // 将P1.0口定义为LEDvoid Timer0_Init(void) {TMOD = 0x01; // 设置定时器模式为模式1TH0 = 0xFC; // 设置定时器初值TL0 = 0x18;ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}unsigned int count = 0; // 计数器变量void Timer0_ISR(void) interrupt 1 {TH0 = 0xFC; // 重新加载定时器初值TL0 = 0x18;count++; // 计数器加1if (count >= 60) { // 判断是否达到60秒 TR0 = 0; // 关闭定时器0LED = 1; // 点亮LED// 显示“Time Out!”}}void main() {Timer0_Init(); // 初始化定时器0LED = 0; // 熄灭LEDwhile (1) {// 主循环,等待定时器中断}}```五、问答题12. 请简述51单片机的串行通信接口的工作原理。
51单片机考试试题带答案一、选择题1. 以下哪项是51单片机的定时器模式?A. 仅工作在工作模式0B. 工作在工作模式0和工作模式1之间切换C. 工作在工作模式0和工作模式1之间循环切换D. 工作在工作模式0、工作模式1和工作模式2之间循环切换答案:D2. 下列哪种类型的引脚在51单片机中不可作为普通IO口使用?A. 内部RAM地址线引脚B. 外部中断引脚C. IAP/IAP引脚D. 全双工串行口引脚答案:A3. 51单片机的中断向量表是存放在内存的哪个区域?A. 0x0000~0x007FB. 0x0080~0x00FFC. 0x0100~0x017FD. 0x0180~0x01FF答案:C二、填空题1. 请列举51单片机的三种工作模式:____________, ____________, ____________。
答案:工作模式0、工作模式1、工作模式22. 51单片机的系统时钟频率为_________。
答案:12MHz三、解答题1. 请简要描述51单片机的位寻址方式。
答案:51单片机的位寻址方式即按位进行寻址,可以直接对单片机的寄存器或存储器中的某个位进行操作。
通过指定位寻址方式,我们可以将某个特定的位设置为1或者设置为0,或者进行一些位运算操作。
2. 请写出51单片机中TIMER 0的工作模式0的特点和优缺点。
答案:51单片机中TIMER 0的工作模式0特点如下:- 工作模式0是基本的定时/计数功能,仅作为一个16位定时器来使用。
- 它可以产生一个定时器中断。
- 定时器0的计数值可以从TH0和TL0中读取。
优点:- 简单易用,适用于基本的定时功能。
- 可以通过改变定时器的初值来实现不同的定时周期。
缺点:- 功能相对有限,不适用于复杂的定时及计数需求。
- 不能通过使用外部输入源来启动或停止定时器。
四、编程题请使用C语言编写一个程序,实现以下功能:当INT0引脚产生上升沿中断时,将P1口的高4位清0,低4位保持不变。
c语言单片机期末试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 在C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strncpyD. strcmp答案:A3. 下列关于单片机的描述,哪一项是不正确的?A. 单片机是一种集成了CPU、存储器和I/O接口的微控制器。
B. 单片机通常用于嵌入式系统。
C. 单片机的编程语言只能是汇编语言。
D. 单片机的运行速度通常高于个人计算机。
答案:C4. 在C语言中,下列哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A5. 在单片机编程中,下列哪种方式用于控制单片机的I/O端口?A. 直接操作内存地址B. 使用中断C. 通过操作系统调用D. 通过串口通信答案:A二、填空题(每题2分,共20分)1. C语言中,表示逻辑与的运算符是____。
答案:&&2. 在单片机中,用于定义变量存储类型的关键字是____。
答案:volatile3. C语言中,用于定义数组的关键字是____。
答案:数组4. 在单片机编程中,用于控制定时器的函数是____。
答案:定时器函数5. C语言中,用于定义函数的关键字是____。
答案:函数三、简答题(每题5分,共30分)1. 请简述C语言中指针的概念。
答案:指针是一种变量,其值是另一个变量的内存地址。
2. 描述单片机的中断系统是如何工作的。
答案:单片机的中断系统允许外部或内部事件打断CPU当前的执行流程,以处理紧急任务。
3. 解释C语言中函数的原型声明和定义的区别。
答案:函数原型声明只包含函数的返回类型、名称和参数列表,而定义则包括函数原型和函数体。
4. 在单片机编程中,如何使用循环结构?答案:循环结构用于重复执行一段代码,直到满足特定条件。
编程题:2.编一个子程序,将寄存器R0中的内容*10(积<256)3.编程将片内RAM 30H单元开始的15B的数据送到片外RAM 3000H开始的单元中去.4.用查表法编一子程序,将40H单元中的BCD码转换成ASCII码.4.片内RAM50H、51H单元中有一个10B的二进制数,高位在前,低位在后,请编程将其求补,存回原单元中去。
5.片内RAM30H开始的单元中有10B的二进制数,请编程求它们的和。
6.R1中存有一BCD码,请编程将它转换成ASKII码,存入外RAM1000H单元中去。
7.编一个程序,将累加器中的一个字符从串行接口发送出去。
8.片外RAM2000H开始的单元中有5B的数据,编程将它们传送到片内RAM20H开始的单元中去。
9 用查表法编一子程序,将R3中的BCD码转换成ASKII码。
10.片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中。
11.编程将片外RAM3000H开始的20B的数据传送到片内RAM30H开始的单元中。
12.编程将R1、R2中的16位二进制数增1后送回原单元。
13.编程将片内RAM40H开始的单元存放的10B的二进制数传送到片外RAM4000H开始的单元中去。
14.编一子程序,从串行接口接受一个数据。
15.编写将30H和31H单元中2B二进制数乘2的子程序。
16.片外RAM2000H单元中有一BCD码,编程将其转换成ASKII码。
17.试编制单字节BCD码数的减法程序。
18.利用调子程序的方法,进行两个4B无符号数相加。
请编主程序及子程序。
19.若图11-2中数据为无符号数,求数据中最大值送A 。
编程并注释。
图11-2 片外 RAM中的数据块片外 RAM0001H┆20. 若图11-2中数据块是有符号数,求正数个数。
编程并注释。
21. 若图11-2中数据块为无符号数,求其累加和。
编程并注释。
22.已知20H单元有一位十进制数,通过查表找出与其对应的共阴极七段码,并存于30H单元。
(完整版)单⽚机试题及答案单⽚机原理与接⼝技术习题答案习题与思考题11-1 微型计算机通常由哪些部分组成?各有哪些功能?答:微型计算机通常由控制器、运算器、存储器、输⼊/输出接⼝电路、输⼊设备和输出设备组成。
控制器的功能是负责从内部存储器中取出指令并对指令进⾏分析、判断、并根据指令发出控制信号,使计算机有条不紊的协调⼯作;运算器主要完成算数运算和逻辑运算;存储器⽤于存储程序和数据;输⼊/输出接⼝电路完成CPU与外设之间相连;输⼊和输出设备⽤于和计算机进⾏信息交流的输⼊和输出。
1-2 单⽚微型计算机与⼀般微型计算机相⽐较有哪些区别?有哪些特点?答:与通⽤微型计算机相⽐,单⽚机的硬件上,具有严格分⼯的存储器ROM和RAM和I/O端⼝引脚具有复⽤功能;软件上,采⽤⾯向控制的指令系统和硬件功能具有⼴泛的通⽤性,以及品种规格的系列化。
单⽚机还具备体积⼩、价格低、性能强⼤、速度快、⽤途⼴、灵活性强、可靠性⾼等特点。
1-3 简述计算机的⼯作过程。
答:计算机的⼯作是由微处理器以⼀定的时序来不断的取指令、指令译码和执⾏指令的过程。
1-4 单⽚机的⼏个重要指标的定义。
答:单⽚机的重要指标包括位数、存储器、I/O⼝、速度、⼯作电压、功耗和温度。
1-5 单⽚微型计算机主要应⽤在哪些⽅⾯?答:单⽚机的主要应⽤领域有智能化产品、智能化仪表、智能化测控系统、智能化接⼝等⽅⾯。
1-6 为什么说单⽚微型计算机有较⾼的性能价格⽐和抗⼲扰能⼒?答:因为单⽚微型计算机主要⾯向特定应⽤⽽设计,设计者在硬件和软件上都⾼效率地设计,量体裁⾐、去除冗余,⼒争在同样的硅⽚⾯积上实现更⾼的性能,具备较⾼的性能、价格⽐;单⽚机嵌⼊式系统中的软件⼀般都固化在存储器芯⽚或单⽚机本⾝中,⽽不是存贮于磁盘等载体中,另外单⽚机体积⼩,可以放⼊屏蔽设备中,从⽽使其具有较⾼的抗⼲扰能⼒。
1-7 简述单⽚机嵌⼊式系统的定义和特点。
答:单⽚机嵌⼊式系统是嵌⼊到对象体系中的专⽤计算机系统;其特点是⾯向特定应⽤、与各个⾏业的具体应⽤相结合、硬件和软件⾼效率、软件固化在存储器芯⽚或单⽚机本⾝和不具备⾃举开发能⼒。
一、填空题1.执行程序:MOVA, #OAOHADDA, #60H后,A的内容是_______ o2.执行程序:MOV SP, #62HMOV 62H, #50HMOV 61H,#40HPOP DPHPOP DPL后,DPTR的内容是_______ , SP的内容是________ o3.如果打开89S51的两个外部中断(其余中断关闭),应给以下语句赋值为:IE= __________ ;4.89S51共有______ 个定时计数器。
5.当P1 口做输入口输入数据时,必须先向该端口的锁存器写入______ ,否则输入数据可能出错。
6.89S51单片机的电源引脚标号是________ 和_________ =7.在外扩ROM、RAM或I/O设备时,8051单片机的 _________ 口接8位数据总线,______ 口为低8位地址线,_______ 口为高8位地址线。
&执行程序:MOV A, #02HMOV DPTR, #1000HMOVX A, @A+DPTRAJMP$ORG 1000HDB 12H 34H 56H 78H 9AH OBCH ODEH 0F0H 后,A的内容是。
9.若89S51单片机使用的频率为12MHz,那么指令:NOP的执行时间是____ 微秒,它占用_______ 个字节。
10.如果同时打开89S51的0#中断和1#中断(其余中断关闭),应给以下C51语句赋值为:IE= __________ ;11.将单片机的内部定时/计数器1设为工作方式2的计数器,其C51语句为:TMOD = ____________ ;12.启动定时器1的C51语句为:TR1 = ____________13.89S51的P1 口每个引脚最大可吸收约________ mA电流,8个引脚共可吸收约______ mA电流。
14.74LS244为_______ 口扩展芯片。
15.89C51单片机的电源引脚标号是 ______ o16.在外扩ROM、RAM或I/O设备时,8051单片机的_________ 口接8位数据总线。
c语言51单片机试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,正确的是()。
A. C语言是一种汇编语言B. C语言是一种高级语言C. C语言是一种面向对象的编程语言D. C语言是一种面向过程的编程语言答案:D2. 在C语言中,用于定义一个结构体的关键字是()。
A. structB. unionC. enumD. typedef答案:A3. 51单片机中,下列哪个寄存器用于存储程序计数器的值()。
A. SPB. PCC. PSWD. ACC答案:B4. 在C语言中,用于定义一个函数的关键字是()。
A. structB. unionC. functionD. int5. 51单片机中,下列哪个寄存器用于存储累加器的值()。
A. SPB. PCC. PSWD. ACC答案:D6. 在C语言中,用于定义一个全局变量的关键字是()。
A. staticB. externC. registerD. auto答案:B7. 51单片机中,下列哪个寄存器用于存储程序状态字的值()。
A. SPB. PCC. PSWD. ACC答案:C8. 在C语言中,用于定义一个静态变量的关键字是()。
A. staticB. externC. registerD. auto答案:A9. 51单片机中,下列哪个寄存器用于存储堆栈指针的值()。
B. PCC. PSWD. ACC答案:A10. 在C语言中,用于定义一个寄存器变量的关键字是()。
A. staticB. externC. registerD. auto答案:C二、填空题(每题2分,共20分)1. C语言中,定义一个整型变量的关键字是______。
答案:int2. 在C语言中,用于声明一个函数的关键字是______。
答案:extern3. 51单片机中,用于存储当前工作寄存器的寄存器是______。
答案:R0-R74. C语言中,用于声明一个静态变量的关键字是______。
单片机原理及应用试题库---答案一、选择题1、单片机能够直接运行的程序是()A 汇编语言程序BC 语言程序 C 机器语言程序D 高级语言程序答案:C解释:单片机只能直接运行机器语言程序,其他语言编写的程序都需要经过编译或解释转换成机器语言才能被单片机执行。
2、 8051 单片机的堆栈区一般开辟在()A 片内数据存储区低 128 字节B 片内数据存储区高 128 字节C 片外数据存储区D 程序存储区答案:A解释:8051 单片机的堆栈区一般开辟在片内数据存储区低 128 字节,并且遵循“先进后出”的原则。
3、当 8051 单片机的 RST 引脚出现()个机器周期以上的高电平时,系统复位。
A 1B 2C 3D 4答案:B解释:RST 引脚保持 2 个机器周期以上的高电平,单片机就会进行复位操作,复位后程序计数器 PC 指向 0000H 地址。
4、 8051 单片机的定时器/计数器工作方式 1 是()A 8 位计数器结构B 13 位计数器结构C 16 位计数器结构D 32 位计数器结构答案:C解释:工作方式 1 是 16 位的计数器结构,由 THx 和 TLx 两个 8 位寄存器组成。
5、要使 8051 单片机能够响应外部中断 0,中断允许寄存器 IE 的值应设置为()A 80HB 81HC 82HD 83H答案:B解释:IE 寄存器中,EA 位为总中断允许位,EX0 位为外部中断 0允许位,要响应外部中断 0,IE 的值应设为 81H,即 10000001B。
二、填空题1、 8051 单片机内部有 4 个 8 位的并行 I/O 口,分别是 P0 、P1 、P2 、P3 。
解释:这 4 个并行 I/O 口在单片机的输入输出操作中起着重要作用。
2、单片机的最小系统包括电源、时钟电路、复位电路。
解释:电源为单片机提供工作电压,时钟电路为单片机提供时钟信号,复位电路用于单片机的初始化。
3、 8051 单片机的指令系统共有 111 条指令,按指令的长度可分为单字节指令、双字节指令、三字节指令。
单片机考试试题及答案一、选择题(每题2分,共20分)1. 单片机中,CPU的主要功能是()。
A. 存储数据B. 处理数据C. 传输数据D. 显示数据答案:B2. 在8051单片机中,下列哪个寄存器是用于存储程序计数器的地址?A. SPB. PCC. DPTRD. ACC答案:B3. 下列哪项不是单片机的I/O接口?A. 定时器/计数器B. 串行通信接口C. 模数转换器D. 键盘答案:C4. 单片机的中断系统通常由哪两部分组成?A. 中断源和中断服务程序B. 中断向量表和中断服务程序C. 中断向量表和中断源D. 中断源和中断向量表答案:B5. 在8051单片机中,下列哪个指令用于将累加器的内容传送到外部数据存储器?A. MOVXB. MOVC. MOVCD. MUL答案:A二、填空题(每题2分,共20分)1. 单片机的______是单片机的核心部件,负责执行程序。
答案:CPU2. 8051单片机的定时器/计数器共有______个。
答案:23. 在8051单片机中,______指令用于将内部RAM的某个单元的内容传送到累加器。
答案:MOV4. 单片机的______接口用于实现单片机与外部设备的通信。
答案:串行通信5. 单片机的______功能允许它在执行当前任务的同时响应外部事件。
答案:中断三、简答题(每题10分,共30分)1. 请简述单片机的中断优先级是如何工作的?答案:单片机的中断优先级是指在多个中断请求同时发生时,单片机根据中断源的重要性来决定先响应哪一个中断请求。
通常,中断优先级由中断向量表中的地址顺序决定,优先级高的中断源对应的中断向量地址在表中靠前。
2. 描述单片机的I/O接口的作用。
答案:单片机的I/O接口是单片机与外部设备进行数据交换的通道。
它允许单片机接收外部设备的数据输入,并将处理后的数据输出到外部设备。
3. 简述单片机的定时器/计数器的作用。
答案:单片机的定时器/计数器用于提供精确的时间控制和事件计数。
期终考试《单片机原理及接口技术》(A )适用班级:一、单项选择题:(共15题,每题2分,共30分)(1)AT89C51单片机哪些不是主要功能部件组成( ) A. CPU B. RAM C. ROM D.LED 显示 (2)MCS-51系列单片机的CPU 主要是由( )组成的。
A .运算器、控制器 B.加法器、寄存器 C .运算器、加法器 D.运算器、译码器 (3)单片机中的程序计数器PC 用来( )。
A.存放指令B.存放正在执行的指令地址C.存放下一条指令地址D.存放上一条指令地址 (4)单片机AT89C51的EA 引脚( )。
A.必须接地 B.必须接+5V 电源C.可悬空D.以上三种情况视需要而定 (5)AT89C51单片机5个中断源的优先权从高到低的是( )A. INT0、T0、INT1、T1、串行口B. T0、T1、INT0、INT1、串行口C.串行口、T0、INT1、T1、INT0D. INT0、INT1、T0、T1、串行口 (6)定时器工作在工作方式2,要定时200 us,要装入的初始值为( )A .56H B.9CH C.3CB0H D.0FFH(7) ADC0809的模拟通道选择地址线ADDC 、ADDB 、ADDA 的状态为011,则选择模拟的通道为( )A.IN6B.IN5C.IN4D.IN3 (8)8255A 的A 组控制电路是用来控制( )A.A 口及C 口的低4位B.A 口及B 口的低4位C.A 口及B 口的高4位D.A 口及C 口的高4位(9)外部扩展存储器时,分时复用做数据总线和低8位地址线的是( )。
A. P0口 B. P1口 C. P2口 D.P3口 (10)PSW 中的RS1和RS0两位用来( )。
A.选择工作寄存器组 B.指示复位 C.选择定时器 D.选择工作方式 (11)单片机上电复位后,PC 的内容为( )。
A. 0000HB. 0003HC. 000BHD. 0800H (12)AT89C51单片机的CPU 是( )。
1、程序功能:通过用DAC0832产生三角波。
(DAC0832的数字信号输入端接P0口,/CS 接P2.7,/XFER接地,/WR1、/WR2接单片机的/WR,ILE接电源+5V。
)①DA0832=i; ②for(i=255;i>=0;i--) ③for(i=0;i<=255;i++) ④while(1) ⑤uchar i; ⑥TF1=0; ⑦while(!TF1); ⑧TR1=1;⑨void delay_1ms() ⑩#include<reg51.h>#include<absacc.h>//存放绝对地址宏定义的函数原型#include<reg51.h>﹍﹍﹍﹍﹍#define uchar unsigne d char#define uint unsigned int#define DA0832 XBYTE[0X7FFF]﹍void delay_1ms() ﹍﹍﹍﹍﹍{TH1=0XFC;TL1=0X18;TR1=1;﹍﹍while(!TF1);﹍﹍﹍﹍//等待1ms定时时间到﹍﹍﹍TF1=0;﹍﹍﹍}void main(){ ﹍uchar i;﹍﹍﹍﹍﹍TMOD=0X10;﹍﹍﹍while(1)﹍﹍﹍{ ﹍﹍for(i=0;i<=255;i++) ﹍﹍﹍﹍//形成三角波输出值,逐渐增大,最大为255{ DA0832=i;//D/A转换输出delay_1ms();}﹍﹍for(i=255;i>=0;i--)﹍﹍﹍﹍{ ﹍DA0832=i;﹍﹍﹍﹍﹍;//D/A转换输出delay_1ms();}}}2、程序功能:通过DAC0832产生锯齿波。
(DAC0832的数字信号输入端接P0口,/CS 接P2.7,/XFER接地,/WR1、/WR2接单片机的/WR,ILE接电源+5V。
)选择项:①delay_1ms();②DA0832=i;③for(i=0;i<=255;i++)④TMOD=0X10;⑤void main()⑥TF1=0;⑦while(!TF1) ;⑧TL1=0X18;⑨#define DA0832 XBYTE[0X7FFF]⑩#include<absacc.h>源程序:﹍#include<absacc.h>﹍﹍﹍﹍﹍//存放绝对地址宏定义的函数原型#include<reg51.h>#define uchar unsigned char#define uint un signed int#define DA0832 XBYTE[0X7FFF]﹍﹍﹍﹍﹍﹍void delay_1ms(){ TH1=0XFC;TL1=0X18;﹍﹍﹍﹍TR1=1;﹍while(!TF1) ;﹍﹍﹍﹍﹍﹍TF1=0;﹍﹍﹍﹍﹍}void main()﹍﹍﹍﹍﹍﹍{uchar i;﹍TMOD=0X10;﹍﹍﹍﹍﹍while(1){ for(i=0;i<=255;i++)﹍﹍﹍﹍﹍﹍{ ﹍﹍DA0832=i;﹍﹍﹍﹍//D/A转换输出﹍delay_1ms();﹍﹍﹍﹍﹍}}}3、程序功能:用单片机实现简易数字钟,显示小时、分和秒。
(单片机P2口输出取反后控制8个共阴极数码管的位码,P0口控制每个数码管的段码)选择项:①calc( ); ②display( ); ③if(time[2]>23) ④if(time[1]>59) ⑤if(time[0]>59) ⑥P0=dispcode[time[i]/10]; ⑦P0=dispcode[time[i]%10];⑧for(i=0;i<4;i++) ⑨void delay(void)⑩uchar time[4]={23,59,58,0};源程序:#include "reg51.h " //头文件#define uchar unsigned char//宏定义uchardispcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //定义共阴数码管0~9显示码数组﹍uchar time[4]={23,59,58,0};﹍﹍﹍﹍﹍//设置时间初值void delay(void) //延时函数{ uchar k;for(k=250;k>0;k--);}void display(void)//显示函数{ uchar i,k;k=0x01; //设置位选线初值﹍for(i=0;i<4;i++)﹍﹍﹍﹍﹍//循环4次{ P2=0; //关闭显示﹍P0=dispcode[time[i]%10]; ﹍﹍﹍﹍﹍//输出个位数的段码P2=k; //送位码k=k<<1;//位码左移一位delay( );//调用延时函数P2=0;//关闭显示﹍P0=dispcode[time[i]/10];﹍﹍﹍﹍﹍//输出十位数的段码P2=k;//送位码k=k<<1;//位码左移一位delay( ); //调用延时函数}P2=0;//关闭显示}void calc(void)//时间值计算函数{ time[0]++;//秒加1﹍if(time[0]>59) ﹍﹍﹍﹍﹍//秒是否超过59{ time[0]=0;//秒清0time[1]++;//分加1﹍if(time[1]>59)﹍﹍﹍﹍﹍//分是否超过59{ time[1]=0;//分清0time[2]++;//小时加1﹍if(time[2]>23)﹍﹍﹍﹍﹍//小时是否超过23time[2]=0;//小时清0}}}﹍﹍﹍void main()﹍﹍﹍//主函数{ uchar i;while(1)//无限循环{ for(i=0;i<250;i++)//循环250次﹍﹍display( );﹍﹍﹍﹍//调用显示函数﹍﹍calc( ); ﹍﹍﹍﹍//调用时间计算函数}}4、程序功能:用单片机控制蜂鸣器播放一首简单的曲子。
利用定时器T1实现声音频率的产生(P1.3引脚接蜂鸣器)。
选择项:①unsigned int code table[3]={64260,64400,64524};②th=(table[n]/256);③unsigned char i,j,k;④for(i=0;i<m;i++) ⑤unsigned char i; ⑥ET1=1; ⑦EA=1;⑧TR1=1; ⑨delay(5); ⑩TH1=th;源程序:#include "reg51.h"//头文件sbit P1_3=P1^3; //定义蜂鸣器输出引脚﹍unsigned int code table[3]={64260,64400,64524}; ﹍﹍﹍//1、2、3三个音的计数值unsigned char th,tl; //定义全局变量void sing(unsigned char n) //音频读取函数{ ﹍﹍th=(table[n]/256);﹍﹍﹍﹍//读取音调计数值高位tl=(table[n]%256); //读取音调计数值低位}void delay(unsigned char m) //延时函数{ ﹍﹍unsigned char i,j,k; ﹍﹍﹍﹍﹍﹍for(i=0;i<m;i++)﹍﹍﹍for(j=0;j<200;j++)for(k=0;k<100;k++);}main()//主函数{ ﹍﹍﹍﹍﹍﹍TMOD=0X10; //定时器工作方式设置﹍﹍﹍ET1=1;﹍﹍﹍//T1中断允许设置﹍﹍EA=1; ﹍﹍﹍﹍//中断总允许设置﹍﹍TR1=1;﹍﹍﹍﹍//启动T1i=0; //设置音频初始值while(1) //无限循环{ sing(i); //调用音频输出函数﹍﹍delay(5);﹍﹍﹍﹍//调用延时函数i++;//指向下一个音if(i>=3) {i=0; delay(10);} //一曲结束,重新开始播放}}void time() interrupt 3//T1中断服务程序{ ﹍﹍TH1=th;﹍﹍﹍﹍//定时器重置初值(高位)TL1=tl; //定时器重置初值(低位)P1_3=~P1_3; //输出取反}5、程序功能:设置八个电子琴键(从P1口接入),能够通过按键发出相应的声音(弹奏)。
利用单片机的定时器T0实现声音频率的产生(P3.3引脚接蜂鸣器)。
选择项:①case 0x7f: ②case 0xfe: ③switch(i) ④while(1) ⑤TCON=0x10; ⑥TMOD=0X01; ⑦main() ⑧P3_3=~P3_3;⑨void INTTO() interrupt 1 ⑩sbit P3_3=P3^3;源程序:#include "reg52.h"//头文件﹍﹍sbit P3_3=P3^3;﹍﹍﹍﹍//定义蜂鸣器输出引脚unsigned char idata i,tl0_temp=0,th0_temp=0;//定义全局变量﹍void INTTO() interrupt 1 ﹍﹍﹍﹍﹍//T0服务程序{ TH0=th0_temp; //定时器重置初值(高位)TL0=tl0_temp; //定时器重置初值(低位)﹍﹍P3_3=~P3_3; ﹍﹍﹍﹍//输出取反}main()﹍﹍﹍﹍﹍﹍//主函数{ P1=0xff;//端口初始化﹍﹍TMOD=0X01; ﹍﹍﹍﹍//定时器工作方式设置ET0=1;//T0中断允许设置EA=1;//中断总允许设置TH0=0;//定时初值高位设置TL0=0;//定时初值低位设置﹍TCON=0x10; ﹍﹍﹍﹍﹍//定时器启动设置﹍﹍while(1) ﹍﹍﹍﹍//无限循环{ i=P1;//读端口值﹍﹍switch(i) ﹍﹍﹍﹍{ case 0xff:TR0=0;break;//无键按下﹍﹍case 0xfe:﹍﹍﹍﹍th0_temp=0xfc;tl0_temp=0x43;TR0=1;break;//1键按下case 0xfd:th0_temp=0xfc;tl0_temp=0xab;TR0=1;break; //2键按下case 0xfb:th0_temp=0xfd;tl0_temp=0x08;TR0=1;break; //3键按下case 0xf7:th0_temp=0xfd;tl0_temp=0x32;TR0=1;break; //4键按下case 0xef:th0_temp=0xfd;tl0_temp=0x81;TR0=1;break; //5键按下case 0xdf:th0_temp=0xfd;tl0_temp=0xc7;TR0=1;break; //6键按下case 0xbf:th0_temp=0xfe;tl0_temp=0x05;TR0=1;break; //7键按下﹍﹍﹍case 0x7f: ﹍﹍﹍th0_temp=0xfe;tl0_temp=0x21;TR0=1;break; //8键按下default:TR0=0;break; //多键按下}}}6、程序功能:单片机控制两个共阳数码管实现计数显示(P0口接段码,P2.0口接十位数码管的位码,P2.1口接个位数码管的位码)。