用户登录
用户注册

分享至

单片机实验一 片上资源认知实验报告 1安 单片机实验报告

  • 作者: 任时光匆匆8666557
  • 来源: 51数据库
  • 2020-04-15

单片机实验一 片上资源认知实验报告 1安

c语言实验报告心得

c语言实验心得:1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。

2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。

3、常量放到code区,如字库、修正系数。

4、逻辑标志变量可以定义到bdata中。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。

这样可以大大降低内存占用空间。

定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。

当然静态局部变量除外,其内存使用方式与全局变量相同;6、确保程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。

函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。

这一点Keil做得很愚蠢,但也没办法。

7、如果想节省data空间就必须用large模式。

将未定义内存位置的变量全放到xdata区。

当然最好对所有变量都要指定内存类型。

8、使用指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。

如指针p是指向data区,则应定义为: char data *p;。

还可指定指针本身的存放内存类型,如:char data * xdata p;。

其含义是指针p指向data区变量,而其本身存放在xdata区。

以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。

与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

在51系列中data,idata,xdata,pdata的区别data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。

idata是用类似C中的指针方式访问的。

汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好) xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。

这个比较特殊,而且C51好象有对此BUG,建议少用。

但也有他的优点,具体用法属于中级问题,这里不提。

三、有关单片机ALE引脚的问题 "单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1/6.每当访问外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲."这句话是不是有毛病.我觉得按这种说法,应该丢失3个ALE脉冲才对,我一直想不通是怎么回事,希望大虾们帮帮我.小弟感激涕零.答:其他所有指令每6个机器周期发出一个ALE,而MOVX指令占用12个机器周期只发出一个ALE 四、如何将一个INT型数据转换成2个CHAR型数据? 经keil优化后,char1=int1/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一样的。

五、在KEIL C51上仿真完了,怎样生成HEX文件去烧写?? 右键点项目中Target 1,选第二个,在OUTPUT中选中CREAT HEX 六、typedef 和 #define 有何不同?? typedef 和 #define 有何不同》》》 如typedef unsigned char UCHAR ;#define unsigned char UCHAR ;typedef命名一个新的数据类型,但实际上这个新的数据类型是已经存在的,只不过是定义了一个新的名字.#define只是一个标号的定义.你举的例子两者没有区别,但是#define还可以这样用#define MAX 100#define FUN(x) 100-(x)#define LABEL等等,这些情况下是不能用typedef定义的 七、请问如何设定KELC51的仿真工作频(时钟) 用右键点击左边的的target 1,然后在xtal一栏输入 八、不同模块怎样共享sbit变量,extern不行? 把SBIT定义单独放到一个.H中,每个模块都包含这个.h文件 九、C51中对于Px.x的访问必须自己定义吗? 是的。

如sbit P17 = 0x97;即可定义对P1.7的访问 十、SWITCH( )语句中表达式不可以是位变量对吗? 可以用位变量:#include#includevoid main(){bit flag;flag=0;switch(flag){case '0':{printf("0\n");break;}case '1':{printf("1\n");break;}default:break; }}bit 变量只有两种状态,if 语句足够啦,!!! 十一、const常数声明占不占内存??? const 只是用来定义“常量”,所占用空间与你的定义有关,如:const code cstStr[] = {...

数字电路设计实验报告(5选1即可)

目录1 设计目的 32 设计要求指标 32.1 基本功能 32.2 扩展功能 43.方案论证与比较 44 总体框图设计 45 电路原理分析 45.1数字钟的构成 45.1.1 分频器电路 55.1.2 时间计数器电路 55.1.3分频器电路 65.1.4振荡器电路 65.1.5数字时钟的计数显示电路 65.2 校时电路 75.3 整点报时电路 86系统仿真与调试 87.结论 8 参考文献 9 实验作品附图 10 数字钟 摘要:数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

目前,数字钟的功能越来越强,并且有多种专门的大规模集成电路可供选择。

