单片机实验题

合集下载

单片机实验考核题目

单片机实验考核题目

单片机实验考核题目
一、10秒倒计时:使用单片机驱动一个数码管显示数字,一秒钟左右往下减一,减到0时,停止。

二、计数器:使用两个按键K1、K2,按K1时,数值加1,按K2时,数值减1,当数值大于9时从零开始计数,小于0时保持0不变。

三、定时器:使用定时定时,从单片机的P2^0端口输出周期为60ms,占空比为50%的方波,晶振频率为12M\。

四、外部中断:要求分别将两个按键K1、K2分别接入到外部中断0和外部中断1,当按下K1的时候,在外部中断函数中控制4个发光二极管点亮,按下K2时,在外部中断函数中控制8个发光二极管点亮,没有按键按下时,熄灭所有发光二极管。

五、串口通信:配置串口工作,要求由单片机向电脑发送自己本人姓名拼音的首字母,并在电脑中显示出来。

说明:以上实验,均在电脑上进行仿真完成。

单片机课程设计题目及答案

单片机课程设计题目及答案

题目1 智能电子钟(LCD 显示)题目2 电子时钟(LCD 显示)题目3 秒表题目4 定时闹钟题目5 音乐倒数计数器题目6 基于数字温度传感器的数字温度计题目7 基于热敏电阻的数字温度计题目8 十字路口交通灯控制题目9 波形发生器设计题目10 电容、电阻参数单片机测试系统的设计题目11 数字频率计题目12 8位竞赛抢答器的设计题目13 单词记忆测试器程序设计题目14 数字电压表设计题目15 可编程作息时间控制器设计题目16 节日彩灯控制器的设计题目17 双机之间的串行通信设计题目18 电子琴设计题目19 数字音乐盒的设计题目20 单片机控制步进电机题目21 单片机控制直流电动机题目1 智能电子钟(LCD 显示) 1. 设计要求 以AT89C51单片机为核心,制作一个LCD 显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。

(2) 闰年自动判别。

(3) 五路定时输出,可任意关断(最大可到16路)。

(4) 时间、月、日交替显示。

(5) 自定任意时刻自动开/关屏。

(6) 计时精度:误差≤1秒/月(具有微调设置) (7) 键盘采用动态扫描方式查询。

所有的查询、设置功能均由功能键K1、K2完成。

2. 工作原理 本设计采用市场上流行的时钟芯片DS1302进行制作。

DS1302是DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM ,可以通过串行接口与计算机进行通信,使得管脚数量减少。

实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力。

DS1302时钟芯片的主要功能特性:(1) 能计算2100年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可自动调整;时钟可设置为24或12小时格式。

(2) 31B 的8位暂存数据存储RAM 。

(3) 串行I/O 口方式使得引脚数量最少。

(4) DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需3根线。

单片机实验考核题目及答案

单片机实验考核题目及答案
单片机实验操作考核题目与要求2
KeiL系统基本操作
系统基本操作;工程建立;参数设置;程序编辑与调试
1、延时函数设计
2、定时器T0的应用:方式1产生500ms的方波来驱动LED闪烁
----------------------------------------------------------------------------------------------------------------------
单片机实验操作考核题目与要求1
KeiL系统基本操作
系统基本操作;工程建立;参数设置;程序编辑与调试
1、延时函数设计
2、定时器T0的应用:方式0产生500ms的方波来驱动LED闪烁
----------------------------------------------------------------------------------------------------------------------
#include<reg52.h> //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit P1_0=P1^0;
uchar tt,a;
单片机实验操作考核题目与要求16
KeiL系统基本操作
系统基本操作;工程建立;参数设置;程序编辑与调试
流水灯控制实验
1、定时器T0来控制时间快慢(500ms)
2、数组实现
----------------------------------------------------------------------------------------------------------------------

(单片机)

(单片机)

实验四一、实验题目:当K1键按下后,首先使蜂鸣器响一声,然后使LED1-LED8完成3种闪亮的花样(自己定义),每一种花样循环3次,然后周而复始。

