单片机实验报告

合集下载

单片机流水灯实验报告

单片机流水灯实验报告

实验一流水灯实验报告一、实验目的1、熟练掌握JC-51A型开发板的使用方法和注意事项。

2、了解简单单片机应用系统的设计方法。

3、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。

4、掌握应用USBISP烧录软件STC-ISP的操作方法。

5、掌握89C52RC单片机的流水灯操作过程。

二、实验内容在JC-51A开发板上实现8个发光LED“流水”的现象,并通过编写程序控制流水现象。

三、实验主要仪器及软件1,JC-51A开发板2,一台电脑3,STC-ISP-V479软件4,KEIL软件四、实验说明当8255 的PA口有低电平输出时,相应的发光二极管就会点亮。

应用这一原理我们可以容易的点亮一个数码管,例如令PA口输出0111 1111时D1就会点亮。

若再把0111 1111向右循环一位,利用PA口输出,就会点亮D2。

在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水”的现象。

五、实验步骤步骤一:把学习板连接到电脑上,把光盘安装到电脑里,注意电脑右下方显示的是COM几端口;步骤二:打开光盘看到“4.程序烧写软件”字样并打开,安装PL-232驱动这个软件,并打开STC手动下载,找到STC_ISP_V479.exe并打开;步骤三:打开看到一个界面,MCU type选择STC89C52RC,COM端口选择刚刚看到的几端口;步骤四:点击open file,选择光盘里5.MINI-V22实例源程序,打开汇编参考样例,打开流水灯2,选择hex格式的文件,点击确定;步骤五:点击download,如果连接不成功,重置下学习板的开关,这时就看到学习板的流水灯的滚动了。

六、广告流水灯程序ORG 00HMOV P2,#80HSTART:MOV A,#0FFH ;赋初值CLR CMOV R2,#8LOOP:RRC A ; 带进位右移MOV P1,ACALL DELAYDJNZ R2,LOOPMOV R2,#7LOOP1:RLC A ; 带进位左移MOV P1,ACALL DELAYDJNZ R2,LOOP1JMP STARTDELAY:MOV R3,#20 ; 延时0.2秒D1: MOV R4,#20 D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND七、实验原理图更改此处可以使流水灯速度发生变化八、总结:通过本实验,懂得如何安装kell软件以及实验板,懂得单片机的调试,初步了解并熟悉实验板上单片机I/O口和LED 灯的电路结构,能通过修改程序实现仿真板上不同灯的亮灭情况,并希望通过多次试验对它有更多的了解。

单片机计数器实验报告

单片机计数器实验报告

计数器实验报告㈠实验目的1.学习单片机内部定时/计数器的使用和编程方法;2.进一步掌握中断处理程序的编程方法。

㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台5.信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms中断一次,看T0内每50ms 来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。

㈣实验说明1.本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。

单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。

2.计数脉冲由信号发生器输入(从T0端接入)。

3.计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4.将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码ORG 00000H LJMP MAINORG 001BH ;T0的中断入口地址AJMP MAIN1MAIN:MOV SP,#60HMOV TMOD,#15H ;设置T1做定时器,T0做计数器,都于方式1工作MOV 20H,#14H ;装入中断次数MOV TL1,#0B0H ;装入计数值低8位MOV TH1,#3CH ;装入计数值高8位MOV TL0,#00H计数器主程序框图中断返回恢复现场NY 是否到1秒?显示置T1定时常数INT _T1入口保护现场清T0计数值中断服务程序框图开 始置T0,T1模式及初始值设置初始常数开中断等 待MOV TH0,#00HSETB TR1 ;启动定时器T1SETB TR0 ;启动计数器T0SETB ET1 ;允许T1中断SETB EA ;允许CPU中断SJMP $ ;等待中断MAIN1:PUSH PSWPUSH ACCCLR TR0CLR TR1 ;保护现场MOV TL1,#0B0H ;装入计数值低8位MOV TH1,#3CH ;装入计数值高8位,50ms;允许T1中断DJNZ 20H,RETUNT ;未到1s,继续计时MOV 20H ,#14H;1s到重新开始SHOW: ;显示计数器T0的值MOV R0,TH0 ;读计数器当前值MOV R1,TL0MOV A,R1MOV B,#0AHDIV AB;将计数值转为十进制MOV C,ACC.3 ;显示部分,将A中保存的十位赋给L0~L3 MOV P1.0,CMOV C,ACC.2MOV P1.1,CMOV C,ACC.1MOV P1.2,CMOV C,ACC.0MOV P1.3,CMOV A,B ;将B中保存的各位转移到A中MOV C,ACC.3 ;将个位的数字显示在L4~L7上MOV P1.4,CMOV C,ACC.2MOV P1.5,CMOV C,ACC.1MOV P1.6,CMOV C,ACC.0MOV P1.7,CRETUNT:MOV TL0,#00H ;将计数器T0清零MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。