从有利于学习的角度考虑,这里主要介绍以中小规模集成电路设计数字钟的方法。

经过了数字电路设计这门课程的系统学习,特别经过了关于组合逻辑电路与时序逻辑电路部分的学习,我们已经具备了设计小规模集成电路的能力,借由本次设计的机会,充分将所学的知识运用到实际中去。

本次课程设计要求设计一个数字钟,基本要求为数字钟的时间周期为24小时,数字钟显示时、分、秒,数字钟的时间基准一秒对应现实生活中的时钟的一秒。

供扩展的方面涉及到定时自动报警、按时自动打铃、定时广播、定时启闭路灯等。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

1 设计目的1.掌握数字钟的设计、组装与调试方法。

2.熟悉集成元器件的选择和集成电路芯片的逻辑功能及使用方法。

3.掌握面包板结构及其接线方法4.熟悉仿真软件的使用。

2 设计要求及指标2.1基本功能1)时钟显示功能,能够正确显示“时”、“分”、“秒”。

2)具有快速校准时、分、秒的功能。

3)用555定时器与RC组成的多谐振荡器产生一个标准频率(1Hz)的方波脉冲信号。

2.2扩展功能1)用晶体振荡器产生一个标准频率(1Hz)的脉冲信号。

2)具有整点报时的功能。

3)具有闹钟的功能。

4)……3、方案论证与比较 本设计方案使用555多谐振荡器来产生1HZ的信号。

通过改变相应的电阻电容值可使频率微调,不必使用分频器来对高频信号进行分频使电路繁复。

虽然此振荡器没有石英晶体稳定度和精确性高,由于设计方便,操作简单,成为了设计时的首选,但是由于与实验中使用的555芯片产生的脉冲相比较,利用晶振产生的脉冲信号更加的稳定,同过电压表的测量能很好的观察到这一点,同时在显示上能够更加接进预定的值,受外界环境的干扰较少,一定程度上优于使用555芯片产生信号方式。

我们组依然同时设计了555和晶振两个信号产生电路。

(本实验报告中着重按照原方案设计的555电路进行说明)4、 系统设计框图 数字式计时器一般由振荡器、分频器、计数器、译码器、显示器等几部分组成。

在本设计中555振荡器及其相应外部电路组成标准秒信号发生器,由不同进制的计数器、译码器和显示器组成计时系统。

秒信号送入计数器进行计数,把累计的结果以‘时’、‘分’、‘秒’的数字显示出来。

‘时’显示由二十四进制计数器、译码器、显示器构成,‘分’、‘秒’显示分别由六十进制计数器、译码器、显示器构成。

其原理框图如图1.1所示。

5、电路原理分析5.1数字钟的构成 数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路.由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定.在此使用555振荡器组成1Hz的信号。

数字钟原理框图(1.1)5.1.1振荡器电路 555定时器组成的振荡器电路给数字钟提供一个频率为1Hz的方波信号。

其中OUT为输出。

5.1.2时间计数器电路 时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器. 5.1.3分频器电路 通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频。

通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现。

例如,将32768Hz的振荡信号分频为1HZ的分频倍数为32768( ),即实现该分频功能的计数器相当于15级2进制计数器。

5.1.4振荡器电路 利用555定时器组成的多谐振荡器接通电源后,电容C1被充电,当电压上升到一定数值时里面集成的三极管导通,然后通过电阻和三极管放电,不断的充放电从而产生一定周期的脉冲,通过改变电路上器件的值可以微调脉冲周期。

5.1.5数字时钟的计数显示控制 在设计中,我们使用的是74**160十进制计数器,来实现计数的功能,实验中主要用到了160的置数清零功能(特点:消耗一个时钟脉冲),清零功能(特点:不耗时钟脉冲),在上级160控制下级160时候通过组合电路(主要利用与非门)实现,在连接电路的时候要注意并且强调使能端的连接,其将影响到整一个电路的是否工作。

