最新单片机课程设计--键控彩灯

  • 格式:doc
  • 大小:41.00 KB
  • 文档页数:18

单片机课程设计--键控彩灯成员:45,31,10,03,43类别:09机电(4)类别描述(1)设计目的1.熟悉51系列单片机。

2.熟悉汇编语言编程。

3.掌握单片机应用系统的设计方法、过程和实现。

(2)设计任务描述、要求键控灯笼系统:1.键盘控制其操作和停止。

2.键盘控制其流程和流向。

3.键盘控制其照明模式。

A.全开全关B.交叉照明成员之间的分工:袁德:04组长。

在总体设计中,任务描述、框图、功能模块图和相关描述被分发给成员,以协助程序编辑和错误处理,并找到数据和经验。

唐越:担任软件设计师,根据功能模块图细分流程图,编辑相应的程序和功能相关指令,搜索数据。

曾于震:作为一名硬件设计师,他根据总框图在DXP软件中画出原理图、印刷电路板,寻找数据。

邱根:排版WORD,协助唐越进行软件设计和数据搜索。

曹琪:在仿真软件上对编辑好的程序进行仿真培训和错误处理。

目录第1章硬件设计1 1.1总体框图11.2原理图和印刷电路板图21.380C51描述:4第2章软件设计6 2.1功能框图62.2主控制流程图72.3键盘检测流程图92.4功能键处理流程图132 .5显示灯流程图152 .6代码实现19第三章模拟和调试28 3.1调试步骤283.2错误处理303.3模拟结果31第四章设计经验32参考34第1章硬件设计1.1总体框图键盘控制80C51芯片发光二极管彩色灯显示振荡器电路复位电路电源电路功能描述:电源:80C51单片机采用5V电源,正极接40引脚,负极接20引脚。

振荡电路:在80C51单片机中集成一个高增益定向放大器,用于构成放大器。

只有晶体振荡器和电容器被连接起来形成一个完整的振荡电器。

晶体振荡器跨接在引脚18 (XTAL2输出)和19( XTAL1输入)之间,引脚18和19通过两个小电容并联接地。

晶体振荡器可以使用一个12兆赫兹的小型水平晶体振荡器,电容值可以在18到47 pF之间。

通常,可以使用27pF的小磁片电容器。

复位电路:微控制器上的9引脚(RST)为复位引脚,采用手动复位,电容为10uF,连接在RST和地之间的电阻为10kω/Vpp引脚:31引脚为/Vpp,此引脚接地。

键盘电路:单片机P3.2~P3.5引脚作为输入,在软件中设置381.当按键未按下时,单片机引脚处于高电平;按键时,引脚接地,单片机引脚处于低电平。

通过编程软件(使用连续查询的方法),你可以知道一个键是否被按下以及哪个键被按下。

灯笼展示:发光二极管的阴极连接到单片机的引脚P1.0~P1.7,阳极连接到+5V电源。

当P1端口引脚连接到高电平时,发光二极管灯不点亮;当P1端口引脚连接到低电平时,发光二极管灯点亮。

1.2原理图和印刷电路板图功能描述:8个发光二极管连接到8*470电阻,连接到P0端口,复位电路连接到RST端子。

复位电路使用手动复位。

电路的电阻值为1K,电容为C=10uF.P3.2~P3.5连接到四个弹性键,四个上拉电阻(4*1K)连接到键的前面。

单片机采用的晶振频率为6HZ本电路中使用的两个电容C=(5~30pF)EA在片外只读存储器模式下接地。

PCB板图功能描述:用DXP软件绘制图2和图3。

通过这些,可以在电路板上实现硬件电路的安装和制造。

待调试部件清单:序列号、名称、型号/规格、附件数量、图纸编号1单片机芯片AT89C51 1 2碳膜电阻4708 R1 ~ R83碳膜电阻10K 1 R94碳膜电阻1K 4 R10~R13 5触摸开关LSH 4S 1 ~ S4 6无极性电容27pF 2 C1~C2 7无极性电容10uF 1 C3 8水平晶振12HZ 1 CY 1 .380C51的相关说明:80C51引脚描述:、主电源引脚Vcc和GNDVcc(40引脚):主电源连接到+5VVSS (20引脚):接地2、时钟电路引脚XTAL1xtal 2 XL 2(引脚18):连接到外部晶体振荡器的一端。