实验报告(单片机实验报告)

实验报告(单片机实验报告)

1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。

已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。

请编程。

org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。

R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。

同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。

若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。

30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。

单片机静态数码管实验报告

单片机静态数码管实验报告

单片机静态数码管实验报告一、引言静态数码管是一种常用的显示器件,广泛应用于各种仪器仪表、计时器、计数器等场合。

本实验旨在通过单片机控制静态数码管,实现数字的显示功能。

二、实验原理静态数码管由若干个发光二极管组成,每个发光二极管代表一个数字。

通过控制每个发光二极管的亮灭,可以显示不同的数字。

单片机通过控制数码管的共阳极或共阴极,以及发光二极管的亮灭,实现数字的显示。

三、实验器材1. 单片机开发板2. 静态数码管3. 连接线四、实验步骤1. 连接电路:将静态数码管的共阳极或共阴极与单片机开发板相应的IO口连接。

2. 编写程序:使用C语言编写程序,通过控制IO口的高低电平控制数码管的亮灭,实现数字的显示。

3. 烧录程序:将编写好的程序烧录到单片机开发板中。

4. 调试程序:通过调试程序,观察数码管是否能正常显示数字。

5. 结果分析:根据实验结果,分析程序的正确性及数码管显示的准确性。

6. 实验总结:总结实验过程中的问题及解决方法,并对实验结果进行分析和评价。

五、实验结果经过实验,我们成功地通过单片机控制静态数码管,实现了数字的显示。

数码管能够根据程序的控制,显示出不同的数字,显示效果良好,准确度高。

六、实验分析通过本实验,我们掌握了单片机控制静态数码管的方法和技巧。

在实验过程中,我们发现控制数码管显示数字的关键在于正确地控制IO口的高低电平。

同时,我们还发现静态数码管显示数字的亮度和清晰度与电源电压和电流的稳定性有关,需要合理选择电源参数。

七、实验应用静态数码管广泛应用于各种仪器仪表、计时器、计数器等场合。

通过单片机控制静态数码管,可以实现各种数字的显示功能,满足不同场合的需求。

八、实验总结通过本实验,我们深入了解了单片机控制静态数码管的原理和方法。

通过编写程序和调试程序,我们成功地实现了数字的显示功能。

实验过程中,我们遇到了一些问题,但通过不断的调试和尝试,最终解决了问题。

通过本次实验,我们不仅加深了对单片机原理的理解,还提升了实际操作和问题解决的能力。

单片机实验报告 附含说明书

单片机实验报告  附含说明书

第一章 DICE-5208K开发型单片机综合实验仪概述一、系统简介DICE-5208K型单片机实验系统由DICE-5208K开发型单片机综合实验箱、DICE-3000型仿真器、扩展卡和DICE-51仿真开发系统软件等组成。

是《MCS-51单片机原理与接口》、《单片机控制技术》、《C8051Fxxx高速SOC单片机原理及应用》、《EDA》、《VHDL硬件描述语言》、《CPLD/FPGA应用基础》等课程教学的配套实验设备。