电路的控制原理如下:秒钟由个位向十位进位:0000—0001—0010—0011—0100—0101—0110—0111—1000—1001实...

作业高手请看!!!!网络营销实训1.实验目的 了解用户通过企业网

下列操作一定会使实验结果偏高的是 A) 用标准HCl溶液滴定未知浓度的NaOH溶液,碱式滴定管未经润洗就直接取20mLNaOH溶液---偏低,碱式滴定管未经润洗,残留的水会稀释NaOH溶液,取出的20mL中含氢氧化钠的量偏小,消耗标准HCl溶液体积偏小。

所以…… B) 用冷却结晶法测定不同温度下的KNO3的溶解度,没有在析出晶体时立即读温度计的读数,此时,没有在析出晶体,溶解的溶质的质量就记作溶解度值,显然是偏高。

C) 用加热法测定CuSO4晶体中结晶水的含量,坩埚不干燥===相当于测定出的水偏多,结果偏高,且加热不充分==相当于,测定出的水偏少,结果偏地,所以是不一定。

D) 配制一定物质的量浓度NaOH溶液,定容时仰视容量瓶液面--实际液面会高于刻度线,偏大,所以所配溶液的浓度偏低。

单片机 实验 查表、多分支 设一表格,表中数为:00H、11H、22H.........

单片机的分类Ⅰ 按生产厂家分美国的英特尔(Intel) 公司、摩托罗拉(Motorola)公司、国家办导体(NS) 公司、Atmel公司、微芯片(Microchip) 公司、洛克威尔(Rockwell)公司、莫斯特克公司(Mostek)、齐洛格(Zilog)公司、仙童(Fairchid)公司、德州仪器(TI)公司等等。

日本的电气(NS)公司、东芝(Toshiba)公司、富士通(Fujitsu)公司、松下公司、日立(Hitachi)公司、日电(NEC)公司、夏普公司等等。

荷兰的飞利浦(Philips)公司。

德国的西门子(Siemens)公司等等。

Ⅱ 按字长分(1)4-BIT 单片机4 位单片机的控制功能较弱,CPU 一次只能处理4 位二进制数。

这类单片机常用于计算器、各种形态的智能单元以及作为家用电器中的控制器。

典型产品有NEC 公司的UPD 75**系列、NS 公司的COP400 系列、松下公司的MN1400 系列、ROCKWELL 公司的PPS/1系列、富士通公司的MB88 系列、夏普公司的SM**系列、Toshiba 公司的TMP47***系列等等。

① 华邦公司的W741系列的4位单片机带液晶驱动,在线烧录,保密性高,低操作电压(1.2V~1.8V)。

② 东芝单片机的4位机在家电领域有很大市场。

(2)8-BIT 单片机8 位单片机 8 位单片机的控制功能较强,品种最为齐全。

和4 位单片机相比,它不仅具有较大的存储容量和寻址范围,而且中断源、并行I/O 接口和定时器/计数器个数都有了不同程度的增加,并集成有全双工串行通信接口。

在指令系统方面,普遍增设了乘除指令和比较指令。

特别是8 位机中的高性能增强型单片机,除片内增加了A/D 和D/A 转换器外,还集成有定时器捕捉/比较寄存器、监视定时器(Watchdog)、总线控制部件和晶体振荡电路等。

这类单片机由于其片内资源丰富和功能强大,主要在工业控制、智能仪表、家用电器和办公自动化系统中应用。

代表产品有Intel 公司的MCS-48 系列和MCS-51 系列 、Microchip 公司的PIC16C**系列和PIC17C**系列以及PIC1400 系列、Motorola 公司的M68HC05 系列和M68HC11 系列、Zilog 公司的Z8 系列、荷兰Philips 公司的80C51 系列(同MCS-51 兼容)、Atmel公司的AT89 系列(同MCS-51 兼容)、NEC 公司的UPD78**系列等等。

1)51系列单片机8031/8051/8751是Intel公司早期的产品。

应用的早,影响很大,已成为世界上的工业标准。