二、keil代码:/*当K1键按下后,首先使蜂鸣器响一声,然后使LED1- LED8完成3种闪亮的花样(自己定义),每一种花样循环3次,然后周而复始。

*/#include<reg51.h>sbit P2_0=P2^0;//接蜂鸣器sbit P2_7=P2^7;sbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;void DELAY(int time)//延时{while(time--){}}void BUZ_ON(){if(P2_7==0){P2_0=1;}else{ P2_0=0;}}void F1(void){int i;char data_group_mide[5]={0x00,0x18,0x24,0x42,0x81};//向两边延伸for(i=0;i<5;i++){P1=data_group_mide[i];DELAY(20000);}P1=0x00;}void F2(void){int i;char data_group_left[8]={0xFF,0x7F,0x3F,0x0F,0x07,0x03,0x01,0x00};//向左延伸for(i=0;i<8;i++){P1=data_group_left[i];DELAY(20000);P1=0x00;}void F3(void){int i;char date_group_right[8]={0x00,0x01,0x03,0x07,0x0f,0x3f,0x7f,0xff};//向右延伸for(i=0;i<8;i++){P1=date_group_right[i];DELAY(20000);}P1=0x00;}void main(){unsigned int i; //每种花样循环三次P2_0=0;P2_7=1;BUZ_ON();P1=0x00;while(P2_7==0){for(i=0;i<3;i++)//花样1 {F1();}for(i=0;i<3;i++)//花样2 {F2();}for(i=0;i<3;i++)//花样3 {F3();}}}三、protues电路图:四、实验截图:五、实验小结:通过本次实验,我们熟悉了protues的编译环境,对以后的单片机学习有很大帮助。

单片机试题(附答案)

单片机试题(附答案)

单片机试题(附答案)一、单选题(共107题,每题1分,共107分)1.8051单片机的P0口可以驱动()个LSTTL负载。

A、4B、16C、8D、2正确答案:C2.在51系列单片机应用系统中启动ADC0809进行A/D转换时,使用()指令。

A、MOVXB、(B)MOVXC、MOVD、MOVE、A,@A+DPTR正确答案:A3.8051单片机的P0口做为输出口在驱动NMOS负载时必须接()。

A、下拉电阻B、上拉电阻C、地D、电源正确答案:B4.8051单片机的工作频率为6MHz,其内部定时器的最大定时时间是()。

A、8192μSB、131072μSC、256μSD、65536μS正确答案:B5.MCS-51单片机复位后程序计数器PC=()。

A、0FFFFB、2000C、0100D、0000H正确答案:D6.对于MCS-51单片机来说,上电复位所需的最短时间是振荡周期建立时间加上()个机器周期时间。

A、1B、2C、4D、8正确答案:B7.对于MCS-51单片机来说,上电复位所需的最短时间是振荡周期建立时间加上()个机器周期时间。

A、2B、4C、8D、16正确答案:A8.累加器A的内容是0ADH,执行RLA指令后累加器的内容变为()。

A、56B、5AC、(C)5BD、不确定正确答案:C9.堆栈指针的英文缩写是()。

A、STB、SPC、SD、S正确答案:B10.累加器A的内容是89H,执行RLA指令后累加器的内容变为()。

A、10B、11C、12D、13H正确答案:D11.下列芯片中属于单片机的芯片是()。

A、Z80B、8086C、80586D、M68HC08正确答案:D12.对于8751单片机,当其引脚EA接低电平时,可扩展的外部程序存储器最大为()k字节。

A、64B、60C、32D、16正确答案:A13.LJMP跳转空间最大可达到()。

A、2KB、(B)256C、(C)128D、64KB正确答案:D14.对于MCS-51单片机来说,上电复位所需的最短时间是振荡周期建立时间加上()个机器周期时间。

单片机实验题目及答案

单片机实验题目及答案

1234,要求用按键修改数码管上的值一个按键作位选键、一个作加1键。