新增加了几乎所有最实用、新颖的接口电路(如1 WIRE /I2C/SPI总线等)和通讯类接口实验(如USB2.0通讯/TCP/IP网络通讯/CAN总线/红外线收发等)。

可进行MCS-51、C8051F嵌入式单片机、CPLD/FPGA等课程的开放式实验教学。

二、主要特点1.该实验系统配置DICE-3000型高性能MCS-51硬件仿真器,64K数据空间,64K程序空间全部开放,不占用CPU资源,采用双CPU模式,仿真CPU和用户CPU独立运行,上位仿真软件支持汇编、C语言、PL/M语言。

可运行于WIN98/2000/NT/XP操作系统平台。

2.实验系统带有ISP在线下载电路,学生在完成实验后可脱离仿真机和PC机独立运行学生自行设计的单片机系统。

(可在线编程AT89S51/52/53系列单片机)。

3.该实验系统可扩展C8051F020嵌入式实验开发模块, 并配有DICE-EC5型USB高速通讯仿真器,通过4脚的JTAG接口可以进行非侵入式、全速的在线系统调试、仿真;集成开发环境支持Silicon Labs IDE和KEIL C软件。

4.该实验系统可扩展CPLD/FPGA模块,并配有相应的并口下载电路,轻松变成一台EDA实验开发平台。

5.该实验系统可扩展“数控式电子演示装置”,该装置是本公司的专利产品,结合上位演示软件和USB接口,可为该实验系统扩展多达十五个生动、形象、复杂的实验,其中大部分是闭环实验,实验践性非常强。

单片机实训报告总结

单片机实训报告总结

单片机实训报告总结篇一:51单片机实训报告“51单片机”精简开发板的组装及调试实训报告为期一周的单片机实习已经结束了。

通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。

同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。

此次实训主要有以下几个方面:一、实训目的1.了解“51”精简开发板的工作原理及其结构。

2.了解复杂电子产品生产制造的全过程。

3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。

4.能运用51单片机进行简单的单片机应用系统的硬件设计。

5.掌握单片机应用系统的硬件、软件调试方法二、实验原理流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。

它的电气性能指标:输入电压:~6V,典型值为5V。

可用干电池组供电,也可用直流稳压电源供电。

如图所示:本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。

三、硬件组成1、晶振电路部分单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。

他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。

2、复位端、复位电路给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。

单片机占空比为50%的矩形波实验报告

单片机占空比为50%的矩形波实验报告

单片机占空比为50%的矩形波实验报告单片机实验报告一、实验目的 1. 了解 32 位单片机(STM32 系列)原理及其应用,熟悉单片机的资源,掌握单片机的最小系统设计及扩展技术,掌握单片机的编程语言。

2. 通过本实验了解 LCD 液晶工作原理,能通过编程操作液晶的显示。

3. 通过本实验介绍以太网的通信原理,能够在计算机与实验系统间通过以太网展开数据传输。

二、实验设备 STM32 实验系统一套,PC 机一台。

三、实验原理 1. I/O 口及定时器实验:STM32 的 GPIO 口掌控 4 个发光二极管,介绍其硬件相连接方式,学会采用 STM32 的一个定时器,掌控对定时器计时方式的编程。

编写程序循环照亮 4 个发光二极管,掌控照亮时间为 1 秒钟闪光。

2. LCD 实验:掌握 STM32 单片机与液晶之间的硬件连接方式,单片机如何驱动液晶进行显示。

3. 串行口通信实验:掌控 STM32 单片机与计算机之间的硬件相连接方式,介绍二者之间的传输协议,展开数据传输。

四、内容与步骤 1. 学会使用 IAR 的编译链接调试环境,熟悉 IAR 中有关 STM32 使用到的库,并能顺利建立包含各种库文件的工程。

2. I/O 口实验:在创建工程的基础上能够照亮发光二极管。

3. 定时器实验:循环定时(用定时器做)点亮 4 个灯,即每 1 秒闪烁点亮一个灯,循环往复(或叫跑马灯实验)。