后来很多芯片厂商以各种方式与Intel公司合作,也推出了同类型的单片机,如同一种单片机的多个版本一样,虽都在不断的改变制造工艺,但内核却一样,也就是说这类单片机指令系统完全兼容,绝大多数管脚也兼容;在使用上基本可以直接互换。

人们统称这些与8051内核相同的单片机为“51系列单片机”。

8031片内不带程序存储器ROM,使用时用户需外接程序存储器和一片逻辑电路373,外接的程序存储器多为EPROM的2764系列。

用户若想对写入到EPROM中的程序进行修改,必须先用一种特殊的紫外线灯将其照射擦除,之后再可写入。

写入到外接程序存储器的程序代码没有什么保密性可言。

8051片内有4k ROM,无须外接外存储器和373,更能体现“单片”的简练。

但是所编的程序无法写入到其ROM中,只有将程序交芯片厂代为写入,并是一次性的,不能改写其内容。

8751与8051基本一样,但8751片内有4k的EPROM,用户可以将自己编写的程序写入单片机的EPROM中进行现场实验与应用,EPROM的改写同样需要用紫外线灯照射一定时间擦除后再写入。

在众多的51系列单片机中,要算 ATMEL 公司的AT89C51、AT89S52更实用,因他不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写,一般专为 ATMEL AT89xx 做的编程器均带有这些功能。

显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。

写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。

而且,AT89C51、AT89S51目前的售价比8031还低,市场供应也很充足。

AT89S51、52是2003年ATMEL推出的新型品种,除了完全兼容8051外,还多了ISP编程和看门狗功能。

ATMEL公司的51系列还有AT89C2051、AT89C1051等品种,这些芯片是在AT89C51的基础上将一些功能精简掉后形成的精简版。

AT89C2051取掉了P0口和P2口,内部的程序FLASH存储器也小到2K,封装形式也由51的P40脚改为20脚,相应的价格也低一些,特别适合在一些智能玩具,手持仪器等程序不大的电路环境下应用;AT89C1051在2051的基础上,再次精简掉了串口功能等,程序存储器再次减小到1k,当然价格也更低。

51 单片机目前已有多种型号,市场上目前供货比较足的芯片还要算ATMEL 的51、52 芯片, HYUNDAI 的GMS97 系列,WINBOND 的78e52,78e58,77e58 等。

GMS97 系列是一次性烧写,一般只有大量生产的人才买。

at89c51,52 因可以很容易地解密,一般人们只用它来做实验,或者用在一些即使解了密也无关紧要的场合。

89c2051 只有20 腿,体积小巧,在一些简单应用和体积有限的场合得到广泛应用。

2)PIC系列单片机由美国Microchip公司推出的PIC单片机系列产品,首...

请教解答单片机的作业035.请选用指令,分别达到下列操作:(1)

//希望你能多加注释,便于理解 (@ @) void show(uint zi)//显示字符 如zi=1带入你原来的show函数你原来的程序到if内的(1/10==0),所以你的算法有问题! { uint mn,q[7]={0}; for(mn=6; zi!=0 && mn>0; mn--){ //请修改此处 当zi非0 且 位数尚未到最高位时 // if(zi/10!=0){ //请删除此处 之后已经zi除10了,无需if中再/10(这样=/10/10=/100判断了)判断是否非0 !! q[mn]=zi%10; //当zi非0时,取出低位->存入q末尾 zi=zi/10; //整除10消掉zi低位 在for内判断zi消掉低位后值是否非0即可!! // } //请删除此处 } //以上是本人修改的部分,你上机再测试一下吧! //下面的时序你在确定一下!其中确定一下q[]到底是从0开始,还是从1开始 for(;mn { P0=qw[q[mn+1]]; en=0; rs=1; delay(1); en=1; delay(1); en=0; } }

转载请注明出处51数据库 » 单片机实验一 片上资源认知实验报告 1安

软件
前端设计
程序设计
Java相关