产品分类
新闻动态

51单片机,96单片机,8086微机综合实验教学装置

QY-JXSY38开放型单片机微机开发系统实验箱

上海求育QY-JXSY37单片机微机三合一开发系统实验箱是集51,96,8088三大系列CPU于一体的三合一实验系统,内置51/96单片机仿真器和8088实验系统.系统以8088实验系统作为基板,自成一体,可单独作为8086微机原理和接口实验使用,也可分别叠插51或96CPU卡,构成51/96单片机实验开发系统,系统配置2000/xp等操作平台.微机仿真调试软件,支持汇编、C51语言编译、调试;单片机在线下载软件等。电话021-69918115
详细信息:https://www.mmaan.com/cpjs/1554.html
实验项目

(一)51单片机实验
软件实验
(1)清零程序;
(2)拆字程序;
(3)拼字程序;
(4)数据区传送子程序;
(5)数据排序实验;
(6)查找相同数据个数;
(7)无符号双字节快速乘法子程序;
(8)多分支程序;
(9)脉冲计数实验;
(10)电脑时钟实验。
硬件实验
(1)P1口亮灯实验;
(2)P1口转弯灯实验;
(3)P3.3口输入,P1口输出实验;
(4)工业顺序控制实验;
(5)8255A、B、C口输出方波实验;
(6)8255PA口控制PB口;
(7)8255控制交通灯;
(8)简单I/O扩展实验;
(9)A/D0809转换实验;
(10)D/A0832转换实验;
(11)8279键盘显示实验;
(12)通用打印机实验;(打印机选配☆)
(13)微型打印机打印字符、曲线、汉字实验;(打印机选配☆)
(14)I2C储存卡读写实验;
(15)继电器控制实验;
(16)步进电机控制;
(17)8253方波实验;
(18)小直流电机调速实验;
(19)16*16LED点阵显示实验;
(20)128*64LCD液晶显示实验;
(21)8250可编程异步通讯接口实验(自发自收);
(22)8251可编程通讯接口实验(与PC机);
(23)单片机RS232/485串行发送实验(双机通讯);
(24)单片机RS232/485串行接收实验(双机通讯);
(25)温度控制实验
(26)压力实验;
(27)ISP单片机最小系统实验;
(二)96单片机实验
软件实验
(1)清零程序
(2)拆字程序
(3)拼字程序
(4)数字区传送子程序
(5)数据排序实验
(6)查找相同个数
(7)无符号双字节快速乘法子程序
(8)多分支程序
硬件实验
(1)P1口亮灯实验
(2)P1口转弯灯实验
(3)P2.6口输入,P1口输出
(4)工业顺序控制
(5)8255A、B、C口输出方波
(6)8255PA口控制PB口
(7)8255控制交通灯
(8)简单I/O扩展
(9)A/D转换实验
(10)D/A转换实验
(11)8279键盘显示实验
(12)通用打印机☆
(13)继电器控制
(14)8253方波
(15)步进电机控制
(三)8086微机实验
软件实验:
(1)二进制多位加法实验
(2)二进制转换为BCD码实验
(3)BCD码转换为二进制码