4. LCD 实验:通过自行撰写库文件和介绍液晶显示字库,能够在液晶上表明“北京航空航天大学机械工程及自动化学院”字样。

5. 串行口通信实验:编写串行口通信实验程序,能在计算机与 STM32 系统间进行ASCII 码的传输。

五、关键源代码1. I/O 口及定时器实验 //通过定时器 4 中断函数实现跑马灯 voidTIM4_IRQHandler() //定时器 4 中断函数 { if (TIM_GetITStatus(TIM4,TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM4, TIM_IT_Update);switch (aaa) { case 0:{ GPIO_ResetBits(GPIOD, GPIO_Pin_11); GPIO_SetBits(GPIOD, GPIO_Pin_8);break;} case 1:{ GPIO_ResetBits(GPIOD, GPIO_Pin_8);GPIO_SetBits(GPIOD, GPIO_Pin_9);break;} case 2:{ GPIO_ResetBits(GPIOD,GPIO_Pin_9); GPIO_SetBits(GPIOD, GPIO_Pin_10); break;} case3:{ GPIO_ResetBits(GPIOD, GPIO_Pin_10); GPIO_SetBits(GPIOD, GPIO_Pin_11);break;} } aaa++; if(aaa==4) aaa=0; } } int main() { RCC_Configuration();//配置系统时钟 NVIC_Configuration(); //配置中断 GPIO_Initialize(); //初始化 I/O 口 TIME_Initialize(); //初始化定时器 4 while(1); } 2. LCD 实验//在字体库文件中创建汉字点阵数组 hanzi[14][32],而后逐个显示字体库中的汉字const unsigned charhanzi[14][32]={ {0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x44,0x04,0x4E,0x7C,0x58,0x04,0x60,0x04,0x40,0x04,0x40,0x04,0x40,0x0C,0x40,0x34,0x42,0xE4,0x42,0x44,0x42,0x04,0x3E,0x00,0x00}, //北{0x02,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x01,0x00,0x09,0x30,0x19,0x18,0x31,0x0C,0x41,0x08,0x05,0x00,0x02,0x00}, //京…,} //汉字图形数组,这里只得出了“北”和“京”,全部的存有“汤志达贾英杰北京航空航天大学” void LCD_ShowHZ(u8 x, u16 y, u8 num, u8 size, u16 PenColor,u16 BackColor) //表明单个 16*16 汉字 { #define MAX_CHAR_POSX 232 #defineMAX_CHAR_POSY 304 u8 temp; u8 pos,t; if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY) //少于表明范围,选择退出 return; if(XY) // 竖屏表明{ LCD_WindowMax(x,y,x+size,y+size); //设置窗口 LCD_WriteReg(0x11, 0x);LCD_SetCursor(x, y); } else /横屏表明 { LCD_WindowMax(x,y-size,x+size,y); //设置窗口 LCD_WriteReg(0x11, 0x); LCD_SetCursor(x,y-1); //设置光标边线 } LCD_WriteRAM_Prepare(); //已经开始载入GRAM for(pos=0;posRCC_Configuration(); //时钟布局 LCD_Init(); //初始化 LCD模块 LCD_Clear(WHITE); for(u8 i=0;i<3;i++) LCD_ShowHZ(50+i*16, 100, i, 16, RED, WHITE); for(;i<6;i++) //表明“贾英杰” LCD_ShowHZ(130+i*16, 100, i, 16,RED, WHITE); for(;i<14;i++) //表明“北京航空航天大学” LCD_ShowHZ(50+i*16,200, i, 16, RED, WHITE); while(1); } 3. 串行口通信实验 //通过串口通信不断向上位机传送“buaa” void Uart1_PutChar(u8 ch) //传送单个字符{ USART_SendData(USART1, ch); while (USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET); } int main() { RCC_Configuration();USART1_Configuration() ; //须要恰当设置波特率 while(1) { char a[10]="buaa"; for(int i=0;a[i]!="\0";i++) Uart1_PutChar(a[i]); } } 任课教师评语:任课教师盖章:考核日期:年月日单片机实验单片机实验七单片机实验2单片机实验十三1实验内容报告单RCC_Configuration(); //时钟配置 LCD_Init(); //初始化 LCD 模块LCD_Clear(WHITE); for(u8 i=0;i<3;i++) LCD_ShowHZ(50+i*16, 100, i, 16, RED, WHITE); for(;i<6;i++) //显示“贾英杰” LCD_ShowHZ(130+i*16, 100, i, 16, RED, WHITE); for(;i<14;i++) //显示“北京航空航天大学” LCD_ShowHZ(50+i*16, 200,i, 16, RED, WHITE); while(1); } 3. 串行口通信实验 //通过串口通信不断向上位机发送“buaa” void Uart1_PutChar(u8 ch) //发送单个字符{ USART_SendData(USART1, ch); while (USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET); } int main() { RCC_Configuration();USART1_Configuration() ; //需正确设置波特率 while(1) { char a[10]="buaa"; for(int i=0;a[i]!="\0";i++) Uart1_PutChar(a[i]); } } 任课教师评语:任课教师盖章:考核日期:年月日。