0000,要求实现电子钟功能,只显示分秒,按键用来校正电子钟的时间,一个按键作位选键、一个作加1键。

3、如下图所示,数码管初始显示12345678,要求用按键修改数码管上的值一个按键作位
选键、一个作加1键。

4、如下图所示,甲乙两单片机,在甲单片机上有两按键,在乙单片机上有4只数码管,初始显示1234,要求用甲单片机的按键修改乙单片机上数码管的值一个按键作位选键、一个作加1键。

5、如下图所示,在P3.4脚上外接一信号发生器,产生频率为1K的信号,用单片机测出此信号源的频率,并将频率值用16进制的方式显示在4位数码管上。

单片机原理试卷及答案18套.docx

单片机原理试卷及答案18套.docx

单片机模拟试卷001一、选择题(每题1分,共10分)1.8031单片机的()口的引脚,还具有外中断、串行通信等第二功能。

a) P0 b) Pl c) P2 d) P32.单片机应用程序一般存放在()a) RAM b) ROM c)寄存器d) CPU3.已知某数的BCD码为0111 0101 0100 0010则其表示的十进制数值为()a) 7542H b) 7542 c) 75.42H d) 75.424.下列指令中不影响标志位CY的指令有()。

a) ADD A, 20H b) CLR c) RRC A d) INC A5.CPU主要的组成部部分为()a)运算器、控制器b)加法器、寄存器c)运算器、寄存器d)运算器、指令译码器6.INTEL 8051 CPU是()位的单片机a) 16 b) 4 c) 8 d)准167.8031复位后,PC与SP的值为()a ) 0000H, OOH b) 0000H, 07H c) 0003H, 07H d) 0800H, OOH&当需要从MCS-51单片机程序存储器取数据时,采用的指令为()。

a) MOV A, @R1 b) MOVC A, @A + DPTRc) MOVX A, @ R0 d) MOVX A, @ DPTR9.8031单片机中既可位寻址又可字节寻址的单元是()a) 20H b) 30H c) 00H d) 70H10.下列哪条指令是正确的()a) PUSH R2b)ADD R0,Ac) MOVX A@DPTR d)MOV@R0,A二、填空题(每空1分, 共30分)1.一个完整的微机系统由和两大部分组成。

2. 8051的引脚RST是(IN脚还是OUT当其端出现电平时,8051进入复位状脚),态。

8051 —直维持这个值,直到RST脚收到—电平,8051才脱离复位状态,进入程序运行状态,从ROM _________ H单元开始取指令并翻译和执行。

单片机实验

单片机实验

单片机实验第二次实验:图见实验题1.P1.0~P1.7这八个发光二极管全部点亮#include#define uchar unsigned char#define uint unsigned intsbit greenLed=P1^0;Delay(uint cnt){ uchar i;do{for(i=0;i<165;i++);}while(cnt--);}main(){ while(1){ greenLed=0;Delay(1000);greenLed=1;Delay(1000);}}2. P1.0~P1.7这八个发光二极管循环点亮#include delay(unsigned char cnt){ unsigned int i;do{for(i=0;i<6000;i++);}while(cnt--);}main(){ unsigned char a;P1=~a;while(1){if(a!=0){ delay(5);a<<=1;P1=~a;}else{a=0x01;P1=~a;}}}3.通过外部中断控制八盏灯分别右移,左移,闪烁,双灯同时左移。