(4)十进制数的BCD码相减运算
(5)内存清零实验
(6)数码显示实验
(7)求最大数和最小数
(8)数据块传送实验
(9)分支程序设计。
硬件实验:
(1)A/D转换实验
(2)D/A转换实验(一)
(3)D/A转换实验(二)
(4)8255A并行口实验(一)
(5)8255A并行口实验(二)
(6)定时器/计数器实验
(7)8259单级中断控制器实验
(8)串行口发送实验(双机通讯)
(9)串行口接收实验(双机通讯)
(10)小直流电机调速实验;
(11)步进电机控制
(12)继电器控制
(13)存贮器读写实验
(14)电子琴实验
(15)简单I/O口扩展实验
(16)8251可编程通讯接口和PC机通讯
(17)16*16LED点阵显示实验
(18)128*64LCD液晶显示实验
(19)8237DMA传送实验
(20)8250可编程异步通讯接口实验
(21)8279键盘显示实验
(22)温度测量实验
(23)压力测量实验
说明:实验项目打“☆”号为选配实验。
微机原理与单片机接口技术实验报告
实验一    流水灯实验
一、实验目的
(1)简单I/O引脚的输出
(2)掌握软件延时编程方法
(3)简单按键输入捕获判断
二、实验实现的功能
(1) 开机是点亮12发光二极管,闪烁三下
(2) 按照顺时针循环依次点亮发光二极管
(3) 通过按键将发光二极管的显示改为顺逆时针方式
三、系统硬件设计
QY-JXSY37单片机微机三合一开发系统实验箱 
 
 
四、系统软件设计
******************************主程序********************************
#include<stc10.h>
#include<key.h>
#include<intrins.h>
sbit Led1=P3^2;
sbit Led2=P3^3;
sbit Led3=P3^4;
sbit Led4=P3^5;
//函数说明
void shun();  //led顺时针亮
void ni();  //led逆时针亮
void shanshuo(); //闪烁
//主函数
void main (void)
{
 for(i=0;i<=2;i++)
 {
  shanshuo();
Delay(1000);
 }
while(1)
{
keyboard();
if(ptr==0) shun();
else if(ptr==1)
ni();
else if(ptr==2)
shun();
}
}
void ni()
{  
  P2=0xff;
  Led4=0;
Delay(500);
Led4=1;
Led3=0;
Delay(500);
Led3=1;
Led2=0;
Delay(500);
Led2=1;
Led1=0;
Delay(500);
Led1=1;
P2=0xfe;
Led1=1;Led2=1;Led3=1;Led4=1;
  for(i=0;i<8;i++)   
  {
  P2=_cror_(P2,1); //P2 的值向右循环移动
  Delay(500);   
  }
}
void shun()
{  
P2=0xfe;
Delay(500);
Led1=1;Led2=1;Led3=1;Led4=1;
  for(i=0;i<7;i++)   
  {
  P2=_crol_(P2,1); // P2 的值向左循环移动
  Delay(500);   
  }  
    P2=0xff;
Led1=0;
Delay(500);
Led1=1;
Led2=0;
Delay(500);Led2=1;
Led3=0;
Delay(500);Led3=1;
Led4=0;
Delay(500);
}
void shanshuo()
{
 P2=0x00;
 Led1=0;Led2=0;Led3=0;Led4=0;
 Delay(1000);
 P2=0xff;
 Led1=1;Led2=1;Led3=1;Led4=1;
 Delay(1000);
}
******************************子程序********************************
#ifndef _key_H_
#define _key_H_
unsigned char i;
unsigned int ptr=0;
sbit H1=P3^6;
sbit H2=P3^7;
sbit L1=P0^5;
sbit L2=P0^6;
sbit L3=P0^7;
bit KEY1,KEY2,KEY3,KEY4,KEY5,KEY6;
void Delay(unsigned int t)
{
  unsigned int x,y;
  for(x=t;x>0;x--)
  for(y=110;y>0;y--);
}
void keyboard(void)
{
  L1=0;L2=1;L3=1;
  if(H1==0) Delay(30);   //延时消抖
  if(H1==0){while(H1==0); {KEY1=1;ptr=1;}}
else KEY1=0;
  if(H2==0) Delay(30);
  if(H2==0){while(H2==0);{ KEY4=1;ptr=4;}}
else KEY4=0;
  L1=1;L2=0;L3=1;
  if(H1==0) Delay(30);
  if(H1==0){while(H1==0);{ KEY2=1;ptr=2;}}
  else KEY2=0;
  if(H2==0) Delay(30);
  if(H2==0){while(H2==0);{KEY5=1;ptr=5;}}
  else KEY5=0;
  L1=1;L2=1;L3=0;
  if(H1==0) Delay(30);
  if(H1==0){while(H1==0);{KEY3=1;ptr=3;}}
  else KEY3=0;
  if(H2==0) Delay(30);
  if(H2==0){KEY6=1;ptr=6;}
    else KEY6=0;
}
#endif
五、实验过程中遇到的问题及解决方法
1、遇到的问题就是如何扫描按键。
    解决这个问题的方法是利用软件扫描按键1和2,初始化ptr=0,按键1按下后返回1,按键2按下后返回2,没有按键按下则返回0。
 
实验二  定时器或实时时钟实验
一、实验目的
1)掌握定时器T0、T1的方式选择和编程方法
2)了解中断服务程序的设计方法
3)学会实时程序的调试技巧
二、完成功能要求
1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能
2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)
三、电路图设计
 QY-JXSY37单片机微机三合一开发系统实验箱
