分享好友 天南地北首页 网站导航

微机原理课程设计怎么做?

网友发布 2023-07-19 17:05 · 头闻号仪器机械

一、设计的目的:

掌握微机原理的基本应用方法。通过实验熟悉微机基本接口芯片的外型、引脚、编程结构,掌握汇编语言程序设计和微机基本接口电路的设计、应用方法,做到理论联系实际。

二、系统的主要功能、作用及主要性能指标

按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)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

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

收藏

点赞