C语言100题(3)

2019-08-03 10:24

P30=0;P31=1; For(m=0;m<100;m++); P1=a[j]; P30=1;P31=0; For(n=0;n<100;n++); } }

第六 习题与思考题

1.为什么要消除按键的机械抖动?消除按键的机械抖动的方法有哪几种?原理是什么? 2.说明矩阵式键盘按键按下的识别原理。

3.用89c2051单片机的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意),画出电路并编出程序。

4.现用89C2051单片机的I/O口去检测开关S1、S2的通断状态,若S1接通,转去执行子程序SUB1;若S2接通,转去执行子程序SUB2;请画出电路连接图,并编制程序(要有消除开关抖动措施)。

5.设计一个键盘显示接口电路,要求用9个键盘(3×3)控制一位LED数码管,9个键盘依次代表数字键1---9,当按下某一数字键,LED数码管就显示这个数字(如按数字键5,LED数码管就显示5),若没有新的数字键按下,数码管显示值不变。请画出硬件控制线路图,编写控制软件。

6.利用89c2051单片机的P1.0-P1.3接四个发光二极管L1-L4,用来指示当前计数的数据;用P1.4-P1.7作为预置数据的输入端,接2个拨动开关K1、K4,用来作加计数和减计数开关。具体的电路原理图如下图所示

7.如图4.14.2所示,用AT89c2051的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F”序号。

习题与思考题

1、 用89c2051单片机的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉

宽随意),画出电路并编出程序。 答: #include

11

sbit P3_7=P3^7;

unsigned char count; void delay10ms(void) {

unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }

void main(void) {

while(1) {

if(P3_7= =0) {

delay10ms(); if(P3_7= =0) {

count++;

if(count= =16) {

count=0; }

P1= ~count;

while(P3_7= =0); //等待按键释放 } } } }

2、现用89C2051单片机的I/O口去检测开关S1、S2的通断状态,若S1接通,转去执行子程序SUB1;若S2接通,转去执行子程序SUB2;请画出电路连接图,并编制程序(要有消除开关抖动措施)。 #include Sbit P30=P3^0; Sbit P31=P3^1;

Unsigned a1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; Unsigned a2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; void delay10ms(void)

{

unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }

Void sub1(void)

12

{

For(i=0;i<8;i++) {

P1=a1[i];

Delay 10ma(); } }

Void sub2(void) {

For(i=0;i<8;i++) {

P1=a2[i];

Delay 10ma(); } }

Main() {

While(1) {

If(P30==0) {

Delay 10ms(); If(P30==0) {

Sub1(); } }

If(P31==0) {

Delay 10ms(); If(P31==0) {

Sub2(); } } } } 4、利用89c2051单片机的P1.0-P1.3接四个发光二极管L1-L4,用来指示当前计数的数据;

13

用P1.4-P1.7作为预置数据的输入端,接四个拨动开关K1-K4,用P3.6/WR和P3.7/RD端口接两个轻触开关,用来作加计数和减计数开关。具体的电路原理图如下图所示

#include

unsigned char curcount;

void delay10ms(void) {

unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }

void main(void) {

curcount=P3 & 0x0f; P1=~curcount; while(1) {

if(P3_6==0) {

delay10ms(); if(P3_6==0) {

if(curcount>=15) {

curcount=15; } else {

curcount++; }

P1=~curcount; while(P3_6==0); } }

if(P3_7==0) {

delay10ms(); if(P3_7==0) {

14

if(curcount<=0) {

curcount=0; } else {

curcount--; }

P1=~curcount; while(P3_7==0); } } } }

15

P3=FFH,P3.0=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 P3=FFH,P3.1=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 P3=FFH,P3.2=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 P3=FFH,P3.3=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 16


C语言100题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年小学一年级数学下册应用题精选15

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: