C51大作业

合集下载

大作业题目

大作业题目

1、MCS-51单片机指令系统特点,keil C51语言的使用心得?
要求:1)、对MCS-51单片机指令系统进行全面阐述;
2)、详细介绍keil C51语言的使用心得,给出具体应用设计实例。

2、8031应用系统中需要扩展外部SRAM 2KB、EPROM 8KB、一个单通道8-bits A/D电路、一个单通道12-bits D/A电路,另外要求系统具备8位LED显示电路和4×4 KEY键盘电路。

试进行系统电路设计。

要求:1)、详细论述MCS-51单片机接口设计中的设备片选、地址重叠与断续等问题,采用全地址译码方式对外部设备进地址行标定;
2)、应用Protel 99se电子设计软件画出系统原理图电路,给定电路参数。

3、某包装生产线系统采用光电或电磁测量电路对工件计数并装箱。

每计量1个工件获得1个脉冲信号,每X个工件系统发出1个脉冲信号控制包装机构装箱。

系统应能够实现6位LED实时显示已累计生产工件数M和箱数N,系统还需具备1个4按键简易键盘,可对X值进行初始设定。

试进行系统设计。

要求:1)、系统原理电路设计;
2)、系统程序设计。

C51作业

C51作业

绵阳职业技术学院课后作业班级:电气102班学号:201002350科目:自动接口技术姓名:张周1、简述Sfr、sbit数据及reg51.h头文件定义?答:1、特殊功能寄存器须通过sfr或sfr16类型说明符进行定义,sfr是一个C51扩展的数据类型,定义时须指明它们所对应的片内RAM单元的地址,且它是对单片机中单字节定义。

格式如下:sfr或sfr16 特殊功能寄存器名=地址;2、sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时须指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。

格式如下:sbit 位变量名=位地址;3、reg51.h头文件定义:C51编程访问特殊功能寄存器之前,必须先进行定义。

为了用户处理方便,C51编译器把MCS-51单片机的常用的特殊功能寄存器和特殊位进行了定义,放在一个“reg51.h”或“reg52.h”的头文件中。

只需要在使用前用一条#include<reg51.h>包含在程序中。

2、简述While、if、for编程方法及执行过程?答:While(表达式){语句;} /*循环体*/While语句后面的表达式是能否循环的条件,主要判断表达式的真假,为真时,就重复执行循环体内的语句,为假时,就中止While 语句循环执行下一语句。

if(表达式) {语句;}若条件表达式的结果为真(非0),就执行后面的语句;若结果为假,就不执行后面的语句。

for(表达式1;表达式2;表达式3){语句;} /*循环体*/1、先求解表达式1的值;2、在求解表达式2的值,如表达式2的值为真,则执行循环体的语句,然后执行下一步3操作,如表达式2为假,则结束for循环,转到4步;3、如表达式2为真,则执行完循环体中的语句,即求解表达式3,然后再转向2;4、退出for循环,执行下面的语句。

3、简述出函数编写及库函数的使用?答:函数编写的使用包括函数定义、函数声明和函数调用等。

单片机c51考试题库及答案

单片机c51考试题库及答案

单片机c51考试题库及答案一、单选题1. 8051单片机的内部RAM共有()字节。

A. 256B. 128C. 512D. 1024答案:A2. 8051单片机的外部中断有()个。

A. 2B. 3C. 4D. 5答案:A3. 8051单片机的定时器/计数器有()个。

A. 1B. 2C. 3D. 4答案:B4. 8051单片机的串行通信口是()。

A. 串行口0B. 串行口1C. 串行口2D. 串行口3答案:A5. 8051单片机的程序存储器最大容量是()。

A. 64KBB. 128KBC. 256KBD. 512KB答案:A二、多选题1. 8051单片机的下列哪些寄存器是16位的?()A. DPTRB. PCC. SPD. B答案:A, B2. 8051单片机的下列哪些中断源是可屏蔽的?()A. 外部中断0B. 外部中断1C. 定时器0中断D. 定时器1中断答案:A, B, C, D3. 8051单片机的下列哪些指令是无条件转移指令?()A. SJMPB. AJMPC. LJMPD. RET答案:A, B, C三、判断题1. 8051单片机的外部中断0的中断向量地址是0003H。

()2. 8051单片机的定时器0和定时器1都是16位的。

()答案:×3. 8051单片机的串行通信口是全双工的。

()答案:√四、填空题1. 8051单片机的内部RAM分为______区和______区。

答案:工作寄存器区、位寻址区2. 8051单片机的外部中断0和外部中断1的优先级是______。

答案:外部中断0的优先级高于外部中断13. 8051单片机的定时器0和定时器1的计数器都是______位的。

4. 8051单片机的程序存储器和数据存储器是______的。

答案:分开的五、简答题1. 简述8051单片机的中断系统。

答案:8051单片机的中断系统包括5个中断源,分别是外部中断0、外部中断1、定时器0中断、定时器1中断和串行通信中断。

C51单片机试题及参考答案

C51单片机试题及参考答案

