华北电力大学微机课程设计
- 格式:docx
- 大小:73.75 KB
- 文档页数:9
华北电力大学科技学院实验报告||实验名称实验一开发器的使用与设计实验实验二中断8259应用、定时/计数器8253应用实验三并行接口8255应用实验四存储器拓展实验实验五A/D转换结果送数码管显示课程名称微机原理实验与课程设计||专业班级学生姓名:学号:成绩:指导教师:张少敏实验日期:2013/5实验一、数据转换实验一、实验目的1、初步掌握在PC机上建立、汇编、链接和运行8086/88汇编语言程序的过程。
2、通过对两个验证性实验的阅读、调试,掌握不同进制数及编码相互转换的程序设计方法。
3、完成程序设计题,加深对数码转换的理解,了解简单程序设计方法。
二、实验条件一台计算机三、实验内容与步骤1)设二字节十六进制数存放于起始地址为3500H的内存单元中,把他们转换成ASCII码后,再分别存入起始地址为350AH的四个内存单元。
从书上ASCII码表中可知十六进制数加30H即可得到0H~9H的ASCII码,而要得到AH~FH的ASCII码,则需再加7H。
2)参考程序如下:CODE SEGMENTASSUME CS:CODESTART:MOV CX,0004hMOV DI,3500HMOV AX,0000HMOV DS,AXMOV DX,[DI]A1:MOV AX,DXAND AX,000FHCMP AL,0AHJB A2ADD AL,07HA2:ADD AL,30HMOV[DI+0AH],ALINC DIPUSH CXMOV CL,04HSHR DX,CLPOP CXLOOP A1MOV AH,4CHINT21HCODE ENDSEND START四、实验结论与分析错误分析:在保存文件时,第一步忘了加后缀.ASM,导致打开不了文件。
实验结果:在调试运行后350AH的内存单元中会显示3500H中所转换的对应的ASCII码。
五、实验心得在这次课程设计的过程中的收获是很大的。
这次课程设计我主要是应用老师教的相关知识及自己的一些想法,完成了数据转换问题。
华电保定微机原理实验华电保定微机原理实验是一门常见于电子信息类专业的实践性课程,本次我们进行的微机原理实验是在MCS-51单片机系统上完成的。
该实验旨在通过实际操作,让学生更加深入地理解计算机系统的工作原理。
下面将详细介绍该实验的过程和结果。
实验仪器:MCS-51单片机开发板、继电器模拟器、拨码开关、LED灯、数码管等。
实验内容:利用MCS-51单片机系统实现简单的IO控制、数码管显示和时钟延时等功能。
实验步骤:1.硬件连接:根据实验要求,将MCS-51单片机开发板与实验仪器连接,并确认连接正确、稳定。
2. 编写程序:根据实验要求,利用Keil C51或其他编程工具编写程序,完成IO控制、数码管显示和时钟延时等功能的代码编写。
3.烧录程序:将编写好的程序烧录到MCS-51单片机开发板中。
4.实验操作:根据实验要求,进行实验操作和测试,观察实验现象并记录。
5.实验结果分析:根据实验结果和实验要求进行结果分析,验证和评估实验的准确性和有效性。
实验要求和实验现象:1.IO控制实验:利用拨码开关进行输入,根据输入的状态控制LED 灯的亮灭。
实验要求:当拨码开关向左拨动时,LED灯亮起;当拨码开关向右拨动时,LED灯熄灭。
实验现象:根据拨码开关的状态,控制LED灯的亮灭。
2.数码管显示实验:将数值输出到数码管进行显示。
实验要求:利用数码管显示0-9的数字,以0.5秒的间隔依次循环显示。
实验现象:数码管上依次显示0、1、2...9,然后再从0开始循环显示。
3.时钟延时实验:利用定时器进行延时操作。
实验要求:利用定时器延时1秒,然后将LED灯进行翻转。
实验现象:LED灯每隔1秒钟反转亮灭一次,周而复始。
实验结果:通过上述三个实验,我们可以深入理解计算机系统的工作原理。
通过编写程序,控制IO口和外设,观察不同状态下的现象和变化。
实验结果表明,我们所编写的程序可以正确地实现IO控制、数码管显示和时钟延时等功能。
实验结果分析:实验结果表明,我们所编写的程序可以准确地控制外部设备,实现预期的功能。
课程设计报告( 2013—2014 年度第一学期)课程:微机原理及应用题目:电子琴及电子播放器院系:自动化系班级:自动化1103学号: 201111010122201109010113201102020331学生姓名:詹文超靳朝阳张晓指导教师:张妍设计周数:一周成绩:日期:2014年1 月10 日微机原理及应用课程设计报告一、目的与要求1.通过对微机系统分析和具体设计,使学生加深对所学课程的理解。
2.掌握汇编语言程序设计的基本方法和典型接口电路的基本设计方法。
3.培养学生分析问题、解决问题的能力。
4.培养学生对微型计算机应用系统的基本设计能力。
5.提高学生的实践动手能力和创新能力。
二、主要内容1. 电子琴及电子播放器2. 系统介绍本设计不仅可以实现小键盘电子琴演奏,还可以通过拨码开关播放不同的电子音乐,主要有小星星,两只老虎和欢乐颂。
硬件设计用到8253和8255芯片,8253工作在方式3,产生一定的频率方波,同时对应着不同音调;8255为可编程接口芯片,用于整个系统的开关控制功能。
3. 系统实现的功能系统主要实现三个功能:1、自动演奏3首歌曲;2、利用小键盘手动演奏;3、歌曲之间的相互切换。
4.所用芯片的工作原理(1)8253原理8253有3个独立的计数通道,每个通道结构相同,例若clk0给定频率,向控制字寄存器写入控制字,并向计数器0写入计数初值,采用不同的方式即可产生不同的频率。
8253的内部结构(1).数据总线缓冲器实现8253与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息,包括某时刻的实时计数值。
(2).读/写控制逻辑控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。
(3).控制字寄存器在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。
离线潮流计算课程设计(华北电力大学、刘燕华老师)班级学号姓名一、课程设计的目的离线潮流计算课程设计是“电力系统稳态分析”课程教学的重要实践环节,目的是使学生加深理解所学知识,锻炼应用理论解决实际问题的能力。
二、课程设计内容1、手算算例1(精度取10 -2),求潮流计算结果。
2、编写潮流计算程序,计算算例2 。
三、课程设计要求1、计算机语言:编程语言可任选,建议使用C语言,使用VC6.0平台。
2、潮流计算方法:牛顿—拉夫逊法和P-Q分解法。
3、编写潮流计算程序,并在计算机上调试通过,运行结果正确。
4、要求潮流计算程序具有一定的通用性,基础数据以数据文件的形式输入。
5、撰写课程设计报告,内容包括:1)潮流计算的意义2)潮流计算几种主要方法的比较3)手算算例1的计算过程及结果4)程序框图、源程序及符号说明5)算例及计算结果四、验收方式以答辩的形式进行验收,演示程序并回答有关问题。
五、算例1、节点①为平衡节点,U1=1∠0°,节点②为PV节点,P2=0.4,U2=1.1,节点③为PQ节点,S3 = 0.8+ j 0.6,网络结构和参数如图1所示。
2、GN1节点为平衡节点,V9=1.04,δ9=0.0,GEN2和GEN3为PV节点,V7=1.025,P7=1.63,V8=1.025,P8=0.85,其它节点为PQ节点,S1=1.25+j0.5,S3=0.9+j0.3,S5=1.0+j0.35,ε=0.0001,网络结构如图2所示。
①②③P 2=0.4U 2=1.1U 1=1∠0°S 3 = 0.8+j 0.6y 12=1.17 - j 4.71y 13=5.88 - j 23.5图1 算例1图2 算例2Txt 文档 原始数据GEN1⑨j 0.058 ②S 3③①S 1⑦ ⑥⑤ ④⑧GEN3GEN2 0.01+j0.085B/2=0.0880.017+j0.092 B/2=0.079 0.039+j0.17 B/2=0.1790.032+j0.161 B/2=0.153 j0.0630.019+j0.072 B/2=0.075S 50.012+j0.101B/2=0.105j0.059Line1 1 1 12 0.01 0.085000001 0.0882 1 1 1 6 0.032000002 0.160999998 0.1529999973 1 1 2 3 0.017000001 0.092 0.0790000044 2 1 2 9 0 0.057999998 15 1 1 3 4 0.039000001 0.170000002 0.1790000056 1 1 4 5 0.012 0.101000004 0.1049999977 2 1 4 8 0 0.059 18 1 1 5 6 0.018999999 0.071999997 0.0750000039 2 1 6 7 0 0.063000001 1Node1 1 -1.25 -0.52 1 0.000000 0.0000003 1 -0.9 -0.34 1 0.000000 0.0000005 1 -1.000000 -0.356 1 0.000000 0.0000007 2 1.63 1.0258 2 0.85 1.0259 0 1.04 0.000000上机程序:编程#include<stdafx.h>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<float.h>#include<math.h>using namespace System;#define LINE_TOTAL_NUM 9#define NODE_TOTAL_NUM 9#define NODE_DATA_FILENAME "node.txt"#define LINE_DATA_FILENAME "line.txt"#define B "B.txt"#define G "G.txt"#define deltaPQ "deltapq.txt"#define JACCOBI "jaccobi.txt"#define PQ "pq.txt"#define line_S "linedeltaS.txt"#define U "u.txt"#define line_pq "lineS.txt"struct NodeData{unsigned int Index; //node indexunsigned int Type; //node type: PQ:1,PV:2,balance point:0float FirstInput; //PQ or PV:active power,balance point:Vfloat SecondInput; //PQ:reactive power,PV:V,balance point:angle};struct NodeData gNodeData[NODE_TOTAL_NUM]; // define a global variable of node 确定节点读入结构体struct LineData{unsigned int Index; //line indexunsigned int Type; //line type: Line:1,tranformer:2,line connected to ground:3unsigned int Status; //line status: on:1,off:0unsigned int SrcNode; //source node index of this lineunsigned int DestNode;//destination node index of this linefloat Resistance; //resistance of the linefloat Reactance; //reactance of the linefloat Conductance; //Line: conductance B/2,transformer:change ratio};struct LineData gLineData[LINE_TOTAL_NUM]; //确定支路节点导纳结钩体struct NodeV oltage{float V oltage;float Angle;};struct NodeV oltage gNodeV oltage[NODE_TOTAL_NUM];struct DeltaPQ{ //定义不平衡功率的结构体float DeltaP; //有功float DeltaQ; //无功};struct DeltaPQ gDeltaPQ[NODE_TOTAL_NUM]; //定义不平衡功率数组gUnbPowervoid SolveEquation(unsigned int Dimension,float** FactorMatrix,float* ConstV ector);//void SolveEquation(unsigned int Dimension,float** FactorMatrix,float* ConstV ector);float gY_G[NODE_TOTAL_NUM][NODE_TOTAL_NUM];float gY_B[NODE_TOTAL_NUM][NODE_TOTAL_NUM];int main(array<System::String ^> ^args){Console::WriteLine(L"Hello World");float node_P[9],node_Q[9],line_deltap[9],line_deltaq[9];unsigned int i,j,k,n,m; //cycle variable;FILE* fp; //file structureunsigned int PVNum=0; //the number of PV nodefp=fopen(NODE_DATA_FILENAME,"r"); //open and read the node datafor(i=0;i<NODE_TOTAL_NUM;i++){fscanf(fp," %d %d %f %f ",&gNodeData[i].Index,&gNodeData[i].Type,&gNodeData[i].FirstInput,&gNodeData[i].SecondInput);//initiate the NodeV oltage according to node type 读入节点数据PQ或PVswitch(gNodeData[i].Type){case 1: //PQ nodegNodeV oltage[i].V oltage = 1.0;gNodeV oltage[i].Angle = 0.0;break;case 2: //PV nodegNodeV oltage[i].V oltage = gNodeData[i].SecondInput;gNodeV oltage[i].Angle = 0.0;PVNum++;break;case 0: //balance nodegNodeV oltage[i].V oltage = gNodeData[i].FirstInput;gNodeV oltage[i].Angle = gNodeData[i].SecondInput;break;default:printf("there is no such a node type, data has mistake");return 0;}}fclose(fp);fp=fopen(LINE_DATA_FILENAME,"r"); //open and read the line data 读节点导纳数据for(i=0;i<LINE_TOTAL_NUM;i++){fscanf(fp," %u %u %u %u %u %f %f %f", &gLineData[i].Index,&gLineData[i].Type,&gLineData[i].Status,&gLineData[i].SrcNode,&gLineData[i].DestNode,&gLineData[i].Resistance,&gLineData[i].Reactance,&gLineData[i].Conductance);}fclose(fp);float line_g[9], line_b[9],line_g0[9], line_b0[9];for(i=0;i<NODE_TOTAL_NUM;i++){ line_g[i]=0;line_b[i]=0;line_g0[i]=0;line_b0[i]=0;for(j=0;j<NODE_TOTAL_NUM;j++){gY_G[i][j] = 0.0;gY_B[i][j] = 0.0;}}for(i=0;i<LINE_TOTAL_NUM;i++){float tAbs;float LineG,LineB;unsigned int tSrcNode,tDestNode;tSrcNode = gLineData[i].SrcNode - 1;//counting from zerotDestNode = gLineData[i].DestNode - 1;tAbs = pow(gLineData[i].Resistance,2)+pow(gLineData[i].Reactance,2);//由阻抗求导纳LineG = gLineData[i].Resistance/tAbs;LineB = (-1)*gLineData[i].Reactance/tAbs;if(gLineData[i].Type){if(gLineData[i].Type == 1)//it means Line 线路{gY_G[tSrcNode][tSrcNode]+= LineG;gY_B[tSrcNode][tSrcNode] += LineB + gLineData[i].Conductance;gY_G[tDestNode][tDestNode] += LineG;gY_B[tDestNode][tDestNode] += LineB + gLineData[i].Conductance;gY_G[tSrcNode][tDestNode] += (-1)*LineG;gY_B[tSrcNode][tDestNode] += (-1)*LineB;gY_G[tDestNode][tSrcNode] += (-1)*LineG;gY_B[tDestNode][tSrcNode] += (-1)*LineB;line_g[i]=LineG;line_b[i]=LineB;line_b0[i]=gLineData[i].Conductance;}else if(gLineData[i].Type == 2) //it means Transformer 变压器{float V olRatio = gLineData[i].Conductance;gY_G[tSrcNode][tSrcNode] += LineG/pow(V olRatio,2);gY_B[tSrcNode][tSrcNode] += LineB/pow(V olRatio,2);gY_G[tDestNode][tDestNode] += LineG;gY_B[tDestNode][tDestNode] += LineB;gY_G[tSrcNode][tDestNode] += (-1)*LineG/V olRatio;gY_B[tSrcNode][tDestNode] += (-1)*LineB/V olRatio;gY_G[tDestNode][tSrcNode] += (-1)*LineG/V olRatio;gY_B[tDestNode][tSrcNode] += (-1)*LineB/V olRatio;line_g[i]=LineG/V olRatio;line_b[i]=LineB/V olRatio;}else if(gLineData[i].Type == 3)//it means line connected to ground{unsigned int tNotZeroNode;if(gLineData[i].SrcNode != 0)tNotZeroNode = gLineData[i].SrcNode-1;elsetNotZeroNode = gLineData[i].DestNode-1;;gY_G[tNotZeroNode][tNotZeroNode] += LineG;gY_B[tNotZeroNode][tNotZeroNode] += LineB;}elsereturn 0;}}//form deltaPQ//form Jacobin Matrix//N-R methodfp=fopen(G,"w"); //write the ymatrix data to filefor(i=0;i<9;i++){for(j=0;j<9;j++)fprintf(fp," %f ",gY_G[i][j]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);fp=fopen(B,"w"); //write the ymatrix data to filefor(i=0;i<9;i++){for(j=0;j<9;j++)fprintf(fp," %f ",gY_B[i][j]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);for(m=0;m<5;m++){unsigned int tSrcNode,tDestNode;float p1,p2,q1,q2,line_p[9][9],line_q[9][9];for(i=0;i<9;i++)for(j=0;j<9;j++){line_p[i][j]=line_q[i][j]=0;}fp=fopen(line_S,"w");fprintf(fp,"------ 线上的网损功率----- ");fprintf(fp,"\n\n");for(i=0;i<LINE_TOTAL_NUM;i++){tSrcNode = gLineData[i].SrcNode - 1;//counting from zerotDestNode = gLineData[i].DestNode - 1;p1=line_g[i]*(gNodeV oltage[tSrcNode].V oltage*gNodeV oltage[tSrcNode].V oltage-gNodeV oltage[tSrcNode].V oltage* gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle))-gNodeV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_b[i]*sin(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle);q1=-(line_b[i]*(gNodeV oltage[tSrcNode].V oltage*gNodeV oltage[tSrcNode].V oltage-gNodeV oltage[tSrcNode].V oltage *gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle))+gNo deV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_g[i]*sin(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle)+gNodeV oltage[tSrcNode].V oltag e*gNodeV oltage[tSrcNode].V oltage* line_b0[i]);p2=line_g[i]*(gNodeV oltage[tDestNode].V oltage*gNodeV oltage[tDestNode].V oltage-gNodeV oltage[tSrcNode].V oltag e*gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle))-gN odeV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_b[i]*sin(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle);q2=-(line_b[i]*(gNodeV oltage[tDestNode].V oltage*gNodeV oltage[tDestNode].V oltage-gNodeV oltage[tSrcNode].V olta ge*gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle))+g NodeV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_g[i]*sin(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle)+gNodeV oltage[tDestNode].V olta ge*gNodeV oltage[tDestNode].V oltage* line_b0[i]);line_deltap[i]=p1+p2;line_deltaq[i]=q1+q2;line_p[tSrcNode][tDestNode]=p1;line_p[tDestNode][tSrcNode]=p2;line_q[tSrcNode][tDestNode]=q1;line_q[tDestNode][tSrcNode]=q2;fprintf(fp," 第%d 条%6.3f + j%6.3f ",i+1,line_deltap[i],line_deltaq[i]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);fp=fopen(line_pq,"w");fprintf(fp,"------ 线路潮流----- ");fprintf(fp,"\n\n");fprintf(fp,"有功 1 2 3 4 5 6 7 8 9\n");for(i=0;i<9;i++){fprintf(fp," %d ", i+1 );for(j=0;j<9;j++){fprintf(fp," %6.3f ",line_p[i][j]);}fprintf(fp,"\n");}fprintf(fp,"\n\n");fprintf(fp," 无功 1 2 3 4 5 6 7 8 9\n");for(i=0;i<9;i++){fprintf(fp," %d ", i+1 );for(j=0;j<9;j++){fprintf(fp," %6.3f ",line_q[i][j]);}fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);float tempP[NODE_TOTAL_NUM]={0.0},tempQ[NODE_TOTAL_NUM]={0.0};//设两个变量数组用于存储两个累加和for(i=0;i<9;i++){for(j=0;j<9;j++){tempP[i]+=gNodeV oltage[j].V oltage*(gY_G[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle)+gY_B[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));tempQ[i]+=gNodeV oltage[j].V oltage*(gY_G[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle)- gY_B[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}}for(i=0;i<9;i++) //利用公式求解每个节点的不平衡功率{if(gNodeData[i].Type == 1) //如果是PQ节点则△P和△Q都要求{gDeltaPQ[i].DeltaP=gNodeData[i].FirstInput-gNodeV oltage[i].V oltage*tempP[i];gDeltaPQ[i].DeltaQ=gNodeData[i].SecondInput-gNodeV oltage[i].V oltage*tempQ[i];node_P[i]=gNodeData[i].FirstInput;node_Q[i]=gNodeData[i].SecondInput;}if(gNodeData[i].Type==2) //如果是PV节点只需求△P{gDeltaPQ[i].DeltaP=gNodeData[i].FirstInput-gNodeV oltage[i].V oltage*tempP[i];node_P[i]=gNodeData[i].FirstInput;node_Q[i]=gNodeV oltage[i].V oltage*tempQ[i];}if(gNodeData[i].Type==0){node_P[i]=gNodeV oltage[i].V oltage*tempP[i];node_Q[i]=gNodeV oltage[i].V oltage*tempQ[i];}}float B_Array[14];for(i=0;i<NODE_TOTAL_NUM;i++) //向数组中放入不平衡功率的值{if(gNodeData[i].Type==1) //PQ节点两个都要输入{B_Array[i]=gDeltaPQ[i].DeltaP;B_Array[i+NODE_TOTAL_NUM-1]=gDeltaPQ[i].DeltaQ;}if(gNodeData[i].Type==2) //PV节点只输入△PB_Array[i]=gDeltaPQ[i].DeltaP;if(gNodeData[i].Type==0) //平衡节点不输入数据{}}fp=fopen(deltaPQ,"w");for(i=0;i<14;i++){fprintf(fp," %f ",B_Array[i]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);float gJaccobi[14][14];float H[8][8],N[8][6],J[6][8],L[6][6];float s;for(i=0;i<8;i++)for(j=0;j<8;j++){{ s=0;for(k=0;k<9;k++)s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*sin(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)-gY_B[i][k]*cos( gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){H[i][i]=gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*sin(gNodeV oltage[i].Angle-gNodeV olt age[i].Angle)-gY_B[i][i]*cos(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)));}elseH[i][j]=-gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltag e[j].Angle)-gY_B[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<8;i++)for(j=0;j<6;j++){s=0;for(k=0;k<9;k++){s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*cos(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)+gY_B[i][k]*sin (gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){N[i][i]=-gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*cos(gNodeV oltage[i].Angle-gNodeV ol tage[i].Angle)+gY_B[i][i]*sin(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)))-2*gNodeV oltage[i].V oltage*gNo deV oltage[i].V oltage*gY_G[i][i];elseN[i][j]=-gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltag e[j].Angle)+gY_B[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<6;i++)for(j=0;j<8;j++){s=0;for(k=0;k<9;k++){s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*cos(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)+gY_B[i][k]*sin (gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){J[i][i]=-gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*cos(gNodeV oltage[i].Angle-gNodeV olt age[i].Angle)+gY_B[i][i]*sin(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)));}elseJ[i][j]=gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage [j].Angle)+gY_B[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<6;i++)for(j=0;j<6;j++)s=0;for(k=0;k<9;k++){s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*sin(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)-gY_B[i][k]*cos( gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){L[i][i]=-gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*sin(gNodeV oltage[i].Angle-gNodeV olt age[i].Angle)-gY_B[i][i]*cos(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)))+2*gNodeV oltage[i].V oltage*gNo deV oltage[i].V oltage*gY_B[i][i];}elseL[i][j]=-gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltag e[j].Angle)-gY_B[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<8;i++){for(j=0;j<8;j++)gJaccobi[i][j]=H[i][j];}for(i=0;i<8;i++){for(j=8;j<14;j++)gJaccobi[i][j]=N[i][j-8];}for(i=8;i<14;i++){for(j=0;j<8;j++)gJaccobi[i][j]=J[i-8][j];}for(i=8;i<14;i++){for(j=8;j<14;j++)gJaccobi[i][j]=L[i-8][j-8];}fp=fopen(JACCOBI,"w"); //write the Jmatrix data to filefprintf(fp," ----------%d 次迭代之后的雅各比---------- ", m+1);fprintf(fp,"\n");for(i=0;i<14;i++){for(j=0;j<14;j++)fprintf(fp," %f ", gJaccobi[i][j]);fprintf(fp,"\n");}fclose(fp);fp=fopen(U,"w");fprintf(fp,"----- %d次迭代之后的节点电压和相角-----",m+1);fprintf(fp,"\n\n");for(i=0;i<9;i++){fprintf(fp," %6.3f ,%6.3f ",gNodeV oltage[i].V oltage,gNodeV oltage[i].Angle*180/3.14 );fprintf(fp,"\n");}fclose(fp);float *Jgb[14]={0};for(i=0;i<14;i++)Jgb[i]=gJaccobi[i];SolveEquation(14,Jgb,B_Array);for(i=0;i<8;i++)gNodeV oltage[i].Angle=gNodeV oltage[i].Angle-B_Array[i];for(i=0;i<6;i++)gNodeV oltage[i].V oltage=gNodeV oltage[i].V oltage-gNodeV oltage[i].V oltage*B_Array[i+8];}fp=fopen(PQ,"w");fprintf(fp,"----- %d次迭代之后的节点注入功率-----",m);fprintf(fp,"\n\n");for(i=0;i<9;i++){fprintf(fp," %6.3f + j%6.3f ",node_P[i],node_Q[i] );fprintf(fp,"\n");}fclose(fp);return 0;}void SolveEquation(unsigned int Dimension,float** FactorMatrix, float* ConstV ector){unsigned int i,j,k;//消元过程for(i=0;i<Dimension;i++){//规格化过程:(每次消元前,先规格化,以便以下各行消元时,消元系数直接取待消//列元素的值即可,也便于回代过程,而运算量并不增加)for( j = i+1; j < Dimension; j++ ){FactorMatrix[i][j] = FactorMatrix[i][j] / FactorMatrix[i][i];}ConstV ector[i] = ConstV ector[i]/FactorMatrix[i][i];for( j = i+1; j < Dimension; j++ ) //消去第i列(从i+1行到最后一行){if( FactorMatrix[j][i] != 0 ) //如果第j行第i列元素本就是,则不需本列对应的消元过程{for( k = i + 1; k < Dimension; k++ ) //当FactorMatrix[i][k]=0,a[j][k]值不变,可省去运算if( FactorMatrix[i][k] != 0 )FactorMatrix[j][k] = FactorMatrix[j][k] - FactorMatrix[j][i] * FactorMatrix[i][k];}//常数项的消元ConstV ector[j] = ConstV ector[j] - FactorMatrix[j][i]* ConstV ector[i];}}//回代过程for( i = Dimension-1; i > 0; i-- ) //Dimension-2:最后一个变量可直接获得,从n-1个变量求起{for(j = Dimension-1; j > i-1 ; j-- ){if( FactorMatrix[i-1][j] != 0 )ConstV ector[i-1] = ConstV ector[i-1] - FactorMatrix[i-1][j] * ConstV ector[j];//a[i][k]=0时可以不算}}return;}结果数据:B-17.338230 11.604095 0.000000 0.000000 0.000000 5.975134 0.000000 0.000000 0.00000011.604095 -39.189156 10.510682 0.000000 0.000000 0.000000 0.000000 0.000000 17.2413810.000000 10.510682 -15.840926 5.588245 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 5.588245 -32.016567 9.763170 0.000000 0.000000 16.949152 0.0000000.000000 0.000000 0.000000 9.763170 -22.567842 12.984672 0.000000 0.000000 0.0000005.975134 0.000000 0.000000 0.000000 12.984672 -34.604820 15.8730150.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 15.873015 -15.873015 0.000000 0.0000000.000000 0.000000 0.000000 16.949152 0.000000 0.000000 0.000000 -16.949152 0.0000000.000000 17.241381 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -17.241381G2.552792 -1.365188 0.000000 0.000000 0.000000 -1.187604 0.000000 0.000000 0.000000-1.365188 3.307379 -1.942191 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 -1.942191 3.224200 -1.282009 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 -1.282009 2.441990 -1.159981 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 -1.159981 4.586491 -3.426511 0.000000 0.000000 0.000000-1.187604 0.000000 0.000000 0.000000 -3.426511 4.614115 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000Pq----- 5次迭代之后的节点注入功率------1.250 + j-0.5000.000 + j 0.000-0.900 + j-0.3000.000 + j 0.000-1.000 + j-0.3500.000 + j 0.0001.630 + j 0.0440.850 + j-0.0830.722 + j 0.269Lines------ 线路潮流-----有功 1 2 3 4 5 6 7 8 91 0.000 -0.408 0.000 0.000 0.000 -0.842 0.000 0.000 0.0002 0.411 0.000 0.311 0.000 0.000 0.000 0.000 0.000 -0.7223 0.000 -0.310 0.000 -0.590 0.000 0.000 0.000 0.000 0.0004 0.000 0.000 0.604 0.000 0.246 0.000 0.000 -0.850 0.0005 0.000 0.000 0.000 -0.245 0.000 -0.755 0.000 0.000 0.0006 0.865 0.000 0.000 0.000 0.765 0.000 -1.630 0.000 0.0007 0.000 0.000 0.000 0.000 0.000 1.630 0.000 0.000 0.0008 0.000 0.000 0.000 0.850 0.000 0.000 0.000 0.000 0.0009 0.000 0.722 0.000 0.000 0.000 0.000 0.000 0.000 0.000无功 1 2 3 4 5 6 7 8 91 0.000 -0.380 0.000 0.000 0.000 -0.120 0.000 0.000 0.0002 0.222 0.000 0.015 0.000 0.000 0.000 0.000 0.000 -0.2373 0.000 -0.170 0.000 -0.130 0.000 0.000 0.000 0.000 0.0004 0.000 0.000 -0.185 0.000 0.061 0.000 0.000 0.124 0.0005 0.000 0.000 0.000 -0.271 0.000 -0.079 0.000 0.000 0.0006 -0.079 0.000 0.000 0.000 -0.037 0.000 0.115 0.000 0.0007 0.000 0.000 0.000 0.000 0.000 0.044 0.000 0.000 0.0008 0.000 0.000 0.000 -0.083 0.000 0.000 0.000 0.000 0.0009 0.000 0.269 0.000 0.000 0.000 0.000 0.000 0.000 0.000Linedeltas------ 线上的网损功率-----第1 条0.003 + j-0.158第2 条0.023 + j-0.198第3 条0.002 + j-0.155第4 条0.000 + j 0.032第5 条0.013 + j-0.315第6 条0.001 + j-0.210第7 条0.000 + j 0.041第8 条0.011 + j-0.116第9 条0.000 + j 0.159Deltapq0.000000-0.000000-0.0000000.0000000.000000-0.0000000.000000-0.000000-0.000001-0.000001-0.0000010.0000000.0000000.000000Jaccobi----------5 次迭代之后的雅各比-----------17.706173 11.808823 0.000000 0.000000 0.000000 5.897350 0.000000 0.000000 -1.283349 1.763017 -0.000000 -0.000000 -0.000000 2.020332 11.895562 -41.236431 10.961612 0.000000 0.000000 0.000000 0.0000000.000000 1.025734 -3.480160 1.732301 -0.000000 -0.000000 -0.000000 -0.000000 10.856828 -16.528721 5.671892 0.000000 0.000000 0.000000 0.000000 -0.000000 2.299367 -2.403131 1.903763 -0.000000 -0.000000 -0.000000 -0.000000 5.934539 -34.030075 10.204877 0.000000 0.000000 17.890657 -0.000000 -0.000000 0.758889 -2.595565 0.986676 -0.000000-0.000000 -0.000000 -0.000000 10.151972 -23.438147 13.286174 0.000000 0.000000 -0.000000 -0.000000 -0.000000 1.431959 -3.692233 4.2602746.221704 -0.000000 -0.000000 -0.000000 13.658310 -36.512653 16.632639 0.000000 0.388424 -0.000000 -0.000000 -0.000000 2.850076 -4.868500-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 16.632639 -16.632639 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -1.630000-0.000000 -0.000000 -0.000000 17.890657 -0.000000 -0.000000 0.000000 -17.890657 -0.000000 -0.000000 -0.000000 -0.850000 -0.000000 -0.0000003.783349 -1.763017 0.000000 0.000000 0.000000 -2.020332 0.000000 0.000000 -16.706175 11.808823 0.000000 0.000000 0.000000 5.897350 -1.025734 3.480160 -1.732301 0.000000 0.000000 0.000000 0.000000 0.000000 11.895562 -41.236435 10.961612 0.000000 0.000000 0.000000 0.000000 -2.2993674.203131 -1.903763 0.000000 0.000000 0.000000 0.000000 -0.000000 10.856828 -15.928721 5.671892 0.000000 0.000000 0.000000 0.000000 -0.758889 2.595565 -0.986676 0.000000 0.000000 -0.850000 -0.000000 -0.000000 5.934539 -34.030071 10.204877 0.000000 0.000000 0.000000 0.000000 -1.431959 5.692233 -4.260274 0.000000 0.000000 -0.000000 -0.000000 -0.000000 10.151972 -22.738146 13.286174-0.388424 0.000000 0.000000 0.000000 -2.850076 4.868500 -1.630000 0.000000 6.221704 -0.000000 -0.000000 -0.000000 13.658310 -36.512653 U----- 5次迭代之后的节点电压和相角-----0.996 ,-4.0341.026 ,-2.2511.012 ,-3.7411.031 , 1.8961.011 , 0.6421.027 , 3.6391.025 , 9.2391.025 , 4.617 1.040 , 0.000。
综合实验报告( 2012 -- 2013 年度第 1学期)名称:软件设计与实践题目:网页视频播放器院系:信息工程班级:学号:学生姓名:指导教师:田志刚设计周数: 2成绩:日期:2012年1 月11 日《软件综合实验》任务书一、目的与要求软件综合实验是计算机科学与技术、软件工程、网络工程和信息安全专业学生的必修实践环节,本环节是在第六学期、第七学期设置,主要让学生进一步理解、巩固、加深前面所学的课程,并能综合运用所学课程的知识进行设计,掌握算法设计及实现的理论与方法,为毕业设计和今后的工作打下良好的基础。
课程的基本要求:1. 熟悉微机的应用环境。
2. 利用所学课程的知识,解决程序设计中的实际问题(实际应用题目,或模拟实际应用的题目),为毕业设计和今后的工作打下良好的基础。
二、主要内容能熟练地利用微机设计出有实用价值的程序。
1. 熟悉Windows以及其它工具软件系统,2. 根据所选题目进行算法设计(画出流程图,写出各模块的文档)。
3. 编程。
4. 上机调试。
三、进度计划四、设计(实验)成果要求编制一个网页播放视频,要求有两种播放模式,一种是可以操作者播放并控制,另外一种是仅可以播放和暂停,不允许改变视频播放进度。
五、考核方式实验结果(60%)+实验报告(30%)+实验过程表现(10%)学生姓名:指导教师:年月日一、课程设计(综合实验)的目的与要求本次课程设计主要让学生进一步理解、巩固、加深前面所学的课程,并能综合运用所学课程的知识进行设计,掌握算法设计及实现的理论与方法,为毕业设计和今后的工作打下良好的基础。
课程的基本要求:1. 熟悉微机的应用环境。
2. 利用所学课程的知识,解决程序设计中的实际问题(实际应用题目,或模拟实际应用的题目),为毕业设计和今后的工作打下良好的基础。
二、设计(实验)正文1、实验内容编制一个网页播放视频,要求有两种播放模式,一种是可以操作者播放并控制,另外一种是仅可以播放和暂停,不允许改变视频播放进度。
《微机原理及接口》课程设计任务书适用专业:计算机科学与技术一、本次课程设计的目的和意义学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计时间和设计题目(一)、设计时间:两周(二)、设计题目:可从以下题目中任选一题,原则上每班每题不超过5人。
每题的设计要求:a、设计出完整的接口电路。
B、编写出全部程序。
C、在实验系统上调试通过。
1、交通灯控制系统:按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。
可利用8255、8253、8259等接口电路。
2、温度测控系统的设计:利用ADC0809采用中断式设计一个温度测控系统,在LED 数码显示器上显示温度值,并对温度进行测试和控制,当检测温度到达温度上限60℃时开风扇(即开启电动机),低于下限30℃时关闭风扇,LED上的显示内容为:XX ℃(采用十进制显示)。
3、函数发生器1的设计:利用D/A设计一个函数发生器,并利用按键选择输出波形,能分别产生三角波、阶梯波(每阶梯1V)、正向锯齿波、负向锯齿波和方波。
并利用按键(自行定义)进行输出波形选择,同时将当前输出波形代号显示在LED上(左边位):0为方波、1为正向锯齿波、2为负向锯齿波、3 为三角波、4为阶梯波。
4、函数发生器2的设计:设计一个三角波发生器,可利用键盘改变其输出波形的幅值。
例如,可利用1---5这5个数字键改变其输出波形的幅值,当按下1---5数字键时使D/A输出幅值从1V增加到5V。
5、电子音乐播放器:设计要求:利用8253作为音阶频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。
课程设计(综合实验)报告( 2015-- 2016年度第一学期)名称:ARM课程设计题目:操作系统加采集电压显示院系:信息工程系班级13K2学号:31学生姓名:指导教师:张老师设计周数:2成绩:日期:2016年6月23日一、课程设计(综合实验)的目的与要求题目:根据上课已学内容和知识点设计:在带UC/OS-II操作时系统的基础上采集实验板上的电压值,显示电压。
要求:(1)用TFT、32*32液晶显示出采集的电压值的波形(需要显示有坐标轴、符合和对波形的说明)。
(2)液晶显示的同时要求ARM与PC有一条接口线,在PC上也显示采集的电压值(即串口显示电压值)。
(3)在液晶显示和PC显示的基础上同时要求采集的电压可以自动采集一次(即刷新一次)。
(4)当采集的电压值超过2V时,报警(即要有一个报警信号)。
二、设计(实验)正文1:设计思路(1)对于采集电压值可根据A/D转换使得电压值能在液晶上显示;用液晶显示采集电压的值可根据课内实验做的液晶显示实验来写;要在液晶上显示波形可以根据采集到的电压值与液晶屏的大小的采集点数的关系来写。
(2)在PC上显示可根据UART通信的知识点(异步串行通信)来进行设计。
(3)根据液晶屏的大小,判断是否到达最高数从而当采集完并显示出波形后可以自动再次刷新,重新采集并显示。
(4)报警可设计一个蜂鸣器,让其超过2V就报警(可利用课内做过的蜂鸣器实验来获得思路)。
(5)对于所有的操作系统,我是先在裸机下写程序,等到都测试好了再添加进来(分成四个任务)。
2:设计代码#include "lpc177x_8x.h"#include "includes.h"#include "../ADC/adc.h"#if ADC_DEBUG#include "../UART/uart.h"#endifextern volatile uint32_t ADCValue[ADC_NUM];extern volatile uint32_t ADCIntDone;#if ADC_DEBUGextern volatile uint32_t UART0Count;extern volatile uint8_t UART0Buffer[BUFSIZE];#endif#define BEEPON (LPC_GPIO3->CLR = 1ul << 30) //蜂鸣器工作#define BEEPOFF (LPC_GPIO3->SET = 1ul << 30) //蜂鸣器不工作/OS_EVENT *mbox;static OS_STK stkTaskA[256];static OS_STK stkTaskB[256];static OS_STK stkTaskC[256];static OS_STK stkTaskD[256];/********************************************************** ***********************************************宏定义*********************************************************** **********************************************/uint32_t x=0;//定义全局变量INT8U err;INT16U *pd;uint32_t ADCSum=0;uint32_t i;/********************************************************** ************************************************* 函数名称:myDelay** 函数描述:软件延时** 输入参数:ulTime** 返回值:无*********************************************************** **********************************************/void myDelay (uint32_t ulTime){uint32_t i;while (ulTime--) {for (i = 0; i < 19192; i++);}}void GPIOInit( void ){LPC_GPIO3->DIR |= 1<<30; //设置P3.30为输出LPC_GPIO3->SET |= 1<<30; //设置P3.30为高电平}/********************************************************** ************************************************* 函数名称:beepOperate** 函数描述:蜂鸣器工作** 输入参数:uiFrequency 蜂鸣器工作频率** 返回值:无*********************************************************** **********************************************/void beepOperate (void){BEEPON; // 蜂鸣器鸣叫OSTimeDly(OS_TICKS_PER_SEC / 2);BEEPOFF; // 蜂鸣器不鸣叫OSTimeDly(OS_TICKS_PER_SEC / 2);}void coordinate (void)//定义显示坐标及一些说明{lcd_Clear(LCD_WHITE); // 背景色为白色lcd_DrawHLine(0,320,230,LCD_BLACK);lcd_DrawLine(0,120,320,120,LCD_RED);lcd_DrawVLine(0,0,230,LCD_RED);GUI_SetColor(GREEN, RED);GUI_PutString8_8(10,5,"Y");GUI_SetColor(GREEN, RED);GUI_PutString8_8(310,230,"X");GUI_SetColor(BLUE, RED);GUI_PutString8_8(20,5,"bo xing tu");GUI_PutString8_8(150,230,"max voltage is 3V");}/*********************************************************************************************************** 函数名称:TaskD** 函数描述:任务D ,LCD显示** 输入参数:无** 返回值:无*********************************************************** **********************************************/void TaskD(void *pvData){pvData = pvData;while (1) {pd=(INT16U *)OSMboxPend(mbox,0,&err); // 等待消息//lcd_SetPixel(x,119-ADCSum/13,LCD_BLACK);也可以用这个函数GUI_Point(x,230-ADCSum*240/2500,BLACK); //描点函数,也就是坐标的开始(即从0,239位置为0位置),可以通过改变230-ADCSum*240/2500这个值来改变坐标的起始位置,也可以直接写230-ADCSum/10(自己定义,10表示2500/240,即满屏显示电压幅度值)x++;if(x==319){//描点函数自动刷新x=0;coordinate();}}}/********************************************************** ************************************************* 函数名称:TaskC** 函数描述:任务C ,蜂鸣器报警** 输入参数:无** 返回值:无*********************************************************** **********************************************/void TaskC(void *pvData){pvData = pvData;while (1) {pd=(INT16U *)OSMboxPend(mbox,0,&err); //等待消息if(ADCSum>=2000)//蜂鸣器报警条件{beepOperate();}}}/********************************************************** ************************************************* 函数名称:TaskB** 函数描述:任务B,串口显示** 输入参数:无** 返回值:无*********************************************************** **********************************************/void TaskB(void *pvData){unsigned int a=0;unsigned int b=0;unsigned int c=0;unsigned int d=0;pvData = pvData;while (1) {pd=(INT16U *)OSMboxPend(mbox,0,&err); //等待消息a=ADCSum/1000;//电压转换最高位b=(ADCSum-a*1000)/100; //电压转换第二位c=(ADCSum-a*1000-b*100)/10; //电压转换第三位d=ADCSum-a*1000-b*100-c*10; //电压转换第四位UART0Buffer[0] =(unsigned char)a+0x30;UART0Buffer[1] =(unsigned char)b+0x30;UART0Buffer[2] =(unsigned char)c+0x30;UART0Buffer[3] =(unsigned char)d+0x30;//转换成字符形式发送UART0Buffer[4] =(0x3D);UART0Buffer[5] =(a+48);UART0Buffer[6] =(0x2e);//小数点UART0Buffer[7] =(b+48);UART0Buffer[8] =(c+48);UART0Buffer[9] =(d+48);UART0Buffer[10] =(0x56);//“V”UART0Buffer[11] =(0xD);//回车UART0Buffer[12] =(0xA);//换行UARTSend( 0,(uint8_t*)UART0Buffer, 13);OSTimeDly(1);}}/********************************************************** ************************************************* 函数名称:TaskA** 函数描述:任务A , ADC采集电压** 输入参数:无** 返回值:无*********************************************************** **********************************************/void TaskA(void *pvData){pvData = pvData;mbox=OSMboxCreate(NULL); //创建消息邮箱,在优先级最高的任务创建while (1) {ADCSum=0;ADC_Start(0); //打开A/D转换while(ADC_GetStat(0)); //等待转换完成ADCSum=ADCRead(0); //读ADC通道0采集到的值ADCSum=(ADCSum*2500)/4096;//计算电压分辨率OSMboxPost(mbox,&ADCSum);//发送采集的电压OSTimeDly(1);}}/********************************************************** ************************************************* 函数名称:main** 函数描述:用户程序入口函数** 输入参数:无** 返回值:无*********************************************************** **********************************************/int main(void){ //一定要严格按照下面初始化顺序来做,液晶一定要在串口前面,否则很容易错SystemInit();LPC_SC->PCONP |= 0x00000800; //EMC上电GPIOInit(); // 通用I/O口初始化lcd_Init(); //初始化液晶#if ADC_DEBUG 如果定义了调试则编译串口初始化 UARTInit(0, 9600);#endifADCInit( ADC_CLK );coordinate ();//坐标轴初始化OSInit();OSTaskCreate(TaskA, (void *)0, &stkTaskA[sizeof(stkTaskA) / 4 - 1], 0);OSTaskCreate(TaskB, (void *)0, &stkTaskB[sizeof(stkTaskB) / 4 - 1], 1);OSTaskCreate(TaskC, (void *)0, &stkTaskC[sizeof(stkTaskC) / 4 - 1], 2);OSTaskCreate(TaskD, (void *)0, &stkTaskD[sizeof(stkTaskD) / 4 - 1], 3);OSStart();}说明:这里只显示主函数的内容,其余内容因为代码太多,在附录里截图显示,那些是根据课内实验移植的一些调用函数,在做的过程中经常出现例如“头文件找不到、目录不对应、大小太小等问题”,都是在这个移植的时候没添好造成。
华电微机原理课程设计一、教学目标本课程的教学目标旨在让学生掌握微机原理的基础知识,培养学生运用微机进行分析和解决问题的能力。
具体目标如下:1.知识目标:学生能够理解微机的基本组成原理、工作方式以及各部分的功能;掌握微机指令系统、编程方法及其应用;了解微机系统的设计与开发过程。
2.技能目标:学生能够使用微机进行基本编程,独立完成简单微机应用程序的设计与调试;具备微机硬件系统的基本调试和维护能力。
3.情感态度价值观目标:培养学生对微机技术的兴趣,使其认识微机技术在现代社会中的重要作用,提高学生运用科学知识解决实际问题的能力。
二、教学内容本课程的教学内容主要包括微机原理的基本概念、微机的组成与工作原理、指令系统与编程、微机系统的设计与开发等。
具体安排如下:1.微机原理的基本概念:介绍微机的定义、发展历程、分类及性能指标。
2.微机的组成与工作原理:讲解微机的基本组成部件,如中央处理器、存储器、输入输出设备等,以及它们的工作原理。
3.指令系统与编程:学习微机的指令系统,包括数据传输指令、算术运算指令、逻辑运算指令等,并掌握编程方法及技巧。
4.微机系统的设计与开发:介绍微机系统的设计原则、开发流程,以及系统调试与维护方法。
三、教学方法为实现教学目标,将采用以下教学方法:1.讲授法:教师讲解微机原理的基本概念、组成原理、指令系统等理论知识,引导学生掌握课程内容。
2.案例分析法:通过分析实际案例,使学生了解微机原理在实际应用中的作用,提高学生的实践能力。
3.实验法:安排实验室实践环节,让学生亲自动手进行微机编程和硬件调试,培养学生的动手能力。
4.讨论法:学生进行分组讨论,分享学习心得和经验,促进学生之间的交流与合作。
四、教学资源为实现教学目标,将提供以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料。
2.参考书:推荐相关参考书籍,丰富学生的知识体系。
3.多媒体资料:制作课件、教学视频等多媒体资料,提高课堂教学效果。
卑址电力*孑课程设计(综合实验)报告(20 14 -- 20 15 年度第1学期)名称: 微机原理课程设计题目: 课题2交通灯控制系统院系: 控制与计算机工程学院班级: 自动化1203学号: 1121190308学生姓名:刘帅指导教师:吴华设计周数:1周成绩: ______________________1.1目的:在微机原理及应用课程中分别了微计算机各个基本组成模块的原理和编程技术的基础之上,综合应用各部分知识,在实验室现有设备情况下,设计一个具有一定功能的应用系统,达到对各部分知识加深理解,融会贯通的目的。
1.2要求:用8255实现交通信号灯软件,硬件设计。
8255控制LED发光管实现的十字路口信号灯电路及管理程序,并尽量接近真实信号灯的工作情况。
二、设计(实验)正文1.设计题目:一个十字路口的交通信号灯,东西向为一组,南北向为一组,组内信号灯亮灭情况相同,R6、Y5、G4作为南北路口的交通灯,R2、Y1、G0乍为东西路口的交通等.程使六个灯按交通等变化规律亮灭。
要求进行周期性重复控制:g)南北路口的绿灯、东西路口的红灯同时亮20秒。
h)南北路口的黄灯闪烁3秒,同时东西路口的红灯闪3秒。
i)南北路口的红灯、东西路口的绿灯同时亮90秒。
j)南北路口的红灯、同时东西路口的黄灯亮闪烁3秒。
k)在LED上同步显示倒计时。
2设计过程:2.1 芯片类型及使用:(1 )交通信号灯的灯光变化和数码显示通过8255实现控制。
PA O用于输出信号控制灯光的变化,PB口用于输出信号控制数码管的显示,PC0用于输入k0的控制开关信号,PC佣于输入用于硬件延时的方波信号。
PC7用于输出控制数码管工作/不工作的信号。
故写入方式控制字为10000001B=81H(2儿ED 数码显示:数码管采用共阴极接法,位选信号为0则数码管工作。
a 〜dp段发亮条件:对应位输入1,见下表所示:PB控制计数器的低位(也就是个位)。
(3 )用两片74LS273控制南北东西12个路灯。
D1--D12分别对应芯片的UQ0 Q9 Q7 Q4 Q1、Q10 Q8 Q5 Q2、Q11。
(4)8086的20根地址线分别接到3个74LS273的U6 U7、U10的D口。
(5 )用一片74LS154控制两片8255。
U6 U7、U10的C端经过逻辑运算接入来控制两片8255的显示顺序。
2.2线路连接及写入程序中的数据的计算(1)南北向红灯,东西向黄灯,低电平0无效,高电平1有效•(2)南北向绿灯,东西向红灯,Ied15显然没有,那数据的最高四位一定是(3)南北向黄灯,东西向红灯4。
3.功能流程图及电路连接图(1)功能及程序流程图U11的Q6 Q3 U5的ABC端用1111。
R6, Y1闪3秒(2 )硬件电路 仿真。
4程序 .MODEL SMALL .8086 .STACK .CODE .STARTUPSTART:MOV DX,0406HMOV AL,80H OUT DX,AL MOV DX,0606H MOV AL,80H OUT DX,AL MOV AX,ALL_LIGHT ;数据的地址 0MOV DX,0200H MOV DX,AXAGAIN: MOV SI,OFFSET SITUATION;取得定义数据段的偏移地址EAMOV DX,0200H;273 地址b -L L F F Q K <■R L Kr E F H- h- .1 I 1 I .1 I I I J 112 >1* 11 2 IL亠亠亠亠亠IMLu「士/A XI忙b Ess壬"5I'JZ LJ I'IWH'.|±蚩-1 •<»$<»NEXT: MOV AX,[SI]OUT DX,AX ; 数据输出到交通LED灯上PUSH SILEA SI,LEDLEA DI,TABLEONE;DUAN0:MOV AX,93 ; 赋初值93MOV CX,AXPUSH CXAB: CALL DISPLAYPOP CXDEC CXPUSH CXMOV AX,CXCMP AX,3JGE ABPOP CXPOP SIADD SI,2 ; 下一状态 1MOV DX,0200H MOV AX,[SI] OUT DX,AXPUSH SI LEA SI,LEDLEA DI,TABLETWO;DUAN1:MOV AX,3MOV CX,AX PUSH CXAC: CALL DISPLAYPOP CX DEC CX PUSH CX MOV AX,CX CMP AX,0 JGE ACADD SI,2 ; 下一状态 2MOV DX,0200HMOV AX,[SI]OUT DX,AXPUSH SILEA SI,LEDLEA DI,TABLETHREE;DUAN2:MOV AX,23MOV CX,AXPUSH CXAD: CALL DISPLAYPOP CXDEC CXPUSH CXMOV AX,CXCMP AX,3JGE ADPOP CXPOP SIADD SI,2 ; 下一状态 3MOV DX,0200HMOV AX,[SI]OUT DX,AXPUSH SILEA SI,LEDLEA DI,TABLEFOUR;DUAN3:MOV AX,3MOV CX,AXPUSH CXAE: CALL DISPLAYPOP CXDEC CXPUSH CXMOV AX,CXCMP AX,0JGE AE; 数码管分解显示子程序DISPLAYDISPLAY PROC NEARMOV DX,10DIV DL ;32/10=3,把十位给分解出来显示0, 此时AL=3,AH=2 MOV CL,ALMOV CH,AHXOR BX,BXMOV BL,CLMOV AL,[SI+BX]MOV DX,0400HOUT DX,ALXOR BX,BXMOV BL,CHMOV AL,[SI+BX]MOV DX,0600HOUT DX,ALCALL XUNMOV DX,10DIV DLMOV CL,ALMOV CH,AHXOR BX,BXMOV BL,CLMOV AX,[SI+BX]MOV DX,0402HOUT DX,ALXOR BX,BXMOV BL,CHMOV AL,[SI+BX]MOV DX,0602HOUT DX,ALCALL DELAYRETDISPLAY ENDPXUN PROC NEARMOV AH,0INC DI RETXUN ENDPDELAY 时间)PROC NEAR ;;延时子程序2,延时时间为500*(执行469次循环语句的MOV BX,500 LP1: MOV CX,469 LP2:LOOP LP2 DEC BX JNZ LP1RETDELAY ENDP课程设计(综合实验)总结或结论一周的课程设计结束了,在这次的课程设计中不仅检验了我们所学习的知识,也培养了我们如何去把握一件事 情,如何去做一件事情,又如何完成一件事情。
在设计过程中,同学分工设计,同学们相互探讨,相互学习,相互监督。
学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
通过这次课程设 计,综合运用本专业所学课程的理论和实际知识进行一次交通灯设计工作的实际训练从而培养和提高学生独立 工作能力,相关的课程都有了全面的复习, 独立思考的能力也有了提高。
在这次设计过程中,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
由于我们的设计能 力有限,.DATA TABLEONE DB90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,3 7,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10 ,9,8,7,6,5,4 TABLETWO TABLETHREE TABLEFOUR LED 数组0 SITUATION led15,LSB —— 51 高电平1有效 52 DW 那数据的最高四位- -定是53DWSIT_END = $ALL_LIGHT EQU ENDDB DB DB DB 》led0DW 3,2,1,0 20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 3,2,1,03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管待显示的字符 1111100001100001B 1111010001010001B 1111001100001100B 11111111001010001010B 1111110010010110B;南北向红灯,东西向绿灯,MS ——》 ;南北向红灯, ;南北向绿灯, ;南北向黄灯, 东西向黄灯,低电平0无效,东西向红灯,Ied15显然没有, 东西向红灯 4在设计过程中难免岀现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,我们将万分感谢。
四、参考文献[1]郑学坚,周斌•微型计算机原理及应用[M].北京:清华大学出版社,2001.[2]朱定华等•微型计算机原理及应用[M].北京:电子工业出版社,2005.附录(设计流程图、程序、表格、数据等)。