四 系统软件设计
*****************************主程序**********************************
#include<stc10.h>
#include<key.h>
sbit led1=P2^1;
unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code weima[]={0x0e,0x0d,0x0b,0x07};
unsigned char code duan[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
unsigned char TempData[4];
void inittimer();
unsigned int num=0;
void inittimer()
{
  TMOD=0X01;
  TH0=(65535-45872)/256;
  TL0=(65535-45872)%256;
  EA=1;
  ET0=1;
  TR0=1;
}
void main()
{
 unsigned char i;
 initIO();
 inittimer();
 while(1)
 {
  scankey();
  if(num==10)
{
num=0;
scond++;
}
if(scond==60)
   {
min++;
scond=0;
}
if(min==60)
  { min=0;}
       TempData[0]=DuanMa[min/10];
   TempData[1]=duan[min%10];
   TempData[2]=DuanMa[scond/10];
   TempData[3]=DuanMa[scond%10];
   for(i=0;i<=3;i++)
  {
P0=weima[i];
P1=TempData[i];
Delay(2);
  }
 }
 }
 void time()interrupt 1
 {
   TH0=(65535-45872)/256; //20ms
   TL0=(65535-45872)%256;
  num++;          
}
void Timer0_isr(void) interrupt 3 using 1
{
   TH1=0xf0;   //重新赋值
   TL1=0xa0;
}  
******************************子程序*********************************
#ifndef _key_H_
#define _key_H_
unsigned char min=0;
int scond=0;
unsigned char i;
unsigned int ptr=0;
sbit led=P2^0;
sbit H1=P3^6;
sbit H2=P3^7;
sbit L1=P0^5;
sbit L2=P0^6;
sbit L3=P0^7;
bit KEY1,KEY2,KEY3,KEY4,KEY5,KEY6;
void initIO();
void initIO()
{
P1M0=0xff;
P1M1=0x00;
}
void Delay(unsigned int t)
{
unsigned int x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
void scankey(void)
{
   L1=0;L2=1;L3=1;
if(H1==0) Delay(10);   //消抖
if(H1==0){ while(H1==0);{KEY1=1;scond=scond+1;}}
  else KEY1=0;
if(H2==0) Delay(10);
if(H2==0){ while(H2==0);{KEY4=1;scond=scond-1;}}
  else KEY4=0;
L1=1;L2=0;L3=1;
if(H1==0) Delay(10);
if(H1==0){ while(H1==0);{KEY2=1;min++;}}
  else KEY2=0;
if(H2==0) Delay(80);
if(H2==0){ while(H2==0);{KEY5=1;min--;}}
  else KEY5=0;
 L1=1;L2=1;L3=0;
if(H1==0) Delay(55);
if(H1==0){ while(H1==0);{KEY3=1;}}
  else KEY3=0;
 if(H2==0) Delay(55);
if(H1==0){ while(H2==0);{KEY6=1;}}
  else KEY6=0;
}
#endif
五、实验过程中遇到的问题及解决方法
1、动态显示中,一次点亮数码管,无法出现稳定全亮的效果。
解决:缩短每个数码管点亮时间,并且在每个数码管亮过之后熄灭一定时间。
2、怎样控制时钟的停止与开始?
    解决:给定时器TR0赋值0或1来控制定时器的计数暂停与否进而实现控制时钟的启停。
          
实验三   双机通信实验
一、实验目的
UART 串行通信接口技术应用
二、完成功能要求
用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。
三、实验原理实验图
上海求育QY-JXSY37单片机微机三合一开发系统实验箱 
上海求育QY-JXSY37单片机微机三合一开发系统实验箱 
 
四、系统软件设计
***************************主程序***********************************
#include<stc10.h>
#include<key.h>
unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code weima[]={0x0e,0x0d,0x0b,0x07};
unsigned char TempData[4];   
#define uchar unsigned char
#define uint unsigned int
unsigned int m,n;
void main()
{
initIO();
 SCON=0x50; //串口模式 1,允许接收
 TMOD=0x20; //T1 工作模式 2
 TL1 = 0xE0;//设定定时初值
 TH1 = 0xFE;
 PCON=0x00; //波特率不倍增
 RI=TI=0;
 TR1=1;
 IE=0x90;
 while(1)
 { //Delay(100);
  scankey();
    TempData[2]=DuanMa[min];
TempData[3]=DuanMa[m];
   for(i=2;i<=3;i++)
  {
P0=weima[i];
P1=TempData[i];
Delay(2);
  }
 }
 }
void Serial_INT() interrupt 4
{
 if(RI) //如收到则 LED 则动作
 {
RI=0;
m=(int)SBUF;
 }
}
****************************子程序**********************************
#ifndef key_H
#define key_H
unsigned char min=0;
unsigned char i;
unsigned int ptr=0;
void Delay(unsigned int t);
void Putc_to_SerialPort(unsigned char c);
sbit led=P2^0;
sbit H1=P3^6;
sbit H2=P3^7;
sbit L1=P0^5;
sbit L2=P0^6;
sbit L3=P0^7;
bit KEY1,KEY2,KEY3,KEY4,KEY5,KEY6;
void initIO();
void initIO()
{
P1M0=0xff;
P1M1=0x00;
}
void Putc_to_SerialPort(unsigned char c)
{
 SBUF=c;
 while(TI==0);
 TI=0;
}
void Delay(unsigned int t)
{
unsigned int x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
void scankey(void)
{
   L1=0;L2=1;L3=1;
if(H1==0) Delay(10);   //延时消抖
if(H1==0){ while(H1==0);{KEY1=1;min=1;  Putc_to_SerialPort(1);}}
  else KEY1=0;
if(H2==0) Delay(10);
if(H2==0){ while(H2==0);{KEY4=1;min=4; Putc_to_SerialPort(7);}}
  else KEY4=0;
L1=1;L2=0;L3=1;
if(H1==0) Delay(10);
if(H1==0){ while(H1==0);{KEY2=1;min=2; Putc_to_SerialPort(3);}}
  else KEY2=0;
if(H2==0) Delay(80);
if(H2==0){ while(H2==0);{KEY5=1;min=5; Putc_to_SerialPort(9);}}
  else KEY5=0;
 L1=1;L2=1;L3=0;
if(H1==0) Delay(55);
if(H1==0){ while(H1==0);{KEY3=1;min=3; Putc_to_SerialPort(5);}}
  else KEY3=0;
 if(H2==0) Delay(55);
if(H2==0){ while(H2==0);{KEY6=1;min=6; Putc_to_SerialPort(0);}}
  else KEY6=0;
}
#endif
五、实验过程中遇到的问题及解决方法
 1、怎样才能使数码管既显示输入的数字又显示输出的数字?
      解决:用其中一个数码管显示输入数据,另一个显示输出数据。
2、如何实现单片机在接受的同时又实现发送功能?
      解决:可以把发送程序和接收程序的相同部分合并,放到同一个子程序中,不同部分将发送程序与接收程序交叉。
   
                            
 
                                             
 
实验四   交通灯实验
一、实验目的
1)按键、数码管、发光二极管综合应用编程技术
2)数据存储于EEPROM的技术(也可以不使用)
3)定时中断技术
4)按键中断技术
二、完成功能要求
1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。
2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。
3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。
三、电路原理实验图
上海求育QY-JXSY37单片机微机三合一开发系统实验箱 
四、系统软件设计
************************************主程序***************************
#include<stc10.h>
#include<key.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code weima[]={0x0e,0x0d,0x0b,0x07};
//延时倍数,闪烁次数,操作类型
uchar Time_Count=0,Flash_Count=0,Operation_Type=1;
//定时器 0 中断函数
void T0_INT() interrupt 1
{
 TL0=(65536-50000)/256;
 TH0=(65536-50000)%256;
 switch(Operation_Type)
 {
 case 1: //东西向绿灯与南北向红灯亮
 RED_A=1;YELLOW_A=1;GREEN_A=0;
 RED_B=0;YELLOW_B=1;GREEN_B=1;
 RED_C=1;YELLOW_C=1;GREEN_C=0;
 RED_D=0;YELLOW_D=1;GREEN_D=1;
 if(++Time_Count!=80) return; //切换
 Time_Count=0;
 Operation_Type=2;
 break;
 case 2: //东西向黄灯开始闪烁,绿灯关闭
 if(++Time_Count!=8) return;
 Time_Count=0;
 YELLOW_A=~YELLOW_A;GREEN_A=1;
 YELLOW_C=~YELLOW_C;GREEN_C=1;
 if(++Flash_Count!=10) return; //闪烁
 Flash_Count=0;
 Operation_Type=3;
 break;
 case 3: //东西向红灯与南北向绿灯亮
 RED_A=0;YELLOW_A=1;GREEN_A=1;
 RED_B=1;YELLOW_B=1;GREEN_B=0;
 RED_C=0;YELLOW_C=1;GREEN_C=1;
 RED_D=1;YELLOW_D=1;GREEN_D=0;
 if(++Time_Count!=80) return; //切换
 Time_Count=0;
 Operation_Type=4;
 break;
 case 4: //南北向黄灯开始闪烁,绿灯关闭
 if(++Time_Count!=8) return;
 Time_Count=0;
 YELLOW_B=~YELLOW_B;GREEN_B=1;
 YELLOW_D=~YELLOW_D;GREEN_D=1;
 if(++Flash_Count!=10) return; //闪烁
 Flash_Count=0;
 Operation_Type=1;
 break;
 }
}
//主程序
void main()
{
 TMOD=0x01; //T0 方式 1
 IE=0x82;
 TR0=1;
 initIO();
 while(1)
 { scankey();
  P0=weima[3];
P1=DuanMa[Time_Count/20];
 };
}
********************************子程序*******************************
#ifndef _key_H_
#define _key_H_
void hongdengliang(void);
unsigned char min=0;
int scond=0;
unsigned char i;
unsigned int ptr=0;
sbit RED_A=P2^2; //东西向指示灯
sbit YELLOW_A=P2^1;
sbit GREEN_A=P2^0;
sbit RED_B=P2^5; //南北向指示灯
sbit YELLOW_B=P2^4;
sbit GREEN_B=P2^3;
sbit RED_C=P3^2; //东西向指示灯
sbit YELLOW_C=P2^7;
sbit GREEN_C=P2^6;
sbit RED_D=P3^5; //南北向指示灯
sbit YELLOW_D=P3^4;
sbit GREEN_D=P3^3;
sbit led=P2^0;
sbit H1=P3^6;
sbit H2=P3^7;
sbit L1=P0^5;
sbit L2=P0^6;
sbit L3=P0^7;
bit KEY1,KEY2,KEY3,KEY4,KEY5,KEY6;
void initIO();
void initIO()
{
P1M0=0xff;
P1M1=0x00;
}
void Delay(unsigned int t)
{
unsigned int x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
void scankey(void)
{
   L1=0;L2=1;L3=1;
if(H1==0) Delay(10);   //延时消抖
if(H1==0){ while(H1==0);{KEY1=1;EA=0;hongdengliang();}}
  else KEY1=0;
if(H2==0) Delay(10);
if(H2==0){ while(H2==0);{KEY4=1;EA=1;}}
  else KEY4=0;
L1=1;L2=0;L3=1;
if(H1==0) Delay(10);
if(H1==0){ while(H1==0);{KEY2=1;}}
  else KEY2=0;
if(H2==0) Delay(80);
if(H2==0){ while(H2==0);{KEY5=1;}}
  else KEY5=0;
 L1=1;L2=1;L3=0;
if(H1==0) Delay(55);
if(H1==0){ while(H1==0);{KEY3=1;}}
  else KEY3=0;
 if(H2==0) Delay(55);
if(H1==0){ while(H2==0);{KEY6=1;}}
  else KEY6=0;
}
void hongdengliang(void)
{
RED_A=0;
YELLOW_A=1;
GREEN_A=1;
RED_B=0;
YELLOW_B=1;
 GREEN_B=1;
 RED_C=0; //东西向指示灯
 YELLOW_C=1;
 GREEN_C=1;
 RED_D=0; //南北向指示灯
 YELLOW_D=1;
 GREEN_D=1;
}
#endif
五、实验过程中遇到的问题及解决方法
 1、怎样解决数码管和LED灯不能同时亮的问题?
      解决:采用扫描点亮数码管的思路,使各数码管和灯依次点亮,延时一小段时间,由于视觉暂留可产生同时亮的效果。
 


点击了解》教学实验箱
相关文章
Copyright教学设备厂家 © 上海求育教学设备有限公司 All rights reserved2017沪ICP备17016831号-1 网站地图