C51单片机习题及答案第一章1-1选择1.计算机中最常用的字符信息编码是( A )A ASCIIB BCD码C 余3码D 循环码2.要MCS-51系统中,若晶振频率屡8MHz,一个机器周期等于(A ) μsA 1.5B 3C 1D 0.53.MCS-51的时钟最高频率是( A ).A 12MHzB 6 MHzC 8 MHzD 10 MHz4.以下不是构成的控制器部件(D ):A 程序计数器、B指令寄存器、C指令译码器、D存储器5.以下不是构成单片机的部件(D )A 微处理器(CPU)、B存储器C接口适配器(I\O接口电路) D 打印机6.下列不是单片机总线是(D )A 地址总线B 控制总线C 数据总线D 输出总线7.-49D的二进制补码为.( B )A 11101111B 11101101C 0001000D 111011008.十进制29的二进制表示为原码(C )A 11100010B 10101111C 00011101D 000011119. 十进制0.625转换成二进制数是( A )A 0.101B 0.111C 0.110D 0.10010 选出不是计算机中常作的码制是( D )A 原码B 反码C补码 D ASCII1-2填空1.计算机中常作的码制有原码、反码和补码2.十进制29的二进制表示为000111013.十进制数-29的8位补码表示为.111000114.单片微型机CPU、存储器和I\O接口三部分组成.5.若不使用MCS-51片内存器引脚EA必须接地.6.输入输出设备是计算机与外部世界交换信息的载体.7.十进制数-47用8位二进制补码表示为.110100018.-49D的二进制补码为.111011019.计算机中最常用的字符信息编码是ASCII10.计算机中的数称为机器数,它的实际值叫真值。

1-3判断1.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称。

(√)2.MCS-51上电复位时,SBUF=00H。

单片机大作业

单片机大作业

单片机原理及接口技术大作业一、流水灯实例流水灯实例使用51单片机控制8个LED轮流点亮,常常用于指示单片机系统的工作进程,或者用于构造特殊效果。

例如,用红、绿、黄不种颜色来制造舞台效果等。

1.1电路图1.2器件列表1.3源程序#include<AT89X52.h>main(){unsigned char i,j;unsigned char LED;LED=0x01;P1=~LED;while(1){for(i=0;i<250;i++){for(j=0;j<250;j++);}if(LED==0x80){LED=0x01;}else{LED=LED<<1;}P1=~LED;}}1.4程序说明51单片机使用两个嵌套的for循环语句来进行软件延时,当延时完成之后使用“<<”移位语句将当前输出高电平的P1端口引脚向高位移动一位,由于“<<”语句不带进位功能(即到达最高位之后不会自动循环到最低位,所以需要用一个判断语句将点亮端口位移动到最低位。

1.5编译截图1.6运行截图二、流水数字实例流水数字是一个51单片机使用I/O引脚驱动单位8段数码管的实例,数码管轮流地循环显示“0”—“F"数字或者字符,通常用于在单片机系统中显示一些数字或者字符。

2.1电路图#include<AT89X51.h>Unsigned char codeSEGtable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88 ,0x83,0xc6,0xa1,0x86,0x8e};main(){unsigned char i,j;unsigned char counter=0;while(1){for(i=0;i<250;i++){for(j=0;j<250;j++);for(j=0;j<250;j++);}if(counter>=15){counter=0;}else{counter++;}P1=SEGtable[counter];}}2.4程序说明51单片机使用两个嵌套的for循环来进行软件延时,然后通过P1引脚将对应字符的字形编码送出供数码管显示,代码中使用一个存放在code存储器的数组SEG table来存放字形编码,用一个counter计数器来指示当前应该输出的数字或者字符的字形编码在表格中的位置。

C51单片机实战100例

C51单片机实战100例

C51单片机实战100例C51单片机作为最常用的单片机芯片之一,具有性能稳定、资源丰富、易于学习和开发等优势。

本文将介绍C51单片机实战100例,旨在帮助读者更好地理解和应用C51单片机。

第一例:LED灯闪烁首先,我们以最简单的LED灯闪烁为例,来体验一下C51单片机的编程过程。

首先我们需要准备一个开发板、几个电阻和电源。

然后,根据单片机的引脚图,将LED灯连接好。

接下来,我们需要编写简单的C语言程序来控制LED灯的闪烁。

例如,我们可以使用内置的延时函数来调整灯亮的时间,实现闪烁效果。

经过编译和下载,我们就可以看到LED灯以一定的频率闪烁,一闪一闪的。

第二例:数码管显示除了控制LED灯闪烁外,C51单片机还可以用来控制各种数码管显示。

例如,我们可以编写程序实现数字的倒计时功能。

在倒计时过程中,我们可以通过数码管的显示,直观地观察到时间的变化。

在编写程序时,我们需要根据数码管的接口电路来控制引脚的输出,并使用定时器中断来实现秒数的递减。

通过不断循环调用显示函数,我们可以将倒计时的数字显示在数码管上,并实时更新。

第三例:温湿度检测C51单片机还可以用来进行温湿度的检测。

我们可以连接温湿度传感器到单片机的引脚上,并编写相应的程序来读取传感器的数据。

在编写程序时,我们可以使用串口通信来与PC机进行数据的交互。

通过串口发送指令,单片机可以将温湿度的数据发送回PC机进行实时显示。

这样,我们就可以通过C51单片机来实现温湿度的实时监测功能。

......通过以上几个实例,可以清楚地看到C51单片机的强大功能和灵活性。

C51单片机实战100例可以涵盖更多的应用场景,如蜂鸣器控制、电机驱动、红外遥控等。

读者可以根据自己的需求和兴趣选择相应的实例进行学习和实践。

结语总而言之,C51单片机作为一种常见且广泛使用的单片机芯片,具有强大的功能和灵活性。

通过实战100例的学习和实践,读者可以更加深入地理解和掌握C51单片机的编程方法和应用技巧。

C51单片机试卷 5套.

C51单片机试卷 5套.

试卷1一、填空题(每小题1分,共30分)1、8031的 P2 口为高8位地址总线口, P3 口为双功能口。

2、单片机的复位操作是__________引脚,要在此引脚加________电平才能复位动作。

3、C51定义可寻址位,使用关键字为____ ,定义特殊功能寄存器当中的某位用关键字____________ 。

4、已知P3=0X7F,要实现将P3口的值循环右移的指令是____ ,循环右移3次后,P3=___________ 。

5、有指令unsigned char mm[]={0X01,0X02,0X03},此指令中数组元素mm[1]的值为________ 。

6、串口工作方式2接收的第9位数据放到了_____ 寄存器的______位中。

