单片机实验 带程序的
单片机外部中断实验(附C语言程序)
单片机外部中断实验(附c程序)一、实验目的掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。
二、实验内容8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能:(1)合上、P3.3断开时LED1闪烁(2)P3.2断开、P3.3合上时LED2闪烁(3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁(4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁试编写C语言和汇编语言程序使用自然优先级就可以也可 XO 高级X1低级PX0=1 PX1=0四、实验电路五、参考程序(自己完成)C程序:Include<reg52.h>Sbit P2_0=P2^0;Sbit P2_1=P2^1;Sbit P3_2=P3^2;Sbit P3_3=P3^3;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}Void main{EA=1;EX0=1;EX1=1;ITO=1;IT1=1;PX0=1;PX1=0;While(1);}Void int0(void) interrupt 0 { if(!P3_2){While(1){P2_0=1;delay02s();P2_0=0;delay02s();}}}Void int1(void) interrupt 2 { if(!P3_3){While(1){P2_1=1;delay02s();P2_1=0;delay02s();}}}。
单片机软件实验及程序
实验一LED点亮实验实验目的:学习IO口的操作控制方法实验仪器:PC机、KEIL3软件、下载软件、单片机系统板等实验原理:实验要求:使用汇编语言编写程序,使单片机系统板上P2.7引脚外接的LED灯点亮。
程序实现:LED BIT P2.7 ;控制口ORG 0000HSJMP MAINORG 0030HMAIN:CLR C ;低电平点亮MOV LED,CSJMP $END实验二LED闪烁实验实验目的:学习IO口的操作控制方法实验仪器:PC机、KEIL3软件、下载软件、单片机系统板等实验原理:实验要求:使用汇编语言编写程序,使单片机系统板上P2.7引脚外接的LED每隔0.5S闪烁。
程序实现:LED BIT P2.7 ;控制口ORG 0000HSJMP MAINORG 0030H;******************************************************; 主函数; 功能: 实现LED闪烁;******************************************************MAIN:SETB C ;高电平熄灭MOV LED,CACALL DELAYCLR C ;低电平点亮MOV LED,CACALL DELAYSJMP MAIN;RET;******************************************************; 延时(12MHZ); 所得的延时结果为:500ms; 用法举例:; ACALL DEAL Y;****************************************************** DELAY:MOV R0,#250DELAY1:MOV R1,#200DELAY2:NOPNOPNOPNOPNOPNOPNOPNOPDJNZ R1,DELAY2 ;最内层循环,10机器周期,10us *R1 =2ms DJNZ R0,DELAY1 ;第二层循环,R0*2ms =500ms =0.5SRET;******************************************************; 结束;****************************************************** END实验三LED流水灯实验实验目的:学习IO口的操作控制方法实验仪器:PC机、KEIL3软件、下载软件、单片机系统板等实验原理:实验要求:使用汇编语言编写程序,使单片机系统板上P2引脚外接的8个LED每隔0.5S循环依次点亮(流水效果)。
单片机拆字程序实验
单片机拆字程序实验单片机拆字程序实验是一种通过单片机控制LED灯来实现拆字效果的实验。
通过该实验,可以学习单片机编程和数字电子技术知识,既能提高对硬件的理解,又能锻炼编程能力。
一、实验器材1. 单片机开发板2. 16x8 点阵 LED 模块3. 20P 配对排母头4. DC5V 2A 电源适配器5. 杜邦线、电阻等。
二、实验原理本实验通过单片机控制16x8点阵LED模块实现拆字效果,具体原理如下:1. 系统时钟为12M,通过定时器中断驱动点阵扫描显示,显示速度为50ms/帧。
2. 使用一个数组存储汉字的字模数据,每个汉字占据16字节,字节以二进制形式存储,通过给定的字模数据生成汉字的字形。
3. 利用按键调用拆字函数实现对汉字的拆分,如将“福”字拆分为“示”、“口”、“田”。
4. 利用移位运算实现汉字显示的左右滚动,通过控制移位幅度来实现滚动速度。
三、实验步骤1. 连接电路:将16x8点阵LED模块与单片机开发板相连,DC24V接DCIN,GND接GND, DIN接P2.0, CLK接P2.1, CS接P2.2。
2. 编写程序:在Keil C51编译器中编写程序,包括定义汉字数组、各个函数和中断程序等。
3. 烧录程序:将编写好的程序烧录到单片机开发板中。
4. 调试程序:按键触发拆字函数,观察汉字的拆分和滚动效果是否正确。
五、实验注意事项1. 拆字函数必须考虑多种情况,比如汉字的结构、不同拆分方式的可行性等,以保证拆分的正确性。
2. 调试时需要注意数组赋值的顺序,尤其是大端小端问题,否则可能会导致汉字显示出错。
3. 单片机开发板的电源必须与点阵LED模块的电源匹配,以确保正常工作。
六、实验拓展1. 实现更多的汉字拆分和显示样式,比如上下滚动、闪烁等。
2. 利用串口通信实现汉字输入和显示。
3. 尝试利用其他芯片和硬件实现类似的效果。
单片机所有实验程序
单片机实验程序-------- 1.定时器及中断实验#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(){uint x,y;for(x=100;x>0;x--)for(y=110;y>0;y--);}uchar m,flag;main(){uchar a,b;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EX0=1;EX1=1;PX1=1;ET0=1;TR0=1;EA=1;m=0;P1=0;while(1){while(flag==0);flag=0;if(m==100)m=0;m++;a=m/10;b=m+a*6;P1=b;}}void timer0() interrupt 1 using 0{uchar t;TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(t<20)t++;else {flag=1;t=0; }}void exter0() interrupt 0 using 1{if(INT0==0)delay();if(INT0==0)flag=1;}void exter1() interrupt 2 using 2{if(INT1==0)delay();if(INT1==0)m=0;}2.定时器控制二极管#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar num;uint a;main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;num=0;a=0;P1=table[num];while(1){}}void exter0() interrupt 1{ TH0=(65536-50000)/256;TL0=(65536-50000)%256;a++;if(a==20){ a=0;num++;if(num==8) num=0;P1=table[num];}}3.时钟综合实验#include <reg51.h>unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char m,sec,min;void delay(){ unsigned char x,y;for(x=100;x>0;x--)for(y=50;y>0;y--);}void main(){TMOD=0x01;TH0=15536/256;TL0=15536%256;ET0=1;TR0=1;IT0=1;EX1=1;EX0=1;EA=1;while(1){P2=0x80;P0=tab[sec%10];delay();P0=0xff;P2=0x40;P0=tab[sec/10];delay();P0=0xff;P2=0x20;P0=tab[min%10];delay();P0=0xff;P2=0x10;P0=tab[min/10];delay();P0=0xff;}}void timer() interrupt 1 using 1 {TH0=15536/256;TL0=15536%256;m++;if(m==3){m=0;sec++;}if(sec==60){sec=0;min++;}if(min==60)min=0;}void srv0() interrupt 0 using 0 {if(INT0==0)min++;if(min==60)min=0;}void srv1() interrupt 2 using 2 {if(INT1==0){ sec=0;min=0;}}4.PC发送到单片机#include <reg51.h> unsigned char a;void main(){ SCON=0x50;TMOD=0x20;TH1=TL1=0xfd;TR1=1;ET1=0;ES=1;EA=1;while(1);/* {/* while(!RI);a=SBUF;RI=0;if(a==0x55){SBUF=0x41;while(!TI);TI=0;}*/// }}void srv() interrupt 4{ if(RI){a=SBUF;RI=0;}if(a==0x55){SBUF=0x41;while(!TI);TI=0;}}发送#include <reg51.h>void main(){ SCON=0x40;TMOD=0x20;TH1=TL1=0xfd;TR1=1;while(1){SBUF=0x55;while(!TI);TI=0;}}AD#include <reg51.h>#include <intrins.h>#include <absacc.h>#define PIN0 XBYTE[0x7ff8]#define PIN1 XBYTE[0x7ff9] typedef unsigned char byte; typedef unsigned int word;void main(void){float resuit0,result1;float resuit0_reg,result1_reg;byte i,j,k;while(1){for(i=0;i<2;i++){if(!i)PIN0=0;else PIN1=0;for(k=0;k<255;k++);if(!i)resuit0_reg=PIN0;else result1_reg=PIN1;}resuit0=resuit0_reg*5/255;result1=result1_reg*5/255;}}。
单片机实验报告c语言
单片机实验报告c语言单片机实验报告C语言引言:单片机是一种集成电路,具有微处理器的功能。
它可以用于控制各种电子设备,从家电到汽车电子,都可以看到单片机的身影。
在本次实验中,我将通过C语言编程来控制单片机,实现一些简单的功能。
实验一:LED灯控制在这个实验中,我使用了一块基于8051单片机的开发板。
首先,我将一个LED 灯连接到开发板的引脚上。
然后,我使用C语言编写了一个简单的程序,通过控制引脚的高低电平来控制LED灯的亮灭。
程序的逻辑很简单,当引脚输出高电平时,LED灯亮起;当引脚输出低电平时,LED灯熄灭。
通过调整程序中的延时时间,我可以控制LED灯的闪烁频率。
实验二:数码管显示在这个实验中,我使用了四个七段数码管和一个74HC595芯片。
数码管是一种常见的显示设备,可以显示数字和一些字母。
74HC595芯片是一个串行输入并行输出的移位寄存器,可以通过串行数据输入来控制数码管的显示。
通过C语言编程,我可以将数字数据转换为对应的二进制码,并通过74HC595芯片将数据发送到数码管上,从而实现数字的显示。
我还可以通过编写程序来实现数码管的滚动显示、闪烁等效果。
实验三:温度传感器在这个实验中,我使用了一个温度传感器和一个ADC0804芯片。
温度传感器可以将温度转换为电压信号,而ADC0804芯片可以将模拟信号转换为数字信号。
通过将温度传感器和ADC0804芯片连接到单片机开发板上,并使用C语言编程,我可以实时获取温度信息,并将其显示在数码管上。
这样,我就可以实时监测环境温度,并做出相应的控制。
实验四:蜂鸣器控制在这个实验中,我使用了一个蜂鸣器和一个可变电阻。
蜂鸣器是一种能够发出声音的设备,可以用于报警、提醒等场景。
通过调节可变电阻的电阻值,我可以改变蜂鸣器的声音的频率和音量。
通过C语言编程,我可以控制蜂鸣器的开关和声音的频率,从而实现不同的声音效果。
实验五:红外遥控在这个实验中,我使用了一个红外接收模块和一个红外发射模块。
单片机汇编实验报告
单片机汇编实验报告1. 实验目的本实验旨在通过编写单片机汇编程序,掌握单片机的基本操作,理解汇编语言和单片机的工作原理。
2. 实验器材•STC89C52单片机开发板•串口线•电脑3. 实验原理单片机是一种集成了处理器、存储器、输入输出设备等功能的微型计算机系统。
通过编写汇编语言程序,可以利用单片机的内部寄存器和外部接口,实现各种功能。
4. 实验步骤步骤一:准备工作1.将STC89C52单片机开发板与电脑通过串口线连接。
2.打开开发板电源,确保电源工作正常。
步骤二:编写汇编程序1.打开汇编语言编辑器,例如Keil C51。
2.创建一个新的汇编语言项目,命名为“experiment.asm”。
3.编写汇编程序,实现所需的功能。
例如,可以编写一个简单的程序,使LED灯闪烁。
步骤三:编译和烧录程序1.选择适当的编译选项,将汇编程序编译为二进制文件。
2.将生成的二进制文件烧录到单片机中。
可以使用烧录软件或者编程器完成这一步骤。
步骤四:连接外部电路1.根据需要,连接外部电路到单片机的GPIO引脚。
例如,如果需要控制LED灯,可以将LED的阳极连接到单片机的某个输出引脚,将LED的阴极连接到单片机的地。
步骤五:运行实验1.将开发板连接到电源,确保电源正常工作。
2.按下开发板上的复位按钮,使单片机开始执行程序。
3.观察实验现象,并记录下实验结果。
5. 实验结果与分析通过以上步骤,我们成功编写并烧录了一个简单的汇编程序到单片机中。
在运行实验时,LED灯按照程序的要求进行闪烁。
这表明我们的实验设计和编程是正确的。
6. 实验总结在本次实验中,我们通过编写汇编程序,学习了单片机的基本操作和工作原理。
通过实际操作,我们更好地理解了汇编语言的编写和单片机的工作方式。
同时,我们还学会了使用烧录软件将程序烧录到单片机中,并通过外部电路观察实验结果。
7. 实验改进在以后的实验中,我们可以尝试更复杂的功能,例如通过单片机控制电机或者LCD显示屏等。
单片机实验程序全
//------------LED显示代码-----------//
// bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
// dp G C D E F B A
uchar code seg[10]={0x3f,0x22,0x5b,0x73,0x66,//0,1,2,3,4
buzzer=~buzzer;
}
if(voice==2)
{TH0=T0ReLoadH2;
TL0=T0ReLoadL2;
buzzer=~buzzer;
}
if(voice==3)
{
}
}
4 LED数码管动态扫描显示实验
#include<STC12c5A32s2.h>
#defineuint unsignedint
TL0 =T0ReLoadL;
TR0 =1;//启动Timer0
ET0 =1;//Timer0中断使能
EA =1;//总开关使能
counter=0;
//-----------------------------大循环
WR_DS1302(0x8e,0X00);
WR_DS1302(0x84,0X14);
功能:产生10ms定时中断
**********************************************************/
void Timer0_Int(void) interrupt1
{if(voice==1)
{TH0=T0ReLoadH1;//重装载计数器初值
TL0=T0ReLoadL1;
#define T0ReLoadL((65536-(uint)(T0_TIME*11.0592/12)) % 256)
单片机整套实验及程序(交通灯,跑马灯等)
单片机整套实验及程序(交通灯,跑马灯等)实验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操作过程在采集模拟信号时一般不可避免会受到噪声干扰我们一般要做什么处理根据本实验编写处理相关程序。
单片机实验报告c语言
单片机实验报告c语言
单片机实验报告C语言
在当今科技发展迅猛的时代,单片机技术已经成为各种电子设备中不可或缺的一部分。
而C语言作为一种高效的编程语言,也成为了单片机编程的首选语言之一。
本文将介绍一次单片机实验的过程,并以C语言为主要编程语言进行编程。
实验目的:
本次实验的主要目的是通过单片机控制LED灯的亮灭,实现简单的电路控制。
同时,通过C语言编程实现对单片机的控制,加深对C语言和单片机的理解。
实验步骤:
1. 确定实验所需材料:单片机开发板、LED灯、跳线、电阻等。
2. 将LED灯连接到单片机开发板的GPIO口,并通过跳线和电阻连接。
3. 打开单片机开发板的开发环境,新建一个C语言项目。
4. 在C语言项目中编写控制LED灯的程序,包括初始化GPIO口和控制LED灯亮灭的代码。
5. 编译并下载程序到单片机开发板中。
6. 运行程序,观察LED灯的亮灭情况。
实验结果:
经过以上步骤的操作,我们成功地实现了对LED灯的控制。
通过C语言编程,我们可以轻松地控制单片机的各种功能,实现各种电路控制。
同时,通过这次实验,我们对单片机的工作原理和C语言的应用有了更深入的了解。
结论:
本次实验通过C语言编程实现了对单片机的控制,实现了对LED灯的简单控制。
通过这次实验,我们不仅掌握了C语言在单片机编程中的应用,也加深了对单
片机技术的理解。
单片机技术和C语言编程在电子领域有着广泛的应用前景,
希望通过不断的实践和学习,我们可以更好地掌握这些技术,为电子领域的发
展做出更大的贡献。
C51单片机实验报告程序
{
while (--j);
} while (--i);
}
void flick()
{
uchar d;
while(d<=2)
{
P2=0x00;
P3=0xc3;
Delay100ms();
P2=0xff;
P3=0xff;
Delay100ms();
d++;
}
}
void show()
{
char j;
switch(j)
while(!ki2);
}
if(!ki3)
{
Delay5ms();
if(!ki3)
a=6;
while(!ki3);
}
if(a!=n)
{
SBUF=a;
while(!TI);
TI=0;
}
if(RI)
{
b=SBUF;
RI=0;
}
P1=tab1[b];
}
}
实验四 交通灯实验
最终实现:上电之后进行初始设置,2号键增加红绿灯时间,3号键增加黄灯时间,初始时间都为零;1号键开始工作;按3、4、5任意键急停,按3、4、5任意键继续(从第一步开始。
}
show();
}
void main()
{
uchar m,k;
uint n=1;
P1M1=0x00;
P1M0=0xff;
TMOD=0x10;
TH1=0xfc;
TL1=0x67;
ET1=1;
EA=1;
while(1)
{
if(!TR1)
{
k=0;
for(k=0;k<50;k++)
单片机实训报告实验步骤
一、实验目的1. 掌握单片机的基本工作原理和硬件结构。
2. 熟悉单片机的编程方法,提高编程能力。
3. 学习单片机的调试技巧,提高调试效率。
4. 通过实际操作,培养动手能力和团队合作精神。
二、实验仪器与设备1. 单片机实验开发板2. 编译器(如Keil、IAR等)3. 仿真软件(如Proteus、Multisim等)4. 连接线、电源、示波器等辅助设备三、实验步骤1. 熟悉单片机实验开发板(1)观察开发板的硬件结构,了解各个模块的功能和连接方式。
(2)熟悉开发板上的按键、LED、串口、I2C、SPI等接口。
2. 编写程序(1)根据实验要求,设计程序功能。
(2)选择合适的编程语言(如C语言、汇编语言等)。
(3)使用编译器编写程序代码,并进行语法检查。
3. 程序调试(1)使用仿真软件(如Proteus)对程序进行仿真调试。
(2)观察程序运行结果,检查程序是否存在错误。
(3)根据仿真结果,修改程序代码,直至程序正常运行。
4. 硬件连接(1)根据程序功能,连接开发板上的相关硬件模块。
(2)确保连接正确,避免短路或接触不良。
5. 实验运行(1)打开电源,启动单片机。
(2)观察程序运行情况,验证程序功能是否实现。
(3)根据实验要求,调整程序参数或硬件配置,优化程序性能。
6. 数据采集与记录(1)使用示波器等设备,采集实验过程中的数据。
(2)记录实验数据,为后续分析提供依据。
7. 结果分析(1)对实验数据进行整理和分析,评估程序性能。
(2)总结实验过程中的经验教训,提出改进措施。
8. 实验报告撰写(1)整理实验过程,包括实验步骤、实验数据、实验结果等。
(2)分析实验结果,总结实验经验教训。
(3)撰写实验报告,要求格式规范、内容完整。
四、实验注意事项1. 确保实验环境安全,避免触电、短路等事故。
2. 严格遵守实验操作规程,避免损坏实验设备。
3. 注意程序调试过程中的细节,提高调试效率。
4. 实验过程中,积极思考,勇于创新,提高动手能力。
单片机实验带程序的
单片机实验带程序的《单片机实验带程序》单片机作为现代电子技术的重要组成部分,在控制、测量、通信等众多领域发挥着关键作用。
通过单片机实验,我们能够更深入地理解其工作原理和应用,同时编写相应的程序来实现各种功能。
在进行单片机实验之前,我们需要准备一些必要的硬件设备。
首先是单片机开发板,这是实验的核心平台,上面集成了单片机芯片、电源电路、时钟电路、下载接口等。
常见的单片机开发板有 51 单片机开发板、STM32 开发板等。
此外,还需要一台电脑用于编写和编译程序,以及下载线将程序传输到开发板上。
以一个简单的点亮 LED 灯的实验为例,让我们来看看单片机实验的过程和程序编写。
首先,在硬件连接方面,我们将一个 LED 灯的阳极通过限流电阻连接到单片机的一个 I/O 引脚,阴极接地。
接下来就是编写程序。
以下是使用 C 语言编写的 51 单片机点亮 LED 灯的程序示例:```cinclude <reg52h> //包含 51 单片机的头文件sbit LED = P1^0; //定义 LED 连接的引脚void main(){LED = 0; //将 LED 引脚置低电平,点亮 LED 灯while(1);//让程序保持在这个状态}```在上述程序中,`include <reg52h>`语句用于包含 51 单片机的相关寄存器定义和函数声明。
`sbit LED = P1^0;`定义了连接 LED 灯的引脚为 P10。
在`main` 函数中,通过将`LED` 引脚置低电平来点亮 LED 灯,并使用`while(1);`让程序保持在这个状态,使 LED 灯持续点亮。
当我们编写好程序后,就可以使用相应的开发工具(如 Keil C51)进行编译。
编译成功后,通过下载线将生成的二进制文件下载到单片机开发板中,此时就能看到 LED 灯被点亮了。
除了点亮 LED 灯,单片机还可以实现更多复杂的功能。
比如,通过定时器来实现精确的定时控制,或者使用中断来处理外部事件。
单片机整套实验及程序
单片机整套实验及程序引言单片机作为嵌入式系统开发的核心技术之一,广泛应用于各个领域,在教育、科研和工业生产中占有重要地位。
本文将介绍单片机整套实验及程序设计的相关内容,通过实际操作和编程实践,帮助读者更好地理解和掌握单片机的基本原理和应用。
实验一:LED闪烁实验LED闪烁实验是单片机入门实验的重要一环。
通过这个实验,我们可以了解到单片机引脚的输入输出特性、编程语言的基本结构以及简单的电路连接方法。
实验目的•掌握单片机引脚的输入输出特性;•了解单片机编程语言的基本结构;•学会使用电路连接方法。
实验材料•单片机开发板;•电阻、LED灯、杜邦线等电子元件。
实验步骤1.连接电路:将单片机的一个GPIO引脚连接到一个电阻,再将电阻的另一端连接到LED的正极,LED的负极连接到地线。
2.编写程序:使用C语言或汇编语言编写LED闪烁的程序。
程序的核心是通过控制GPIO引脚的高低电平来控制LED的亮灭。
3.烧录程序:将编写好的程序烧录到单片机中。
4.调试程序:通过观察LED的亮灭情况,判断程序是否运行正常。
程序示例(C语言)下面是一个使用C语言编写的LED闪烁程序示例:#include <reg51.h>void delay(unsigned int time) {while(time--);}void mn() {while(1) {P1 = 0xFF; // 将P1口设置为高电平delay(10000);P1 = 0x00; // 将P1口设置为低电平delay(10000);}}实验结论通过LED闪烁实验,我们成功地掌握了单片机引脚的输入输出特性、编程语言的基本结构以及简单的电路连接方法。
这为之后的实验和项目开发奠定了重要的基础。
实验二:数码管显示实验数码管是一种常见的数字显示设备,它广泛应用于计时器、计数器、温度显示等场景。
通过数码管显示实验,我们可以学习如何控制数码管的显示和编程。
实验目的•学会使用单片机输出控制信号控制数码管的显示;•理解数码管的工作原理;•掌握数码管编程的方法。
单片机实验报告范文
单片机实验报告范文单片机(Microcontroller)是指一种封装了微处理器(Microprocessor)、存储器和各种输入输出接口电路功能的集成电路。
单片机在电子设计与开发中有广泛应用,可以用于控制和监测各种系统和设备。
本实验报告将介绍在实验中使用单片机所进行的实验步骤和实验结果。
实验目的:1.理解单片机的基本工作原理和功能。
2.掌握单片机的编程和调试方法。
3.应用单片机实现简单的控制功能。
实验仪器和材料:1.单片机开发板2.计算机B数据线4.电源适配器5.LED灯6.麦克风模块7.温度传感器实验步骤:1.准备工作:将单片机开发板与计算机连接,接通电源适配器。
2.熟悉开发工具:安装单片机开发软件,并了解软件的基本功能。
3.学习编程语言:了解单片机的编程语言,例如C语言或汇编语言,并编写简单的程序。
4.硬件连接:将LED灯、麦克风模块和温度传感器连接至开发板的相应引脚。
5.编程实现:根据实验要求,编写相应的程序,控制LED灯、获取麦克风模块的声音信号或获取温度传感器的温度值。
7.实验结果:根据实验要求,记录LED灯的亮灭状态、麦克风模块的声音信号强度或温度传感器的温度数值。
实验结果:通过实验,我们成功地控制了LED灯的亮灭状态,获取了麦克风模块的声音信号强度和温度传感器的温度数值。
在编程实现过程中,我们学会了使用单片机编程语言,了解了一些常用的语法和函数。
在调试测试中,我们可以通过相关的输出或显示结果来判断程序的正确性,及时发现和修复错误。
实验总结:本实验通过单片机开发板和相应的硬件以及编程实现了简单的控制和监测功能。
通过实验,我们深入了解了单片机的基本工作原理和功能,并掌握了一些基本的编程和调试方法。
实验结果表明,我们成功实现了实验要求,并对单片机的应用有了更加深入的理解。
通过这次实验,我们不仅提高了动手实践能力,也增加了对科技发展的看法。
单片机实验六程序
三、设计要求1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与8255接口。
2、在8255PA口或PB口的某一口线上产生周期为500μS的连续方波,接示波器观察波形。
3、在8255PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态五、思考题1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化。
ORG 0060HMOV IE,#00HMOV TMOD,#01HMOV DPTR,#7FFFHMOV A,#80HMOVX @DPTR,ASETB TR0LOOP2:MOV TH0,#3CHMOV TL0,#0B0HMOV DPTR,#7FFCHMOV A,#01HMOVX @DPTR,ALOOP:JBC TF0,LOOP1SJMP LOOPLOOP1:MOV TH0,#3CHMOV TL0,#0B0HMOV DPTR,#7FFCHMOV A,#00HMOVX @DPTR,ALOOP3:JBC TF0,LOOP2SJMP LOOP3ENDORG 0000HMOV DPTR,#7FFHMOV A,#81HMOVX @DPTR,ALOOP:MOV DPTR,#7FFEHMOVX A,@DPTRSWAP AORL A,#0FHMOVX @DPTR,ASJMP LOOPENDORG 0050HMOV R3,#08MOV TMOD,#01HMOV IE,#00HMOV DPTR,#7FFFH LOOP3:MOV A,#00HLOOP:MOVX @DPTR,ALCALL DELEYORL A,#01HMOVX @DPTR,AINC AINC AANL A,#0FEHDJNZ R3,LOOPMOV R4,#08LOOP1:ORL A,#01HMOVX @DPTR,ADEC ADEC AANL A,#0FEHMOVX @DPTR,ALCALL DELEYDJNZ R4,LOOP1MOV R3,#08SJMP LOOP3DELEY:MOV R5,#20SETB TR0LOOP4:MOV TH0,#3CHMOV TL0,#0B0HLOOP5:JBC TF0,LOOP6SJMP LOOP5LOOP6:DJNZ R5,LOOP4CLR TR0RETIEND。
单片机实验含程序
51系列单片机原理与应用实验实验1 简单汇编语言实验一、实验目的:掌握汇编语言设计和调试方法,熟悉键盘操作。
熟悉汇编语言编程。
二、实验内容:清零:把2000H~20FFH的内容清零。
三、实验程序框图:清零程序框图四、实验步骤:用连续或单步方式运行清零程序,检查2000~20FF中执行程序前后的内容变化。
五.思考:修改清零程序,假使把2000H~20FFH中的内容改成FF,如何修改程序。
清零程序清单:ORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00HMOV DPTR,#2000H ;(0000H)送DPTRLOO1: CLR AMOVX @DPTR,A ;0送(DPTR)INC DPTR ;DPTR+1INC R0 ;字节数加1CJNE R0,#00H,LOO1 ;不到FF个字节再清LOOP: SJMP LOOPEND实验2 拆字和拼字程序一、实验目的:掌握汇编语言设计和调试方法。
二、实验内容:1、把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用;2、把2000H.2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。
三、实验程序框图:拆字程序框图拼字程序框图四、实验步骤:用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。
五、思考:如何用断点方式调试本程序。
1/拆字程序清单:ORG 0000HLJMP SE02ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A ;(2000)→A→BSW AP A ;交换ANL A,#0FH ;屏蔽高位INC DPTRMOVX @DPTR,A ;送2001HINC DPTRMOV A,BANL A,#0FH ;(2000)内容屏蔽高位MOVX @DPTR,A ;送2002HLOOP: SJMP LOOPEND2/拼字程序清单:ORG 0000HLJMP STARTORG 0680HSTART: MOV DPTR,#2000HMOVX A,@DPTRANL A,#0FH ;(2000H)内容屏蔽高位SW AP A ;交换MOV B,A ;保存INC DPTRMOVX A,@DPTR ;(2000H)内容送AANL A,#0FH ;屏蔽高位ORL A,B ;或INC DPTRMOVX @DPTR,A ;送2002HSJMP $END实验4-1 P1口亮灯实验一、实验目的:l)学习P1口的使用方法;2)学习延时子程序的编写。
单片机实验 带程序的
五.实验步骤: 1. 连接电源线和串行口数据线; 2. 把P3.1接至P3.0孔,P1.0~P1.7分别接发光二极管 L1~L8孔。 3.打开DICE—5203 K实验开发系统的电源; 4. 启动计算机,打开桌面软件文件夹,选择MS51仿真 开发系统图标双击,进入软件编程界面; 5. 编制程序,调试、运行; 6. 从按键开关输入数字量,观察发光二极管的发光状 态,或从寄存器观察其对应数值。 六.思考题: 修改程序,使串行口工作于方式3或 2(考虑波特率)。
四、实验步骤 (一)定时/计数器T0延时实验 1、连接电源线和串行口数据线; 2、用插针将P1.0孔与发光二极管L1孔相连, P1.1孔与发光二极管L2孔相连; 3、打开DICE—5203 K实验开发系统的电源; 4、启动计算机,打开桌面软件文件夹,选择 MS51仿真开发系统图标双击,进入软件 编程界面; 5、编制程序,调试、运行; 6、观察发光二极管状态。
• void tim0(void) interrupt 1 using 1 • { EA=0; • i++; • j++; • if(i==20) • {P1_0=!P1_0; • i=0;} • if(j==100) • {P1_1=!P1_1; • j=0;} • TH0=(65536-50000)/256; • TL0=(65536-50000)%256; • EA=1; • }
ds-ms(int j) {uchar k; while(j--!=0) for(k=0,k<125,k++);}
void main (void) { uchar i,a; COM8255 =0x80; a =0x01; for(i=0,i<8,i++) {PB8255=a; ds-ms(500); a=a<<1; if(a==0)a=0x01; } }
单片机实验程序及流程图
《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.程序清单及程序流程框图ORG 0000H Array LJMP MAINMAIN: MOV R0,#30HMOV R2,#10HCLR AA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0,#30HMOV R1,#40HMOV R2,#10HA2: MOV A, @R0MOV @R1,AINC R0INC R1DJNZ R2, A2MOV R1,#40HMOV DPTR ,#4800HMOV R2, #10HA3: MOV A,@R1MOVX @DPTR ,AINC R1INC DPTRDJNZ R2,A3MOV SP,#60HMOV R2,#10HMOV DPTR ,#4800HPUSH DPLPUSH DPHMOV DPTR,#5800HMOV R3,DPLMOV R4,DPHA4: POP DPHPOP DPLMOVX A,@DPTRINC DPTRPUSH DPLPUSH DPHMOV DPL,R3MOV DPH,R4 MOVX @DPTR,A INC DPTRMOV R3,DPLMOV R4,DPHDJNZ R2,A4MOV R0,#50HMOV DPTR,#5800H MOV R2,#10HA5: MOVX A,@DPTR MOV @R0,AINC R0 INC DPTR DJNZ R2,A5POP DPH POP DPL HERE: LJMP HEREEND《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.实验电路四.程序清单及流程图程序一ORG 0000HLJMP MAIN ORG 000BH LJMP IPTO MAIN: MOV SP, #30H MOV TMOD, #01HCLR 00H SETB EA SETB ET0 MOV TH0, #3CH MOV TL0, #0B0H MOV R1, #14H SETB TR0 MOV A, #0feH MOV P1, A NT: JNB 00H, NT RL A MOV P1, ACLR 00H LJMP NT IPTO: MOV TH0,#3CH MOV TL0,#0B0HDJNZ R1, TIOMOV R1, #14HSETB 00HTIO: RETIEND程序二只需将程序一中“RL A”改为“RR A”即可实现其功能。
单片机八个实验程序
单片机八个实验程序单片机试验程序实验一:用程序使A T89C51单片机的P1.0~P1.7引脚循环输出高电平,经反相器后控制小灯循环点亮。
#includevoid delay();void main(){while(1){P1=0x00; delay();P1=0x01; delay();P1=0x02; delay();P1=0x04; delay();P1=0x08; delay();P1=0x10; delay();P1=0x20; delay();P1=0x40; delay();P1=0x80; delay();}}void delay(){ int i=0;while(i<10000) i++;}实验二:147页,例题6.1 #include unsigned char n=0x01; main(){P1=0xFF;EA=1;EX0=1;IT0=1;while(1);}int_0()interrupt 0 {P1=~n;n<<=1;if(n==0) n=0x01;}实验三:154页例题6.6 #includesbit P1_0=P1^0; char count=20;main(){TMOD=1;TL0=0xB0;TH0=0x3C;TR0=1;ET0=1;EA=1;while(1);}t0_int() interrupt 1 {TL0=0xB0;TH0=0x3C;count--;if(count==0){P1_0=! P1_0;count=20;}}例题6.5,153页#include //包含特殊功能寄存器声明头文件sbit P1_0=P1^0; //定义特殊功能位P1_0main() //主函数{TMOD=1; //设置定时/计数器0工作于方式1TL0=0xF0; //装入计数初值TH0=0xD8;TR0=1; //启动定时器T0ET0=1; //允许定时器T0中断EA=1; //开放CPU中断while(1);}t0_int() interrupt 1 //中断函数{P1_0=! P1_0; //P1.0取反TL0=0xF0; //重新装入计数初值TH0=0xD8;实验四:三首歌/**********硬件连线*************///用导线将P1.0口连接"电子音响驱动控制"模块的"SIN"输入插孔#includesbit P1_0=P1^0;#define mvar 11059200/12/2//对晶振为11.0592MHz进行12分频后,为机器周期的倒数,再除以2定时时间到P1口反向//为了通过计数器让P1.0发出一定频率的方波,要求:// (12/fosc)*(65536-X)x2=1/f.因而16位计数初始值X=65536-(11059200/12/2)/f//因而把(11059200/12/2)预定义#define uint unsigned int#define uchar unsigned char//freq[]为发出dao-xi即1-7(又分低音和高音)频率表uint code freq[]={65535,262,294,330,349,392,440,494,523,578,659,698,784 ,880,988};//单位Hz uchar code yinfu[]={0x64,0xa2,0xc1,0xa2,0x62,0x84,0x61,0x81,0x61,0x81,0xa4,0xa1,0x91,0xa1,0x81,0x64,0xa2,0xc1,0xd2,0xd2,0xd2,0xa2,0xc4,0xa1,0xc1,0xa1,0xc1,0xd2,0xd2,0xd2,0xa2,0xc4,0xc2,0x62,0xc2,0x62,0xa2,0xa2,0x84,0x00};//音符表高4位音阶,低4位代表该音节持续的拍数,猪八戒背媳妇*//*uchar code yinfu[]={0x64,0x62,0x52,0x64,0x84,0x92,0xa1,0x91,0x82,0x92,0xa8,0x62,0xd2,0xd2,0xc2,0x92,0xa1,0x91,0x82,0x22,0xa8,0x08,0x82,0x62,0x62,0x82,0x94,0x52,0x52,0xa2,0xc2,0xa2,0x92,0x88,0x62,0x82,0x92,0xa2,0x92,0x82,0x52,0x32,0x68,0x00};//最炫民族风*//*uchar code yinfu[]={0x02,0x52,0x62,0x82,0xc2,0xa4,0x92,0xa5,0xa2,0xa8,0x04,0x82,0x91,0xc1,0xc2,0xa2,0x92,0x82,0x82,0x92,0x82,0x82,0x88,0x04,0x82,0x91,0xc1,0xc2,0xa2,0x92,0x82,0x92,0x92,0x91,0xa1,0x62,0x64,0x62,0x82,0x92,0x92,0x91,0xa1,0x82,0x02,0x62,0x51,0x61,0x52,0x54,0x54,0x54,0x54,0x00};//怒放的生命*/uchar high,low,temp1,temp2,temp3,count;timer0() interrupt 1 using 1 /* T0中断服务程序*/{TH0=high;TL0=low;P1_0=!P1_0;}void Delay();//声明延时函数main() //_at_ 0x30{TMOD=0x01; /* 定时器0方式1 */EA=1; /* 开CPU中断*/ET0=1; /* 开T0中断*/while(1){count=0;next:temp1=yinfu[count];if(temp1==0){TR0=0;goto stop;}else{ temp2=(temp1&0x0f);//原来用temp2=(temp1&&0x0f)是错误的;注意&是按位与,//而&&是逻辑与temp1>>=4;}if(temp1==0){P1_0=1;TR0=0;goto w1; }// temp1--;若将freq[]中的第一个数65535去掉,则需要增加该语句high=(65536-mvar/(freq[temp1]))/256;low=(65536-mvar/(freq[temp1]))%256;TH0=high;TL0=low;TR0=1;w1:for(;temp2>0;temp2--)Delay();count++;goto next;stop:TR0=0;}//while(1)结束}//main()结束void Delay()//11.0592Mhz下延时0.250883秒{uint i,j;for(i=0;i<80;i++)//若想加快演唱节奏,可以修改成i<130或i<120for(j=0;j<200;j++);}实验五:多机点对点串行通信,175页//先运行乙机的接收程序,再运行甲机的发送程序;然后乙机复位,查看仿真上数据变化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ds-ms(int j) {uchar k; while(j--!=0) for(k=0,k<125,k++);}
void main (void) { uchar i,a; COM8255 =0x80; a =0x01; for(i=0,i<8,i++) {PB8255=a; ds-ms(500); a=a<<1; if(a==0)a=0x01; } }
四、实验程序框图 (一)8255 PB口作输出口
开 始 控制字 控制口
显示字
PB口
延时500ms 显示字循环左移 结 束
(二)8255 PA口控制PC口
开 始
Hale Waihona Puke 控制字控制口PA口开关状态
A
A
PC口
结
束
五、实验步骤 (一)8255 PB口作输出口 1.连接电源线和串行口数据线; 2.用插针将8255 PB口与发光二极管L1~L8孔相连; 3.打开DICE—5203 K实验开发系统的电源; 4. 启动计算机,打开桌面软件文件夹,选择MS51 仿真开发系统图标双击,进入软件编程界面; 5. 编制程序,调试、运行; 6. 观察发光二极管状态。
#include <absacc.h> 实验四(一)8255 PB口作输出口程序 #include <reg51.h> #define uchar unsigned char #define COM8255 XBYTE[0xff2b] //命令口地址// #define PB8255 XBYTE[0xff29] //B口地址//
五.思考题: 1.实验(一)中,如果用T1 延时,使与 P1.0口相连的发光二极管每隔2s发光状态 改变,程序将如何编制? 2.实验(二)中,若使按键每闭合10次,与 P1.1口相连的发光二极管发光状态改变, 程序将如何编制?
• • • • • • • • • • • • • •
#include <reg51.h> //实验一(一)程序 #define uint unsigned int sbit P1_0=P1^0; sbit P1_1=P1^1; uint i=0,j=0; void main(void) { P1_0=0; P1_1=0; TMOD=0x01; EA=1; ET0=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1;
四、实验步骤 (一)定时/计数器T0延时实验 1、连接电源线和串行口数据线; 2、用插针将P1.0孔与发光二极管L1孔相连, P1.1孔与发光二极管L2孔相连; 3、打开DICE—5203 K实验开发系统的电源; 4、启动计算机,打开桌面软件文件夹,选择 MS51仿真开发系统图标双击,进入软件 编程界面; 5、编制程序,调试、运行; 6、观察发光二极管状态。
(二)定时/计数器T1计数实验 1.连接电源线和串行口数据线; 2.用插针将P1.0孔与发光二极管L1孔相连, P3.5孔与单脉冲输出孔相连; 3.打开DICE—5203 K实验开发系统的电源; 4.启动计算机,打开桌面软件文件夹,选择 MS51仿真开发系统图标双击,进入软件编 程界面; 5. 编制程序,调试、运行; 6.反复扳动按键开关,观察发光二极管状态。
实验注意事项
1.实验前先不连仿真器,给实验箱通电,若 实验箱上的八段数码显示器显示字母“P”, 表示实验箱无故障。 2.必须断电插拔线。 3.程序存入c:\dice51\51asm\*.c,程序名必 须以英文字母开头,扩展名为.c。 4.若实验出现故障,可用以下程序单步运行 (按F7键实现单步运行)验证,
实验三
串行口数据自发自收实验
一、实验目的: 1.掌握串行口的工作原理; 2.了解串行口编程方法; 二、实验设备 DICE—5203 K实验开发系统,计算机 三、实验内容: 把数据由串行口TXD(P3.1)发送出去,经串行 口RXD(P3.0)接收回来,最后通过P1 口把接收到的 数据输出,使发光二极管显示接收到的数据。 用定时/计数器T/C1做波特率发生器,使波特率 为9600。已知T/C1用方式2定时, SMOD=0,单片机的 时钟频率为11.0592MHz,串行口工作于方式1。
• void tim0(void) interrupt 1 using 1 • { EA=0; • i++; • j++; • if(i==20) • {P1_0=!P1_0; • i=0;} • if(j==100) • {P1_1=!P1_1; • j=0;} • TH0=(65536-50000)/256; • TL0=(65536-50000)%256; • EA=1; • }
用定时/计数器T0定时,用中断方式编程,每隔10s 使与P1.0口相连的发光二极管闪烁10次(50ms中断一 次,200次即为10s),已知系统时钟频率 fosc=12MHZ,P1.0低电平灯亮,反之灯灭(灯闪烁时间 不少于150ms)。
四、实验步骤 1.连接电源线和串行口数据线; 2.用插针将P1.0孔与发光二极管L1孔相连; 3.打开DICE—5203 K实验开发系统的电源; 4.启动计算机,打开桌面软件文件夹,选择MS51仿 真开发系统图标双击,进入软件编程界面; 5.编制程序,调试、运行; 6.观察发光二极管状态。 五、思考题:若用定时/计数器T1定时,程序有何变化?
实验一 定时/计数实验
一 实验目的 熟悉单片机内部定时/计数器的功能; 掌握定时、计数程序的初始化编制方法。 实验设备 DICE—5203 K实验开发系统,计算机 实验内容
二
三
(一)定时/计数器T0延时实验 已知系统时钟频率fosc =12MHZ,用定时/计数器T0延时, 编程使与P1.0口相连的发光二极管每隔1s发光状态改变,使 与P1.1口相连的发光二极管每隔5s发光状态改变,循环不止。 (二)定时/计数器T1计数实验 已知系统时钟频率fosc =12MHZ,用定时/计数器T1计数, 编程使按键每闭合5次,与P1.0口相连的发光二极管发光状态改 变(即T1每记录5个脉冲,P1.0取反一次)。
• • • }
a=0x55; SBUF=a; while(1);
//或SBUF=0X55
• void ss(void) interrupt 4 using 1 • { EA=0; //或ES=0 TI=0; while(RI==0); • b=SBUF; • P1=b; //或if(TI) TI=0; • if(RI) • { RI=0; • P1=SBUF ;} • for(i=0;i<25000;i++); • EA=1; //或ES=1 • }
• • • • • • • • • • • • • • •
void tim0(void) interrupt 1 using 1 { EA=0; i++; if(i==200) {j=20; while(j--) {P1_0=!P1_0; for(n=0;n<12500;n++);} i=0; } TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; }
• • • • • • • • • • • • • • •
#include <reg51.h> #define uint unsigned int sbit P1_0=P1^0; uint i=0,j=0,n; void main(void) { TMOD=0x01; EA=1; ET0=1; TR0=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1); }
五.实验步骤: 1. 连接电源线和串行口数据线; 2. 把P3.1接至P3.0孔,P1.0~P1.7分别接发光二极管 L1~L8孔。 3.打开DICE—5203 K实验开发系统的电源; 4. 启动计算机,打开桌面软件文件夹,选择MS51仿真 开发系统图标双击,进入软件编程界面; 5. 编制程序,调试、运行; 6. 从按键开关输入数字量,观察发光二极管的发光状 态,或从寄存器观察其对应数值。 六.思考题: 修改程序,使串行口工作于方式3或 2(考虑波特率)。
• • • • • • • • • • • • •
#include <reg51.h> sbit P1_0=P1^0; void main(void) { P1_0=1; TMOD=0x06; EA=1; ET0=1; TH0=251; TL0=251; TR0=1; while(1); }
//实验一(二)程序
• • • • • • • • •
#include <reg51.h> //实验三程序(中断方式) #define uchar unsigned char; #define uint unsigned int; uchar a=0,b=0; uint i; //中断服务程序中用的变量必需设成全局变量 void main(void) { ES=1; EA=1; TMOD=0x20; SCON=0x50; PCON=0x00; • TH1=0xfd; • TL1=0xfd; • TR1=1;
• void tim0(void) interrupt 1 using 1 • { • EA=0; • P1_0=!P1_0; • EA=1; • }
实验二 定时、中断综合实验
一、实验目的 熟悉单片机定时、中断的功能; 掌握定时、中断程序的初始化编制方法。 二、实验设备 DICE—5203 K实验开发系统,计算机 三、实验内容
//实验三程序(查询方式)
实验四
8255扩展I/O口实验
一、实验目的 了解单片机I/O口扩展的功能,掌握8255的接口原理,熟悉 8255初始化编程和输入、输出软件设计方法。 二、实验设备 DICE—5203 K实验开发系统 三、实验内容 (一)8255 PB口作输出口 单片机扩展8255,PB口为输出口,接八只发光二极管, 编程使发光二极管循环点亮。已知PB口地址FF29H,控制口 地址FF2BH。 (二)8255 PA口控制PC口 用8255 PA口作开关量输入口,与按键开关K1~K8孔相 连;PC口作输出口,接八只发光二极管,编程使PA口的开 关状态控制PC口的发光二极管亮灭。已知PA口地址FF28H, PC口地址FF2AH。