#include#define uchar unsigned charuchar code LedTable[]= {0x03,0x0c,0x30,0xc0};uchar led_flag = 4;uchar a; Delay(uchar cnt){ unsigned int i;do{ for(i=0;i<6000;i++);}while(cnt--);}void Led_rr(void)//led右移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x80;P1 = ~a;a >>= 1;}}void Led_rl(void)//led左移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x01;P1 = ~a;a <<= 1;Delay(10);}}void Led_spark(void){ P1 = 0xff;Delay(10);P1 = 0;Delay(10);}void Led_lr_doble(){ uchar i;for (i=0;i<4;i++){ P1= ~LedTable[i];Delay(10);}}void int1(void) interrupt 2 //中断服务函数{ led_flag++;if(led_flag >= 3) led_flag = 0;}void main(void){ EA = 1;EX1 = 1;IT1 = 1;while(1){ if(led_flag ==4){ Led_spark();}if(led_flag == 0){ Led_rl();}if(led_flag == 1){ Led_rr();}if(led_flag == 2){ Led_lr_doble();}}第三次实验:1.设单片机的=12MHz,要求用定时器/计数器T0以方式1在P1.0脚上输出周期为4ms的方波。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四个二极管轮流亮#include <reg51.h>#define uchar unsigned charuchar tab[ ]={0x01,0x02,0x04,0x08}; void delay() { uchar ij;for(i=0; i<255; i++)for(j=0; j<255; j++);}void main(){ uchar i;while (1){ for(i=0;i<4; i++){ Pl=tab[i];delay();}}}点亮一只发光二极管#include <reg51.h>#define uchar unsigned charvoid main (void){Pl=0x01;}1、点亮8只发光二极管#include <reg51.h>#define uchar unsigned charvoid main (void)Pl=Oxff;K 一只发光二极管闪烁控制#include <reg51.h>#define uchar unsigned charuchar tab[ ]={0x01 z 0x02,0x04,0x0&0x10,0x20,0x40,0x80}; void delay(){ uchar ij;for(i=0; i<255; i++)for(j=0; j<255; j++);}void main(){ uchar i;while (1){ for(i=0;i<8; i++){ Pl=tab[i];delay();}}}让8只发光二极管朝相反的方向轮流点亮#include <reg51.h>#define uchar unsigned charuchar tab[ ]={ 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; void delay(){ uchar ij;for(i=0; i<255; i++)for(j=0; j<255; j++);}void main(){ uchar i;while (1){ for(i=0;i<8; i++){ Pl=tab[i];delay();让8只发光二极管从两边开始轮流点亮#include <reg51.h>#define uchar unsigned charuchar tab[ ]={ 0x81,0x42,0x24,0x18};void delay(){ uchar ij;for(i=0; i<255; i++)for(j=0; j<255; j++);}void main(){ uchar i;while (1){ for(i=0;i<4; i++){ Pl=tab[i]; delay();}}}让8只发光二极管从中间开始向两边轮流点亮#include <reg51.h>#define uchar unsigned charuchar tab[ ]={ 0x18,0x24,0x42,0x81};void delay(){ uchar ij;for(i=0; i<255; i++)for(j=0; j<255; j++);}void main(){ uchar i;while (1){ for(i=0;i<4; i++){ Pl=tab[i];delay();}}}使用单片机的P2 口, P2 口的高半字节接发光二极管,低半字节接开关,编程实现开关对灯的控制(开关按下灯亮,放开灯灭)。

#in clude<reg51.h>#define uchar unsigned char void delay()uchar i z j; for(i=0;i<255;i++) for(j=0;j<255;j++);}void main(){while(l){unsigned char temp; P2=0XFF;temp=P2&OXOF; temp=temp«4; P2=~temp;delay();»检测4个开关S1~S4的状态,只需识别出单个开关闭合(按下)的状态。