7、若采用6MHz的晶体振荡器,则MCS-51单片机的振荡周期为________,机器周期为____________。

8、单片机并行接口中,要作为输出口必须外接上拉电阻的端口是______,其原因在于输出级是________开路电路。

9、由AT89C51构成的单片机最简系统中,只给单片机提供VCC 和GND单片机是不会工作的,必须提供的__________、___________和________辅助形成一个最简系统。

10、若只需要开串行口中断,则其对应的源中断允许控制位是__________,若需要将外部中断0设置为下降沿触发,则执行的语句为_____________。

11、C51中 0x75 | 0x42 运算结果是_________ 。

12、-25的原码是___________、反码是___________、补码是_________。

13、对于51子系列单片机,主要有________、___________、_________三种机型。

14、修饰符interrupt m中m的取值为0对应的中断情况是__________中断。

15、TCON中IT0(IT1)表示__________。

基于C51单片机的数字可调时钟

基于C51单片机的数字可调时钟

河南机电高等专科学校《C51程序设计》大作业设计题目:数字可调时钟班级:通技091学号:090413128姓名:成绩:2011年11月1 设计任务制作数字可调时钟,要求可以分开调节分、时、年、月、日,能够显示温度。

2电路原理图以下为protel99se画的的原理图3 系统流程图数字可调时钟分以下四个部分构成:显示部分:此次显示采用了动态扫描显示,采用74ls573进行数据锁存。

温度采集:温度采集采用了18b20采集的,18b20转化温度较快,精度高。

时钟:采用普通的ds1302芯片。

数据运算:单片机用普通的8051单片机(12M晶振)。

