PROTEUS 跑马灯 单片机课程设计
单片机闪烁灯跑马灯控制课程设计
单片机闪烁灯跑马灯控制课程设计单片机闪烁灯跑马灯控制课程设计报告一、引言本课程设计旨在通过学习和实践单片机(MCU)编程,实现闪烁灯和跑马灯的控制。
我们将使用嵌入式C语言编程,通过了解单片机的内部结构、电路设计和编程流程,深入理解单片机的工作原理和应用。
二、系统硬件设计本课程设计选用51单片机作为主控芯片,外接8个LED灯和1个按键。
硬件电路设计如下:1.单片机:采用AT89C51,该芯片具有32K字节的Flash存储器,256字节的RAM,以及两个16位定时器/计数器。
2.LED灯:采用普通LED灯珠,与单片机引脚相连,通过编程控制LED灯的亮灭状态。
3.按键:采用机械按键,与单片机的外部中断0(EX0)相连,用于触发闪烁灯和跑马灯的切换。
三、系统软件设计1.闪烁灯模式:在此模式下,8个LED灯将按照一定的频率交替闪烁。
我们可以通过计时器和GPIO口控制LED灯的亮灭状态。
void blink_LED(void) {int i;while(1) {for(i = 0; i < 8; i++) {P1_0 = ~P1_0; // 翻转LED状态delay(500); // 延时,控制闪烁频率}}}2.跑马灯模式:在此模式下,8个LED灯将按照一定的顺序依次点亮。
我们可以通过计时器和GPIO口控制LED灯的亮灭状态。
void marquee_LED(void) {int i;int led_state[8] = {0, 1, 0, 1, 0, 1, 0, 1}; // LED状态数组,初始为交替亮灭while(1) {for(i = 0; i < 8; i++) {P1_0 = led_state[i]; // 设置LED状态delay(50); // 延时,控制跑马灯速度}}}四、按键处理程序我们通过外部中断0(EX0)接收按键信号,当按键按下时,将切换闪烁灯和跑马灯模式。
按键处理程序如下:void EX0_ISR(void) interrupt 0 { // EX0中断服务程序if (key_flag) { // 如果按键已经被按下过if (key_value == 0) { // 如果按键状态为低电平marquee_LED(); // 切换到跑马灯模式key_flag = 0; // 标记按键状态已经改变} else { // 如果按键状态为高电平blink_LED(); // 切换到闪烁灯模式key_flag = 0; // 标记按键状态已经改变}key_value = ~key_value; // 翻转按键状态值} else { // 如果按键还没有被按下过key_value = ~key_value; // 翻转按键状态值if (key_value == 0) { // 如果按键状态为低电平blink_LED(); // 切换到闪烁灯模式key_flag = 1; // 标记按键状态已经改变} else { // 如果按键状态为高电平marquee_LED(); // 切换到跑马灯模式key_flag = 1; // 标记按键状态已经改变}}}。
微机原理(基于PROTEUS的跑马灯系统设计及仿真)
学号:课程设计题目基于PROTEUS的跑马灯系统设计及仿真学院自动化学院专业自动化班级姓名指导教师2012 年 1 月12 日任务书目录引言 (1)1总体方案论证 (2)1.1功能分析 (2)1.2系统连接图设计 (2)1.2.1锁存控制电路 (5)1.2.2可编程并行通信接口芯片8255A (6)2程序流程图设计及其说明 (9)3关键程序段落说明 (11)3.1数据段定义 (11)3.2程序初始化 (11)3.3芯片初始化 (12)3.4初始LED亮灭状态 (12)3.5检测按键开关子程序 (12)3.6延时程序片段 (14)3.7灯光变换控制 (15)4程序调试说明 (16)5结果记录及分析 (17)心得体会 (19)参考文献 (20)引言微型计算机简称微机,由于具备人脑某些功能,所有又叫做微机。
是由大规模集成电路组成的、体积较小的电子计算机。
它是以微处理器为基础,配以存储器及输入输出接口电路和相应的辅助电路构成的裸机。
把微型计算机集成在一个芯片上即构成单片微型计算机。
学习微机原理与接口技术,主要容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成部分,而其中很大一块就是汇编语言的学习。
汇编语言是面向机器的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
用汇编语言编写的程序由于目标程序占用存少,运行速度快,它有着高级语言不可替代的用途。
因此,学习汇编语言是很必要的,通过学习汇编语言可以体会它的作用。
通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识联系实际,进一步学习微机原理与接口技术的相关知识,为以后深入学习打下良好的基础。
1总体方案论证1.1功能分析此次课程设计的要求为,设计微型计算机最小系统,实现跑马灯的模拟显示功能。
具体要求为:(1)、输入设备三个启动按钮、一个停止按钮,输出设备为八个跑马灯;(2)、三个启动按钮对应三种跑马灯显示效果,按下任意一个启动按钮,跑马灯显示对应的效果,按下停止按钮则跑马灯全部熄灭。
微机原理(基于PROTEUS的跑马灯系统设计及仿真)资料
课程设计题目基于PROTEUS的跑马灯系统设计及仿真学院自动化学院专业自动化班级姓名指导教师2012 年 1 月12 日任务书目录引言 (1)1总体方案论证 (2)1.1功能分析 (2)1.2系统连接图设计 (2)1.2.1锁存控制电路 (5)1.2.2可编程并行通信接口芯片8255A (6)2程序流程图设计及其说明 (9)3关键程序段落说明 (11)3.1数据段定义 (11)3.2程序初始化 (11)3.3芯片初始化 (12)3.4初始LED亮灭状态 (12)3.5检测按键开关子程序 (12)3.6延时程序片段 (14)3.7灯光变换控制 (15)4程序调试说明 (16)5结果记录及分析 (17)心得体会 (19)参考文献.................................................................. 错误!未定义书签。
引言微型计算机简称微机,由于具备人脑某些功能,所有又叫做微机。
是由大规模集成电路组成的、体积较小的电子计算机。
它是以微处理器为基础,配以内存储器及输入输出接口电路和相应的辅助电路构成的裸机。
把微型计算机集成在一个芯片上即构成单片微型计算机。
学习微机原理与接口技术,主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成部分,而其中很大一块就是汇编语言的学习。
汇编语言是面向机器的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
用汇编语言编写的程序由于目标程序占用内存少,运行速度快,它有着高级语言不可替代的用途。
因此,学习汇编语言是很必要的,通过学习汇编语言可以体会它的作用。
通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识联系实际,进一步学习微机原理与接口技术的相关知识,为以后深入学习打下良好的基础。
1总体方案论证1.1功能分析此次课程设计的要求为,设计微型计算机最小系统,实现跑马灯的模拟显示功能。
单片机花样走马灯课程设计
花样走马灯一设计目的1.掌握单片机系统设计思路和基本步骤。
2.熟悉Keil C51高级语言集成开发环境。
3.熟练使用基于proteus的单片机系统仿真软件。
4.学会在ISIS 7 Professional下绘制电路原理图。
5.学会 Proteus VSM与uvision3 IDE的联调过程。
二设计要求实现单片机8051设计控制P1口的8个LED灯成花样走马灯。
连续实现以下四种效果:1.单灯左移2.单灯右移3.单灯逐个点亮接着逐个熄灭4.两边向中间逐个点亮接着中间向两边逐个熄灭三总体设计单片机应用系统的研制步骤一般分为:总体设计、硬件电路的构思设计、软件的编制和仿真调试四个阶段。
1.硬件电路设计根据设计要求所需的元器件为AT89C51单片机和LED灯。
该硬件部分由朱艳兵完成,故不再做详细介绍。
2.系统软件分析设计原理:规定灯亮时控制该灯的位设置为低电平,灯灭时该位设置为高电平,为了清楚的看到灯亮时的效果,要设置相应的延时函数,通过数组的引用和函数的调用来实现花样走马灯的设计。
(1)要使走马灯实现单灯左移、单灯右移、单灯逐个点亮接着逐个熄灭、两边向中间逐个点亮接着中间向两边逐个熄灭这四种效果。
(2)可根据上述的规定来设置控制8个LED灯的P1口各个引脚的电平来控制LED灯亮的效果。
①单灯左移:可将P1.0~P1.7各个引脚逐个设置为低电平,即该引脚控制的灯亮时该位就为低电平,即可设置一个数组名为table的数组来存放灯亮时的P1口各个引脚的电平。
②单灯右移:即P1.7先亮,按照P1.7~P1.0的顺序向右移,即该灯亮的时候该位就设置为低电平,反之为高电平,各引脚的电平在数组aa中存放,引用数组aa就可实现单灯右移。
③单灯逐个点亮接着逐个熄灭:可按照P1.0~P1.7的顺序点亮再按照P1.7~P1.0的顺序熄灭,实现原理同单灯左移和单灯右移,各个引脚的电平在数组bb,cc中存放。
④两边向中间逐个点亮接着中间向两边逐个熄灭:即先将P1.0和P1.7同时设置为低电平,全部点亮后再将P1.3和P1.4设置为高电平,依次直至全部熄灭,各个引脚的电平在数组dd中存放。
基于 Proteus 软件的单片机实验室建设方案跑马灯 万年历课程设计
目录摘要 (Ⅰ)ABSTRACT ..................................................................................................... I I 课程说明 . (1)1.1 国内单片机实验室建设发展综述 (1)1.2 单片机仿真软件综述 (2)1.3 课程设计任务任务 (4)方案设计 (4)2.1 硬件配置方案 (4)2.2 软件配置方案 (5)2.3 Proteus 实验室完成实验内容 (8)基于PROTUES的的仿真实验 (10)3.1、基础性实验------跑马灯设计 (10)3.1.1跑马灯的硬件设计 (10)3.1.2跑马灯的软件设计 (14)3. 2.1万年历设计 (19)3.2.2 调试与仿真 (20)参考文摘 (22)总结 (24)附录 (25)跑马灯的程序清单 (25)万年历的程序清单 (25)摘要微机系统是大二学的课程,通过这门课学会了汇编语言。
微机系统的核心是硬件仿真,硬件方正的重点是单片机。
单片机的种类繁多,在我们学校由于实验室的限制,没有条件在包括所有种类的单片机仿真设备。
本文提出基于Proteus 软件的单片机实验室建设方案,它能很好的解决上述问题。
数字单片机实验室是采用Proteus 和Keil 仿真软件为核心来构建的。
该数字实验室能完成中断、定时、单片机扩展、串行口通信和A/D 转换等教学实验。
并给出相应的小实例说明Proteus的基本使用方法、仿真实验的一般流程,并在此基础上实现复杂的Proteus仿真实验项目,如跑马灯仿真实验和万年历仿真实验。
该方案以软件为核心,通过配置有限的硬件设备,很好地解决了传统单片机实验室资金和设备维护问题,我们通过仿真实验,可以熟悉单片机系统的开发方法,即使不真正接触单片机或者相应的芯片,也能够熟悉各种芯片,并且对进一步培养自己的综合分析能力、排除故障能力和开发、创新能力具有重要的意义。
单片机跑马灯课程设计
第一章概论随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰已经成为一种时尚。
但目前市场上各式样的 LED 彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
本产品不仅具有电路简单,造价便宜,功耗低等优点,还有多种亮灯花样。
而且可以通过修改源程序中延迟程序的参数来改变亮灯速度和频率,还可以通过修改表中的数据来改变亮灯的方式,这便大大提高了产品的性能与灵活性,使产品不会局限于单一的功能而限制产品的适用范围。
课程设计是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练,是培养学生工程意识和创新能力的重要环节。
进一步巩固和加深“单片机”课程的基本知识,了解单片机设计知识在实际中的应用。
综合运用“单片机”课程和先修课程的理论及生产实际知识去分析和解决电路设计问题,进行单片机电路设计的训练。
学习单片机设计电路的一般方法,了解和掌握单片机电路的设计过程和进行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是总体电路设计能力。
通过计算和绘图,学会运用标准、规范和查阅有关技术资料等,培养单片机电路设计的基本技能。
第二章设计方案2.1、设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2.2、设计要求以MCS51单片机为核心,辅以外围接口电路,设计一个花样LED闪烁彩灯,使彩灯按事先编好的流程不断闪烁,并有不同种闪烁花样。
LED灯管可以使用共阳极,单片机芯片可采用AT89C52。
微机原理(基于PROTEUS的跑马灯系统设计及仿真)
dl3:decbx
jnz dl3
deccx
jnz dl4
jmp ledflash
exit:
movnum,0
jmp here
ledflash endp
csegends
endstart
4程序调试说明
(1)、内存空间分配,汇编语言的重要特点之一是能够直接利用机器指令或者伪指令为数据或者代码程序分配内存空间,86系列(如8086微处理器)的存储器结构是分段的,有代码段,数据段,堆栈段或附加段,在程序设计时要充分考虑分段结构,要执行的程序段应设在当前段(活动段)中;分配内存空间:直接在proteus里面将8086CPU的internal memory size设置成一个足够用的空间大小,如0x1000,默认的空间大小是0x00000,如不改则仿真不成功。
[SPICE]error---too many iterations without coFra bibliotekvergence
在仿真过程中,出现以上两行的错误,太多的迭代没有收敛性,和某个汇编语言在编码过程中的地址不正确,经过排查程序去除无用代码,proteus不再报错。
(3)、8255A隐藏引脚问题,需要设置芯片Hidden Pins里的GND改为VSS,VCC改为VDD。
如图所示我们利用启动按钮作为输入信号,通过8255A端口扩展芯片,调节输出端口的电平变化,来控制共阳极的LED灯的亮与灭,实现跑马灯不同的花样变化。
图跑马灯电路图
1.2.1锁存控制电路
锁存控制电路电路如图所示,在微控制器单元(MCU)中,寄存器是十分重要的资源。寄存器的主要作用是快速寄存算术逻辑运算单元(ALU)运算过程中的数据,其锁存功能利用74LS273来实现,74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。
微机原理(基于PROTEUS的跑马灯系统设计及仿真)
目录引言 (1)1总体方案论证 (2)1.1功能分析 (2)1.2系统连接图设计 (2)1.2.1锁存控制电路 (5)1.2.2可编程并行通信接口芯片8255A (6)2程序流程图设计及其说明 (9)3关键程序段落说明 (11)3.1数据段定义 (11)3.2程序初始化 (11)3.3芯片初始化 (12)3.4初始LED亮灭状态 (12)3.5检测按键开关子程序 (12)3.6延时程序片段 (14)3.7灯光变换控制 (15)4程序调试说明 (16)5结果记录及分析 (17)心得体会 (19)参考文献 (20)引言微型计算机简称微机,由于具备人脑某些功能,所有又叫做微机。
是由大规模集成电路组成的、体积较小的电子计算机。
它是以微处理器为基础,配以内存储器及输入输出接口电路和相应的辅助电路构成的裸机。
把微型计算机集成在一个芯片上即构成单片微型计算机。
学习微机原理与接口技术,主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成部分,而其中很大一块就是汇编语言的学习。
汇编语言是面向机器的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
用汇编语言编写的程序由于目标程序占用内存少,运行速度快,它有着高级语言不可替代的用途。
因此,学习汇编语言是很必要的,通过学习汇编语言可以体会它的作用。
通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识联系实际,进一步学习微机原理与接口技术的相关知识,为以后深入学习打下良好的基础。
1总体方案论证1.1功能分析此次课程设计的要求为,设计微型计算机最小系统,实现跑马灯的模拟显示功能。
具体要求为:(1)、输入设备三个启动按钮、一个停止按钮,输出设备为八个跑马灯;(2)、三个启动按钮对应三种跑马灯显示效果,按下任意一个启动按钮,跑马灯显示对应的效果,按下停止按钮则跑马灯全部熄灭。
由上分析可知,我们的硬件的电路需要另行搭建,电路中需包含四个按钮和八个跑马灯以及相关芯片,既有输入设备又有输出设备,经过分析可以使用芯片8255A来实现输入与输出,再加上锁存地址芯片74LS273、译码芯片74LS154以及相关门电路即可构成本设计的硬件电路基础。
61单片机课程设计可以调控的跑马灯
61-单片机课程设计-可以调控的跑马灯1000字设计目的本课程设计旨在通过单片机编程实现一个可调控的跑马灯,加深学生对单片机概念、程序设计、输入输出等方面的理解,提高学生的程序设计能力。
设计实验材料1. 基于8051单片机的电路板2. LED灯3. 电阻器4. 按钮5. 电源(可使用9V电池或其他稳定的直流电源)实验过程1. 搭建基于8051单片机的电路板,连接LED灯和电阻器2. 编写跑马灯程序,其中需要实现以下功能:(1)通过按下按钮,控制灯的亮灭(2)通过另一个按钮,调整灯的亮度(3)通过另一个按钮,调整灯的闪烁频率3. 烧录程序到单片机中4. 连接电源,测试跑马灯的各项功能程序设计本跑马灯程序采用C语言编写,主要实现以下几个功能:1. 初始化LED灯、按键和定时器等相关IO口2. 判断按键被按下,执行相应的操作3. 调整LED灯的亮灭状态,并通过调整亮度和闪烁频率实现可调控功能程序流程:1. 初始化相关IO口和定时器2. 进入主循环3. 判断按钮是否被按下4. 若开始按钮被按下,则设置灯的状态为ON5. 若结束按钮被按下,则设置灯的状态为OFF6. 若调整亮度按钮被按下,则调整PWM占空比,实现亮度调整7. 若调整闪烁频率按钮被按下,则调整定时器的周期,实现闪烁频率调整8. 延时一段时间9. 回到主循环程序代码:```#include <reg52.h>#define LED P1 // LED灯#define PWM P2 // 调整亮度sbit startButton = P3^0; // 开始按钮sbit endButton = P3^1; // 结束按钮sbit pwmButton = P3^2; // 调整亮度按钮sbit freqButton = P3^3; // 调整闪烁频率按钮void timer0_init() // 初始化定时器{TMOD = 0x01;TH0 = 0x3C;TL0 = 0xB0;TR0 = 1;}void pwm_init() // 初始化PWM {TMOD |= 0x02;TL1 = 0x00;TH1 = 0xFD;ET1 = 0;TR1 = 1;}void main(){unsigned long cnt = 0;unsigned char pwm_value = 0; LED = 0x00;PWM = 0x00;timer0_init();pwm_init();while (1){if (startButton == 0){LED = 0x01;}else if (endButton == 0){LED = 0x00;}else if (pwmButton == 0){pwm_value++;if (pwm_value >= 255){pwm_value = 0;}CCAP0H = pwm_value;}else if (freqButton == 0){cnt++;if (cnt >= 1000){cnt = 0;}TH0 = (65536 - 1000) / 256; TL0 = (65536 - 1000) % 256; }while (TF0 == 0); // 等待定时器 TF0 = 0;}}```实验结果将程序烧录到单片机后,连接电源,按下不同的按钮,可调控跑马灯的亮度和闪烁频率。
PROTEUS__跑马灯__单片机课程设计
三、电路设计及功能说明,硬件原理框图及电路图(包括接口芯片简介);本次设计采用AT89C52芯片驱动可编程接口芯片8255的扩展来实现LED灯的多种显示方式。
让AT89C52芯片的P0口与8255芯片的三态双向数据总线D0~D7连接,实现数据传送。
当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
8255的地址选择线A1、A0分别与AT89C52的P2.7和P2.6连接,通过定义不同的地址来定义8255芯片PA口和PB口的工作方式。
读写命令线分别与单片机的读写命令线相连,片选线直接接地,复位线RESET接单片机的P2.5。
同时PA 口与8个LED灯顺序连接。
PB口与8个LED灯逆序连接,通过按键控制可以选择不同的运行模式,实现多种跑马灯的运行模式。
硬件原理框图电路图接口芯片简介(1)AT89C52AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
单片机整套实验及程序(交通灯,跑马灯等)
单片机整套实验及程序(交通灯,跑马灯等)实验1 跑马灯实验一实验目的初步学会Proteus ISIS和 uVision2单片机集成开发环境的使用初步掌握采用汇编语言与C语言开发单片机系统的程序结构掌握80C51单片机通用IO口的使用掌握单片机内部定时计数器的使用及编程方法以及中断处理程序的编写方法二实验设备及器件硬件PC机HNIST-1型单片机实验系统软件Proteus ISIS单片机仿真环境uVision2单片机集成开发环境三实验内容编写一段程序采用P1口作为控制端口使与P1口相接的四个发光二极管D1D2D3D4按照一定的方式点亮如点亮方式为先点亮D1延时一段时间再顺序点亮D2D4然后又是D4D1同时只能有一个灯亮然后每隔一段时间一次使相邻两个灯亮三个灯亮四个灯亮最后闪烁三次接着循环变化基于Proteus ISIS仿真环境完成上述功能的仿真基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行四实验原理图图31 跑马灯实验电路原理图电路原理图如上图31所示AT89S52的P10P13控制4个发光二极管发光二极管按照一定次序发光相邻发光二极管的发光时间间隔可以通过定时器控制还可以通过软件延时实现五软件流程图与参考程序主程序流程图如下参考程序includeincludedefine uchar unsigned chardefine uint unsigned intuchar aanumspeedflaguchar code table[] 0x0e0x0d0x0b0x07uchar code table1[] 0x0a0x050x090x06uchar codetable2[] 0x0c0x090x030x080x010x0e0x0c0x080x00void delay uint z 延时函数uint xuchar yfor x zx 0x--for y 200y 0y--void init 条件初始化函数flag 0speed 10控制跑马灯流水速度TMOD 0x01中断方式TH0 65535-50000 256TL0 65536-50000 256初值EA 1打开总中断ET0 1打开外中断0TR0 1void maininit 调用初始化函数while 1if flagdelay 2000 调用延时函数for num 0num 4num 从左至右间隔一个依次闪烁P1 table[num]delay 2000for num 3num 0num-- 从左至右间隔一个依次闪烁P1 table[num]delay 2000for num 0num 4num 从左至右间隔两个依次闪烁P1 table1[num]delay 2000for num 3num 0num-- 从左至右间隔两个依次闪烁P1 table1[num]delay 2000for num 0num 6num 两个三个四个跑马灯依次闪烁P1 table2[num]delay 2000for num 0num 5num 闪烁5次P1 0xff全暗delay 2000P1 0X00全亮delay 2000speed speed-3变速if speed 4speed 10void timer0 interrupt 1中断函数TH0 65535-50000 256TL0 65536-50000 256aaif aa speedaa 0flag 1六实验思考题请用汇编指令完成本实验内容深刻理解汇编语言程序设计结构在本实验中IO口作为输出口使用如果把IO口的某些口线作为输入口使用时如何获得输入引脚状态请举例说明在画软件流图时各种不同形式方框意义是否相同请举例示之请简要叙述中断服务程序功能并画出其流程图在采用IO口作为输出口时要考虑哪些因素如果负载变化如何设计单片机与负载之间的接口电路实验2 交通灯实验一实验目的进一步掌握Proteus ISIS和 uVision2单片机集成开发环境的使用进一步掌握单片机内部定时计数器的使用及编程方法以及中断处理程序的编写方法掌握单片机的IO口编程使用二实验设备及器件硬件PC机HNIST-1型单片机实验系统USB下载线一根连接线若干软件Proteus ISIS单片机仿真环境uVision2单片机集成开发环境三实验内容编写一段程序实现用单片机的IO口控制12个发光二极管四组每组有红绿蓝三个发光二极管使发光二极管按照一定的规则模拟交通灯功能基于Proteus ISIS仿真环境完成上述功能的仿真基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行四实验原理图32 交通灯实验原理图用单片机的IO口控制4组红绿蓝共12个发光二极管使发光二极管按照一定规则与次序发光与闪亮以实现模拟交通灯的功能假设初始状态为南北通行状态南北绿灯东西红灯25s后转为过度状态南北黄灯东西红灯5s再转为东西通行状态东西绿灯南北红灯25s再转为过渡状态东西黄灯南北红灯 5s 然后循环往复硬件原理图如上图32所示由于发光二极管的导通电压为17V所以在电源与二极管之间加一个电阻目的是保护二极管实验中利用定时计数器实现1S的定时然后在此基础上实现所需要的定时时间五软件流程图与参考源程序软件设计思想在编程时我们一般把一个独立的功能设计成一个子程序或者说函数对于不同的设计者而言对软件功能的划分角度不同对应的函数功能也存在差异图33 软件结构图参考源程序如下include 头文件define uint unsigned intdefine uchar unsigned char定义下方便使用sbit kong P14位声明数码管锁存控制端uchar code table[] 0xfc0x600xda0xf20x660xb60xbe0xe00xfe0xf6 数字0-9编码uint tttemp 0延时函数void delay uint xuchar ikfor i 0i xifor k 0k 100k初始化函数void inittemp 0tt 0TMOD 0x01定时器工作方式TH0 65536-50000 256TL0 65536-50000 256装初值EA 1开总中断ET0 1开定时器中断TR0 1启动定时器中断数码管显示函数void display uint x1uchar icuint cod[4]cod[3] x11000cod[2] x11000100cod[1] x1100010010cod[0] x110 求个数码管的值c 0x01for i 0i 4iP1 c数码管的显示选择P0 table[cod[i]]送要显示的值kong 1打开锁存c c 1左移一位选择下一个数码管kong 0关闭锁存delay 10交通灯驱动函数void jiaotonguint t 0if temp 0temp 60给temp装值也即是交通灯循环一次要的时间if temp 30if temp 35display temp-30P2 0Xf5南北黄灯东西红灯5selsedisplay temp-30P2 0xdd 南北绿灯东西红灯25selseif temp 5display tempP2 0xee 东西黄灯南北红灯 5selsedisplay tempP2 0xeb 东西绿灯南北红灯25s if tt 20 判断时间是否过了1stt 0temp--倒计数主函数void maininit 初始化函数调用while 1 主循环jiaotong 交通灯函数调用中断函数void timer0 interrupt 1TH0 65536-50000 256TL0 65536-50000 256 重新装初值tt六实验思考题如何实现扩充功能实现救护车优先通过十字路口请叙述硬件设计与软件设计原理在利用单片机片内定时器实现精确定时时是否会产生误差如果存在误差请分析误差产生原因以及减小误差方法实验3 数码管动态显示实验一实验目的掌握数码管静态显示与动态显示原理以及数码管与单片机的接口原理学会利用单片机的IO口实现数码管的动态显示二实验仪器硬件PC机HNIST-1型单片机实验系统软件Proteus ISIS单片机仿真环境uVision2单片机集成开发环境三实验内容编写一段程序采用P1口某些口线作为4位数码管的位控制端采用P0口输出段码实现4位数码管的测试让4位数码管同时输出0~F编写程序让4位数码管循环显示1234即让第一位显示1然后第一位熄灭第二位显示2四实验原理使用LED数码显示器时要注意区分数码管两种不同的接法共阴LED和共阳LED为了显示数字或字符必须对数字或字符进行编码七段数码管加上一个小数点共计8段因此为LED显示器提供的编码正好是一个字节八段LED数码管显示器原理与结构如下图34所示对于共阴接法要使某位LED显示相应数码则使LED的对应段点亮则对应控制电平为高如要显示数字0如果a~dp分别受P07~P00控制则LED的abcdef需点亮对应驱动电平为1其他为0则对应数码0的段码为FCH共阴极共阳极图34 八段LED数码管原理与结构图LED显示器工作方式有两种静态显示方式和动态显示方式静态显示的特点是每个数码管的段码必须需要一个数据锁存器锁存当送入字形码后显示字形可一直保持直到送入新字形码为止显示亮度较强而动态显示是多个LED轮流显示但由于人眼的视觉惰性使人感觉各LED同时显示不同字符表31 本实验硬件所采用共阴极数码管码表数字数码管代码数字数码管代码数字数码管代码0 0xfc6 0xbe C 0x9c 1 0x607 0xe0 d 0x7a 20xda 8 0xfe E 0x9e 3 0xf2 9 0xf6 F 0x8e4 0x66 A 0xee 无显示 0x005 0xb6 b 0x3e一般而言为了减少硬件开销降低成本单片机系统通常采用LED动态扫描显示方式本实验电路原理图如下图35所示图35 LED动态显示电路原理图五部分软件流程图与参考程序●流程图否是图36 软件流程图●源程序include 包含头文件define uchar unsigned chardefine uint unsigned int 宏定义sbit dula P14 端口定义uchar numyuint x 定义变量ucharcode table[] 0xfc0x600xda0xf20x660xb60xbe0xe00xfe 0xf60xee0x3e0x9c0x7a0x9e0x8e 0到F的数码管管码主函数void mainwhile 1 进入大循环P1 P1|0x1ffor num 0num 16num 判断是否到Fdula 1开启锁存器P0 table[num]送数码管管码dula 0关闭锁存器for x 2000x 0x--for y 220y 0y-- 延时六实验思考题●本实验源程序是让4位LED同时显示相同的内容完成其测试请编写程序让4位LED轮流显示从0~F的数码即让第一位数码管显示0后接着第二位数码管显示0一个轮回结束后让第一个显示1请设计一个单片机控制的4位数码管的静态显示电路解释其工作原理如何采用本实验电路以及单片机片内定时器实现一个简易时钟功能精度较低说明实现方式实验4 88 LED点阵实验一实验目的了解LED点阵显示原理掌握LED点阵显示器件与单片机的接口电路设计原理掌握LED显示器件显示驱动程序设计方法能编写LED显示驱动程序二实验设备及器件硬件PC机HNIST-1型单片机实验系统软件Proteus ISIS单片机仿真环境uVision2单片机集成开发环境根据给定实验设备选用相关模块完成LED点阵显示实验系统的硬件平台构建根据所构建硬件平台编程实现点阵循环显示数字09四实验原理芯片介绍174LS138 3 线-8 线译码器原理当一个选通端G1为高电平另两个选通端G2A和G2B为低电平时可将地址端ABC的二进制编码在一个对应的输出端以低电平译出Y0-Y7为输出端另外74LS138真值表请参看相关资料274LS595串入并出8位输出移位锁存器以下为其引脚功能说明QA--QH 八位并行输出端可以直接控制数码管的8个段或者点阵LED的列线QH 级联输出端我将它接下一个595的SI端SER 串行数据输入端SCLR 10脚低电平时将移位寄存器的数据清零通常我将它接Vcc SCK 11脚上升沿时数据寄存器的数据移位QA-- QB-- QC-- -- QH下降沿移位寄存器数据不变脉冲宽度5V时大于几十纳秒就行了通常都选微秒级RCK 12脚上升沿时移位寄存器的数据进入数据存储寄存器下降沿时存储寄存器数据不变通常我将RCK置为低点平当移位结束后在RCK端产生一个正脉冲5V时大于几十纳秒就行了通常都选微秒级更新显示数据G 13脚高电平时禁止输出高阻态另外74LS595操作时序请参考相关资料请根据操作时序叙述操作过程如下图37所示图37 点阵LED实验电路原理图五软件流程图与参考程序软件流程图首选确定所需要的子程序子程序主要包括一是74LS595芯片驱动程序完成串入并出控制LED点阵列的驱动一个是驱动74LS138芯片的实现LED点阵行的驱动还有一个是延时函数读者可以根据相应芯片工作原理完成其驱动流程图绘制对于要显示的字符09的循环显示显示间隔采用定时器实现此时涉及到定时器中断服务子程序的编写另外LED点阵列驱动采用的是动态显示原理也需要定时器定时对于主程序而言就很简单了主要是完成一些初始化工作源程序include 头文件includedefine uchar unsigned char 宏定义define uint unsigned intsbit SCK P00 芯片端口连线定义sbit RCK P01sbit SER P02sbit D138_A P05sbit D138_B P06sbit D138_C P07uchar code hang[8] 12345678 点阵行数组定义uchar code lie[10][8] 数字09列代码0x000x7c0x820x820x820x7c0x000x00 0 0x000x000x840xfe0x800x000x000x00 10x000xe40x920x920x920x8c0x000x00 20x000x440x920x920x920x6c0x000x00 30x000x100x180x140xfe0x100x100x00 40x000x4e0x8a0x8a0x8a0x720x000x00 50x000x7c0x920x920x920x640x000x00 60x000x020x020xfa0x060x020x000x00 70x000x6c0x920x920x920x6c0x000x00 80x000x4c0x920x920x920x7c0x000x00 9uint timecountuchar abvoid Delay uchar time 延时函数uchar ijfor i timei 0i--for j 320j 0j--void Set595 unsigned char Data 74LS595驱动函数unsigned char ifor i 0 i 8 iSCK 0 先置为低SER Data 0x80 取数据的最高位Data 1 将数据的次高位移到最高位为下一次取数据做准备SCK 1 再置为高产生移位时钟上升沿上升沿时数据寄存器的数据移位RCK 0_nop_RCK 1void Set138 unsigned char Data 138芯片二进制译码选择行输出switch Datacase 0D138_A 0D138_B 0D138_C 0Delay 1 break case 1D138_A 1D138_B 0D138_C 0Delay 1 break case 2D138_A 0D138_B 1D138_C 0Delay 1 break case 3D138_A 1D138_B 1D138_C 0Delay 1 break case 4D138_A 0D138_B 0D138_C 1Delay 1 breakcase 5D138_A 1D138_B 0D138_C 1Delay 1 breakcase 6D138_A 0D138_B 1D138_C 1Delay 1 breakcase 7D138_A 1D138_B 1D138_C 1Delay 1 breakvoid main voidTMOD 0x01 设置定时器的工作方式TH0 65536-3000 256TL0 65536-3000 256 设置初值每次定时中断3msEA 1 开启总中断ET0 1 开启定时器0中断TR0 1 启动定时器P0 0x00while 1void extern0 interrupt 1TH0 65536-3000 256TL0 65536-3000 256Set138 hang[a]Set595 lie[b][a]_nop__nop_aif a 8a 0timecountif timecount 330 每次到了330次中断后又重新开始计时每次差不多1s即每隔1s显示一个数字timecount 0bif b 10b 0六实验思考题可否不用这两个芯片直接用IO口来控制点阵的行与列来达到我们的目的并分析这样做的优缺点查阅资料比较74LS164与74LS595这两个串入并出芯片的特点若显示的数字出现左右倒相上下倒位请分析可能的原因以及解决的方法88 LED点阵显示器采用动态显示原理分析其驱动工作过程实验5 矩阵式键盘显示一实验目的掌握矩阵式键盘的工作原理以及与单片机的接口方法掌握矩阵式键盘的按键识别方法扫描法与线反转法并能够编写相应键盘处理程序实现按键的识别二实验仪器硬件PC机HNIST-1型单片机实验系统软件Proteus ISIS单片机仿真环境uVision2单片机集成开发环境三实验内容编写程序读取矩阵式键盘按键键码并通过数码管显示显示要求四个数码管同时显示同一字符1按09号键显示数字092按AF号键显示字母AF四实验原理单片机的P2口作为矩阵式键盘扫描IO口对键盘进行逐行扫描若检测到按键则将得到的扫描结果返回给CPU转换成相应的数码管显示代码通过数码管显示子程序在数码管上显示按键实验原理如下图38所示图38 键盘扫描电路原理图五软件流程图与参考程序流程图图39 键盘扫描显示主程序流程图图310 键盘扫描程序流程图参考源程序includedefine uint unsigned int define uchar unsigned char uchar numtempiuchar code table[]0xfc0x600xda0xf20x660xb60xbe0xe00xfe0xf60xee0x3e0x9c0x7a0x9e0x8e0uchar code table1[]0xf70xfb0xfd0xfesbit ale P14void display uchar aa uchar keyscan延时子程序void delay uint zuint xyfor x zx 0x--for y 110y 0y--void mainnum 17while 1display keyscan数码管显示void display uchar aaale 1P0 table[aa-1]ale 0键盘扫描uchar keyscanfor i 1i 5iP2 table1[i-1]temp P2temp temp0xf0while temp 0xf0delay 5temp P2switch tempcase 0xe7num 1breakcase 0xd7num 2breakcase 0xb7num 3breakcase 0x77num 4breakcase 0xebnum 5breakcase 0xdbnum 6breakcase 0xbbnum 7 breakcase 0x7bnum 8breakcase 0xednum 9breakcase 0xddnum 10breakcase 0xbdnum 11breakcase 0x7dnum 12breakcase 0xeenum 13breakcase 0xdenum 14breakcase 0xbenum 15breakcase 0x7enum 16breakwhile temp 0xf0temp P2temp temp0xf0return num六实验思考题如何实现键盘信号的可靠采集请叙述原理并请简要说明如果系统软件采用前后台的程序结构采集按键信号安排在后台程序主程序和安排在定时中断服务程序中有什么差异请简要叙述如何处理按键连击实验6 马达调速控制一实验目的掌握步进电机的工作原理控制方式和调速方法以及其与单片机的接口和驱动编程方法掌握直流电机的开启控制与转动速度控制方法二实验仪器硬件PC机HNIST-1型单片机实验系统软件 uVision2单片机集成开发环境三实验内容与原理实验内容编写程序通过单片机的P1口控制步进电机的控制端使其按照一定的控制方式进行转动实验原理◆步进电机的控制单片机的P1口输出脉冲信号驱动步进电机旋转引入开关实现对步进电机马达的启停转向和速度控制旋转方向控制步进电机以四相四拍方式工作若按次序通电为正转按次序通电为反转旋转速度控制每改变1次节拍步进电机旋转18度调节脉冲的周期就可以控制步进电机的转速图311 步进电机控制原理图◆直流电机的控制直流电机的转动由DAC0800来控制当DAC0800的输出为高电平时直流电机开始转动当DAC0800的输出为低电平时直流电机停止转动图312 直流电机控制原理图四实验步骤1连线编程步进电机的插头接J3 BABD接89S52的P11P14开关K8接P17K1-K7接8051的P10-P16DAC0800的B0-B7口接P2DAC0800输出接直流电机的输入调试程序观察步进电机运行情况启停开关K1步进电机开始转动是正转2圈反转2圈的循环运行启停开关K8直流电机开启步进电机停止调速开关K7K2供6转速调速时开关打开-关闭实现一次调速K2K4K6调速时步进电机是正转K3K5K7调速时步进电机是反转五软件流程图与参考程序●流程图图313 软件流程图●参考源程序本步进电机步进角为 75度一圈 360 度需要 48 个脉冲完成程序名mainc功能步进电机正转反转单位湖南理工物电系创新基地All rights reserved开始时间com结束时间com版本信息备注AABB口分别接单片机的P11P12P13P14备注P0口接key1-key8八个开关并空制着八个转速备注控制直流电机的是DAC0800备注B0-B7接的是P2口输出接的是直流电机的输入includedefine uchar unsigned char 宏定义方便使用define uint unsigned intvoid motor_move uint 函数的声明void motor_back uintvoid delay uintuint keyscanvoid zhiliuuchar a 0key 0key1temp 变量定义正转次序 Aa组--aB组--Bb组--bA组即一个脉冲正转 75 度倒转次序 bA组--Aa组--aB组--Bb组即一个脉冲正转 75 度开启开关时步进电机停止工作关闭开关时步进电机调好转速转动const uchar time_move[] 0xe70xed0xf90xf3 正转时序 75度const uchar time_back[] 0xe70xf30xf90xed 倒转时序 75度const uchar time[] 051020406080100 定义不同的时速uint code table[]0x000xff 给直流电机的信号主程序void mainwhile 1P2 0x00key keyscan 接受开关信号if key 1motor_move 2 正转2圈可自行调转圈数delay 100motor_back 2 反转2圈可自行调转圈数delay 100key keyscan 接受开关信号else if key 8 当开关打开的是第八个时直流电机启动步进电机停止zhiliuelse if key 0 key 8 判断是否有开关信号key keyscan 再次判断开关信号key1 key0x11 判断是否为偶数if key1 0x00 如果是偶数就正转motor_move 1 正转2圈可自行调转圈数else 否则就反转motor_back 1 反转2圈可自行调转圈正转n圈每转一步75度void motor_move uint nuchar iuint jfor j 0j 12njfor i 0i 4iP1 0xe1 驱动ds75452n芯片 P1 time_move[i]delay time[key]倒转n圈每转一步75度void motor_back uint nuchar iuint jfor j 0j 12njfor i 0i 4iP1 0xe1 驱动ds75452n芯片P1 time_back[i]delay time[key]延时t毫秒110592MHz时钟延时约05msvoid delay uint tuint kwhile t--for k 0 k 60 kuint keyscan 接受开关信号并编码P0 0xfftemp P0temp temp0xffwhile temp 0x00 再次判断是否打开开关delay 1temp P0temp temp0xffswitch temp 判断开关信号并将转速变量赋值case 0x01 a 1 breakcase 0x02 a 2 breakcase 0x04 a 3 breakcase 0x08 a 4 breakcase 0x10 a 5 breakcase 0x20 a 6 breakcase 0x40 a 7 breakcase 0x80 a 8 breakwhile temp 0x00 判断开关是否关闭temp P0temp temp0xffreturn a 返回值可调转速void zhiliu 直流电机的开启与停止uchar ifor i 0i 2iP2 table[i]delay 1000P2 0x00 关闭直流电机六实验思考题●怎样克服步进电机及直流电机和负载的惯性●说明如何控制直流电机的正反转用程序实现之实验7 串行模数转换器实验一实验目的掌握串行模数转换器TLC549芯片性能以及AD转换器的选择准则利用芯片技术手册掌握TLC549与单片机的接口方法掌握串行ADC的驱动程序设计方法二实验仪器硬件PC机HNIST-1型单片机实验系统软件 uVision2单片机集成开发环境三实验内容搭建串行模数转换平台编写程序通过单片机的IO口控制串行AD转换芯片TLC549实现模拟电压信号的采集调节电位器调整TLC549的输入模拟参考电压调节模数转换模块中的电位器运行程序实现AD转换和模拟电压信号的采集编写液晶的程序使转换得到的数据送入液晶显示四实验原理TLC549介绍及其接口电路TLC549是一款高性能的8位串行AD转换器它以8位开关电容逐次逼近的方法实现AD转换本实验采用该芯片采集模拟电压量然后将采集到的模拟量转换为数字量后送至液晶显示其数值TLC549在该实验系统中的电路连接如下图314所示图314 TLC549与单片机接口电路图315 TLC549引脚示意图TLC549通过J5_1端口采集模拟量由于TLC549是采用三线串行接口方式与单片机连接的所以通过J5_3端口将CLKD0CS与单片机的IO口连接来控制AD转换然后将转换后的量经处理送液晶显示接口电路说明1.用连接线连接模拟量产生模块中的V0口和模数转换模块中的IN接口2.用连接线将模数转换模块的CLKD0CS分别接至单片机的P36P35P343.用连接线将液晶模块的ERWR分别接至单片机的P22P21P20并将D0D7端口对应接入单片机的P00P07口4.调节模数转换模块中的电位器使TLC549的输入参考电压为5V5.将编写好的程序烧入单片机运行调节模拟量产生模块中的W1旋钮便可以在液晶上看到对应的电压值大小五软件流程图与参考程序信号流图图316 信号流图参考源程序文件名tlc549驱动程序功能tlc549采集模拟电压并于液晶上显示大小作者刘烈报单位湖南理工物电系创新基地All rights reseverd开始时间comincludeincludedefine uchar unsigned char define uint unsigned int define ulong unsigned long uchar getdataPSBuchar code table0[] TLC549 uchar code table[] 输入电压TLC549配制sbit tlc_clk P36sbit tlc_data P35sbit tlc_cs P34液晶的配置define DATABUS P0sbit RS_LCD P20sbit RW_LCD P21sbit E_LCD P22函数初始化void delay uint zvoid Delay1us ucharvoid initvoid write_com ucharvoid write_data ucharvoid setPosition uchar ucharvoid writeString uchar strvoid Tlc_549 voiduchar read_tlc voidvoid maininitsetPosition 0 0 设置第一行显示地址writeString table0while 1setPosition 1 0 设置输入电压显示地址 writeString tableTlc_549void delay uint zuint xyfor x zx 0x--for y 110y 0y--void Delay1us uchar iwhile --i_nop_ _nop_void initPSB 1write_com 0x30 基本指令扩充指令为34Hdelay 5write_com 0x0c 光标是否显示语句delay 5write_com 0x01 清屏delay 5写命令void write_com uchar comRS_LCD 0RW_LCD 0E_LCD 0delay 1DATABUS comdelay 1E_LCD 1delay 1E_LCD 0写数据void write_data uchar dateRS_LCD 1RW_LCD 0E_LCD 1delay 1DATABUS datedelay 1E_LCD 1delay 1E_LCD 0设置显示开始地址void setPosition uchar x uchar yuchar pswitch x4case 0 p 0x80 break 第一行开始地址 case 1 p 0x90 break 第二行case 2 p 0x88 break 第三行case 3 p 0x98 break 第四行p ywrite_com p写入字符串数据void writeString uchar struchar i 0while str[i] \0write_data str[i]delay 400uchar read_tlc voiduchar ijktlc_clk 0tlc_cs 0for i 0i 8ij j 1k tlc_data 共移出8位数据 tlc_clk 1tlc_clk 0j jktlc_cs 1return j 返回转换结果void Tlc_549 voidulong tempgetdatagex1x2uchar iwhile 1读20次取平均值getdata 0for i 0i 20igetdata read_tlc getdata 20电压显示处理temp ulong getdata500 256 将十六进制转换为十进制ge temp 100 个位x1 temp 100 10 第一位小数x2 temp 100 10 第二位小数write_com 0x95 显示数据的地址地write_data 0x30gewrite_data 0x2e 显示小数点write_data 0x30x1write_data 0x30x2write_data 0x56 显示单位50ms更新一次数据delay 500六实验思考题查看TLC549技术手册说明TLC549操作过程在采集模拟信号时一般不可避免会受到噪声干扰我们一般要做什么处理根据本实验编写处理相关程序。
proteus单片机课程设计
proteus单片机课程设计一、课程目标知识目标:1. 让学生掌握Proteus单片机的基本原理和功能,理解其内部结构及工作原理。
2. 使学生学会使用Proteus软件进行单片机电路设计与仿真,并能阅读相关电路图。
3. 帮助学生掌握单片机编程的基本语法和技巧,能够编写简单的控制程序。
技能目标:1. 培养学生运用Proteus软件进行单片机电路设计、仿真与调试的能力。
2. 培养学生具备分析和解决实际单片机应用问题的能力。
3. 提高学生的团队协作能力和动手实践能力。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣,激发学生的学习热情和探究精神。
2. 培养学生严谨、认真、负责的学习态度,养成良好的学习习惯。
3. 增强学生的创新意识,培养敢于挑战、勇于实践的精神。
课程性质:本课程为实践性较强的课程,旨在让学生在实际操作中掌握单片机原理和应用。
学生特点:学生具备一定的电子基础和编程基础,对单片机有一定了解,但实践能力有待提高。
教学要求:结合课程性质、学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力。
在教学过程中,分解课程目标为具体学习成果,以便于教学设计和评估。
二、教学内容1. 单片机原理概述:介绍单片机的概念、发展历程、应用领域,以及Proteus 单片机的特点。
教材章节:第一章 单片机概述2. Proteus软件使用:讲解Proteus软件的安装、界面、基本操作,以及如何进行单片机电路设计与仿真。
教材章节:第二章 Proteus软件使用3. 单片机内部结构及工作原理:详细讲解Proteus单片机的内部结构、指令系统、编程模型等。
教材章节:第三章 单片机内部结构及工作原理4. 单片机编程语言及技巧:介绍单片机编程的基本语法、编程技巧,以及常用指令的应用。
教材章节:第四章 单片机编程语言及技巧5. 单片机电路设计与仿真:结合实例,讲解如何使用Proteus软件进行单片机电路设计、仿真与调试。
单片机课程设计跑马灯
单片机课程设计跑马灯一、教学目标本节课的教学目标是使学生掌握单片机的基本原理和编程方法,通过设计和实现一个跑马灯项目,培养学生运用单片机技术解决实际问题的能力。
具体目标如下:1.知识目标:a.了解单片机的基本结构和原理;b.掌握单片机的编程语言和编程方法;c.熟悉单片机的硬件接口和外围电路。
2.技能目标:a.能够使用单片机开发工具进行程序编写和烧录;b.能够根据项目需求设计单片机的程序;c.能够搭建单片机的硬件电路并进行调试。
3.情感态度价值观目标:a.培养学生对科技创新的兴趣和热情;b.培养学生团队合作精神和自主学习能力;c.培养学生关注社会问题并运用技术解决实际问题的意识。
二、教学内容本节课的教学内容主要包括以下几个部分:1.单片机的基本原理和结构;2.单片机的编程语言和编程方法;3.跑马灯项目的需求分析和设计;4.跑马灯项目的编程和调试;5.跑马灯项目的硬件电路搭建和调试。
三、教学方法为了达到本节课的教学目标,我们将采用以下教学方法:1.讲授法:通过讲解单片机的基本原理、编程语言和编程方法,使学生掌握相关知识;2.案例分析法:通过分析跑马灯项目的需求,引导学生学会项目分析和设计;3.实验法:通过搭建跑马灯项目的硬件电路和编程调试,使学生掌握单片机的实际应用;4.讨论法:在课堂上鼓励学生提问、讨论,促进学生之间的交流和合作。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《单片机原理与应用》;2.参考书:单片机技术的相关书籍;3.多媒体资料:单片机的原理讲解、编程方法演示、跑马灯项目案例分析等视频资料;4.实验设备:单片机开发板、外围电路元件、编程器、调试器等。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
具体评估方式如下:1.平时表现:通过观察学生在课堂上的参与程度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。
《单片机应用课程设计》跑马灯
目录第1章课程设计内容及要求 (5)第2章引言 (6)第3章系统硬件电路设计 (7)第4章系统软件设计 (12)第5章课程设计心得 (14)第6章参考文献 (15)第7章附录(实物图,程序清单) (16)第1章课程设计内容及要求一、设计内容:1.1.1、了解各种元器件在电路中的作用和一些芯片的功能,并学会掌握Keil和proteus两个软件;1.1.2、对照原理图在proteus软件中画出原理电路图;1.1.3、检查焊接好的硬件实物图并检验实物图效果;1.1.4、根据实物图写出程序并仿真,并结合Keil和proteus两个软件进行调试和仿真。
二、设计要求:1.2.1外部功能按键连接于(INT0/1)作用时,分别实现开始、停止的功能。
具体过程为:按开始键,LED循环显示,按停止键时,LED循环状态暂停,若正巧最后一个LED被点亮,而其他LED皆熄灭时,表示该操作人获胜,赢得游戏,同时蜂鸣器鸣响较长时间,以示庆祝。
反之则蜂鸣器鸣响较短时间示意输掉游戏。
下次再按下开始键,游戏又开始;1.2.2、按下开关K1,实现跑马灯模式则进行灯循环点亮;1.2.3、按下开关K2,跑马灯停止循环,并停在LED灯中的一个;1.2.4、若是停在P1.0~P1.6中的一个,则响起短时间的音乐并表示游戏失败;1.2.5、若是停在P1.7LED灯时,则该对应的这LED 灯亮并响起较长时间的音乐并表示游戏胜利。
第2章引言跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由多个LED发光二极管组成。
在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。
当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。
此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。
本设计使用AT89C2051芯片,利用P1的8个端口连接8个发光二极管,通过P1.0到P1.7的值控制“跑马灯”的亮灭,以达到显示效果。
单片机跑马课程设计
单片机跑马课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解跑马灯程序的设计思路。
2. 使学生了解单片机编程的基本语法和指令,并能运用到跑马灯程序编写中。
3. 帮助学生掌握跑马灯程序中涉及的电子元件使用方法,如LED灯、电阻等。
技能目标:1. 培养学生动手操作单片机的能力,能够独立完成跑马灯程序的下载、调试和运行。
2. 提高学生的问题解决能力,能够分析并解决跑马灯程序中可能出现的故障。
3. 培养学生的团队协作能力,能够在小组内分工合作,共同完成跑马灯项目的设计与实现。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养其创新意识和探索精神。
2. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
3. 增强学生的自信心,使其在跑马灯项目实践中感受到成功的喜悦。
本课程针对单片机跑马项目设计,结合学生年级特点,注重理论与实践相结合,旨在提高学生的动手能力、问题解决能力和团队协作能力。
课程目标具体、可衡量,为后续教学设计和评估提供明确方向。
二、教学内容1. 单片机基本原理:介绍单片机的组成、工作原理,引导学生了解和掌握单片机的基本功能和应用。
- 教材章节:第1章 单片机概述- 内容:单片机的发展历程、内部结构、工作原理。
2. 单片机编程基础:讲解单片机编程的基本语法、指令和编程环境,为学生编写跑马灯程序奠定基础。
- 教材章节:第2章 单片机编程基础- 内容:C语言基础、单片机指令系统、编程环境搭建。
3. 跑马灯程序设计:分析跑马灯程序的设计思路,教授编程技巧,让学生学会编写和调试程序。
- 教材章节:第3章 单片机程序设计实例- 内容:跑马灯程序设计原理、程序编写、调试方法。
4. 电子元件应用:介绍跑马灯项目中涉及的LED灯、电阻等元件的使用方法,指导学生进行电路搭建。
- 教材章节:第4章 电子元件及其应用- 内容:LED灯、电阻、杜邦线等元件的功能和连接方法。
5. 跑马灯项目实践:引导学生分组进行跑马灯项目的设计与实现,培养其动手能力、团队协作能力和问题解决能力。
跑马灯及万年历的课程设计实验报告
摘要微机控制系统的操作实验,以Proteus和Keil仿真软件为核心来构建。
通过上述两个软件完成跑马灯及万年历的设计仿真。
跑马灯以AT89C51单片机、LED灯等构成,具有对8个LED按照一定规律点亮的功能。
万年历以PIC16F877A单片机、DS1302时钟芯片和LMG12641BSIR液晶显示器构成,能够完成年、月、日,以及时间的显示.本实验以软件为核心,通过配置硬件设备,简单方便的完成微机控制系统的实验,通过软件仿真,减少了对硬件设施的要求.且本实验能够培养学生的综合分析能力.对学生的能力成长有很重要的意义.关键词: PROTEUS; KEIL ; 单片机; 跑马灯; 万年历AbstractMicrocomputer to control the operation of the system experiment, Proteus and Keil, simulation software as the core build. Marquee and the calendar of the above two software to complete design and simulation.Marquee of AT89C51 microcontroller, LED lights with 8 LEDs light up according to certain laws of the function. The calendar PIC16F877A MCU, DS1302 clock chip and liquid crystal display LMG12641BSIR structure, able to complete the year, month, date, and time display.In this study, the core software, configure hardware devices, a simple and convenient to complete the experiments of the microcomputer control system, through software emulation, and reduced requirements for hardware facilities. And this experiment is to cultivate students' comprehensive analysis capabilities. On the student's ability to grow there are a very important significance.Keywords: PROTEUS; KEIL ; SCM; Marquee; Calendar目录摘要 (Ⅰ)Abstract (Ⅱ)第一章课题说明 (1)1.1功能要求 (1)1.1.1 跑马灯的实验功能要求 (1)1.1.2 万年历的实验功能要求 (1)1.2 proteus及keil软件的相关说明 (1)1.2.1 proteus软件的介绍 (1)1.2.2 keil软件的介绍 (2)第二章方案设计 (3)2.1跑马灯方案设计 (3)2.1.1 跑马灯方案一 (3)2.1.2 跑马灯方案二 (3)2.1.3 跑马灯方案选择 (3)2.2 万年历方案设计 (3)2.2.1 万年历方案一 (3)2.2.2 万年历方案二 (4)2.2.3 万年历方案选择 (4)第三章基于proteus的仿真实验 (5)3.1 基础性实验——跑马灯设计 (5)3.1.1 跑马灯的硬件设计 (5)3.1.2 跑马灯的软件设计 (8)3.2 设计性实验——万年历设计 (12)3.2.1 万年历的硬件设计 (12)3.2.2 万年历软件设计 (13)3.2.3 调试与仿真 (15)参考文献 (16)附录 (17)跑马灯程序清单 (17)万年历程序清单 (18)第一章课题说明本实验是基于proteus的单片机微机控制系统实验,其中涉及到两个软件,proteus 和keil,并要求完成两个仿真实验,一是跑马灯的实验,一是万年历的实验。
实验二基于Proteus的跑马灯电路
实验二-基于Proteus的跑马灯电路实验二基于Proteus的跑马灯电路一、实验目的1、掌握Proteus系统的使用,能够建立、保存、打开和修改文件。
2、掌握使用各种元器件绘制电路原理图的方法,实现电路的仿真。
二、实验内容跑马灯电路,即完成P1口上的八个发光二极管循环闪亮。
三、实验步骤1、进入Keil C51软件的操作环境,编辑源程序并对源文件进行编译,在Keil中编辑汇编语言程序如下:ORG 0000H;给定起始地址为0000HAJMP MAIN ;绝对转移至MAINORG 30H ;程序源地址为30HMAIN: MOV R2,#16 ;循环次数送R2MOV A,#0FEH ;立即数0FEH送累加器LOOP: MOV P1,A ;累加器A中的值送P1口LCALL D1 ;对D1进行长调用RL A ;A的值循环左移一位DJNZ R2,LOOP ;R2-1不为零时转LOOPD1: MOV R4,#10 ;立即数10送R4D2: MOV R5,#100 ;立即数100送R5D3: MOV R6,#249 ;立即数249送R6DJNZ R6,$ ;R6-1不为零时暂停DJNZ R5,D3 ;R5-1不为零时转D3DJNZ R4,D2 ;R4-1不为零时转D2RETEND2、进入Proteus系统,画出实验电路图(1)元件拾取。
在桌面上选择【开始】→【程序】→“Proteus 7 Professional”ISIS 7 Professional的蓝色图标打开应用程序,进入编辑界面,如图2-1,鼠标左键单击界面左侧预览窗口下面的“P”按钮,弹出“元件拾取”对话框,如图2-2所示:图2-1 ISIS编辑界面图2-2元件拾取对话框在“元件拾取”对话框的Kewords处可以输入所要用到的原件英文全称或部元件名类数量3WATT10K Resistors 1At89C51 Microprocessor ICs 1BUTTON Switch&Relays 1CAP Capacitors 2CAP-ELEC Capacitors 1CRYSTAL Miscellaneous 1LED-BIBY Optoelectronics 8RESPACK-8 Resistors 1拾取元件后如图2-3所示,电源与接地器件选择左面工具条上的按钮,弹出界面,如图2-4所示:图2-3 拾取元件结果图2-4 电源、接地选择(2)、画出电路,如图2-5所示:图2-5 跑马灯电路原理图3、对Proteus 系统和Keil C51系统进行联机设置。
单片机课程设计跑马灯的控制
单片机课程设计跑马灯的控制摘要:本设计选择对跑马灯的控制,先构思跑马灯实现预想效果,然后进行分析,根据要求编写程序,选择硬件端口,并进行调试致预想效果,最后浅谈课程设计的经历,以及总结。
目录一)课程设计的目的二)课程设计的要求三)流程图四)原理图五)程序语言六)总结七)参考资料设计题目:试设计一个闪烁跑马灯控制器,该控制器可以控制8个灯顺序亮灭。
当单片机上电后,8个灯依次从左向右亮,并且每个灯亮的时间为1秒钟。
这时,如果按钮K1按下,则灯亮的顺序是从右向左,同样,每个灯亮的时间是1秒钟。
这时,如果按下按钮K2,则此时,4个灯亮4个灯灭,延迟4秒钟以后,又开始从左向右点亮。
最后,若按下按钮K3,则全部灯亮。
此时若想再次点亮灯,必须重新上电。
题目分析:该题目要求控制8盏灯的亮灭,可使用单片机的P1.0到P1.8口来控制。
按钮K1用P3.4口,K2用P3.2口,及外部中断0,K3用P3.3口,及外部中断1,分别来实现。
单片机使用AT89C52,电源使用5V标准电源。
顺序亮灭使用外部中断源构成循环控制语句。
一、课程设计的目的课程设计是本专业集中实践环节的主要内容之一。
训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。
学生通过所做课题,熟悉单片机应用系统开发研制的过程,软硬件设计的工作方法、内容及步骤,对学生进行基本技能训练。
例如组成系统、编程、调试、绘图等。
使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。
通过本课程设计,主要达到以下目的:1.使学生增进对单片机的感性认识,加深对单片机理论方面的理解。
2.使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。
3.使学生了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
二、课程设计的要求1.学生需认真阅读课程设计任务书,熟悉有关设计资料及参考资料,熟悉各种设计规范的有关内容,认真完成任务书规定的设计内容。
单片机实例之跑马灯(二)2024
单片机实例之跑马灯(二)引言概述:本文主要介绍了单片机实例中的跑马灯(二)的设计和实现。
通过使用单片机控制LED灯的亮灭顺序和频率,展示出跑马灯效果。
文章将从硬件接口的连接、软件设计、电路调试、代码优化和总结五个大点来详细讲述整个跑马灯的实现过程。
正文内容:一、硬件接口的连接1. 连接LED灯和单片机的端口引脚2. 添加合适的电阻限流器3. 连接额外的电源供给(若需要)二、软件设计1. 初始化单片机的IO接口2. 设定LED灯的控制端口为输出3. 设定相应的延时时间和频率三、电路调试1. 检查单片机和LED灯的连接是否正确2. 使用示波器测量电压和电流波形3. 调整电阻的阻值以控制LED灯的亮度4. 检查电源稳定性和供电电压四、代码优化1. 使用更高效的延时函数2. 采用位操作方式控制LED灯的亮灭3. 增加循环计数变量,实现灯光的循环移动4. 将代码分块、模块化,提高可维护性和可扩展性五、总结通过对单片机跑马灯(二)的实现过程的介绍,我们了解了硬件接口连接、软件设计、电路调试和代码优化等关键步骤。
同时,我们还学习了如何使用单片机控制LED灯的亮灭顺序和亮度,并实现了跑马灯效果。
通过不断的优化和调试,我们可以进一步提高灯光效果和系统稳定性。
总结:本文通过引言概述、正文内容和总结的方式详细介绍了单片机实例中的跑马灯(二)的设计和实现过程。
通过硬件接口的连接、软件设计、电路调试、代码优化等关键步骤的说明,读者可以了解到如何实现跑马灯效果,并通过优化和调试提高系统的稳定性和效果。
希望本文对读者的学习和实践有所帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微型计算机技术课程设计报告专业:通信工程班级:xxxxxxxxx姓名:XXX学号:xxxxxxx指导教师:XX时间:xxx通信与电子信息工程学院8255扩展一、课设目的、内容;1.目的:为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。
通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。
(1).通过本设计,使学生综合运用《微型计算机技术》、《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。
(2).学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。
(3).了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。
2.内容:8155或8255扩展用8155或8255扩展IO实现16个LED的跑马灯,提供多种跑马灯运行模式二、问题分析、方案的提出、设计思路及原因;本次课程设计的题目是8255的扩展,利用AT89C52驱动扩展8255数据输出口来实现16个LED跑马灯的显示。
但是在80C52系列单片机中,有四个8位I/O 端口,但真正能够提供给用户使用的只有P1口,因为P0口和P2口通常需要用来传送外部存储器的地址和数据,P3口也需要使用它的第二功能。
因此,单片机提供给用户的I/O接口线并不多,对于复杂的一些的应用系统都应该进行I/O 口的扩展。
8255具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB 口和PC口.而8255又有多种运行模式,而这些操作模式完全由控制寄存器的控制字决定。
利用8255的控制字模式来定义8255输出口的个数,驱动所需的LED 灯的个数,实现课题目的。
在仿真实验中,两个按键分别控制跑马灯的顺序显示、跳跃显示两种运行方式,顺序显示分别是一个、两个、四个、八个LED灯依次亮。
跳跃显示分别是一个、两个、四个LED灯跳跃显示三、电路设计及功能说明,硬件原理框图及电路图(包括接口芯片简介);本次设计采用AT89C52芯片驱动可编程接口芯片8255的扩展来实现LED 灯的多种显示方式。
让AT89C52芯片的P0口与8255芯片的三态双向数据总线D0~D7连接,实现数据传送。
当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
8255的地址选择线A1、A0分别与AT89C52的P2.7和P2.6连接,通过定义不同的地址来定义8255芯片PA 口和PB 口的工作方式。
读写命令线分别与单片机的读写命令线相连,片选线直接接地,复位线RESET 接单片机的P2.5。
同时PA 口与8个LED 灯顺序连接。
PB 口与8个LED 灯逆序连接,通过按键控制可以选择不同的运行模式,实现多种跑马灯的运行模式。
硬件原理框图P1口AT89C52P0口D0~D7 PA 口PB口“顺”“逆”模式选择开关…………8255电路图接口芯片简介(1)AT89C52AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
主要功能特性:· 兼容MCS51指令系统· 8k可反复擦写(>1000次)Flash ROM· 32个双向I/O口· 256x8bit内部RAM· 3个16位可编程定时/计数器中断· 时钟频率0-24MHz· 2个串行中断· 可编程UART串行通道· 2个外部中断源· 共6个中断源· 2个读写中断口线· 3级加密位· 低功耗空闲和掉电模式· 软件设置睡眠和唤醒功能(2)8255芯片8255特性(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.8255引脚功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU 将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
'A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择.四、软件部分的程序流程图,算法和使用的编程技巧;1.程序流程图开始设置初值启动定时计数器开中断有键按下?根据键值运行不同模式跑马灯LED灯灭结束处理2.算法编译两个函数,分别是void display( )函数和void delay( )函数,前者是LED显示函数,后者是延时函数。
程序的开始,先定义各个参数、各口的地址以及各个位。
主函数中,定义y1、y2分别为PA口PB口的相应地址,控制各个LED灯的亮灭;m为显示函数void display( )中for循环的个数,控制LED灯亮灭循环;k1、k2分别为PA口PB口地址转移的个数,控制PA口PB口地址转移的方式;t 为延迟的参数,顺、跳两模式定义不同的k值和m值。
然后定义CPU的各个状态,使其正常工作。
在顺序显示中,先进入while(1)循环,循环中两判断条件if(P1==0xfd),令k1=1,实现顺显示,和if(P1==0xfb),令k2=2实现跳显示。
根据条件进入相应模式,各有一个LED灯亮、两个LED灯亮、四个LED灯亮、八个LED灯亮,和一个LED灯、两个LED灯、四个LED灯间隔亮显示函数void display( )中,两个for循环分别控制PA口PB口LED灯的循环模式,其中n为for循环的次数。
先定义PA口PB口的首地址outdata1、outdata2进入循环,函数_cror_和_crol_控制他们地址不同的转移方式,k为其中的转移的个数。
t为延迟函数的参数,控制亮灭延迟的时间。
延迟函数void delay( )中,t为延迟的参数,控制程序中所需的延迟时间。
程序中各个参数之间都一一对应,根据要求相互呼应。
通过控制这些参数的量值来实现硬件仿真中多种跑马灯的运行模式。
3.编程技巧设计中,我将与PA相连的LED灯顺序排列,与PB相连的逆序排列,要注意两组初始值并不相同,明确参数间的关系,多个参数组合使用,实现跑马灯的多种运行方式。
五、源程序清单,对关键的语句(段)要给出简洁的注释;#include<reg52.h>#include<intrins.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int#define PA XBYTE[0x3fff]#define PB XBYTE[0x7fff]#define CTL XBYTE[0xffff]sbit reset=P2^5;void delay(uint t)//延时函数{for(;t>0;t--){TH0=(65536-1000)/256;TL0=(65536-1000)%256;TR0=1;while(TF0==0) ;TF0=0;}TR0=0;}void display(uint k,uint n,uint t,uchar y1,uchar y2)//循环显示函数{uint i;for(i=0;i<n;i++){PA=y1;delay(t);y1=_crol_(y1,k);//左循环}PA=0xff;for(i=0;i<n;i++){PB=y2;delay(t);y2=_cror_(y2,k);//右循环}PB=0xff;}void main(){uchar y1,y2;uint m,k1=1,k2=1,t;EA=1;ET0=1;TMOD=0x01;reset=1;_nop_();reset=0;CTL=0x80; //写8255控制字,设置PA,PB,为输出口PA=0xff;PB=0xff;while(1){if(P1!=0xfd) k1=1;if(P1==0xfd)//依次显示{t=300;switch(k1){case 1:m=8;y1=0xfe;y2=0x7f;display(k1,m,t,y1,y2);break; //依次亮一盏LEDcase 2:m=4;y1=0xfc;y2=0x3f;display(k1,m,t,y1,y2);break; //依次亮两盏LEDcase 4:m=2;y1=0xf0;y2=0x0f;display(k1,m,t,y1,y2);break; //依次亮四盏LEDcase 8:m=1;y1=0x00;y2=0x00;display(k1,m,t,y1,y2);break; //依次亮八盏LEDdefault:break;}if(k1==8) k1=1;else k1=k1*2;}if(P1!=0xfb) k2=2;if(P1==0xfb) //跳跃显示{t=500;switch(k2){case 2:m=4;y1=0xfe;y2=0x7f;display(k2,m,t,y1,y2);break; //隔一盏,亮一盏case 4:m=2;y1=0xfc;y2=0x3f;display(k2,m,t,y1,y2);break; //隔两盏,亮两盏case 8:m=1;y1=0xf0;y2=0x0f;display(k2,m,t,y1,y2);break; //隔四盏,亮四盏default:break;}if(k2==8) k2=2;else k2=k2*2;}}}六、仿真过程综述;仿真开始。