ATMEGA48单片机 跑马灯
- 格式:ppt
- 大小:917.00 KB
- 文档页数:25
单片机原理与应用课程设计设计课题:音乐跑马灯班级:小组成员:时间:2013年1月6日音乐跑马灯的设计一、实验内容:1.使用8个发光管作跑马灯,其中有3种亮灭模式。
2.有专门的开关K1~K3用来切换跑马灯的模式。
3.每一种跑马灯模式用LED数码管进行显示1、2、3。
4.当跑马灯处于某种模式时,有对应的音乐响起。
有三首曲子可以选着。
提示:亮灭模式自己设计,可以从速度或者点亮方法上设计。
响音乐的程序可以参考实验手册上《电子音响》部分。
二、实验原理:用三个开关控制音乐跑马灯的三种模式,每一种模式都是在LED数码管显示模式的号码的同时先响音乐后闪灯。
跑马灯采用P3口作为输入口,外接三个开关用来控制跑马灯的亮灭模式。
P1口做输出口,P1口接的8个发光二极管L1~L8按16进制方式点亮发光二极管,即8个发光管相当于8位的二进制位。
当数值为1时,L1点亮;数值为2=00000010B时,L2点亮;数值为4=00000100时,L3点亮,依次类推。
不同的音符对应不同的频率,所以只要用不同频率的信号驱动喇叭,就能发出不同的音符了,所以转换为使用定时器在P1.7引脚输出某一频率的方波脉冲即可。
单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,因此单片机奏乐只需弄清楚两个概念,也就是“音调”和“节拍”。
音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间,乐谱中每一个音符都与某一个特定的频率相对应,所以只需要产生不同频率的方波信号(产生不同音调),并且延时不同的时间(产生不同节拍),即可完成音乐的播放。
三、硬件原理:1.跑马灯亮灭模式原理图,如图(1)所示。
图(1) 跑马灯亮灭模式原理图2.让喇叭响音乐的原理图,如图(2)所示。
图(2) 电子音响原理图3.使第三个LED数码管显示1、2、3、4、5,如图(3)和(4)所示。
图(3) LED共阳极连接原理图图(4) LED数据显示示意图用三个开关(K1~K3)控制音乐跑马灯的三种模式,每一种模式都是在LED 数码管显示模式的号码的同时先响音乐后闪灯。
单片机的跑马灯简单汇编程序使用取反(CPL)实现跑马灯的闪烁,随后给P0 口赋值实现移动。
注;使用的是12MHZ 频率,ORG 0000H LJMP LOOP1 ORG 0030H LOOP1: MOV A,#11111111B clr p1.4 ;打开使能MOV R1,#5 ;闪烁5 次LOOP: CPL A ;取反MOV P0 , A ;输出ACALL DEL CPL A MOV P0 , A ACALL DEL DJNZ R1 , LOOP ;减一非零判断MOV P0,#11100111B ACALL DEL MOV P0,#11011011B ACALL DEL MOV P0,#10111101B ACALL DEL MOV P0,#01111110B ACALL DEL LJMP LOOP1 LOOP3: ACALL DEL SJMP LOOP1 DEL: MOV R5,#6H ;延时子程序部分F3: MOV R6,#0FFH ;BCD 码为255 F2: MOV R7,#0FFH ;总延时为0.7803s F1: DJNZ R7,F1 DJNZ R6,F2 DJNZ R5,F3 RET END 带C 循环做移动,使用一条跳转转移指令就可实现一直循环下去,延时为1.3s!ORG 0000H SJMP BEGAIN ORG 0030H BEGAIN: MOV P0, #0FFH ;初始状态clr p1.4 ;打开led 使能mov P2, #00110101B ; 锁存2 个74hc573,防止数码管点阵干扰.MAIN : CLR A MOV A ,#11111110B ; 0FEH LOOP: RLC A MOV P0 , A ACALL DEL LJMP LOOP DEL: MOV R5,#10H F3: MOV R6,#0FFH F2: MOV R7,#0FFH F1: DJNZ R7,F1 DJNZ R6,F2 DJNZ R5,F3 RET ENDtips:感谢大家的阅读,本文由我司收集整编。
单片机整套实验及程序(交通灯,跑马灯等)实验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操作过程在采集模拟信号时一般不可避免会受到噪声干扰我们一般要做什么处理根据本实验编写处理相关程序。
;------------------------按键控制跑马灯------------------------------------------;功能:本程序包含三种显示方式:察表法显示,加法显示,循环右移方式。
; 由键盘1,2,3控制,其它键为停止键; 显示参数可自行修改,也可全部采用查表方式;;测试环境:Keil uVision3;------------------------------------------------------------------------ORG 0000HKEYDOWN EQU 23HCOUNT EQU 25H ;方式一计数COUNT2 EQU 26H ;方式二计数COUNT3 EQU 27H ;方式三计数AJMP MAIN;--------------------main------------------------------------------------MAIN: MOV COUNT, #00H ;察表法显示MOV COUNT2, #00H ;查表法显示MOV COUNT3, #055H ;循环左移方式MOV KEYDOWN, #00HLOOPR:ACALL KEY ;调用键盘子程序ACALL RUNACALL DELAY ;延时子程序MOV A, KEYDOWNCJNE A, #01H, RUNNER1ACALL COUNTER ;方式一AJMP LOOPRRUNNER1:CJNE A, #02H, RUNNER2 ;方式二ACALL COUNTER2AJMP LOOPRRUNNER2: ;方式三CJNE A, #03H, LOOPRACALL COUNTER3AJMP LOOPR ;返回循环;---------------------------方式一计数---------------------------------------- COUNTER:INC COUNTMOV A, COUNTJUDGE: CJNE A, #01BH, UNDO2OVERD: MOV COUNT, #0HUNDO2:RET;-------------------------方式二计数-----------------------------------------COUNTER2:INC COUNTMOV A, COUNTJUDGE2: C JNE A, #01CH, UNDO3OVERD2: MOV COUNT, #0HUNDO3:RET;-------------------------方式三计数-----------------------------------------COUNTER3:MOV A, COUNT3RL AMOV COUNT3, ARET;------------------------延时-------------------------------------------------DELAY:MOV R7, #0FFHDELAY1:MOV R6, #0FFHDELAY2:DJNZ R6, DELAY2DJNZ R7, DELAY1RET;----------------------------按键-----------------------------------------------KEY: ;反转读键MOV P1,#1FH ;将列置零,读P1口,并送入B中-----行值MOV A,P1ANL A,#1FHMOV B,AMOV P1,#060H ;将行置零,读P1口,并送入A中------列值MOV A,P1ANL A,#060HMOV R0,AXRL A,B ; 异或,相异为1ANL A,#7FHCJNE A,#7FH,KEYIN1 ;有键按下;MOV KEYDOWN,#0H ;无键按下RET ;未按键KEYIN1:MOV B,A;存持征码MOV DPTR,#KEYCODMOV R4,#0FFH ;顺序码初始化KEYIN2:INC R4MOV A,R4MOVC A,@A+DPTRCJNE A,B,KEYIN3MOV A,R4 ;找到,取顺序码INC AMOV KEYDOWN,ARETKEYIN3:MOV A,R4CJNE A,#09H,KEYIN2 ;未完,再查RET ;己查完,未找到,以未按键处理;----------------------显示跑马灯----------------------------------RUN: ;MOV A, KEYDOWNCJNE A, #01H, LED2LED1:MOV R1,COUNTMOV A,R1 ;取段码MOV DPTR,#TABLE1MOVC A,@A+DPTRMOV P0,AMOV P2,#0AHRETLED2:MOV A, KEYDOWNCJNE A, #02H, LED3MOV A, COUNT2MOV P0, AMOV P2, #0AHRETLED3:MOV A, KEYDOWNCJNE A, #03H, NORUNMOV A, COUNT3MOV P0, AMOV P2, #0AHRETNORUN: RET;--------------------表项----------------------------------KEYCOD: ; 0 1 2 3 4DB 03EH,03DH,03BH,037H,02FH; 5 6 7 8 9DB 05EH,05DH,05BH,057H,04FHTABLE1: D B 00H, 01H, 02H, 04H, 08H, 010H, 020H, 040H, 080H TABLE2: D B 00H, 01H, 03H, 07H, 0FH, 01FH, 03FH, 07FH, 0FFH TABLE3: DB 0FFH, 0FEH, 0FCH, 0F8H, 0F0H, 0E0H, 0C0H, 080H, 00HEND。
单片机课程设计跑马灯一、教学目标本节课的教学目标是使学生掌握单片机的基本原理和编程方法,通过设计和实现一个跑马灯项目,培养学生运用单片机技术解决实际问题的能力。
具体目标如下: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的值控制“跑马灯”的亮灭,以达到显示效果。
跑马灯电路设计单片机嵌入式系统中的跑马灯就像C语言的―Hello World!‖程序一样,虽然简单,却是一个非常经典的例子。
对初学者来说,通过跑马灯系统设计的学习与编程,能很快熟悉单片机的操作方式,了解单片机系统的开发流程,并通过第一个实例增强自己学习单片机系统设计的信心。
下面详细讲解跑马灯电路的设计。
6.1.1 跑马灯跑马灯,顾名思义,就是―会像马儿一样跑动‖的小灯,故取名―跑马灯‖。
跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由8个LED发光二极管组成,可以方便地显示一个8位数据(0~255)。
在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。
当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。
此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。
如图6-1所示为开发板上的跑马灯,由8个贴片LED发光二极管组成,下面详细介绍LED 发光二极管的知识与电路设计方法。
6.1.2 发光二极管基础知识发光二极管的英文名为Light Emitting Diode,简称LED,发明于20世纪60年代,几十年来,发光二极管在各种电路及嵌入式系统中得到了广泛的应用,跑马灯使用的―小灯‖就是8个并排的LED。
LED发光二极管将电能转变成光能,可由Ⅲ-V族半导体材料制成。
当工作在正向偏置状态时,LED发光二极管与普通的二极管极其相似,其同样具备单向导电特性,不同之处仅在于当加上正向偏置时,LED发光二极管将向外发光,此时能量通过PN结的载流子过程从电能转换为光能。
LED发光二极管具有亮度高、耗电小、体积小、重量轻、寿命长、可靠性高、价格便宜等优点,已经被广泛地应用到不同的产品中,作为电源指示灯、系统状态灯、信号灯等用途。
在通常工作状态下,LED发光二极管的使用寿命保守估计约为10万小时,部分甚至可以达到100万小时。
单片机跑马灯输入引脚对8盏灯的控制1. 简介单片机跑马灯是一种常见的电子设计,通过程序控制多个灯的亮灭顺序,实现灯光闪烁的效果。
在这个设计中,我们将着重讨论单片机跑马灯中输入引脚对8盏灯的控制方法。
2. 单片机跑马灯的原理单片机跑马灯的设计原理是通过单片机的输出引脚控制LED灯的亮灭。
通过程序控制输出引脚的电平变化,可以控制LED灯的亮度,从而实现不同的灯光效果。
3. 输入引脚对8盏灯的控制方法在单片机跑马灯中,一般使用输入引脚来控制灯光的亮灭顺序。
对于8盏灯的控制,我们可以通过以下方法实现:3.1 使用二进制控制可以通过单片机的IO口输出8位二进制数,然后通过这个二进制数的变化来控制8盏灯的亮灭顺序。
可以通过循环移位的方法来实现灯光的顺序变化,从而实现跑马灯的效果。
3.2 使用计数器可以通过单片机上的定时器或者计数器来控制灯光的亮灭顺序。
通过定时器的中断生成,可以实现灯光的循环控制,从而实现跑马灯的效果。
3.3 使用外部输入还可以通过外部的输入引脚来控制灯光的亮灭顺序。
可以通过按键或者其他传感器来控制灯光的变化,从而实现跑马灯的效果。
4. 实际案例以下是一个使用输入引脚对8盏灯进行控制的实际案例:4.1 案例描述我们使用STM32单片机来设计一个跑马灯程序,通过外部引脚控制8盏LED灯的亮灭顺序。
我们设计了一个简单的电路,将8盏LED灯连接到单片机的8个引脚上,然后通过外部的输入引脚来控制LED灯的亮灭。
4.2 实现方法我们首先编写了一个简单的程序,通过外部输入引脚来控制LED灯的亮灭顺序。
我们使用定时器的中断功能,以固定的时间间隔来控制LED灯的亮灭,从而实现跑马灯的效果。
4.3 测试结果经过测试,我们成功实现了通过外部输入引脚控制8盏LED灯的跑马灯效果。
我们可以通过外部的按键来控制LED灯的亮灭顺序,从而实现不同的灯光效果。
5. 结论通过上述案例,我们可以看到,通过输入引脚控制8盏LED灯的跑马灯效果是可行的。
闪烁灯跑马灯控制系统河南工院院系:电气工程系班级:电气0903学号:04010904XX姓名:WLM指导教师:赵阳第1章概述 (3)1.1设计的目的及意义 (3)1.2单片机的概述与应用 (3)第2章设计原理 (4)2.1设计要求与基本思路 (4)2.2设计方案选择 (5)2.3设计框图 (5)第3章硬件电路设计 (7)3.1时钟电路 (7)3.2扩展电路 (8)第4章程序设计 (9)4.1 程序设计思路与流程图 (9)4.2程序清单与代码 (11)4.3程序调试 (12)第5章原件明细表 (13)总结 (14)参考文献 (15)第1章概论1.1设计的目的与意义当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
竞争日益剧烈的今天,当代大学生不仅需要扎实的理论知识,还需要过硬的动手能力。
作为自动化专业的学生,更应该熟练掌握各种电路编辑软件,作为专业必需的技能更要及时地对这一类软件的更新版本进行学习,其日趋强大的功能是对我们专业技能的补充。
闪烁灯控制系统是利用8051单片机的P1控制的8个发光二极管。
可实现从右到左闪烁一次,再从左到右闪烁一次,每次亮灭1秒,如此循环,紧急情况下,控制P3.1进行报警2S停止。
闪烁灯控制系统是简易的单片机控制系统,作为课程设计课题,通过实际程序设计和调试,逐步掌握块化程序设计方法和调试技术,通过课程设计,掌握一单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法,通过完成一个包括电路设计和程序设计开发的完整过程,了解开发单片机应用系统的全过程,通过本次设计对单片机应用上有一个初步的了解,增强自我的动手、动脑能力,以及发现问题,解决问题,总计经验教训的能力,为以后走向工作岗位,以及更高更远的发展打下坚实的基础1.2单片机概述与应用单片机是将CPU、存储器、定时/计数器以及I/O接口等主要部件集成在一块芯片上的微型计算机。
跑马灯和流水灯的区别是什么?单片机如何控制LED灯?
一、跑马灯和流水灯的区别
好多人分不清跑马灯和流水灯,还以为是同一种状态,虽然难度等级是一样的,但是灯的亮灭显示方式是不一样的。
请看下图
二、单片机控制LED灯的常用电路接法
弄清楚跑马灯的显示状态后可以开始进行设计了,在日常的跑马灯设计电路中LED灯一般接为这两种形式,共电源或共地,也就是通常说的灌电流式和拉电流式
三、电路分析与编程
大家可以根据自己实际的电路需要选择其中一种接法,由于AT89S52单片机IO端口不操作时是高电平所以下面我选择的是共电源接法。
电路分析:当电路输出高电平[端口为1]LED灯灭,当电路输出低电平[端口为0]LED灯亮
大家可以按照自己的思路编程,方法不唯一,下面我将介绍3种方法方法一:不利用算法,直接使用IO控制[可以说是最蠢的方法,但是一样能实现效果,并且容易理解]
#include 《reg52.h》
//LED输出端口位定义
sbit led0=P0。
HEFEI UNIVERSITY单片机实训题目单片机应用技术实验姓名张乐班级自动化(1)班学号 **********指导老师储忠完成时间2015-6-12实验一构建单片机最小系统和实验环境熟悉一、单片机最小系统的组成原理图二、单片机的工作原理1.运算器运算器包括算术逻辑运算单元ALU、累加器ACC、寄存器B、暂存器TMP、程序状态字寄存器PSW、十进制调整电路等。
它能实现数据的算术逻辑运算、位变量处理和数据传送操作。
(1)算术逻辑单元ALUALU在控制器根据指令发出的内部信号控制下,对8位二进制数据进行加、减、乘、除运算和逻辑与、或、非、异或、清零等运算。
它具有很强的判跳、转移、丰富的数据传送、提供存放中间结果以及常用数据寄存器的功能。
MCS-51中位处理具有位处理功能,特别适用于实时逻辑控制。
(2)累加器ACC累加器ACC是8位寄存器,是最常用的专用寄存器,它既可存放操作数,又可存放运算的中间结果。
MCS—51系列单片机中许多指令的操作数来自累加器ACC。
累加器非常繁忙,在与外部存储器或I/O接口进行数据传送时,都要经过A来完成。
(3)寄存器B寄存器B是8位寄存器,主要用于乘、除运算。
乘法运算时,B中存放乘数,乘法操作后,高8位结果存于B寄存器中。
除法运算时,B中存放除数,除法操作后,余数存于寄存器B中。
寄存器B也可作为一般的寄存器用。
(4)程序状态字PSW程序状态字是8位寄存器,用于指示程序运行状态信息。
其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。
PSW中各标志位名称及定义如下:CY(PSW.7):进(借)位标志位,也是位处理器的位累加器C。
在加减运算中,若操作结果的最高位有进位或有借位时,CY由硬件自动置1,否则清“0”。
在位操作中,CY作为位累加器C使用,参于进行位传送、位与、位或等位操作。
另外某些控制转移类指令也会影响CY位状态(第三章讨论)。
AC(PSW.6):辅助进(借)位标志位。