4 源程序/*******************************数字可调时钟*********************************/ /*******************************by:lhc****************************************/ #include<reg51.h> #define DataPort P0void delayms(unsigned char i); sbit DQ=P1^3; sbit sclk=P1^4;sbit date=P1^5; sbit rst=P1^6;sbit LATCH1=P2^2;//定义锁存使能端口 段锁存 sbit LATCH2=P2^3;// 位锁存unsigned char time[8]={20,11,11,27,11,30,00,7}; //年 月日 时 分 秒 周 unsigned char time1[8],readtemflag;unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char code pingnian[13]={ 0,31,28,31,30,31,30,31,31,30,31,30,31};//平年的月份天数 unsigned char code yunnian[13]= { 0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年的月份天数 unsigned char TempData[8]; //存储显示值的全局变量 void delay(unsigned char i) {while(--i); //us 延时函数}void delayms(unsigned char i) //ms 延时函数 {while(i--) { delay(245); delay(245); } }bit rest(void)//18b20重启函数{ bit k=0; DQ=1; delay(5); DQ=0; delay(150); delay(200); DQ=1; delay(40); k =DQ; delay(25); r eturn(k); }unsigned char read()//18b20读数据函数{ unsigned char i=0; unsigned char dat=0;for(i=0;i<8;i++) {DQ=0; dat>>=1; DQ=1;if(DQ) dat|=0x80; delay(25); }return (dat);}void write(unsigned char dat)//18b20写数据函数{unsigned char i=0; for(i=0;i<8;i++){ DQ = 0; DQ = dat&0x01; delay(25); DQ = 1; dat>>=1;} delay(25);}unsigned int ReadTemperature(void) //读取温度函数{ unsigned char a=0; unsigned int kk=0,b=0;LOOP:if(rest()==0){ write(0xCC); //跳过ROM w rite(0x44); //初始化温度转换delayms(20); rest();TH1=0XFa; TL1=0Xff; write(0xCC); write(0xBE); //读取温度a=read(); b=read(); b<<=8; kk=a+b; return(kk);} else goto LOOP;}void restds1302(void){sclk=0; rst=0; //ds1302重启 }void writebyte(unsigned char addr,unsigned char byte) //写入ds1302一个字节数据{ unsigned char i;rst=1;addr=addr&0xfe;for(i=0;i<8;i++){ date=addr&0x01; sclk=1; sclk=0; addr>>=1;}for(i=0;i<8;i++){ date=byte&0x01; sclk=1; sclk=0; byte>>=1;}rst=0;}unsigned char readbyte(unsigned char addr) //读取一个字节的数据{ unsigned char i,temp;rst=1; addr=addr|0x01;for(i=0;i<8;i++) //读函数{ date=addr&0x01;sclk=1; sclk=0;addr=addr>>1;}for(i=0;i<8;i++){temp=temp>>1;if(date) temp|=0x80;else temp&=0x7f; sclk=1; sclk=0;}rst=0;return temp;}void writetime(void) //调时函数{unsigned char i,tmp;for(i=0;i<8;i++){ //BCD处理tmp=time[i]/10;time1[i]=time[i]%10;time1[i]=time1[i]+tmp*16;}writebyte(0x8e,0x00);//关闭写保护writebyte(0x80,0x80);// 暂停writebyte(0x8c,time1[1]);// 年写入writebyte(0x88,time1[2]);//月写入writebyte(0x86,time1[3]);// 日写入//些时间writebyte(0x84,time1[4]);// 时写入writebyte(0x82,time1[5]);// 分写入writebyte(0x80,time1[6]);// 秒写入writebyte(0x8a,time1[7]);// 周写入//writebyte(0x80,0x00);// 秒写入writebyte(0x8e,0x80);//打开写保护}void readtime(void) //读取时间函数{ unsigned char i,tmp;time1[1]=readbyte(0x8d);// 年读time1[2]=readbyte(0x89);// 月读time1[3]=readbyte(0x87);// 日读// 读时间time1[4]=readbyte(0x85);// 时time1[5]=readbyte(0x83);// 分time1[6]=readbyte(0x81);// 秒time1[7]=readbyte(0x8b);// 周for(i=0;i<8;i++) //BCD处理{ tmp=time1[i]/16;time[i]=time1[i]%16;time[i]=time[i]+tmp*10;}}void Display(unsigned char FirstBit,unsigned char Num) //动态显示函数{ static unsigned char i=0;DataPort=0; //清空数据,防止有交替重影LATCH1=1; //段锁存LATCH1=0;DataPort=WeiMa[i+FirstBit]; //取位码LATCH2=1; //位锁存LATCH2=0;DataPort=TempData[i]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0; i++;if(i==Num) i=0;}unsigned char key(void) //键盘读取函数{ unsigned char i;if(P3!=0xff){ delay(10); if(P3!=0xff){ i=P3; while(P3!=0xff) ;switch(i){case 0xfe:return 1;break;case 0xfd:return 2;break;case 0xfb:return 3;break;default:return 0;break;}}}return 0;}void T1_rest() //定时器1的初始化函数{TMOD|=0X10;TH1=0XF8;TL1=0X30;EA=1 ;ET1= 1;TR1=1;}void isr0(void) interrupt 3{static unsigned char qq;TR1=0; TH1=0XF8; TL1=0X30;Display(0,8); //送去显示qq++;if(qq==200){ qq=0,readtemflag=1; } TR1=1; }void main(){unsigned char bian=0,k=0;unsigned char num=6;unsigned int h,l,tempp,year;bit nianflag; restds1302(); writetime(); T1_rest();while(1){readtime(); year=time[1]*200;if(year%4==0&&year%100!=0||year%400==0) nianflag=1;else nianflag=0; k=key();if(k!=0){ if(k==1){ bian++;num=6; k=0; }//调节显示的内容if(bian==3) bian=0;if(k==2){ num--;if(num<4) bian=1;if(num>3) bian=0; //选着调节对象分,时,年月日if(num==0) num=6; k=0;}if(k==4&&num!=6) //调节对象(分时年月日)加一{ time[num]++;if(num==5&&time[num]==60) time[num]=0;if(num==4&&time[num]==24) time[num]=0;if(num==3&&nianflag){if(time[3]>yunnian[time[2]]) time[3]=1;}else if(num==3){ if(time[3]>pingnian[time[2]])time[3]=1;}if(num==2&&time[num]==13) time[num]=1;if(num==1&&time[num]==99) time[num]=0; k=0;}if(k==3&&num!=6) //调节对象(分时年月日)减一{ time[num]--;if(time[num]==-1&&num==5) time[num]=59;if(time[num]==-1&&num==4) time[num]=23;if(num==3&&nianflag){ if(time[3]==0) time[3]=yunnian[time[2]]; }else if(num==3){ if(time[3]==0) time[3]=pingnian[time[2]]; }if(time[num]==0&&num==2) time[num]=12;if(time[num]==-1&&num==1) time[num]=99; k=0;}if(nianflag){ if(time[3]>yunnian[time[2]]) time[3]=1;}else { if(time[3]>pingnian[time[2]]) time[3]=1; }writetime();}if(bian==0) //对时,分,秒,显示数据分离处理{TempData[0]=DuanMa[time[4]/10];TempData[1]=DuanMa[time[4]%10];TempData[2]=0x40; //加入"-"TempData[3]=DuanMa[time[5]/10];//分TempData[4]=DuanMa[time[5]%10];TempData[5]=0x40;TempData[6]=DuanMa[time[6]/10];//秒TempData[7]=DuanMa[time[6]%10];if(num!=6){ delayms(30);if(num==4){ TempData[0]=0; TempData[1]=0; delayms(30); }if(num==5){ TempData[3]=0; TempData[4]=0; delayms(30); }}}else if(bian==1) //对年月日的显示数据分离处理{ TempData[0]=DuanMa[time[1]/10]; TempData[1]=DuanMa[time[1]%10];TempData[2]=0x40;//加入"-"TempData[3]=DuanMa[time[2]/10];//月TempData[4]=DuanMa[time[2]%10];TempData[5]=0x40;TempData[6]=DuanMa[time[3]/10];//日TempData[7]=DuanMa[time[3]%10];if(num!=6){ delayms(30);if(num==1){ TempData[0]=0;TempData[1]=0;delayms(30); }if(num==2){ TempData[3]=0;TempData[4]=0;delayms(30); }if(num==3){ TempData[6]=0;TempData[7]=0;delayms(30); }}}else if(bian==2) //对温度和星期的显示数据分离处理{if( readtemflag==1){ tempp=ReadTemperature();readtemflag=0;}if(tempp&0x8000){ TempData[0]=0x40;//负号标志tempp=~tempp; tempp +=1;}elseTempData[0]=0;h=tempp>>4; l=tempp&0x0F; l=l*6/10;//小数近TempData[1]=DuanMa[(h%100)/10]; //十位温度TempData[2]=DuanMa[(h%100)%10]|0x80; //个位温度,带小数点TempData[3]=DuanMa[l];TempData[4]=0x39; TempData[5]=0;TempData[6]=DuanMa[time[7]/10];TempData[7]=DuanMa[time[7]%10];}}}参考文献【1】Brian W.Kernighan,Dennis M.Ritchie.C.程序设计语言.机械工业出版社,机械工业出版社,2004.1.【2】祁伟,杨婷.单片机C51程序设计教程与实验,北京航空航天大学出版社,2006.1. 【3】梅丽凤,郝万新.单片机原理及应用,清华大学出版社,2009.7.【4】18B20数据手册.【5】DS1302数据手册.。

C51大作业模版 (1)

C51大作业模版 (1)

课题名称学院名称:专 业:班 级:学 号:姓 名:二〇一四 年 十二 月JIANGSU UNIVERSITY OF TECHNOLOGY C 51课程论文激光枪自动射击装置摘要:在军队射击训练和各种体育射击比赛中,示靶、检靶、报靶和成绩的记录统计,是训练和比赛过程中的主要保障工作。