片内是振荡电路反相放大器的输出。

XTAL1(19(引脚19):连接到外部晶体振荡器的另一端。

片内是振荡电路的反相放大器的输入。

3、控制信号RST/Vpd、ALE/(/PROG)、/PSEN和(/ea)/vppst/vpd(引脚9):复位端子。

高电平有效,宽度大于24个时钟周期,从而复位单片机。

该引脚具有复用功能。

Vpd是备用电源的输入,用于防止主电源断电。

ALE/(/PROG)(30英尺):数据锁存信号端子。

当访问片外存储器时,ALE充当低8位地址的锁存控制信号。

当平时不访问片外存储器时,输出脉冲固定在时钟振荡频率的六分之一。

ALE侧负载驱动能力为8个LSTTL门。

该引脚具有多路复用功能,用作编程脉冲输入,用于对片内程序存储器进行编程(固化)。

/PSEN(引脚29):读取片外程序存储器的选通信号端子。

承载能力为8LSTTL门。

当读取外部只读存储器以实现外部只读存储器单元的读取操作时,PSEN为低电平有效。

1、读取内部只读存储器时,PSEN不工作;2、当外部只读存储器读取时,它将在每个机器周期运行两次;从外部随机存取存储器读取时,3、两个PSEN脉冲将不会输出跳过的;4、当连接外部只读存储器时,它连接到只读存储器的运行经验引脚。

(/EA)/VPP(引脚31):/ea终止于高电平,中央处理器指令自动从片内程序存储器扩展到片外程序存储器。

当/EA端子为低电平时,中央处理器仅从片外程序存储器中获取指令。

该引脚具有多路复用功能,Vpp是对片内程序存储器编程时的编程电压。

4、输入/输出引脚P1、和P3端口P1 .0 ~ P1 .7(英尺1 ~ 8):8位双向输入/输出端口。

负载容量为3个LSTTL门。

P1端口仅用作输入/输出端口:内部有上拉电阻。

P3 .0 ~ P3 .7(英尺10 ~ 17): 8级双向输入/输出端口。

负载容量为3个LSTTL门。

还有一个特殊的第二功能。

端口2的第二个功能、P3:P3.0(10英尺):RXD(串行端口输入)P3.1(11英尺):TXD(串行端口输出)P3.2(12英尺):/INT0(外部中断0输入)P3.3(13英尺):/INT1(外部中断1输入)P3.4(14英尺):T0(定时器/计数器0外部输入)P3.5(15英尺):T1(定时器/计数器1外部输入)P3.6(16英尺):/WR(片外数据存储器的写选通信号输出)P3.7(17英尺):/RD(片外数据存储器的读选通信号输出第2章软件设计2.1功能框图主程序键盘检测模块功能键处理模块彩色光流显示模块去抖延迟模块延迟模块功能描述:键盘扫描模块:检测一个键是否被按下,扫描两次以确保一个键被按下,然后检查一个键是否由于抖动而被释放。

延时去抖模块:由于存在按键抖动,键盘抖动时间一般为5~10ms,抖动现象会导致中央处理器多次处理一个键盘操作,可能导致错误。

因此,通过软件来消除抖动的影响。

主程序模块图:连接和初始化模块。

灯笼显示模块;自来水灯模块采用8个发光二极管,通过编写代码实现四中自来水彩灯。

本设计采用普通的阳极连接方式,通过给单片机不同的初始值,可以看到彩灯的变化。

延时模块:延时是为了让我们看到彩灯变化的效果,这样我们就可以看到彩灯的流动。

2.2主控制流程图开始堆栈初始化初始化P1初始化复位程序中的所有标志位UPDOWN 、STARTED 、YUAN 、QUAN 、左毅、调用键盘检测程序F0到流光复初始值是1?调用键盘处理程序调用显示程序Y N图1主程序流程图功能描述:图1主程序流程图,编写汇编主程序,开始初始化堆栈,复位P1会使色灯一开始处于关闭状态,复位所有标志位,否则很容易在下一个操作中出错。

给流代码一个复杂的初始值,然后调用键盘程序查看是否有一个键被按下,并跳回显示程序,如果F0是,调用功能键处理程序,然后在调用显示程序时返回循环。

2.3键盘检测流程图有按键吗?扫描键盘键盘扫描有按键吗?是否有按键来获得键值n并延迟去抖?你的钥匙释放了吗?设置键按下标记Y N清除键按下标记退出图2键盘检测流程图功能描述:根据图2,写键盘扫描程序,首先清除F0键,因为下面要读取P3端口,首先ORL写1到P3,然后给P3一个到其他四个位置1,如果反向一个,那么没有键按跳回来。

如果是1,则按键。

因为按下的键有抖动,去抖动延迟程序被调用来扫描在稳定期间是否有键被按下。

如果有一个键被按下,去抖键的值被设置为B。

F0键标志被设置为1。

在K_RET中,P3端口设置为读P3端口,ORL为A。

如果为0,则释放的密钥返回主程序。

如果是1,则没有释放的键跳回到K_RET周期,以检测是否有键被按下。

延迟去抖流程图从R7复合D1: R6复合R6J减1至0开始?R7减1至0?回到图5延迟去抖流程图延迟:;去抖延迟程序MOV R7,# 100;R7的初始值是D1:MOV·R6,# 100;将R6返回到其初始值DJZ R6,美元;当R6循环100次跳到自己的线路DJNZ R7时,D1;R7循环跳转到D1 10次,以重新循环RET功能描述:根据图5编辑20毫秒去抖延迟程序,首先给出R7和R6复数值,然后首先从内部循环R6中减去1,直到它减少到0,例如R6,即从外部循环R7中减去1,如果它没有达到0,则跳转回D1,并且当R7=0时返回。

公式=1us*2*100*100=20ms 2.4功能键处理流程图获取键值是00100000吗?是00010000吗?是00001000吗?是00000100吗?N N N N n返回起始端为1?y重置开始结束n设置开始结束为1左毅为1?将左毅设置为复位Y,将左毅设置为1 N,将YUN设置为1,将QUAN设置为1,将UpDown设置为复位YUN设置为复位YUN 设置为复位YUN图3功能键处理流程图功能描述:根据图3编写功能键流程图,当ACC.2为1时,跳过第一个键处理:查看开始标志是否为1?如果不是1,将其设置为1开始。

如果是1,跳转D40重置开始标志。

其他标志被重置然后返回,ACC.2按0的顺序执行。

当ACC.3为1时,跳过第二个按键处理:查看左移标志是否为1,如果为1,跳到D30将左循环流量标志复位,将上升下降设置为1,将其他标志复位返回。

如果它是0,它向左移动1,这意味着它向左移动。

YUAN reset将右循环标志设置为1以返回。

ACC.3 = 0按顺序执行。

ACC.4是1,跳到第三个按键处理:将全亮全关标志和十字灯设置为1,并将向上向下复位返回。

如果ACC.4为0,则按顺序执行ACC.5,并跳到第四个按键处理:重置上升下降,将YAUN设置为1,并重置全部打开和全部关闭以返回。

ACC.5 = 0返回主程序。

2 .5显示灯流程图开始端= 1?上升速度是1?元是1?给P1·左毅0FEH作为1?把LAMPCODE给阿尔卡,把A给LAMPCODE,把A给P1延迟程序,把LAMPCODE给RR A,把A给LAMPCODE,把A给P1延迟程序QUAN是1?返回D20到A,A到D20,A到P1,呼叫延迟程序,D10到A,返回A到D10,返回A到P1,呼叫延迟程序,返回结束Y Y Y Y Y N N N N N给0ffh 到P1,开始图4,显示彩色灯流动程序流程图功能描述:根据图4编译汇编程序,通过功能键处理程序,可以知道当第一个键被按下时,启动键将设置为1,其他复位将从LAPM跳转到LAMPSTART,0FE 将显示到P1港。