一、设计的目的:
掌握微机原理的基本应用方法。通过实验熟悉微机基本接口芯片的外型、引脚、编程结构,掌握汇编语言程序设计和微机基本接口电路的设计、应用方法,做到理论联系实际。
二、系统的主要功能、作用及主要性能指标
按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。可利用8255、8253、8259等接口电路。
总体设计
1、基本工作原理 设有一个十字路口,1、3为南,北方向,
2、4为东,西方向。 初始化之后, 1、3路口的绿灯亮, 2、4路口的红灯亮, 1、路口方向通车。 延迟一段时间(30秒)后, 1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁。闪烁3次(延时3秒)后, 1、3路口的红灯亮, 同时2、4路口的绿灯亮, 2、4路口方向开始通车。 延迟一段时间(30秒)后, 2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁3次(延时3秒)后,再切换到1、3路口方向。 之后,重复上述过程
2 、硬件总体设计
(1)硬件电路设计
各芯片主要管脚的功能如下: 8255A PC0:和8253的OUT0端相与后得到黄灯信号,其中1表示 2 亮,0表示暗 PC1:表示绿灯信号,其中1表示亮,0表示暗 PC2:表示红灯信号,其中1表示亮,0表示暗 PC3:和8253GATE1端相连,为时器1的门控型号 PC4: 和8253GATE2端相连,为时器2的门控型号 PA0~PA7,PB0~PB7:可接两个8段LED显示器,用于显示当前等亮时间 8253: 定时器0:输入信号设为10KHZ,工作在方式3,输出为1HZ方波,OUT0和PC0相与得到黄灯信号。 定时器1:输入信号为OUT0,工作站方式2,计数初值为30,实现延迟30S后产生中断。控制字为:01010100 定时器2:输入信号为OUT0,工作站方式2,计数初值为3,实现延迟3S后产生中断。控制字为:10010100 8259: 采用边沿触发,没有级联,需要设ICW1,ICW2,ICW4,不用ICW3。
三、设计要求
1、预习要求:
1)预习《STAR ES598PCI实验仪微机原理实验指导书》附录三:
2) 预习《STAR ES598PCI实验仪 微机原理实验指导书》附录二之2.7 B2区;2.9 B4
区;2.15 C5区;2.36 G5区;2.37 G6区。
3)预习《STAR ES598PCI实验仪微机原理实验指导书》之“实验九8255控制交通实验”和“实验十8253方波实验”。
4)预习本任务书,根据设计任务,预先画出电路原理图、程序流程图,编写出实验程序。
2、设计报告要求:
1)画出接口部分电路原理图,并阐述系统工作原理。
2)绘制程序流程图和源程序清单。
3)调试过程和结果。
4)要求用WORD撰写课程设计报告,上交打印版和电子稿。
8051单片机流水灯汇编程序,流程图,电路图!
51单片机数控直流电源的设计2:
#include <REG52.H>
#include <STDIO.H>
#include <INTRINS.H>
#include <MATH.H>
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_()
#define DAT P0
uchar go;
sbit K1=P3^1;//
第一个键
sbit K2=P3^2;//
第二个键
sbit K3=P3^3;//
第三个键
sbit WR2 = P3^0; //DAC
的控制端
//
位定义
#define Lcd_Data P0 //
定义数据端口
sbit RS = P2 ^ 0; //
定义连接端口
sbit RW = P2 ^ 1;
sbit E = P2 ^ 2;
sbit Busy = P0 ^ 7;
bit hold=0;
bit _Int=0;
bit k =0;
bit m=0; 惠州学院毕业论文bit fushu=0;
bit q=0;
//
全局变量定义
uint DAdat;//
存放送到
DA
的数据 32uint x;
//uchar ADdat;//
存放从
ADC
读出的数据
uchar vol; //
存放输入电压值
uchar keynum;
uchar kyreg;
uchar temp;//
存放功能状态
uchar hh;
///
数组定义
static code uchar Disp[]="0123456789-";
static code uchar Disp2[]="Error! ";
static code uchar Disp3[]="Vol is:";
//
函数声明
uchar keyread(void); //
读键函数
uchar keyread2(void); //
读键函数
2
uchar keyread3(void); //
读键函数
3
void reADC(void); //AD
反馈读数函数
uchar cmp(uchar ADdat,uchar DAdat); //
反馈比较函数基于51单片机数控直流电源的设计void lcdinit(); // LCD
初始化函数
void lcdcmd(uchar cmd); //LCD
写控制字函数
void lcddata(uchar dat); //LCD
写数据函数
void seDAC(uchar DAdata);// DAC
送数函数
void delay(uchar t); //
延时函数
void extint(void);
void volchange(); //
输出电压自增自减函数
main() //
主程序
{
unsigned int vol;
uchar i,j,l=0,a=0,b=0,e=0; 33 bit dian=0;
bit o=0,p=0;//
负数标志位、确认标志位
delay(255);
EA=1;
EX0=1;
PX0=1;
IT0=1;
//EX1=1;
//IT1=1;
pp:
a=b=0;dian=0;o=p=0,x=0;
P1=0;
lcdinit();
lcdcmd(0x80);
for(j=0;j<7;j++) //
开机送
0V
并显示到
LCD
{
lcddata(Disp3[j]);
}
seDAC(128);
DAdat=128;
lcddata('0');
lcddata('0');
lcddata('.');
lcddata('0');
lcddata('V');
while(1)
{
while(!k)
{ delay(200); 34 i=keyread();
if(!m)
{
lcdcmd(0x1);
for(j=0;j<7;j++)
lcddata(Disp3[j]);
m=1;
}
else if(i==11){m=0;goto pp;} //
复位
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV R0,#0FEH
MOV R1,#4
loop1:
MOV A,R0
MOV P1,A
LCALL delay
MOV A,R0
RL A
RL A
MOV R0,A
DJNZ R1,loop1
MOV R0,#07FH
MOV R1,#4
LOOP2:
MOV A,R0
MOV P1,A
Lcall Delay
MOV A,R0
RR A
RR A
MOV R0,A
DJNZ R1,LOOP2
MOV R0,#0EFH
MOV R2,#0F7H
MOV R1,#10
MOV A,R0
ANL A,R2
loop3:
MOV P1,A
ACALL DELAY
MOV A,R0
RR A
MOV R0,A
MOV A,R2
RL A
MOV R2,A
ANL A,R0
DJNZ R1,LOOP3
SJMP $
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
RET
DELAY:
MOV R5,#10
D2:
MOV R6,#200
D1:
MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
END
免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报
举报