单片机外部中断实验报告

单片机外部中断实验报告

单片机外部中断实验报告实验目的:1、理解单片机外部中断的原理和用途;2、掌握单片机外部中断的配置和使用方法。

实验器材:1、STC15W408AS单片机开发板;2、简单的电路连接器;3、按钮开关。

实验原理:单片机外部中断是通过外部硬件信号触发单片机的中断请求,在单片机运行过程中,当外部信号满足特定条件时,会触发中断,并暂停当前的运行程序,转而执行中断服务程序。

通过外部中断,可以实现对外部事件的实时处理。

实验步骤:1、将按钮开关与单片机开发板连接,将按钮开关的一端与单片机的INT0引脚连接,另一端与GND连接。

2、在开发板上连接好电源并供电。

3、打开Keil软件,新建一个工程,并选择合适的单片机型号。

4、配置单片机的外部中断功能,设置INT0引脚为中断输入。

5、编写中断服务程序,当INT0引脚检测到边沿信号时,执行中断服务程序,并在其中加入相应的处理代码。

6、编写主程序,配置相关的引脚和寄存器,使单片机进入中断模式,接受外部中断信号,并执行中断服务程序。

7、下载程序到单片机开发板上,运行程序。

8、按下按钮开关,触发外部中断,并查看实验结果。

实验结果:当按下按钮开关时,实时触发外部中断,单片机停止当前程序的运行,进入中断模式,并执行中断服务程序中的相应代码。

实验总结:通过这次实验,我对单片机的外部中断有了更深入的理解,并学会了如何使用外部中断实现对外部事件的及时处理。

外部中断广泛应用于各种实时系统和设备中,具有很大的实用价值。

在以后的学习和实践中,我会进一步掌握和应用单片机的外部中断功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验报告班级:信科09-3姓名:王艳辉学号:08093581指导老师:陈岱完成时间:2012年1月8日实验一 I/O接口P1、P3口实验一,实验题目1,用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。

2,用P3口做输入口,接八个扭子开关,通过P1口在实验箱上LED 灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。

二,实验目的1.熟悉使用CPLD实验箱进行单片机实验的方法。

2.设计出符合实验要求的CPLD硬件电路。

3.学习单片机仿真开发软件Keil 51的使用方法。

4.学习MCS-51汇编语言编程方法。

5.学习Pl口的使用方法。

6.学习延时子程序的编写和使用。

三,实验准备P1和P3口为准双向口,Pl、P3的每一位都能独立地定义为输出线或输入线,作为输入时,必须向锁存器相应位写入“l”,该位才能作为输入。

803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。

再来看一下延时程序的实现。

现常用的有两种方法:一是用定时器中断来实现,一是用指令循环来实现。

在系统时间允许的情况下可以采用后一种方法。