目前,这些保障工作大部分还是依靠人工来完成的。

人工报靶存在工作量大、效率低、安全性差等缺点。

要解决射击比赛或训练中报靶的效率问题,主要是解决自动报靶的问题。

因此,设计制作安全有效的自动报靶系统具有重要的现实意义。

本系统由控制部分和信号采集部分组成,采用TI超低功耗单片机MSP430F5438作为控制核心,其中控制部分由两个舵机构成,分别控制X、Y方向;信号采集部分通过OV7670摄像头捕捉靶环信息,将采集的信息传输给单片机处理后通过彩屏显示出来。

关键词:MSP430单片机;舵机;摄像头;彩屏Automatical Shooting Device of Laser GunAbstract:In military shooting training and various sports shooting, show target, target detecting, target and recording statistics that achievement, is a major security during the process of training and competition work. Currently, the majority still rely on manual security work done. Artificial target has the characteristics of big workload, low efficiency, poor security. To improve the efficiency of shooting competition or training interim target, mainly to resolve the problem of automatic target. Therefore, the design of safe and effective automatic target system has important practical significance.The system consists of the control section and the signal acquisition components, using TI MSP430F5438 ultra-low power microcontroller as the control core, where in the control section consists of two servos constitute, respectively control X, Y direction; signal acquisition partly through OV7670 camera to capture the target ring information , the collected information to the MCU processed through the color display.Keyword:MSP430 microcontroller;Servo;Camera;Color目录第1章绪论 (3)1.1课题背景及意义 (3)1.2国内外研究现状 (4)1.3本文研究的主要内容 (5)第2章系统设计方案 (7)2.1 系统方案设计 (7)2.2 模块方案论证 (8)2.2.1 控制电路模块方案论证 (8)2.2.2 电机控制方案论证 (8)2.2.3 摄像头方案论证 (9)2.2.4 显示模块方案论证 (9)2.3 硬件系统总体设计 (10)第3章硬件设计 (11)3.1 单片机模块设计 (11)3.2 显示模块设计 (14)3.2.1 彩屏工作原理 (14)3.2.2 彩屏接口电路 (15)3.3 舵机设计 (16)3.3.1 舵机工作原理 (16)3.3.2 舵机接口电路 (16)3.4 摄像头设计 (17)3.4.1 摄像头工作原理 (17)3.4.2 摄像头接口电路 (17)3.5 激光头控制电路 (18)第4章软件设计 (19)4.1 软件介绍 (19)4.2 系统程序流程图 (20)4.3 功能模块程序设计 (21)4.3.1 舵机模块程序设计 (21)4.3.2 按键模块程序设计 (23)4.3.3 彩屏模块驱动程序的设计 (25)参考文献 (28)附录1:硬件原理图 (30)附录2:程序清单 (32)第1章绪论1.1课题背景及意义在军事训练中,实弹射击是最基本的训练项目,在射击的过程中,射手对目标射击的精确命中程度能够反映出射手对武器操控能力的水平,也是作为检验射手是否符合合格军人的标准之一。

c51单片机试题及答案

c51单片机试题及答案

c51单片机试题及答案一、选择题1. C51单片机的内部RAM中,用户可用的RAM空间大小为()。

A. 128BB. 256BC. 512BD. 1KB答案:B2. 下列关于C51单片机中断系统的描述,错误的是()。

A. C51单片机具有5个中断源B. C51单片机的中断向量地址是固定的C. C51单片机的中断优先级是可编程的D. C51单片机的中断服务程序必须放在内部RAM中答案:D3. 在C51单片机中,下列哪个寄存器是用来设置定时器模式的?()A. TCONB. TMODC. IED. IP答案:B二、填空题1. C51单片机的________位地址空间中,包含有程序存储器。

答案:64KB2. 在C51单片机中,使用________指令可以清除定时器的溢出标志。

答案:CLR TF03. C51单片机的外部中断0的中断向量地址是________。

答案:0003H三、简答题1. 简述C51单片机的定时器/计数器的工作原理。

答案:C51单片机的定时器/计数器是一种可编程的定时/计数设备。

它能够根据内部或外部事件来计数,或者在固定的时间间隔内产生中断。

定时器/计数器可以工作在定时模式或计数模式。

在定时模式下,定时器根据内部时钟脉冲的计数来计时;在计数模式下,定时器则根据外部事件的个数来计数。

2. 描述C51单片机的串行通信过程。

答案:C51单片机的串行通信是通过串行接口(SCI)实现的。

通信过程包括设置波特率、配置串行通信模式(如8位数据位、1位起始位、1位停止位等)、发送和接收数据。

发送数据时,数据首先被写入到串行数据寄存器(SBUF),然后通过串行接口发送出去。

接收数据时,数据通过串行接口接收并存储在SBUF中,之后可以通过软件读取。

四、编程题1. 编写一个C51单片机的程序,实现定时器0的初始化,并使其每隔1秒产生一个中断。

答案:```c#include <reg51.h>void Timer0_Init() {TMOD = 0x01; // 设置定时器0为模式1TH0 = (65536 - 50000) / 256; // 设置定时器初值TL0 = (65536 - 50000) % 256;ET0 = 1; // 使能定时器0中断EA = 1; // 开启全局中断TR0 = 1; // 启动定时器0}void Timer0_ISR() interrupt 1 {TH0 = (65536 - 50000) / 256; // 重新加载定时器初值TL0 = (65536 - 50000) % 256;// 此处添加中断服务程序代码}void main() {Timer0_Init();while(1);}```注意:以上程序中50000的值需要根据实际的晶振频率进行计算,以实现1秒的定时。

c51单片机期末考试题目及答案详解

c51单片机期末考试题目及答案详解

