导航:首页 > 操作系统 > 单片机控制门流程图

单片机控制门流程图

发布时间:2025-01-04 04:21:16

单片机程序流程图如何写文字说明

单片机程序流程图用文字叙述如下:
上电,复位初始化,进入系统待机,如果没有传感器信号产生的中断就一直等待感器信号触发中断,如果有传感器信号发出中断则进入触发警报服务程序,等待停止警报按钮按下,解除警报,等待按下复位按钮对系统初始化再次进入系统,等待中断触发状态。
编程大概有80%精力放在流程图,剩下的就是用语言描述而已。所以编程最难的不是把代码写出来,而是把流程图画出来。有了流程图,编程就简单很多了。

❷ 我想用单片机控制马达,来实现马达的转动,有没有单片机的高手来帮忙我下!非常感谢!

直流电机正反转

6.1子情境内容:用单片机AT89C51控制直流电机正反转。在此将由89C51的P2.0,P2.1通过晶体管控制继电器,当P2.0输出低电平,P2.1输出高电平时,三极管Q1导通,而三极管Q2截止,从而导致与Q1相连的继电器吸合,电机因两端产生电压而转动。由P3.0,P3.1,P3.2控制电机的正传、反转和停止。

6.2子情境目标:

(1)掌握趋动电机正反转的电路

(2)用PROTEUS实现电机正反转电路的设计,并进行实时交互仿真

6.3知识点链接

二极管保护电路:

在图5-33中,在两个继电器的两端都反相接了一个二极管,这个二极管非常重要,当使用电磁继电器时必须接。原因如下:线圈通电正常工作时,二极管对电路不起作用。当继电器线圈在断电的一瞬间会产生一个很强的反向电动势,在继电器线圈两端反相并联二极管就是用来消耗这个反向电动势的,通常这个二极管叫做消耗二极管,如果不加这个消耗二极管,反向电动势就会直接作用在趋动三极管上,很容易将三极管烧毁。

6.4任务步骤

6.4.1步骤一:PROTEUS电路设计,实现用皮逗亮单片机AT89C51控制直流电机正反转原理图如图5-33所示。

图5-33直流电机正反转原理图

1、选取元器件

①单片机:AT89C51

②电阻:RES*

③直流电机:MOTOR

④按钮:BUTTON

⑤三极管:NPN*

⑥继电器:RELAY*

⑦二极管:DIODE*

2、放置元器件、放置电源和地、连线、元器件属性设置

直流电机正反燃宽转的原理图如图5-33所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。

(1)关于元器件属性的设置在此实例中需要特别注意:

①三极管基极的限流电阻更改为1K欧姆

②双击电机图标,弹出如图5-34所示的电机属性对话框,在NominalVoltage一栏中将默认值更改为5v

④ 双击继电器图标,在弹出的如图5-35所示的继电器属性对话框中,在ComponentValue一栏中将默认值更改为5v

图5-34更改电机属性

图5-35更改继电器属性

6.4.2步骤二:源程序设计与目标代码文件生成

(1)程序流程图

图5-36电机正反转流程图

(2)源程序设计

#include<reg51.h>

sbitp20=P2^0;//P2^0的功能是控制三极管的导通和截止

sbitp21=P2^1;指埋//P2^1的功能是控制三极管的导通和截止

sbitp30=P3^0;//声明直流电机的正传位置

sbitp31=P3^1;//声明直流电机的反转位置

sbitp32=P3^2;//声明直流电机的停止位置

voidmain()

{

while(1)//无穷循环

{

if(p30==0)//若按下p30

{

p20=1;//P2^0控制的三极管截止

p21=0;//P2^1控制的三极管导通,线圈吸合,两者共同控制电机正转

}

if(p31==0)//若按下p31

{

p20=0;//P2^0控制的三极管导通,线圈吸合

p21=1;//P2^1控制的三极管截止,两者共同控制电机反转

}

if(p32==0)//若按下p32

{

p20=1;//P2^0控制的三极管截止

p21=1;//P2^1控制的三极管截止,两者共同控制电机停转

}

}

}

❸ 《单片机》课程学习总结