根据实验系统的工作主频,计算出延时0.1s的时间常量,编制延时程序:MOV R7, #200 (1)DEl:MOy R6,#X (2)DE2:DJNZ R6,DE2 (3)DJNZ R7,DEl (4)上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需1÷0.256us现求出X值:(X*1/0.256+1/0.256+l/0.256)*200+l/0.256=0.1*10^6。

解出X=l26。

代入上式可知实际延时约0.100O04s,近似符合要求。

四,实验步骤(1)打开MAX+PLUSⅡ CPLD实验开发系统。

(2)点击File菜单Project子菜单之Name项,出现Project Name 对话框。

为当前的实验选择恰当的路径并创建项目名称”E:\AT8031”。

(3)点击File菜单之New项,出现对话框,为选择输入方式,选择Graphic Editor File。

出现图形编辑窗口。

(4)双击空白编辑区,出现Enter Symbol 对话框。

(5)从Symbol Libraries项中选择mf子目录(双击),在prim子目录中选择输入脚input 和输出引脚output。

(6)在图形编辑窗口中的左侧点击连线按钮,并完成对电路的连线。

(7)在引脚的PIN_NAME处左键双击使之变黑,键入引脚名称。

(8)点击菜单中的“File-Project-set project to current file”,使项目名称与当前设计文件相同。

(9)选择器件。

点击Assign 菜单的Device项,选择ACEX1K系列的EP1K100QC208-3。

(10) 汇编语言编写程序,实验所用程序见程序清单。

(11) 使用Keil软件对程序进行编译,生成.hex烧写文件,下载到硬件中,并通过Keil软件进行在线仿真。

五、连线方法执行程序1时:P1.0-P1.7接发光二极管Ll—L8。

执行程序2时:P1.0-P1.7接扭子开关K1—K8;P2口通过CPLD接发光二极管Ll—L8;实验所用电路如图:六、程序框图程序清单:(一)程序一ORG 0000HAJMP MAINORG 1000HSTART: MOV A,#01H ;先让第一个发光二级管高。

LOOP: MOV P1,A ;从P1口输出到发光二级管MOV R1,#10 ;延时1秒DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3DJNZ R2,DEL2DJNZ R1,DEL1RL A ;左移一位,下一个发光二级管亮 LJMP LOOPEND(二)程序二ORG 0000HAJMP MAINORG 1000HMAIN: MOV P3,#0FFHSTART: MOV A,P3 ;从P3口读入开关状态MOV P1,ALJMP STARTEND七,实验小结通过本次试验,我熟悉了单片机操作实验箱的用法。

以前在学数字系统设计时,对CPLD没有足够重视,这次实验让我对CPLD用法有了更深刻的体会,是知识的一次综合和提升。

本次试验让我深刻理解了P1口和P3口的准双向口性质。

在P1口做输入口输入数据时必须先向该端口的锁存器写入0FF,否则有可能出错。

实验二简单I/0口扩展实验1(行列式键盘扫描程序设计和LED动态显示程序实验)一,实验题目1、以一个单片机的8位口,连接实验箱的4X4阵列式键盘,编制键盘扫描程序和散转程序,实现键盘扫描并散转。

2、利用两个8位的I/O接口,设计一个6位的动态7段LED显示器。

二,实验目的1.学习在单片机系统中扩展简单I/0接口的方法。

2.学习键盘扫描程序、散转程序的设计方法。

3. 学习动态显示扫描程序的编写方法。

三,实验步骤(1)如下图,配置CPLD试验箱,使用图形输入法,打开8031和外设(键盘和7段数码管)的连接。

(2)管脚分配。

通过查找《数字系统设计指导》找出实验所用到的端口对应的CPLD中的引脚,对上图进行管脚分配。

(3)使用Keil软件,编写实验所需要的程序。

(4)使用Keil对所编写程序进行编译,通过不断修改,最终编译通过,生成烧写文件(.hex)。

(5)下载。