c51单片机期末考试题目及答案详解一、选择题(每题2分,共20分)1. 下列哪个不是51单片机的寄存器?A. ACCB. BC. PSWD. SP答案:D2. 51单片机的外部中断0的中断向量地址是:A. 0003HB. 000BHC. 0013HD. 001BH答案:C3. 51单片机的定时器0和定时器1的时钟频率分别是多少?A. 12MHz, 12MHzB. 6MHz, 12MHzC. 12MHz, 6MHzD. 6MHz, 6MHz答案:B4. 51单片机的串行通信可以工作在几种模式下?A. 1种C. 3种D. 4种答案:C5. 51单片机的外部数据存储器最大容量是多少?A. 64KBB. 128KBC. 256KBD. 512KB答案:A6. 51单片机的定时器/计数器在方式1下,定时器的溢出时间是:A. 12个机器周期B. 16个机器周期C. 24个机器周期D. 32个机器周期答案:C7. 51单片机的P0口作为I/O口使用时,需要外接什么?A. 电源B. 地线C. 上拉电阻D. 下拉电阻答案:C8. 51单片机的中断优先级由哪个寄存器决定?B. IPC. TCOND. SP答案:B9. 51单片机的定时器/计数器在方式2下,定时器的溢出时间是:A. 12个机器周期B. 16个机器周期C. 24个机器周期D. 32个机器周期答案:B10. 51单片机的堆栈最大深度是多少?A. 8层B. 16层C. 32层D. 64层答案:B二、简答题(每题10分,共30分)1. 简述51单片机的中断系统的基本工作原理。

答案:51单片机的中断系统由中断请求、中断响应、中断服务程序和中断返回四个基本环节组成。

当外部或内部事件触发中断请求时,单片机会在当前指令执行完毕后响应中断请求,保存当前状态并跳转到相应的中断服务程序地址执行中断服务。

中断服务完成后,通过中断返回指令恢复之前的状态并继续执行被中断的程序。

C51大作业设计

C51大作业设计
设计一个基于单片机的饮水机的稳定控制系统,该系统可以实时监测饮水机水箱的水温,并可以通过数码管显示饮水机水箱的温度。可以通过键盘或开关选择制冷或加热,可以人为的设置温度的上下限。当温度高于设定值是要有示警功能。
2电路原理图
3系统流程图
4源程序
参考文献
基于单片机饮水机温度控制的设计2010年11设计任务设计一个基于单片机的饮水机的稳定控制系统该系统可以实时监测饮水机水箱的水温并可以通过数码管显示饮水机水箱的温度
《C51程序设计》大作业
设计题目:基Leabharlann 单片机饮水机温度控制的设计班级:电信072
学号:070407223
姓名:
成绩:
2010年11月
1设计任务

单片机C51编程21天 习题答案

单片机C51编程21天 习题答案

1.10 习题一、填空题1.最早的单片机是 4 位的。

2.MCS-51系列单片机是Intel 公司最先推出的。

3.单片机就是单片微型计算机(Single-Chip Microcomputer)的简称。

4.51系列单片机的发展方向包括高速、缩短指令执行周期、低功耗、高度集成性和减小封装尺寸。

5.如果某个特殊功能寄存器能被8整除,那么这个特殊功能寄存器便可以进行位寻址。

6.单片机的时钟模式包括片内时钟模式和片外时钟模式两种。

7.单片机片内RAM位寻址区的地址为20H~2FH 。

8.通用寄存器区的地址为00H~1FH ,等分为 4 组通用寄存器,每组均为R0~R7 。

在同一时刻只能有一组通用寄存器参与运算。

在程序中,可以通过PSW 寄存器的RS1和RS2 位来进行设置。

9.当单片机进入省电保持模式时,其内部时钟振荡器停止工作,CPU及其内部所有的功能部件均停止工作。

但是,此时片内RAM和全部的特殊功能寄存器的数据将可以被保存。

10.当单片机进入休眠运行模式时,其内部时钟振荡器仍然运行,但CPU 被冻结将不再工作。

此时,和省电保持模式不同的是,单片机的内部时钟信号仍然供给中断、串行口、定时/计数器等。

二、选择题1.下面哪个不是51系列单片机的组成部分(D )。

A.CPU B.RAMC.并行I/O接口D.无线模块2.增强型单片机主要体现在哪些方面(多选)(ABCD )。

A.高速B.集成更多资源C.低功耗D.缩短指令执行周期3.下面哪个不是单片机的特点( C )。

A.高性价比B.可编程能力C.可弯曲性D.扩展能力强4.典型的8051单片机的结构为(A)。

A.哈佛结构B.普林斯顿结构C.冯·诺伊曼结构D.以上都不是5.8051单片机的一个机器周期由( D )个时钟周期构成。

A.3 B.4C.5 D.66.8051单片机的CPU为( B )。

A.4位B.8位C.32位D.16位7.51系列单片机可以寻址(A)的程序存储空间。

交通灯C51程序设计作业

交通灯C51程序设计作业

C51程序设计课程报告——交通灯学院:电信学院班级: 09电子信息工程本1班学号: 0911******** 姓名:邵宝川摘要交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。

随着车辆的日益增多,交通问题将日趋严重。

可通过多修建道路或限制车辆的办法来解决,但道路的增加是有限的,而限制车辆会使汽车及其相关产业受到压制。

目前,发达国家的交通主要是向智能化交通方向发展。

如给汽车装上导航仪等办法,充分利用电子设备提高现有道路交通系统的运输能力。

交通灯是管理城市交通的重要工具,交通灯对道路交通流的影响近年来引起广大学者的广泛注意。

目前绝大部分交通灯其时间都是设定好的,不管是车流高峰还是低谷,红绿灯的时间都固定不变,还有一些交通灯能根据简单划分的时间段来调整时间,但控制起来都不是很灵活,这使得城市车流的调节不能达到最优。