《单片机》课程学习总结

篇一:《单片机》课程学习总结

《单片机》这门课程我已经学了一个学期了,在这一个学期的学习过程中,我一开始不怎么懂得编程,但慢慢的我现在已经不仅会读程序还会写程序了。真为自己一个学期来努力学到的单片机知识只是而感到高兴。

怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。

我觉得学习单片机首先要懂得C语言,因为单片机大多说都是靠程序来实现的,如果看不懂程序或则不懂的编程是很难学会单片机的。学习单片机首先要明白一个程序是怎么走的,要完全懂得程序每一个步骤的意思。其次要懂得每一条指令的意思,不能盲目地去靠背指令,这是记得不牢靠的,最主要的还是靠了解。学习单片机最主要的对89C51芯片内部结构有全方面的,只要了解了89C51才能知道单片机实现什么样的功能和作用,才能对单片机有更深一步的了解。 通过一个学期《单片机》这门课程的学习,我也从中有了不少心

得和体会想和大家分享一下。

万事开头难、要勇敢迈出第一步。开始的时候,不要老是给自己找借口,不要说单片机的程序全是英文,自己看不懂。遇到困难要一件件攻克,不懂指令就要勤奋看书,不懂程序就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少。然后建个程序,加入项目中,再写代码、编译、运行。必须熟悉这一套工序。个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。单片机是注重理论和实践的,光看书不动手,是学不会的。

知识点用到才学,不用的暂时丢一边。厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。比如你写流水灯,完全就没必要看中断的知识,专心把流水灯学好就是了,这是把整本书化整为零,一小点一小点的啃。 程序不要光看不写,一定要自己写一次。最开始的时候,什么都不懂,可以抄人家的程序过来,看看每一句是干什么用的,达到什么目的,运行后有什么后果。看明白了之后,就要自己写一次,你会发现,原来看明白别人的程序很容易,但到自己写的时候却一句也写不出来,这就是差距。当你自己能写出来的时候,说明你就真的懂了。

必须学会掌握调试程序的方法。不少人写程序,把代码写好了,

然后一运行,不是自己想要的结果,就晕了,然后跑到论坛上发个帖子,把程序一贴,问:为什么我的程序不能正常运行?然后就等别人来给自己分析。这是一种很不好的行为,应该自己学会发现问题和学会如何解决问题。这就需要学习调试程序的方法,比如KEIL里,可以下断点啦,查看寄存器内容等等,这些都是调试程序的手段,当你发现你写的程序运行结果和你想象中不一样的时候,你可以单步,也可以下断点,然后跟踪,查看各相关寄存器内容,看看程序运行过中是不是有什么偏差,找出影响结果的地方,改正过来。这一个过程非常重要,通过程序的排错,你可以学到的知识是书上得不到的。

找到解决问题思路比找到代码更重要。我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你找到代码更为重要。不少人很喜欢找人家的代码,有的人甚至有了代码就直接复制到自己的程序中,可以说,这不是一种学习的态度,无助于你编程水平的提高。

我几乎不怎么看人家的代码,多数时候是看别人的思路,有方框图最好,没有的话文字说明也可以。要从代码中看出别人处理问题的思路,是相当困难的,特别是大型的程序,看起来是非常的累人。所以现在我也明白了,以前读书时说的程序流程图很重要,现在算是知道了。当你知道一个问题怎么去解决了,那么剩下的只是你安排代码去完成,这就已经不是什么问题了。

开动脑筋,运用多种方法,不断优化自己的程序。想想用各种不同方法来实现同一功能。这是一个练习和提高的过程,一个问题,你解决了,那么你再想想,能不能换种写法,也可以实现同一功能,或者说,你写出来的代码,能不能再精简一点,让程序执行效率更高,这个过程,就是一个进步的过程。很多知识和经验的获得,并不是直接写在书让你看就可以得到的,需要自己去实践,开动脑筋,经验才能得到积累,编程水平才能有所提高。