启动CPLDDN-3下载软件,在项目目录下选中文件,点击“下载CPLD” 按钮进行下载,观察、验证实验电路的正确性。

(6)重复上述步骤,进行第二个实验,验证7段数码管的动态扫描程序。

四,实验连线键盘扫描所用电路连线图●7段LED数码管动态显示所用电路连接图五,程序框图●程序一框图:程序二框图:六,程序清单程序一:键盘动态扫描并实现散转ORG 0000HAJMP MAINORG 1000HMAIN: MOV R0,#0FEH ;检测第一行CHECK: MOV A,@R0MOV P1,ASCAN: MOV A,P1ANL A,#0F0HCJNE A,0F0H,DELROL: MOV A,R0 ;移位检测 RR AMOV R0,AAJMP CHECKDEL: ACALL DELAY ;延时消抖CJNE A,#0F0H,DDDAJMP ROLDDD: CJNE R0,0F7H,NEXT1 ;判定行AJMP ROW1NEXT1: CJNE R0,0FBH,NEXT1AJMP ROW2NEXT2: CJNE R0,0FDH,NEXT1AJMP ROW3NEXT3: AJMP ROW4ROW1: CJNE A,070H,ROW1N1 ;;判定列AJMP K0ROW1N1:CJNE A,0B0H,ROW1N2AJMP K1ROW1N2:CJNE A,0D0H,ROW1N3AJMP K2ROW1N3:AJMP K3ROW2: CJNE A,070H,ROW2N1AJMP K4ROW2N1:CJNE A,0B0H,ROW2N2AJMP K5ROW2N2:CJNE A,0D0H,ROW2N3AJMP K6ROW2N3:AJMP K7ROW3: CJNE A,070H,ROW3N1AJMP K8ROW3N1:CJNE A,0B0H,ROW3N2AJMP K9ROW3N2:CJNE A,0D0H,ROW3N3AJMP KAROW3N3:AJMP KBROW4: CJNE A,070H,ROW4N1AJMP KCROW4N1:CJNE A,0B0H,ROW4N2AJMP KDROW4N2:CJNE A,0D0H,ROW4N3AJMP K2ROW4N3:AJMP K3K0:…………………………………………..AJMP MAIN;按键处理,处理后返回K1:…………………………………………..AJMP MAINK2:…………………………………………..AJMP MAINK3:…………………………………………..AJMP MAINK4:…………………………………………….AJMP MAINK5:………………………………………………AJMP MAINK6:………………………………………………AJMP MAINK7:………………………………………………AJMP MAINK8:………………………………………………AJMP MAINK9:……………………………………………….AJMP MAIN KA:……………………………………………….AJMP MAIN KB:……………………………………………….AJMP MAIN KC:……………………………………………….AJMP MAIN KD:……………………………………………….AJMP MAIN KE:……………………………………………….AJMP MAIN KF:…………………………………………………AJMP MAIN程序二:6位7段数码管动态显示ORG 0000HAJMP MAINORG 1000HTB1: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H TB2: DB 01H,02H,04H,08H,10H,20HORG 1000HMAIN: MOV R0,#TB1MOV R1,#TB2MOV R2,06HMOV R3,0AH ;数字循环显示变量L1: MOV A,@R1MOV P2,AMOV A,@R0MOV P1,AACALL DELAYDJNZ R2,NEXT1INC R1L2: DJNZ R3,NEXT2INC R0AJMP L1NEXT1: MOV R1,#TB2AJMP L2NEXT2: MOV R0,#TB1AJMP L1DELAY: MOV R7,#0CH ;软件延时6ms TM: MOV R6,#0FFHTM6: DJNZ R6,TM6DJNZ R7,TMRETEND七,实验小结通过本实验我对汇编语言程序的编写进一步熟悉了,并且知道了如何综合硬件和软件进行编程,只有在深刻理解硬件的基础上才能有效进行硬件编程,我感觉到自己收获很大,我的编程素养和硬件知识水平都有了很大的提升。

相关文档
最新文档