而我们设计的交通灯充分考虑了在道路繁忙时,各道口车流量不同,和消防车、警车等车辆通过路口时等紧急情况,给予了交通指挥一定的自由度,设计更加人性化。

目录一、设计背景 (3)二、设计原理 (3)三、电路图 (4)(一)逻辑图: (4)(二)交通信号模拟控制系统电路原理图 (5)四、程序流程图 (6)五、编写程序 (7)六、仿真结果图 (15)(一)东西绿灯,南北红灯: (15)(二)东西黄灯,南北红灯 (16)(三)东西红灯,南北绿灯 (17)(四)东西黄灯,南北绿灯 (18)七、调试 (19)八、结论 (19)九、参考文献 (20)(一) 网络参考 (20)(二)书本参考 (20)一、设计背景交通灯是一个城市经济的动脉,它不但体现了一个城市的发展活力,也直接与老百姓的生活息息相关。

所谓“路通财通”就是说明了一个良好的交通环境的重要性。

而交通灯在这个交通环境中起一个重要的角色,智能的交通灯能有效地缓解城市的交通压力,减少交通事故;智能交通灯能为当地人民节省大量的出行时间,创造出更多的社会价值;智能的交通灯为交通顺畅提供了保障,对当地经济起着一个不可估量的作用。

例题(C51)

例题(C51)

例四、采用10MHz晶振,在P1.0脚上输出周期为2.5s,占空比为 20%的脉冲信号。
例五、设P1口的P1.0,P1.1上有两个开关S1和S2,周期开始 它们全关。2s以后S1开,0.1s后S2开,S1保持开2.0s,S2保持 开2.4s,周而复始。采用10MHz晶振。
例六、由8255控制打印机,向打印机输出字符串“WELCOME”。
例题c51c语言例题c语言经典例题100道c语言编程例题c语言经典例题c语言例题100c语言程b40序例题c语言switch语句例题数学归纳法典型例题双代号网络图例题
例一、多中断源的处理
例二、设单片机的fosc=12MHz,要求在P1.0脚上输出周期为2ms 的方波。
ห้องสมุดไป่ตู้
例三、在P1.7端接有一个发光二极管,要求利用定时器控制, 使LED亮一秒、灭一秒,周而复始。

51作业

51作业

1微机基本概念1.1什么是单片机?与通用微机相比,具有哪些特点?1.2在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用?2MCS-51系列单片机概述2.18051单片机片内包含哪些主要组成部分?2.2PC是什么寄存器?有何作用?是否属于SFR?2.3DPTR是什么寄存器?有何作用?是否属于SFR?2.4MCS-51系列单片机有哪几个并行I/O口?各有什么特性?2.5MCS-51系列单片机的时钟周期、机器周期、指令周期是如何分配的?当晶振频率为6MHz时,一个机器周期为多少us?2.6ALE信号有何功用?一般情况下它与机器周期的关系如何?在什么条件下ALE信号可用作外部设备的定时信号?2.7有哪几种方法能使单片机复位?复位后各寄存器和RAM的影响如何?3指令系统和汇编语言程序设计3.1MCS-51系列单片机存储器的组织结构是怎样的?片内数据存储器分为哪几个性质和用途不同的区域?3.2EA/V PP引脚有何功用?8031的EA引脚应如何处理?为什么?3.3MCS-51系列单片机如何确定和改变当前工作寄存器?3.4MCS-51系列单片机指令系统有哪几种寻址方式?举例说明。

3.5访问片内RAM和片外RAM,各应采用哪些寻址方式?3.6MCS-51系列单片机指令系统包含哪几大类指令?各有何用处?3.7请用数据传送指令来实现下列要求的数据传送1)R0的内容传送到R1中2)片内RAM 20H单元的内容传送到A中3)片外RAM 30H单元的内容传送到R0中4)片外RAM 30H单元的内容传送到片内RAM 20H单元中5)片外RAM 1000H单元的内容传送到片内RAM 20H单元中6)ROM 2000H单元的内容传送到R1中7)ROM 2000H单元的内容传送到片内RAM 20H单元中8)ROM 2000H单元的内容传送到片外RAM 30H单元中9)ROM 2000H单元的内容传送到片外RAM 1000H单元中3.8设(A)=0FH,(R0)=30H,片内RAM (30H)=0AH、(31H)=0BH、(32H)=0CH,执行下列程序后各单元内容如何变化?MOV A,@R0MOV @R0,32HMOV 32H,AMOV R0,#31HMOV A,@R03.9设片内RAM (30H)=5AH,(5AH)=40H,(40H)=00H,并口(P1)=7FH,执行下列程序后R0、R1、A、B、P1、片内RAM 40H、30H、5AH单元的内容如何?MOV R0,#30HMOV A,@R01MOV @R0,AMOV @R1,P1MOV A,P1MOV 40H,#20HMOV 30H,40H3.10设(A)=5AH,(R1)=30H,(30H)=E0H,(C)=1。

MCS-51单片机大作业

MCS-51单片机大作业

MCS-51单片机大作业通过学习51单片机资料完成以下作业题:1、简述电子计算机的冯诺依曼结构与哈弗结构,指出两种结构的本质区别。

(1)冯诺依曼结构:冯诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。

如图1所示:图1冯诺依曼结构冯诺依曼结构特点:●采用存储程序方式,指令和数据混合存储在同一个存储器中。

即数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪CPU就加载哪段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断. 指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。

●存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。

●指令由操作码和地址组成。

操作码指明本指令的操作类型,地址码指明操作数和地址。

操作数本身无数据类型的标志,它的数据类型由操作码确定。

●通过执行指令直接发出控制信号控制计算机的操作。

指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。

指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。

●以运算器为中心,I/O设备与存储器间的数据传送都要经过运算器。

●数据以二进制表示。

(2)哈弗结构简述:哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。

哈佛结构是一种并行体系结构。