例如仅开关S1合上时,数码管显示“1” ;仅开关S2合上时,数码管显示“2” ;仅开关S3合上时,数码管显示“3” ;仅开关S4合上时,数码管显示“4” ;当没有开关合上,或合上的开关多于1个时,数码管均显示"0力o#include<reg51.h>#define uchar unsigned charvoid main(){uchar state;doP1=OXFF;state=Pl; state=state&OXOF;switch(~state)case 0XF0:P2=0XC0;break;case 0XFl:P2=0XF9;break; case 0XF2:P2=0XA4;break;case 0XF4:P2=0XB0;break;case 0XF8:P2=0X99;break; default:P2=0XC0;break;}}while(l);(1)显示一个H;#in clude<reg51.h>void main(){P2=0x76;Pl=0xfe;}(1)单个数码管循环显示o, 2, 4, 6, 8;#in clude<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code dis[]={0x3f/0x5b,0x66/0x7d/0x7f};void delay(uint t){uchar i;while(t-) for(i=0;i<200;i++);void main(){ uchar i;Pl=0xfe;while(l){ for(i=0;i<5;i++){P2=dis[i]; delay(900);}}}在数码管上显示你的8位学号;# include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar code dis[]={0x06/0x07/0x06/0x3t0x7d/0x06/0x7d z0x07};void delay(uint t){uchar i;while(t-)for(i=0;i<255;i++);}void main(){uchar ij=0x01;while(l){for(i=0;i<8;i++){Pl=~j;P2=dis[i];j=_crol_(j,l);delay(l);}}}在其中两个数码管上实现从0—99循环显示。

#in clude<reg51.h># include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar code dis[]={0xc0,0xf9,0xa4/0xb0,0x99/0x92/0x82/0xf8/0x80/0x90,};void delay(uint t)uchar i; while(t-)for(i=0;i<255;i++);void main(){uchar ij;while(l){for(j=0;j<10;j++){ for(i=0;i<10;i++)Pl=dis[i];PO=dis[j]; delay(200);}}}}动态显示#in clude<reg51.h>#define uchar unsigned char#define uint unsigned intsbit P1_O=P"O;sbit P1_1=P1A1;uchar code tab[]={0x3f/0x06/0x5b,0x4f/0x66,0x6d/0x7d/0x07/0x7t0x6f};void delay(uint t){uchar j;uint i;for(i=0;i<t;i++)for(j=0;j<102;j++);}while(l)void main()uint j;for(j=0;j<100;j++){ P1_O=1;P1_1=O;P2=tab[j%10];delay(200);P1-O=O;P1-1=1;P2=tab[j/10];delay(200);}}}中断插入低四位高四位轮流跳#in clude<reg51.h>#define uchar unsigned charvoid Delay(unsigned int i){unsigned int j;for(;i>0;i-)for(j=0;j<333;j++){;}}void main(){EA=1;EXO=1;ITO=1;while(l){Pl=Oxff;}}void int0() interrupt 0 using 1{uchar m;EXO=O;for(m=0;m<5;m++){Pl=OxOf;Delay(400);Pl=OxfO;Delay(400);}void displayl(uchar weil,uchar shu)EXO=1;}计数器脉冲10次 二极管变化#in clude<reg51.h>sbit P2_0=P2A 0;void main(){TMOD=0x50;TH 1=(65536-10)/256;TLl=(65536-10)%256;EA=1;ET1=1;TR1=1;P2=0xff;while(l);}void a() interrupt 3{THl=(65536-10)/256;TLl=(65536-10)%256;P2少! P2_0;}60s 倒计时#in clude<reg51.h>#define guan P0#define wei P2#define uchar unsigned char#define uint unsigned intuint m=0;ucharjk,s=60;sbit beep=P2A 3;unsigned char code weiyu[]={0xlf,0x2f,0x4f,0x8f}; unsigned char code table[]={0x3t0x06/0x5b /0x4f /0x66,0x6d /0x7d / 0x07,0x7f /0x6f0x77,0x7cX )x39/0x5e ,0x79,0x71}; void delay(unsigned char xms){for(j=xms;j>0;j-)for(k=125;k>0;k-);} wei=0xff;PO=table[shu];wei=wei&weiyu[weil]; delay(5); }void display(uchar a,uchar b){displayl(2,a);display]⑶ b);}void main(){TMOD=0x01;ETO=1;TRO=1;EA=1;while(l){if(m==20){m=0;s-S}al=s/10;a0=s%10;display®,aO);if(s==O){TRO=O;beep=0;}}}void TO_TIMER () interrupt 1 { TH0=(65536-46080)/256;TL0=(65536-46080)%256; m++; }。

相关文档
最新文档