㈠ 本人大三学生,《单片机原理与应用》挂了,老师给了5道大题,其中有原题,希望帮忙做一下,后天考试...
大二自学单片机,表示这题无压力……用C编程还是汇编?
㈡ 求单片机高手帮忙!
基于单片机交通灯智能控制系统研究
随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。通常情况下,交通信号灯控制主要有两个缺陷:1、车道放行车辆时,时间设定相同且固定,十字路口经常出现主车道车辆多,放行时间短,车流无法在规定时间内通过,而副车道车辆少,放行时间明显过长;2、未考虑急车强通(譬如,消防车执行紧急任务时,两车道都应等待消防车通过)。由于交通信号灯控制系统缺乏有效的应急措施,导致十字路口交通受阻,造成不必要的经济损失。
本系统利用单片机AT89C51,借助CAN总线作为现场通信总线实现智能交通信号灯控制系统设计,实现了根据区域车流、红外遥控以及PC机进行十字路口交通信号灯智能控制,并在软、硬件方面采取一些改进措施,实现了根据十字路口车流、红外遥控进行交通信号灯智能控制,使交通信号灯现场控制灵活、有效。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
2 设计方案与系统结构
本智能交通信号灯控制系统硬件主要由车流信息检测电路、键盘时间设置电路、红外遥控发射/接收电路、单片机控制器、CAN总线控制器、CAN总线收发器、光电隔离芯片、单片机并行接口、看门狗电路等电路组成。本系统设置与上位PC机相连的上位节点为主节点,各路口信号灯控制装置为底层节点,共同构成区域交通信号灯控制系统。系统原理框图如图1所示。
系统利用红外遥控装置实现各十字路口现场信号灯控制,红外发射器发射出的编码信号经接收器接收后送入单片机控制器,控制信号灯红绿变换、等待时间、急车强通。另外,车流检测装置安放在各十字路口东西、南北道路方向实时检测车道车流信息。并将检测到的信息输至单片机进行处理,通过单片机编程技术实现信号灯绿、红切换及等待时间设定。此外,PC机通过通讯串口与节点上的单片机控制器进行通信,实现数据信息在CAN总线上的发送与接收。PC机负责网络上所有信号灯控制装置的集中管理功能;同时向各信号灯控制器下传工作模式控制信息。3 系统设计
3.1 红外遥控发射电路
由于系统需实现十字路口不同方向信号灯变化。假设两方向为东西、南北方向。则需实现东西、南北两个方向信号灯的选定、时间增减、急车强通等功能。红外遥控发射电路原理框图如图2所示。
红外遥控发射器与外接陶瓷谐振器、电容器组成振荡电路,分频产生一定脉冲宽度的载频信号。输出编码信号,经达林顿管放大后,驱动红外线发射二极管向外发射。
3.2 红外遥控接收电路
红外接收、解调模块接收来自发射器的红外信号,经内部集成电路放大、解调后,由输出端输出编码脉冲信号,经三极管反相放大后,送至接收器,由接收器解调模块进行译码。当发射器相应键按下时,接收器输出高电平信号,通过或非门接入单片机控制器的外中断,申请中断,由中断服务程序检测键按下状态,从而完成相应的中断服务。红外接收器与单片机控制器接口电路如图3所示。
3.3 CAN总线节点接口电路
各路口交通信号灯控制器与上位机的通讯都通过各自的CAN总线接口模块完成。总线系统节点硬件电路原理框图如图4所示。
单片机控制器负责CAN总线控制器初始化,控制实现数据的接收和发送等通信任务。CAN总线收发器与CAN总线接口部分采用了一定的安全和抗干扰措施。为增强CAN总线节点的抗干扰能力,CAN控制器不直接与CAN收发器相连,而是通过加接高速光电隔离器芯片,实现总线上各节点间的电气隔离。但是,光耦电路所采用的VCC和VDD电源必须完全隔离,否则采用光耦电路就失去了意义,可采用小功率电源隔离模块或不大于5V隔离输出开关电源模块实现。
3.4 看门狗电路
由于单片机控制器自身抗干扰能力较差,尤其在一些条件比较恶劣、噪声大的场合,常会出现单片机因受外界干扰轻者导致系统内部数据出错,重者将严重影响程序的运行而死机,造成系统不能正常工作。设置看门狗是为了防止单片机死机、提高单片机系统抗干扰性的一种重要途径。考虑系统可靠性设计,满足苛刻环境下的正常运行,本设计中采用硬件看门狗电路。电路原理框图如图5所示。
通过硬件看门狗电路设计,可有效防止运行程序进入“死循环”。保证系统不受恶劣天气及环境条件造成的干扰。
3.5 分布式检测控制系统由于CAN总线具有较强的抗干扰能力,通讯中没有地址的概念及节点数不受限制等优点,已经被广泛应用于汽车、数控机床、仪器仪表、现场总线控制等领域[1]。本设计将若干智能交通信号灯控制器、上位节点接口和PC机组成CAN总线通信系统方便实现智能分布式区域信号灯实时监控、高速数据采集等。单片机控制器与PC机实现串行通信,设置CAN总线控制器工作在Intel模式,由PC机发送数据写入单片机控制器,再通过控制信号由单片机将数据写入CAN总线控制器并通过CAN总线收发器发送。接收数据通过中断进行,CAN BUS数据经CAN总线收发器接收并写入CAN总线控制器。然后通过中断提请单片机读取数据上传PC机。
4 实验分析
本系统单片机控制器选用MSC-51系列IntelAT89C51芯片,红外遥控发射/接收器使用BA5104/BA5302设计。利用MAX692设计看门狗监控电路。总线通信接口中选取PHILIPS公司的SJA1000 CAN总线控制器及82C250总线收发器[2] [3]。光耦合器采用6N137芯片。系统硬件电路利用Protel DXP设计并制板。
通过实验测试,按下红外遥控发射器按键K1-K6有效地控制了东西、南北方向时间设定、急车强通,时间增、减。持续使WDI低电平时间>1.6s后,看门狗RESET端产生200ms负溢出脉冲信号使AT89C51复位,均有效地达到了系统设计要求。
为了提高系统通讯抗干扰性及可靠性,在总线收发器82C250的CANH和CANL引脚通过5Ω电阻与CAN总线相连,保护其免受过流冲击的影响;82C250的CANH和CANL与地之间分别并联30pF电容,滤除总线高频干扰并起到防电磁辐射的作用;总线两端接入120Ω终端电阻[4],匹配总线阻抗。此外,在CAN总线输入端与地之间接防雷击管,当两输入端与地之间出现瞬变干扰时,通过防雷击管放电起到保护总线的作用,避免了雷电天气对系统通讯的影响。这些部分虽然增加了节点的复杂度,但却有效保证了数据通信的稳定性和安全性。
5 结语
交通信号灯智能控制系统为改善城市交通拥堵,提高道路的交通运输能力发挥了积极作用。本系统设计实现了十字路口信号灯自动化、智能化、人性化实时控制。通过系统功能扩展,系统亦可应用于其他控制领域,应用前景广阔。
㈢ 单片机 编程题 请帮帮忙,小妹刚学,很多不懂,请把程序写出来啦!谢谢
1、 MOV R0,#20H
MOV R2,#00H
M: MOV A,@R0
CJNE A,#00H,HERE
SJMP END0
HERE: CJNE A,#42H,MA
INC R2
MA: INC R0
SJMP M
END0: END
2、 MOV A,20H
MOV B,A
MUL AB
MOV 21H,A
3、 MOV A,30H
CJNE A,#00H,T
MOV R3,31H
JMP END0
XIAO: CLR C
ADD A,B
MOV R3,A
JNC END0
MOV R2,#01H
ENDO: END
4、 MOV TMOD,#10H
SETB TR1
LOOP: MOV TH1,#0BEH
MOV TL1,#010H
JNB TF1,$
CLR TF1
CPL P1.1
SJMP LOOP
5、 MOV TMOD,#02H
MOV TH0,#06H
MOV TL0,#06H
SETB TR0
LOOP: JBC TF0,转
SJMP LOOP
参考一下吧,很多单片机书上应该都有这样的例子,最好看一下啊呵呵
㈣ 如何学单片机
请看郭天祥大师的《怎么学好单片机》
很多单片机初学者问我的第一句话就是怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机、如何开始上手、如何开始熟练这个过程给大家讲讲。先说说单片机,我们现在用的比较多的是8051单片机,它的资料比较多,用的人也较多,市场也很大,51单片机内部结构比较简单,非常适合初学者学习,建议初学者将51单片机做为入门级芯片。单片机属于硬件,我强烈不推荐大家使用单片机仿真软件来学习单片机,也可以肯定的告诉大家,使用仿真软件是学不会单片机的,硬件只有把它摆在你的面前,亲自操作它,才会有深刻的体会,才能学明白它。单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书,我们需要从书中大概了解一下单片机的各个功能寄存器,如果看的多了反而容易搞乱,尤其是现在市场上大多数讲单片机的书一开始就讲解较复杂的内存、地址、存储器什么的,更让初学者感到不知所云、难以入门。简单的说,当我们使用单片机时,实际上就是用我们自己编写的软件去控制单片机的各个功能寄存器,再简单些,就是控制单片机哪些引脚的电平什么时候输出高,什么时候输出低。由这些高低变化的电平来控制外围电路,实现我们需要的各个功能。
关于看书,大家只需大概了解单片机各引脚的功能,了解下寄存器。第一次、第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学单片机看书看两三天就够了,而我们要把更多的时间放到实践中去,这才是最关键的,在实践的过程有不懂之处再查书,这样记忆才深刻。关于实践有两种方法你可以选择,方法一、你自己花钱买一块单片机的学习板,不要求那种价格上千块功能太太全的,对于初学者来说你买功能太全的板子,上面有很多东西你这辈子都用不着,我建议有流水灯、数码管、独立键盘、矩阵键盘、AD 和DA、液晶、蜂鸣器、IIC总线、有USB扩展也最好,这些就差不多了。如果说我上面提到的这些功能你能熟练应用,那可以说对于单片机本身的操作你已经入门了,剩下的就是自己练习设计外围电路,不断的积累经验。只要过了第一关,后面的路就好走多了,万事开头难,大家都听过。方法二、你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板可能只需要几分钟的时间,而对于初学者可就难多了,因为只有对硬件彻底了解了,你才能熟练的驾驭它。而如果你身边没有这样的高手,又找不到可以帮助你的人,那我劝你还是选择方法一,毕竟自己有一块学习板要方便的多,以后做单片机类的小实验时经常都能用得上,省时又省事。
有了单片机学习板之后你就要多练习,最好是自己有台电脑,少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,比起跑跑卡丁车,比起魔兽世界,要好玩的多的多。当你编写的程序按你的意愿实现时,你比做任何事都开心,你会上瘾的,真的,做电子设计的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,或是上网搜索。当得到解答后你会记住一辈子的,知识必须应用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,过一个假期,甚至过一个周末,然后忘的一干二净,是不是?你学到什么了?我认为这样的生活没有意义。但是我告诉你单片机一旦学会,永远不会忘了。
另外我再说说关于用汇编语言还是C语言编程的问题。很多同学大一、二就开设了C语言的课,我也上过,我知道那时上课老师讲的就是几乘几、几加几、求个阶乘、画个星星、编个月亮什么的。学完了有什么用?虽然考试我考了90分,可我心里比谁都明白,C语言到底是什么?它有什么用?到底它能做什么我一无所知。我们不能过多的评价当今的高校教育,但我们必须得为自己负责任。让你用C语言编单片机的程序你是不是就傻了?单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,如果原来有C语言的基础那学起来会更好,如果没有,也可以边学单片机边学C语言,C语言很简单,只是一门工具而已,我劝大家最好学好学精它,将来肯定用得着,要不然以后也得学,你一点汇编都不会根本无所谓,但你一点C语言都不会那你将来会吃苦头。给大家推荐一本书,作者谭浩强,书名>,清华大学出版社,大家在学习本书的同时再参考上面提到的这本书更有利C语言学习。也根本没必要再从头把>学一边,就算再学一边也许结果还是和你现在一样,最好的办法就是用到哪里学哪里。汇编写程序代码效率高,但相对难度较大,而且很繁琐,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的ROM也在不断的提高,足够装得下你用C语言写的任何代码,C语言的资料又多又好找,将来可移植性非常好,所以我劝大家用C语言。
总结上面,只要你有信心,做事能坚持到底,有不成功绝不放弃的强烈意志,那学个单片机对你来说就是件非常容易的事。建议步骤:
1 、看书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书。
2 、用学习板练习编写程序,学单片机主要就是练编程序,遇到不会的再问人或查书。
3 、自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。
4 、自己完全设计具有个人风格的电路、产品 … 你已经是高手了。
㈤ 单片机 思考题与习题 急 谢谢。。。。
1、分4组,分别由PSW中RS1、RS0控制,每组8个单元,复位后的寄存器是第0组。能被8整除的都可以进行位寻址。EA:片内外程序存储器片选端,ALE:地址锁存使用,PSEN:片外程序存储器读允许信号,1个机器周期是12个时钟周期,1个指令周期是1、2、4个机器周期。1/10US,P0-P3,口的不同之处在与:P0口没有上拉电阻,其余的都有上拉电阻,外电路不用加上拉电阻。在作为输入口时要向端口写1,防止读入的数据错误。
2、地址相同,但是,使用的指令不同,MOVC,MOVX。P3口的第二功能很丰富:串行口RX,TX、外部中断INT0,INT1、定时记数器T0,T1、读写WR,RD。一个是位地址,一个是字节地址,采用访问的指令不同,7C在位地址寻址区的2F中,PSW记录累加器A的状态,CY,AC,OV等,具体是第7位进位或者借位时,CY=1,反之为0,第3位进位或者借位时,AC=1反之为0,当运算结果不对时,OV=1。
3、那是程序的总入口地址,中断地址入口。说白了,就是即可以输入又可以输出的口叫双向口,P0-P3:复位时,为FFH。寻址方式:直接、间接、立即、寄存器、变址、位寻址。内部低128位寻址,和整个256字节寻址。
4、DA A的作用是紧跟着加法后面的指令,用与十进制调整。MOV A,80H,XCH A,90H,MOV 80H,A。算术运算利用CY,OV判断结果是否正确。如果CY=1,说明减数小,与此同时OV=1,说明正数减去负数得负数的情况。依次类推。
以上是部分内容回答。
由于时间关系先到此吧,后续再补上!
㈥ 单片机主要用途是什么
单片机的应用
1、单片机在智能仪表中的应用单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。
2、单片机在机电一体化中的应用机电一体化是械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品。
例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。
3、单片机在实时控制中的应用单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。
4、单片机在分布式多机系统中的应用在比较复杂的系统中,常采用分布式多机系统。多机系统一般由若干台功能各异的单片机组成,各自完成特定的任务,它们通过串行通信相互联系、协调工作。
单片机在这种系统中往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。单片机的高可靠性和强抗干扰能力,使它可以置于恶劣环境的前端工作。
5、单片机在人类生活中的应用自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、电子玩具、收录机等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。
综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
(6)单片机帮考扩展阅读
单片机的组成:
它通过内部总线把计算机的各主要部件接为一体,其内部总线包括地址总线、数据总线和控制总线。其中,地址总线的作用是在进行数据交换时提供地址,CPU通过它们将地址输出到存储器或I/O接口;数据总线的作用是在CPU与存储器或I/O接口之间。
或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU的应答信号线等。
单片机的特点由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显着的特点,因而在各个领域都得到了迅猛的发展。
㈦ 单片机高手们快帮我看一道简单题吧,我刚学单片机
unsigned char 取值范围好像是从0到255。
P1=_crol_(P1,1); 函数crol_(P1,1)是干什么的?没用过。
没电路图只看程序确实很费劲。
这是我写的一个键盘加数码管的程序,参考一下吧。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint p,q,s;
uchar i,j,a,r,sz[4];
uchar code asd[4][4]={4,8,12,16,3,7,11,15,2,6,10,14,1,5,9,13}; //键盘解码
uchar code tab[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //数字编码
void delay(void) //延时程序
{
uchar i;
for(i=125;i>0;i--);
}
uchar key(void) //键盘扫描程序
{
P1=0xff;
p=0xfe; //1111 1110
for(i=0;i<4;i++) //低四位依次取0
{
P1=p; //P1取1111 1110
q=0x7f; //0111 1111
for(j=0;j<4;j++) //高四位依次取0
{
s=p&q; //0111 1110
if(P1==s) //判断
{
delay();
if(P1==s)
{
a=asd[i][j];
}
}
q=q>>1|0x80; //高四位移位
}
p=p<<1|0x01; //低四位移位
}
return a; //返回值
}
void show(uchar y) //显示程序
{ uchar b;
sz[0]=0; //千位
sz[1]=0; //百位
sz[2]=y/10; //十位
sz[3]=y%10; //个位
r=0x0e;
for(b=0;b<4;b++)
{
P0=r; //选通最右边的数码管
P2=tab[sz[b]]; //送字型码
delay(); //显示延时
r=r<<1|0x01; //移位以显示前一位
P2=0xff;
}
}
main()
{
uchar x;
while(1)
{
x=key();
show(x);
}
}
㈧ 单片机考试题
假定(A)=0C5H,执行指令SWAP A 后,累加器(A)中的内容为5CH
若(A)=0FFH,执行指令 DEC A 后,结果为 0FEH
㈨ 试简述C51的变量存储类型与单片机存储空间之间的关系。考试题目帮帮啊。。