如图2所示:图2,哈弗结构哈弗结构处理器的主要特点是:●使用两个独立的存储器模块,如图程序存储器和数据存储器,分别存储指令和数据,每个存储模块都不允许指令和数据并存,每个存储器独立编址、独立访问;●使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

程序指令存储和数据存储分开,可以在硬件上读取指令代码和传输数据时使用不同的传输线宽度。

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

河南机电高等专科学校《C51程序设计》大作业设计题目:单片机的数字温度计班级:通技092学号:090413238姓名:李盼盼成绩:2011年11月1 设计任务通过单片机驱动数字温度传感器进行温度数据的采集、读取、处理,并通过数码管显示出来,同时,扩张电路,通过RS-232串行口与PC机连接,将数据传送至PC机系统,方便温度的数据传输和统计工作。

2电路原理图3 系统流程图4 源程序基于51单片机的温度测量系统#include<reg52.h>#include<intrins.h>#define uint unsigned int#define unchar unsigned charuchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58};code/* 0 1 2 3 4 5 6 7 8 9 c */sbit BUZ=P1^3;sbit LED-GREEN=P3^6;sbit LED-RED=P3^7;sbit set=p1^0;sbit down=p1^1;sbit up=p1^2;uchar disbuf[4];uint mode,top=90,bottom=10;int templ;bit flag,kset-flag,kup-flag,kdown-flag;sbit dp=p1^4;viod delay(uint x);/*********************************************************延迟函数,x=1大约延迟1ms*********************************************************/void delay(unit x){uint i, j;for(i=0;i<x;i++)for(j=0;j<20;j++);}/***************************************************延迟函数,x=1大约延迟8us****************************************************/void delay-us(unit x){while(x--);}/****************************************************初始化函数****************************************************/void initl820(){dp=1;delay-us(1); //拉高一段时间dp=0;delay-us(60); //延迟480us以上dp=1;while(dp); //等待存在脉冲delay-us(10); //存在脉冲存活时间dp=1; //拉高总线}/************************************************* 写入指令函数,每次写入一个字节dat**************************************************/ void write(uchar dat){uchar I;for(i=0;i<8;i++){dp=0dp=dat&0x01;delay-us(2);dp=1;dat>>=1;}}/*************************************************** 读函数,每次返回16位的温度值**************************************************/ unit read(){uchar i;uint dat;for(i=0;i<16;i++){dp=0;dp=1;if(dp){dat=(dat>>1)|0x8000;}elsedat>>=1;dp=1;delay-us(1);}return(dat);}/***************************************************读取温度函数,返回温度的绝对值,并标注flag,flag=1表示负,flag=0表示正**************************************************/uint read temperature(){uint tem;float m;initl820();write(0xcc); //跳过读ROMwrite(0x44); //启动温度转换init1820();write(0xcc);write(0xbe); //读取温度寄存器temp=read();if(temp>0xfff){flag=1;temp=(~temp)+1}else{flag=0;}m=temp*0.0625;temp=m*100+0.5;return(tem);}void deal(){temp1=read temperature();disbuf[0]=temp1/1000;disbuf[1]=(temp1%1000/100);disbuf[2]=(temp1%100/10);disbuf[3]=(temp1%10);}void dealset(){mode++;if (mode==3)mode=0;}void dealup(){if (mode==1){top=top+1;if (top>=120)top=120;}if (mode==2){bottom=bottom+1;if (bottom>=30)bottom=30;}}void dealdown(){if(mode==1){top=top-1;if(top<=70)top=70;}if(mode==2){bottom=bottom-1;if(bottom<=5)bottom=5;}}/****************调试键盘处理函数************/void kdeal(){if((set==0)&&(kset-flag==0)) //set为p2^0端口,kset-flag为标志位{delay(5)if (set==0)dealset();kset-flag=1}if(set)kset-flag=0;if((up=0)&&(kup-flag==0)){delay(5);if(down==0)dealdown();kdown-flag=1;}if(down)kdown-flag=0;}void init(){TMOD=0x01;THO=(65536-50000)/256;TLO=(65536-50000)%256;EA=1;ETO=1;TRO=0;}void mian(){uchar f.a;int();while(1);{p1=0x00;p0=0XFF;delay(500);kdeal();if(mode==0){a=0xfe;for(i=0;i<4;i++){if(i==1)p0=tab[disbuf[i]]+0x80;elsep0=tab[disbuf[i]];p1=a;kdeal();deal();-nop-();a=-erol-(a,1);p1=0xff;if((temp1<bottom*100))||(temp1>(top*100))) {TRO=1;LED-GREEN=1;}{TRO=0;LED-GREEN=0; LED-RED=1;BUZ=1}}}if(mode==1){if((top/100)>=1){p0=tab[top/100];p2=0xfd;}else{p0=0x00;p2=0xff;}kdeal ()p2=0xff;p0=tab[(top%100)/10]; p2=0xfb;kdeal();p2=0xff;p0=tab[top%10];p2=0xf7;kdeal();p2=0xff;}if(mode==2){p0=tab[bottom/10];p2=0xfe;kdeal();p2=0xff;p0=tab[bottom%10]; p2=0xfd;kdeal();p2=0xff;}}void timer0() interrupt 1using 1{uchar count;THO=(65536-50000)/256;TLO=(65536-50000)%256;count++;if(count==10){LED-RED=~LED-RED;BUZ=~BUZ;}if (count==20){count=0;LED-RED=~LED-RED;BUZ=~BUZ;}}参考文献1 李群芳、肖看单片机原理、接口以及应用清华大学出版社2 祁伟、杨婷单片机C51程序设计与实验北京航空航天大学出版社3 黄庆华单片机开发技术与实训电子工业出版社4 /p-916990989801.html5 /xueshu/s?rn=10&wd6 /tag。

相关文档
最新文档