看别人的程序,学习人家的思路。这个在学习初期是很有用,通过看别人的程序,特别是老师写出的具有一定水平的程序,可以使自己编程水平得到迅速的提高。同时,也可以结合别人的编程手法,与自己的想法融合在一起,写出更高水平的程序,从中得到进步。但要注意,切忌将学习变成抄袭,更不是抄袭完了就认为自己学会了,这样做只会使你退步。

尝试编写一下综合应用的程序。从流水灯学起,到动态扫描,再到中断,那么,你可以试试写一下时钟这种综合性应用的程序,不要小看时钟,要写好它不是一件容易的事情,它包括了单片机大部分的知识,比如有按键(IO读取)、动态扫描(IO输出)、中断等,如何协调好各功能模块正常工作,才是编程者需要学习的地方,当你单独写一个功能的时候,比如按键读取,你可能感觉很容易,因为你的程序什么也不做,只是读按键。但把它和其它功能混合在一起,如何在整个程序运行中使每一部分都正常工作,这就不是写一个按键读取这么容易的事情,功能模块之间有可能会互相影响,比如你需要让数码管既能显示,又要去处理按键读取,怎么使这两部分都正常工作,这就是一个协调过程。当你有了这个处理协调能力,你就算是入门了。

着重于培养解决问题的能力,而不是具体看自己编写了多少程序或者做过什么。“学单片机重点在于学习解决问题的思路,而不是局限于具体的芯片类型和语言”这一直是我的座右铭,是我学单片机学习单片机之后感悟出来的。真正的能力不是你曾经编写过多少个可以实现的程序,而应该是:“遇到没有解决过的问题,能利用自己已学的知识,迅速找到解决问题的方法。”这个才是能力。

面对一个新程序时,多自己开动脑筋,不要急于找别人的程序。

有不少人面对一个新程序时,第一步想到的就是网上找别人写过的程序,然后抄一段,自己再写几句,凑在一起就完成任务,这虽然可能是省时间,但绝对不利你的学习。当你接到一个程序时,应该先自己构思一下整个程序的架构,想想如何来完成。有可能的话,画一个流程图,简单的可以画在脑子里,对程序中用到的数据、变量有一个初步的安排,然后自己动手去写,遇到实在没办法解决的地方,再去请教老师或同学,或看别人是怎么处理的,这样首先起码你自己动过脑想过,自己有自己的思路。如果你一开始就看别人的程序,你的思维就会受限在别人的思维里,自己想再创新就更难了,这样你自己永远也没办法提高,因为你是走在别人的影子里。

学会提问题。一般来说,学习过程中,你遇上的问题,多数人也有遇上的,所以如果有什么不懂,你可以去问老师。我觉得学习单片机最主要的要多提问,对于一个自己不是太懂的程序,自己一定要多提问几遍,这样不但有利于加深自己的印象还能从中学到不少别人的方法。

经过一个学期我对《单片机》这门课程的学习,不仅让我懂得了很多程序的编写,还让我学到了很多对自己有用的学习方法。总结这个学期来的我自己的学习情况,我觉得自己对编程进步了不少,懂得运用正确的学习方法学习单片机程序,不再去死记硬背指令了。所以我觉得学习要不断总结学习方法,才能让自己学习不断进步。

交通信号灯设计报告

实验目的: P1口的使用方法,延时程序的编写

实验要求:在一个十字路口分为东西南北走向,信号等按以下的状态顺序工作:

(1) 初始状态0,东西、南北红灯全亮。延时一定时间;

(2) 状态1,南北绿灯亮通车,东西红灯,延时一定时间;

(3) 状态2,南北绿灯闪烁几次转黄灯,东西仍然红灯,延时一定

时间;

(4) 状态3,南北红灯,东西绿灯通车,延时一定时间;

(5) 状态4,南北仍然红灯,东西绿灯闪烁几次转黄灯,延时一定

时间;

(6) 循环至状态1,继续

实验电路和流程框架图:

(1) 硬件电路

交通灯实训设备用最小系统板和信号灯组合而成。

2、软件编程

若各路口灯亮灭的时间间隔为2s钟,灯光闪烁时间间隔为0.5s。用软件延时的方法,晶振频率12MHz时,一个机器周期为1us。

编写交通信号灯程序:

