单片机习题和试题库之五 编程题

标签:
单片机习题教育 |
分类: 单片机 |
1、假定甲乙机以方式1进行串行数据通信,晶振=12MHz,要求波特率为1200bps。乙机发送,甲机接收。请画出电路图并写出初始化发送(查询)和接收(中断方式)程序。
2、口线P1.0接一个发光二极管,由定时器0控制,用于演示1秒钟亮、1秒钟暗的效果。
3、给80C51单片机扩展一片6116,0809和8155,要求0809采用中断方式,8通道工作;采用138译码选择芯片。请画出系统连接图,写出各芯片的地址范围并写出8155内各口及其内部的RAM地址范围。
4、已知系统的连接如图所示,试编写程序实现下列功能:
(1).编写上电显示程序,显示“123456”。
(2).编写主程序,功能为:当有键按下(0~7号)时,都显示键号; 无键按下,保持原有显示状态。
5、选用DAC0832芯片产生一个三角波,要求幅值为0~2.5V。
6、假定甲、乙机以方式1进行串行数据通信,晶振频率为6MHz。要求波特率为1200bps,甲机发送数据88H(查询方式),乙机接收(中断方式)。请画出电路图并编程实现上述功能。
7、已知一单片机应用系统如下图所示。试回答问题并编写显示程序,以1秒为间隔,亮暗相间,显示“88888888”。
(1).写出各口的地址和控制字
A口地址:
B口地址:
C口地址:
控制口地址:
控制字:
(2).显示程序
8、已知ADC0809单片机的连接如下图所示,试写出启动0809第3通道A/D转换的程序段。
(1)、把外部2000H内容送到内部RAM的20H单元。
(2)、找出20H~22H三个单元中的最大数,放在A累加器中。
9、编写程序完成以下功能:每响应一次外部中断,发光二极管亮一秒钟。六、简单编程题:
(1)、用间接寻址方式,把外部20H内容送到内部RAM的20H单元。
(2)、依据第四题接线图,写出启动0809第3通道A/D转换的程序段。
(3)、编写串行口方式1串行发送初始化程序。(省略波特率发生器初始化)。
10、假定甲乙机以方式1进行串行数据通信,晶振=6MHz,要求波特率为1200。甲机发送,乙机接收。请画出电路图并计算出波特率,写出初始化发送和接收程序。
11、当系统选用12MHz晶体振荡器时,由定时器0控制产生周期为4ms(脉冲宽度为2ms)的方波序列(采用中断方式),并由P1.0输出,请编写实验程序。
12、已知8155与单片机的连接如图所示。
(1).写出8155中RAM及各口的地址。
13、ADC0809与8051单片机的硬件接口如下图所示,模拟量输入选择7通道,编制A/D
转换程序,将转换结果送30H单元。
14、已知8279与单片机的连接如图所示,8708为同相驱动器。试编写程序实现下列功能:
(1).编写中断服务子程序,完成读键 值功能,将键值放入20H单元。
(2).编写主程序,功能为:当1#键按下时,显示“
15、当系统选用6MHz晶体振荡器时,由CTC0控制产生周期为2ms(脉冲宽度为1ms)的方波序列,并由P1.0输出,请编写程序。
16、实验题
假定甲乙机以方式1进行串行数据通信,晶振=6MHz,要求波特率为1200。甲机发送,乙机接收。请计算出波特率,写出初始化发送和接收程序。
17、若8255芯片的片选端与8031的P2.7相连,A1A0端与地址总线A1A0相连,现要求8255工作在方式0,A口作为输入,B口作为输出,且将C口的第6位PC5置1,请编写初始化工作程序。
18、选用DAC0832芯片,设计有三路模拟量同时输出的MCS—51系统,画出硬件结构框图,编写数模转换程序。
19、已知8279与单片机的连接如课本P186图所示。试编写程序实现下列功能:
(1).显示字符“
(2).编写中断服务子程序,完成读键值功能,将键值放入20H单元。
20、ADC0809与8051单片机的硬件接口如下图所示,模拟量输入选择7通道,编制A/D 转换程序,将转换结果送30H单元。
21、 试编写一段对中断系统初始化的程序,使之允许,,T0,串行口中断,且使T0中断为高优先级中断。
22、 使用位操作指令实现下列逻辑操作,要求不得改变未涉及位的内容。
(1)使ACC.0置1;
(2)清除累加器高4位;
(3)清除ACC.3,ACC.4, ACC.5, ACC.6。
23、 试编写程序,将内部RAM的20H,21H,22H三个连续单元的内容依次存入2FH,2EH,和2DH中。
24、 编写两个16位数的减法:6F5DH-13B4H,结果存入内部RAM的30H,31H单元,30H存差的低八位。
25、 两个四位BCD码相加,被加数和加数分别存于50H,51H,52H,53H单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。
26、试编程对8155进行初始化。设A口为选通输出,B口为基本输入,C口作为控制联络口,并启动定时器/计数器按方式1工作,定时时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHZ。
27、在一个8031应用系统中扩展一片2764,一片8155和一片6264。试画出其系统框图,并指出所扩展的各个芯片的地址范围
28、 设计一个4×4行列式键盘电路并编写键扫描子程序。
29、试设计一个用8155与有32个按键的键盘连接的接口电路。编写程序实现以下功能:用8155定时器定时,每隔2s读一次键盘,并将其读入的键值存入8155片内RAM 40H开始的单元中。
30、 用8051的P1口作8个按键的独立式键盘接口。试画出其中中断方式的接口电路及相应的键盘处理程序。
31、试用8255为8051微机系统设计一个键盘接口。键盘为3×4个键,其中10个为数1~9,两个为功能键RESET和START。具体要求:
(1)按下数字键后,键值存入3040H开始的单元中(每个字节放一个键值)。
(2)按下RESET(复位)键后,键PC复位成0000H。
(3)按下START(启动)键后,系统开始执行用户程序(用户程序的入口地址4080H)。试画出该接口的硬件连接图并进行程序设计。
32、 试设计一个LED显示器/键盘电路。
33、试为8051微机系统设计一个LED显示器接口,该显示器共有八位,从左到后分别DG1~DG8(共阴极式),要求将内存3080H~3087H八个单元中的十进制(BCD)依次显示在DG1~DG8上。要求:画出该接口硬件连接图并进行接口程序设计。
34、在一个fosc=12MHz的8031应用系统中,接有一片A/D器件ADC0809,它的地址为FEF8H~FEFFH。试画出有关逻辑框图,并编写定时采样8个通道的程序。设采样频率为2ms一次,每个通道采10个数,把所采的数按0~7通道的顺序存放在以1000H为首地址的外部RAM中。
35、在一个fosc=12MHz的8031应用系统中,接有一片D/A器件DAC0832,它的地址为7FFFH,输出电压为0~5V。请画出有关逻辑框图,并编写一个程序,当其运行后0832能输出一个矩形波,波形占空比为1:5。高电平时电压为2.5V,低电平时为1.25V。
36、 试编写延时2ms的程序
37、 用查表程序求0~8之间整数的立方。
38、编写有6个命令键的散转程序。键号为0、1、2、3、4、5;6个键A、B、C、D、1、2的ASCII码放在累加器A中。
39、按下列要求编程。
(1)R7内容送R6中;
(2)外RAM 50H单元内容送内RAM 50H单元;
(3)外RAM 1000H单元内容送外RAM 2000H单元;
(4)ROM 1000H单元内容送外RAM 8000H单元;
40.已知无符号二字节乘数存在42H41H中,另一无符号乘数存在40H中,试编程实现:
41.已知fosc = 12MHz,试编写延时2s子程序。
42.用软件实现逻辑运算:Q = (R+S)T+(U+V)。其中Q、R、S、T、U和V均为位变量,依次存放在以位地址40首址的位寻址区中。
43.已知某单片机系统每隔1s测一次温度,8位温度A/D值存在特殊功能寄存器SBUF中,试求其1分内的平均值,存40H。
44.已知显示数(≤255)存在30占,试将其转换为共阴显示字段码,存入首址为40H的内RAM中(设共阴显示字段码表已知,且已存在首址为TABD的ROM中)。
45.已知外RAM1000H单元开始存有一组数据,其长度存放在该数据区首字节,要求统计出其中大于10、等于10和小于10 的数的个数,并把统计结果分别存入内RAM 30H~32H单元。
46.已知图8-15循环灯电路,VRXD、VTXD、PIOX1分别为P1.5~P1.7,试利用单字节虚拟串行输出子程序VUARTO编制程序,使发光二极管从右到左,每隔0.5秒依次点亮,不断循环。
47.已知图8-16并入串出电路,VRXD、VTXD、PIOX1分别为P1.0~P1.2,试利用单字节虚拟串行输出子程序VUARTI编制程序,每隔1秒(运用T0中断,fosc=6MHz)从74HC165并行口输入状态数据,并存入内RAM 30H。
48.80C51 P1.4~P1.7分别与93C46 CS 、SK、DI和DO相连,试将80C51内RAM中以30H为首址的10字节数据存入AT93C46首址为40H的区域中。
49.试统计某展览会参展人数。已知展览会有4 个入口,且均已安装检测探头,每进入一人,能产生一个负脉冲,分别输入P3.2、P3.3、P3.4、P3.5。估计参展人数多于10万,试编程,将累计参展人数存32H、
50.已知循环灯电路图6-4,试编程使发光二极管从右至左,每隔0.3秒依次点亮,不断循环。
51.试以串行方式1设计一个发送程序。已知fosc = 11.0592MHz,波特率为2400b/s,SMOD = 1,16个发送数据存在内RAM30H为首地址的区域中。
52.设计一个串行方式2发送子程序(SMOD=0),将片内RAM 40H~47H中的数据串行发送,第9数据位作为奇偶校验位(不校对)。
53.编制一个串行方式2接收子程序(SMOD=1),接收10个数据,并核对奇偶校验位,接收核对正确,存首址为50H的内RAM中;发现错误,置位错误F0,并停止接收。
54. 已知一MCS—51单片机系统的片内RAM 20H单元存放了一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。
CY |
A |
DPTR |
片外01H |
片外00H |
片外8000H |
|
|
|
|
|
|
55、根据图示电路,编写程序,使0832输出负向锯齿波。
56、设计用单片机P1口控制1位共阴极LED。按键1按下,循环显示0~5,按键2按下,按100μs的间隔显示0和1。设计硬件电路,并编程实现上述功能。
57、单片机用内部定时方法产生频率为100KHz等宽矩形波,假定单片机的晶振频率为12MHz,
58. 使用定时器中断方法设计一个秒闪电路,让 LED 显示器每秒钟有 400ms 点亮。假定晶
59. 使用 8031 设计一个键盘接口(可用 8155 或 8255)。键盘共有 12 键(3 行× 4列)其
60. 试为 8051 设计一个 LED 显示器接口,该显示器共有八位,从左到右分别为 DG1 ~
61.已知MCS-51单片机系统片内RAM20H单元存放乐一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。
62、请写出完成下列操作的指令:
(1)使累加器A的低4位清0,其余位不变。
(2)使累加器A的低4位置1,其余位不变。
(1)使累加器A的低4位取反,其余位不变。
63、试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。
64、试编写程序段实现外部RAM 2000H单元的内容传送到内部RAM 20H中的操作。
65、试编写程序段实现外部RAM 2000H单元的内容传送到外部RAM 3000H中的操作。
66、试编写程序段,将内部RAM的20H、21H、22H三个连续单元的内容依次存入2FH、2EH和2DH单元。
67、试编写程序段,完成两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存差的低8位。
68、试编写程序段,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放在R1中。
69、试编写程序段,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。
70、在内部RAM 的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出最大数存入BIG单元。
71、编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在内部RAM的50H、51H、52H中。
72、编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。
73、设有100个无符号数,连续存放在外部RAM 1000H地址开始的区域,编程统计其中的正数、负数和0的个数,并分别存放在内部RAM的20H、21H、22H单元中。
74、编程分别将外部RAM的0000H~0000FH、1030H~1050H、2050H~3000H地址单元清零。
75、试编程对8255初始化,使其A口按方式0输入,B口按方式1输出,C口上半部分按方式0输出,下半部分按方式1输出。
76、编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4中。
77、已知系统的连接如图所示,试编写程序实现下列功能:
(1)编写显示程序,显示“123456”。
(2)编写主程序,功能为:当有键按下(0~7号)时,都显示键号; 无键按下,保持原有显示状态。
78、试设计MCS-51与DAC0832的接口电路,并编制程序,输出图所示波形。
79、设计并编程,完成单片机的双机通信程序,将甲机片外RAM的1000H~100FH的数据块通过串行口传送到乙机的20H~2FH单元。
80.片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 =.
81.试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz。
82.试将8031单片机外接一片2716 EPROM和一片6116 RAM组成一个应用系统,请画出硬件连线图,并指出扩展存储器的地址范围。
83、利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为1次/秒(8个灯依次亮一遍为一个周期)。
84、应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
85.片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.
86.设计一个2×2行列式键盘电路并编写键盘扫描子程序。
87. 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
88.编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。
89.将31H、32H单元与41
H、40H单元的双字节十进制无符号数相加,结果存入32H,31H,30H单元。即(31H)(30H)+(41H)(40H)
输入程序
参考程序
MOV
MOV
MOV
CLR
L1: MOV
ADDC
DA
MOV
INC
INC
DJNZ
CLR
MOV
MOV
在31H、30H单元存入加数如3018,在41H,40H单元存入被加数如8975。
输入程序首地址,(从处为2000H),然后开始单步或断点运行该段程序。
运行过程中检查数据的变化,并在最后检查(32H)=
90. 编程实现逻辑运算:Q=(U *(V+W))+X.Y)+Z。设U~Z的位地址为00H~05H.Q的位地址为07H。《实际中U~Z可以是外部输入端口信号或软件设定的一些控制位》。
91. 编程将片内RAM 30H单元开始的15B的数据传送到片外RAM 3000H开始的单元中去。
92. 片内RAM 30H开始的单元中有10B的二进制数,请编程求它们之和(和<256=。
93. 编一个程序,将累加器中的一个字符从串行接口发送出去。
94. 用查表法编一子程序,将R3中的BCD码转换成ASCII码。
95. 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中。
96. 编一子程序,从串行接口接受一个字符。
97. 利用调子程序的方法,进行两个无符号数相加。请编主程序及子程序。
98. 若图数据块是有符号数,求正数个数。编程并注释。
99.编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。
100.8225A控制字地址为300FH,请按:A口方式0输入,B口方式1输出,C口高位输出,C口低位输入,确定8225A控制字并编初始化程序.
101.编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。
102请编制串行通信的数据发送程序,发送片内RAM50H~5FH的16B数据,串行接口设定为方式2,采用偶校验方式。设晶振频率为6MHz。
103.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
104.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为1ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
105.利用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。编出汇编语言程序。
106、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。
107、编制一个循环闪烁的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。
108、在8051单片机的INTO引脚外接脉冲信号,要求每送来一个脉冲,把30H单元值加1,若30H单元记满则进位31H单元。试利用中断结构,编制一个脉冲计数程序。
109.利用89C51的P1口控制8个发光俄二极管LED。相邻的4个LED为一组,使2组每隔0。5S 交替发亮一次,周尔复始。试编写程序。
110.设计89C51和ADC0809的接口,采集2通道10个数据,存入内部RAM的50H~59H单元,画出电路图,编出:
(1)延时方式;
(2)查询方式;
(3)中断方式中的一种程序。
111.试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz。
112.
113
114
115
采用8255A或8155H并行扩展口设计一个4x4键盘和6位LED显示器电路且编写键扫描程序和动态显示程序。
116. 设计一个80311单片机与DAC0832的接口电路,并编写相应的程序。
117. 设计一个8031单片机与DACl220的接口电路,并编写相应的程序。
118. 设计一个8031单片机与5G1433的接口电路,并编写相应的数据采集程序。
119. 设计一个8031单片机与ICL7135的接口电路.并编写相应的数据采集程序。
120. 设计一个803l单片机与ADC0809的接口电路,并编写相应的数据采集程序。
121. 设计一个803l单片机与AD574的接口电路,并编写相应的数据采集程序。
122. 利用定时器/计数器T0设汁一产生20kHz的方波并由P1.0输出的程序,晶振频率为12MHz。
123. 设计一个声光报警控制器。要求在正常工作时,绿色指示灯亮;在不正常工作时,同时进行声光报警,红灯闪闪发光,喇叭不断声响。定时间隔自己设定。
124. 某异步通信接口,其帧格式由1个起始位(0),7个数据位,1个偶校验和1个停止位(1)组成。当该接口每分钟传送1800个字符时,试计算出传送波特率。
125. 串行口工作方式在方式1和方式3时,其波特率与fosc、定时器T1工作模式2的初值及SNOD位的关系如何?设fosc=6MHz,现利用定时器T1模式2产生的波特率为110bps。试计算定时器初值。
126. 试设计一个用8155与有32个按键的键盘连接的接口电路。编写程序实现以下功能:用8155定时器定时,每隔2s读一次键盘,并将其读入的键值存入8155片内RAM 40H开始的单元中。
127 .用8051的P1口作8个按键的独立式键盘接口。试画出其中中断方式的接口电路及相应的键盘处理程序。
128. 试用8255为8051微机系统设计一个键盘接口。键盘为3×4个键,其中10个为数1~9,两个为功能键RESET和START。具体要求:
(1) 按下数字键后,键值存入3040H开始的单元中(每个字节放一个键值)。
(2)按下RESET(复位)键后,键PC复位成0000H。
(3)按下START(启动)键后,系统开始执行用户程序(用户程序的入口地址4080H)。试画出该接口的硬件连接图并进行程序设计。
129. 按照下列要求编写程序:
(1) 若8255PA口交替接红绿灯,编写红绿灯交替亮灭程序(间隔50ms)
(2). 编写程序将IN0—IN7路模拟电压转换结果存储在以R0为初始地址的内存空间内
130. 两个四位BCD码相加,被加数和加数分别存于50H,51H,52H,53H单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。
131. 试编写延时2ms的程序
132. 设计一个4×4行列式键盘电路并编写键扫描子程序。