编写主程序,由R7做主程序的计数器,确定调用延时时间为0.5s,从而获得交通灯的亮灭时间。

篇二:《单片机》课程学习总结

时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机课程也结束,但通过这次单片机的学习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

当今社会随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。本学期我们就学习了单片机这门课程,感觉是有点难呢。也不知道整个学习过程是怎么过来得,可是时间不等人。

刚开始学习的时候,对单片机没有什么认识,不知道什么是单片机,更不知道它有什么作用。通过学习才大体知道了单片机的一些知识。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。由中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等集成在一块芯片上,构成了一个单片微型计算机,简称为单片机。它的应用范围很广,在工业自动化中应用有数据采集、测控技术。

在智能仪器仪表中应用有数字示波器、数字信号源、自动取款机等。在消费类电子产品中应用有空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。在通讯方面应用有手机、小灵通等。在武器装备方面应用有飞机、坦克、导弹、航天飞机、智能武器等。刚开始学习时只能抄写别人做成功的程序,一遍一遍的写,从简单的入手,逐步的积累,一步步的能够将小的程序结合到一起,拼接成较为复杂一些的程序。但是程序不要只是看别人得,一定要自己写过才是自己的。只有当你自己能写出来的时候说明你真懂了。刚接触KEIL时确实很让人头疼,使用 KEIL不会建项目、不会使用实验板。然后可以参考已经成功的程序,抄过来,写一个最简单的,让它运行起来,先培养一下自己的感觉,先建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成HEX,刷进单片机中、运行。其实当遇到问题一定要自己尝试着解决,不能遇到问题就去问别人,自己一定要掌握解决问的方法和思路。对一个新项目时,自己一定要多想想,不要急着去看别人是怎么写的。应该先想一下程序的构架,想想如何来完成。然后自己动手去写,理清自己的思路这样更容易提高自己。

熟悉单片机的人都知道,要学好单片机可不是一件容易的事,倒不是因为单片机很难学,而是很难找到一本专为单片机入门者而编写的教材。翻一下身边的单片机教材,都好像是为已经懂单片机的人而写的,一般先介绍单片机的硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计(随便说一下,很多书中的电路设计已经过时,并且有些程序还是错误的`)。如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。学习使用单片机只能靠循序渐进的积累,虽然单片机的课程只上了几节就去上班了,但在学习的过程中有了一定的了解。下面就本人学习单片机的过程和经验做简要介绍。

首先,学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。要想成为单片机高手,建议初学者首先学习汇编语言,学的差不多的时候,转入C语言学习。尽管汇编语言属于低级语言,编程效率低,但是较C语言具有目标代码简短,占用内存少,执行速度快等优点,更重要的是能使初学者尽快熟悉单片机的内部结构,并能对其进行精确的控制。汇编语言在单片机教材里面都会涉及,不需要单独购买教材和学习。C语言是一门学问,有很多专业书籍来讲解,并且对我们今后的编程生涯有绝对的好处,因此要深入学习,千万不要自以为看了某某的视频教程就以为掌握了C语言,那只是C语言的一部分。在这里给大家推荐一本单片机C语言程序设计参考书,马忠梅等着,北京航空航天大学出版社出版的《单片机的C语言应用程序设计》,要求C语言基础。如果没学过C语言,建议学习清华大学谭浩强编写的C语言程序设计,这本书写的不错,通俗易懂。

其次,是单片机教材选择。单片机是一门非常重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有一定地了解和感官认识,它的是怎样工作的,能干些什么?刚开始时,也许你看不明白,但这并不要紧,因为你还缺乏实践经验。现在单片机应用广泛,因此各个厂家分别推出了自己的单片机,我们没必要每样都学!因为他们的编程方法和调试过程以及内部指令结构有一定的相似,只要学精通一款就OK了!尤其是用C语言编程,就几乎不用分什么派系,但是我们要选择一款有代表性的知识范围广,并且入门容易,书籍多。一般来说,MCS-51系列单片机已经得到广泛的普及和应用,市场上它的资料也比较多,用的人也很多。给大家推荐一些参考书,学习时只需要一本就足够拉。书名:《新编MCS-51单片机应用设计》,哈尔滨工业大学出版,作者:张毅刚;书名:《单片机原理及应用》,高等教育出版社,作者:张毅刚等;书名:《单片机高级教程:应用与设计》,北京航空航天大学出版社,作者:何立民。相关教材还有很多,在这不一一列举。

然后,是开发工具和开发环境的选择。选择一块合适的学习板,对于初学者来说一般无力接受,如果经济条件允许、本人又对单片机很感兴趣、有从事相关工作意向的话,鼓励大家购买。随便说一句,学习板功能要求太全,具有流水灯、数码管、独立键盘、矩阵键盘、AD或DA、液晶、蜂鸣器等就差不多啦,毕竟,功能齐全的价格比较高。仿真器对单片机初学者来说既是那么耳熟,同时又有些陌生,这主要是因为市场上传统的仿真器价格都在千元以上,对经济不是非常宽裕的人来说是不小的开支。同时仿真器是用来提高调试程序效率的,也不是非需不可的,如果你没有仿真器,遇到程序出错的时候,只好苦思冥想,反复烧写调试。

随便推荐一下,学林电子的51tracer仿真器,有兴趣的朋友可关注一下。有了单片机教程板以后,先看下指导说明书,熟悉一下学习板,开卷有益。以后就得靠自己多练习了,将学习板与电脑连接好,先学会开发软件的使用,然后从最简单的流水灯实验做起,按照你自己的意愿控制流水灯,当你完成时,你会发现这是多么惬意的事情。太好玩了,你会觉得这不是在学习,而是在玩,当你发现,单片机能够按照你编写的程序工作时,你会觉得非常兴奋,比做什么事情都开心,这样你会慢慢迷上单片机,真的。不少网站上说搞定某个实验,就恭维的告诉你一声”恭喜你,学会了”自己学会了单片机,这有点可笑,这只能说明你算过关了,对单片机有了一定了解和会使用它了。但是单片机能完成的功能太多了,尤其是对外围器件的控制,综合起来能设计出许多意想不到的产品.因此除了入门外,精通可千万别轻易说出口。

最后,在熟练掌握和应用后,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计开发各种课题,不断的积累经验。最终,自己完全设计具有个人风格的课题,产品,这样你就是单片机高手拉。只要过了第一关,后面的路就好走多了,万事开头难,这大家可能都听过。

有时候单片机的学习很单调,有些知识学起来很抽象,不容易理解,只能慢慢适应,一边学习理论知识,一边编写程序,将程序刷入单片机进行调试,通过这种方式才能更快速的学习单片机。要坚定自己的学习信心,在付出持之以恒的努力,我相信自己能进一步加深对单片机的了解,在单片机的学习道路上走得更远!

;

❹ 单片机编程之前要不要画流程图

其实,画流程图一点用都没有,只能是浪费时间。如果是一个大的项目,画个程序结构图倒是有必要,有利于团队分工和程序的结构化更合理。而对于一个单片机一般的小程序,不必画。画流程图是毕业设计中为了占篇幅凑内容,或者一些教材为了凑内容而画的。

❺ 单片机程序 急求流程图 ;1、0809的片选信号CS0809接CS0。 ;2、电位器的输出信号AN0接0809的ADIN0。 ;3、EO

#include "reg51.h"
#define data_point P0
sbit EOC=P2^0;
sbit ADDA=P2^1;
sbit ADDB=P2^2;
sbit ADDC=P2^3;
sbit OE=P2^5;
sbit START=P2^6;
sbit CLK=P2^7;
sbit ALE=P2^6;
unsigned char disp[3]={0,0,0};
char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char t0count=0;

unsigned int temp;
double sum;
unsigned char val_Integer; //整数
unsigned int val_Decimal; //小数

sbit k1 = P1^0;
sbit k2 = P1^1;
sbit k3 = P1^2;
sbit k4 = P1^3;

void delay(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<125;i++);
}

void display()
{
disp[0]=disp[0]&0x7f;
P3= disp[0];
k1 = 1;
delay(2);
k1 = 0;

P3= disp[1];
k2 = 1;
delay(2);
k2 = 0;

P3= disp[2];
k3 = 1;
delay(2);
k3 = 0;

P3= disp[3];
k4 = 1;
delay(2);
k4 = 0;

}

unsigned char ADC0808()
{
unsigned char d;
ADDC=0;
ADDB=0;
ADDA=0;
TR1=1;
ALE=1;ALE=0;
START=1;START=0;

while(EOC==0);
OE=1;
d=data_point;
OE=0;
TR1=1;
return d;
}
void covert(unsigned char x)
{

sum=x*0.0201378;
val_Integer=(unsigned char)sum;
val_Decimal=(unsigned int)((sum-val_Integer)*1000);

disp[3]=dispcode[val_Decimal%10];
disp[2]=dispcode[val_Decimal/10%10];
disp[1]=dispcode[val_Decimal/100];
disp[0]=dispcode[val_Integer];
}
void main()
{
TMOD=0x21;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=256-2;
ET0=1;
ET1=1;
EA=1;
TR0=1;
OE=0;
START=0;
EOC=1;
while(1)
{
display();
}
}
void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
t0count++;
if(t0count==100)
{
t0count=0;
covert(ADC0808());
}
}
void time1() interrupt 3
{
CLK=~CLK;
}

❻ 单片机秒表课程设计,急求!!!!

原理图如下,

程序如下:

;=================================================

;寄存器分配定义

;=================================================

LED_BUF EQU 50H ;显示数据首址

COUNTER_INT EQU 3BH ;中断计数器

SECOND EQU 3DH ;秒单元

;=================================================

;常数定义

;=================================================

CN_COUNT_INT EQU 100 ;10ms * 100 = 1S

SET_MODEL EQU 0FFH ;完全译码模式

SET_BRIGHT EQU 04H ;占空比为15/32;显示亮度;

SET_LIMIT EQU 01H ;2位显示方式;

SET_NORMAL EQU 01H ;测试模式

SET_START EQU 01H ;进入启动工作方式?

;=================================================

;管脚分配定义

;=================================================

m7219_DIN BIT P3.0

m7219_LOAD BIT P3.1

m7219_CLK BIT P3.2

KEYSTART BIT P1.0

KEYRESET BIT P1.1

;============================================

;模拟主程序

;===========================================


org 0000h

ajmp main

ORG 000BH

LJMP Timer0Interrupt

org 0030h

main:

mov sp,#70h


lcall Init_M7219

lcall InitTimer0

; MOV SECOND,#95H ;TEST

Loop:

CALL disp

key_reset:

SETB KEYRESET

JB KEYRESET,key_start

; DELAY

NOP

NOP

NOP

JB KEYRESET,key_start

JNB KEYRESET,$

CLR TR0

MOV A,#0

MOV SECOND,A

MOV led_buf,A

MOV LED_BUF+1,A

JMP key_SCAN_END

key_start:

SETB KEYSTART

JB KEYSTART,key_SCAN_END

; DELAY

NOP

NOP

NOP

JB KEYSTART,key_SCAN_END

JNB KEYSTART,$

SETB TR0

key_SCAN_END:


JMP loop

;===========================================

InitTimer0:;10ms一次中断

MOV TMOD,#01H

MOV TH0,#0D8H

MOV TL0,#0F0H

SETB EA

SETB ET0

RET

;===========================================

Timer0Interrupt:

PUSH DPH

PUSH DPL

PUSH ACC

MOV TH0,#0D8H

MOV TL0,#0F0H

;========================

INC COUNTER_INT

MOV A,COUNTER_INT ;10ms 计数值加1

CJNE A,#CN_COUNT_INT,Timer0Interrupt_EXIT

MOV COUNTER_INT,#0

MOV A,SECOND

CJNE A,#99H,Timer0Int_sec

CLR TR0;关闭计时

JMP Timer0Interrupt_EXIT

Timer0Int_sec:

ADD A,#01 ;秒加1

DA A

MOV SECOND,A

SWAP A

ANL A,#0fH

MOV led_buf,A

MOV A,SECOND

ANL A,#0FH

MOV LED_BUF+1,A

;========================

Timer0Interrupt_EXIT:

POP ACC

POP DPL

POP DPH

RETI

;====================================================

; function:Init_M7219 ;初始化max719

; input: ------------

; output: ----------

; usage: a,b

;====================================================

Init_M7219: ;初始化Max7219

MOV a,#0bh ;设置扫描界限

MOV b,#set_limit ;设置位数

lcall w_7219

MOV a,#09h ;设置译码模式

MOV b,#set_model ;00h非译码模式;ffh为BCD译码模式

lcall w_7219

MOV a,#0ah ;设置亮度

MOV b,#set_bright ;15/32亮度

lcall w_7219

MOV a,#0fh ;设置工作方式

MOV b,#set_normal ;正常工作方式

lcall w_7219

MOV a,#0ch ;进入启动工作方式

MOV b,#set_start

lcall w_7219

RET


;===================================================

; function:disp ;显示子程序

; input: r0

; output: -----------

; usage: r0,r3,r4,a,b

;===================================================

disp:

MOV r0,#led_buf

MOV r4,#01h

MOV r3,#set_limit

INC r3

disp1:

MOV a,@r0

MOV b,a

MOV a,r4

lcall w_7219

INC r0

INC r4

djnz r3,disp1

RET


;===================================================

; function:w_7219 ;显示驱动程序;

; input: a ;传送7219的地址

; b ;传送7219的数据

; output:-------------

; usage: a,r2

;====================================================

w_7219:

CLR M7219_clk

CLR M7219_din

CLR M7219_load ;置load=0

lcall sd_7219 ;传送7219的地址

MOV a,b

lcall sd_7219 ;传送数据

setb M7219_load ;数据装载

CLR M7219_din

RET

;=================================================

; function:sd_7219 ;向7219传送数据或地址子程序

; input: a

; output: max7219

; usage: a, r2

;==================================================

sd_7219: ;向7219送地址或数据

MOV r2,#08h

c_sd:

CLR C

CLR M7219_clk

RLC a

MOV M7219_din,c ;准备数据

NOP

setb M7219_clk ;上升沿将数据传入

NOP

NOP

CLR M7219_clk

djnz r2,c_sd

RET


❼ 单片机汇编程序的流程图是什么

初学单片机的40个实验(含汇编程序、C程序、流程图)
 
给初学者单片机的40个实验,带源码,需要资料的加群:813238832
也可以到闯客网技术论坛下载更多关于单片机,MTK的资料和学习案例
 
模拟开关灯
 
1. 实验任务
如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
 
电路原理图
图一
 
更多资料在闯客网下载链接:https://bbs.usoftchina.com/thread-200737-1-1.html
 
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;
(2). 把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上;
 
4. 程序设计内容
(1). 开关状态的检测过程
如无法正常展示请点击一键反馈

❽ 单片机流程图是根据实物画的吗.先画流程图再去做实物可以吗

实物流程图只是一个概念,和草稿原理相通,就是用纸表达,有这个模块,然后如何走向,大概绘制出有什么器件,然后按照草稿,把图画出来

阅读全文

与单片机控制门流程图相关的资料

热点内容
小学三年级近似数算法技巧 浏览:431
手机app归什么部门监管 浏览:561
网站服务器满了怎么挤进去 浏览:43
网上买的广联达加密锁好不好 浏览:713
基础与案例开发详解pdf 浏览:688
三次元编程是干嘛的 浏览:340
高染源码网 浏览:795
端游方舟非专用服务器怎么存档 浏览:25
服务器端如何管理session 浏览:59
分组密码算法模式 浏览:994
网站多加服务器有什么好处 浏览:554
人工智能编程模块化编程 浏览:184
androidhal书籍 浏览:322
定频空调压缩机走一下就停了 浏览:335
声音助眠解压自然耳机 浏览:586
单片机中只有16进制数吗 浏览:947
用浏览器访问另一个服务器的命令 浏览:395
linux如何启动samba服务器 浏览:201
黑马程序员面试题目 浏览:162
怎么任意给文件夹的文件排序 浏览:232