单片机停车场c语言_单片机c语言+编程c语言 - CSDN
精华内容
参与话题
  • 原创的停车场管理系统实验报告,用c语言编写,供大家学习交流使用
  • (对于这个程序最关键的是出停车场的模块,在这个程序之中,必须要建立一个链队列和一个停车栈一个备用栈,备用栈在出车时会被调用到。 一、问题描述 停车场管理软件的主要标是实现停车场用户借助停车场管理...

     

     

    (对于这个程序最关键的是出停车场的模块,在这个程序之中,必须要建立一个链队列和一个停车栈一个备用栈,备用栈在出车时会被调用到。

     

     

    一、问题描述
     

        停车场管理软件的主要标是实现停车场用户借助停车场管理软件实现对停车位进行管理和监控。可以实现空闲车位查询、占用车位查询、已停车辆和用户进行管理、以及消费管理。为用户提供强大的数据操纵功能,界面友好、使用简单方便,能够满足用户的基本要求。

    停车场管理系统主要涉及到用户、车位、车辆、以及消费等几个要点。管理员可以查询车位及停放车辆,并出入的车辆进行计费及收费管理。

    设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。为停车场编制按上述要求进行管理的模拟程序。
     


    二、基本要求

         以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“‘离去”的信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若车辆到达,则输出汽车在停车场内或便道上的停车位置;若车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构,队列以链表结构。

    三、实现提示

         需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据接到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项。汽车的牌照号码和进入停车场的时刻。

    四.测试数据

         设n=2,输入数据为:('A',1,5),('A',2,10),('D',1,15),('A',3,20),('A',4,25),('A',5,30),('D',2,35),('D',4,40),('E',0,0)。其中:'A'表示到达;'D'表示离去(Departure);'E'表示输入结束(End)。

    五、选做内容

        完成图形化界面设计。

    // 停车场管理系统  
    #include"stdio.h"
    #include"stdlib.h"
    #define OVERFLOW 0
    #define STACKSIZE 2       // 车库容量  
    typedef struct time      // 时间节点
    {
    	int hour;
    	int min;
    }Time; 
    typedef struct       // 车辆信息
    {
    	char CarNum;
    	float time; 
    	int pos_a;    // 车在停车场中的位置  
    	int pos_b;   // 车在便道上的位置  
    	int flag;
    }Car,Car2;
    typedef struct           // 车库信息   (顺序栈)
    {
    	Car *top;
    	Car *base;
    	int stacksize;
    }SqStack; 
    int InitStack(SqStack *&S)        // 栈的初始化
    {
    	Car *Car1;
    	Car1=(Car*)malloc(sizeof(Car));
    	S=(SqStack*)malloc(sizeof(SqStack));
    	S->base= Car1;
    	if(!S->base) 
    		exit(0);
    	S->top=S->base;
    	S->stacksize=STACKSIZE;
    	return 1;
    }  
    int StackEmpty(SqStack *S)       //栈是否为空
    {
    	if(S->top==S->base) 
    		return 1;
    	else 
    		return 0;
    }
    int StackFull(SqStack *S)         //栈是否满
    {
    	if(S->top-S->base>=S->stacksize) 
    		return 1;
    	else 
    		return 0;
    }
    int Push(SqStack *&S,Car e)       // 入栈
    {
    	if(S->top-S->base==S->stacksize) 
    		return 0;
    	*S->top++=e;
    	return 1;
    } 
    int Pop(SqStack *&S,Car &e)      // 出栈
    {
    	if(S->top==S->base) 
    		return 0;
    	e=*--S->top; 
    	return 1;
    } 
    int StackTraverse(SqStack *S)   // 遍历栈
    {
    	Car *p=S->top; 
    	Car *q=S->base;
    	int l=1;
    	if(StackEmpty(S))
    	{
    		for(int j=1;j<=STACKSIZE;j++)
    		{
    			printf("\t 车牌:  无  ");
    			printf("\t\t 到达时间:   无   ");
    			printf("\t 位置 %d :  空闲   ",j);
    			printf("\n");
    		}
    		return 1; 
    	}
    	while(p!=q)
    	{
    		Car car=*(q);
    		printf("\t 车牌 : %d",car.CarNum);
    		printf("\t\t 到达时间: %5.2f",car.time);
    		printf("\t\t 位置: %d",l++);
    		printf("\n");
    		q++;
    	}
       return 1;
    }
    
    typedef struct      // 备用车道   (顺序栈)
    {
    	Car2 *top2;
    	Car2 *base2; 
    	int stacksize2;
    }SqStack2; 
    
     int InitStack2(SqStack2 *&S2)   // 初始化
    {
    	Car *Car2;
    	Car2=(Car*)malloc(sizeof(Car));
    	S2=(SqStack2*)malloc(sizeof(SqStack2));
    	S2->base2= Car2;
    	if(!S2->base2) 
    		exit(0);
    	S2->top2=S2->base2;
    	S2->stacksize2=STACKSIZE;
    	return 1;
     } 
     
    int StackEmpty2(SqStack2 *S2)    // 判空
    {
    	if(S2->top2==S2->base2)
    		return 1;
    	else
    		return 0;
    } 
    
    int Push2(SqStack2 *&S2,Car2 e2)    // 进栈
    {
    	if(S2->top2-S2->base2==STACKSIZE)
    		return 0;
    	*S2->top2++=e2;
    	return 1;
    } 
    
    int Pop2(SqStack2 *&S2,Car2 &e2)   // 出栈
    {
    	if(S2->top2==S2->base2)
    		return 0;
    	e2=*--S2->top2;
    	return 1;
    }
      
    typedef struct QNode    // 车道信息(链队) 
    {
    	Car data;
    	struct QNode *next;
    }QNode,*QueuePtr; 
    
    typedef struct
    {
    	QueuePtr front;
    	QueuePtr rear;
    }LinkQueue;
    
    int InitQueue(LinkQueue *&Q)    // 初始化
    { 
    	Q=(LinkQueue*)malloc(sizeof(LinkQueue));
    	Q->front=Q->rear=(QNode*)malloc(sizeof(QNode));
    	Q->front->next=NULL;
    	return 1;
    } 
    
    int EnQueue(LinkQueue *Q,Car e)    // 进队
    {
    	QueuePtr p;
    	p=(QNode*)malloc(sizeof(QNode));
    	p->data=e;
    	p->next=NULL;
    	Q->rear->next=p;
    	Q->rear=p;
    	return 1;
    } 
    
    int QueueEmpty(LinkQueue Q)     // 判空
    {
    	if(Q.front==Q.rear) 
    		return 1;
    	else
    		return 0;
    } 
    
    int DeQueue(LinkQueue &Q,Car &e)     //出队
    {
    	QueuePtr p;
    	if(Q.front==Q.rear)
    		return 0;
    	p=Q.front->next;
    	e=p->data;
    	Q.front->next=p->next;
    	delete p; 
    	return 1;
    } 
      
    int main()
    {
    	int i=1,j=1; 
    	int status;
    	float time,money;
    	system("color 37");
    	LinkQueue *Q;
    	Car car_I,car_D,car_M;
    	SqStack *S;
    	SqStack2 *S2;
    	InitStack(S); 
    	InitStack2(S2);
    	InitQueue(Q);
    	while(1)
    	{
    		printf("\t\t\t 欢迎来到 XXXXXX 停车场! \n"); 
    		printf("*****************************************************************\n");
    		printf("\t\t\t1-- 车辆到达停车场 \n"); 
    		printf("\t\t\t2-- 车辆离开停车场 \n"); 
    		printf("\t\t\t3-- 停车场存放车辆情况 \n"); 
    		printf("\t\t\t0-- 退出程序 \n");
    		printf("*****************************************************************\n");
    		printf(" 请选择所需要的操作 (0-3):\n"); 
    		scanf("%d",&status) ;
    		if(status==1)
    		{ 
    			printf("\t 请输入车牌号: ");
    			scanf("%d",&car_I.CarNum);
    			printf("\t 请输入车到达的时间: ");
    			scanf("%f",&car_I.time);
    			if(!StackFull(S))
    			{
    				Push(S,car_I); // 车进入车库  
    				car_I.pos_a=i;
    	     		car_I.flag=1;
    				i=i+1;
    				for(int m=1;m<50;m++)
    					// 边线  
    					printf("--");
    					printf("\n");
    					printf("\t 车牌号: ");
    					printf("%d",car_I.CarNum);
    					printf("\t 到达时间: ");
    					printf("%5.1f\t",car_I.time); 
    					printf("\t 车库中的位置是: %d\n",car_I.pos_a);
    					for(int m=1;m<50;m++)
    						// 边线  
    						printf("--");
    						printf("\n");
    						printf("\n");
    						printf("\n");
    			}
    			else
    			{
    				EnQueue(Q,car_I);
    				car_I.pos_b=j;
    				car_I.flag=0; 
    				++j;
    				printf("\n"); 
    				printf("\tSorry!  车库已满!!!,您可以把车停在车道上! \n");
    				printf("\n");
    				for(int m=1;m<50;m++) // 边线  
    				printf("..");
    				printf("\n");
    				printf("\t 车牌号: ");
    				printf("%d",car_I.CarNum);
    				printf("\t 便道上的位置为: %d\n",car_I.pos_b); 
    				for(int m=1;m<50;m++) // 边线  
    				printf("..");
    				printf("\n");
    				printf("\n");
    				printf("\n"); 
    			}
    			system("pause");
    			system("cls");
    		}
    		else if(status==2)
    		{
    			// 指令为  2 ,   开车离去(如果车在车库里收取停车费;在便道上则免费)  
    			printf(" 请输入车主的车牌号: ");
    			scanf("%d",&car_D.CarNum);
    			printf(" 请输入出场时间: ");
    			scanf("%f",&car_D.time);  
    			i=i-1; 
    			int flag=0;
    			// 判断车是否在便道上  
         if(StackFull(S))
    	 {
    		 Car *p=S->top; 
    		 Car *q=S->base;
    		 while(p!=q)
    		 {
    			 Car car=*(q);
    			 if(car.CarNum!=car_D.CarNum)
    			 {
    				flag++;
                 }
    			 if(car.CarNum==car_D.CarNum)
    			 {
    				goto loop;
    			 }
    			q++;
    		 }  
           if(flag>=STACKSIZE)
    	   {
    		   printf(" 您的车停在便道上     "); 
           }
           printf("\n");
           printf("\n");
           printf("\n");  
         } 
    	 else
    	 {
    loop:do
    	 {           // 挡在前面的车给要出去的车让路  
           Pop(S,car_M); 
                           // 加一个判断,判断是不是停车场里的车  
           if(car_D.CarNum!=car_M.CarNum)
    	   {
    		   Push2(S2,car_M);
           }
           else
    	   {
    		   car_I.time=car_M.time;
           }
    	 }
    	 while(car_D.CarNum!=car_M.CarNum);    
         while(!StackEmpty2(S2))
    	 {
    		 // 让路的车返回去  
             Pop2(S2,car_M); 
             Push(S,car_M);
           }
         while(!QueueEmpty(*Q)&&!StackFull(S))
    	 { 
             if(!StackFull(S))
    		 {
                DeQueue(*Q,car_M); // 便道上的车离开后进入停车场,那么后面的车的位置都得变。
                car_M.flag=1;   
             }
             Push(S,car_M);
             printf(" 车牌为 %d 的车离开车库,车道上车牌为 %d 的车进入车库 \n",car_D.CarNum,car_M.CarNum);
           }  
           time=car_D.time-car_I.time;
           if(time<0.0) 
    	   {
               printf(" 输入时间有错!请重新输入! ");
           }
           if(time>0.0&&time<=3.0)
    	   {
               money=time*4;
           }
           else money=time*6;
             
           printf(" 你的车牌为 %d 的车,应收费 %5.2f 元。 ",car_D.CarNum,money);
           printf(" 欢迎下次光临我们的车库 \n");
         }
         printf("\n");
         printf("\n");
         printf("\n");
    	 system("pause");
    	 system("cls");
       } 
     
       else if(status==3) 
       { // 指令为  3  ;查看车库停车情况;  
    		StackTraverse(S);
    		system("pause");
    		system("cls");
       }
       else if(status!=1&&status!=2&&status!=3&&status!=0)
       {
    		printf("\t 指令错误 !!!  请在下面重新输入: ");
    		system("pause");
    		system("cls");
       }
       else if(status==0)
         break; 
     }  
    }
    

     

     


     

    展开全文
  • 写在前面的话: 这是小编在2019年帮本系的一个...BH1750FVI可以依据停车场内的环境来自动调整光线,此传感器有高的感知度。其特点如下: 1.它是支持USB与其连接的 2.适用于人眼的光谱特性 3.非常的精确,并且范围...

    写在前面的话:

    这是小编在2019年帮本系的一个学长做的毕设,里面的内容有自己整理的也有亲学长论文的一部分,希望能够帮助到大家。有帮助的话,记得点赞收藏加关注呦!

    光照度传感器电路设计

    集成电路BH1750FVI,即光照传感器。BH1750FVI可以依据停车场内的环境来自动调整光线,此传感器有高的感知度。其特点如下:
    1.它是支持USB与其连接的
    2.适用于人眼的光谱特性
    3.非常的精确,并且范围广
    4. 有输出的功能,输出值
    5. 电流低
    6. 光照强度测量准确
    7. 可以与1.8V的电源进行连接
    8. 无需其他外部件
    9. 对光源没有特殊的要求
    10.可以选择11b pengj地址
    11.可以整测量结果(采用这种方法可探测光照度从最小值1.1lx到最大 值100000lx的范围。)
    12.有一定的误差,但极小
    13.基本上可以不受红外线的影响
    BH1750FV引脚功能如下表:
    光照度传感器引脚功能及特征

    系统软件设计介绍

    在前一章中介绍了系统各个模块的硬件设计,在这一章里将重点论述软件的设计。硬件功能的实现是基于软件程序的控制。本系统中软硬件皆采用模块化,按照这一思想将功能不同的电路分成了不同的模块,编译运行调试,充分发挥C语言的可移植性。
    我们在发送一次开始信号后,传感器将会有一个模式上的改变,即从高速到低速,在主机发送开始信号结束后,温湿度传感器将会发送响应信号送出数据,于此同时信号采集也是在这个时候被触发的, 我们现在就能够读取数据了。从模式下,DHT11接收到开始信号触发一次温湿度采集, 当DHT11还没有收到信号,DHT11将不会采集数据[17]。
    DHT11发生响应要使主机从高电平拉置低电平,为了让DHT11能够接收到起始信号,主机把总线拉低必须大于17ms。接收信号后, 发送低电平响应信号.主机发送开始信号结束后,稍稍的等待, 读取温湿度传感器信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。
    温湿度传感器工作流程

    光照度传感器模块设计

    在本设计中,光照度的采集成为最基础的参数采集,首先主机发送起始信号,然后BH1750FVI迅速切换到相应模式,然后开始读数,读数完成之后,总线拉高准备信息处理,然后传感器切换到低速相应模式等待主机信号,然后进行LCD屏显示数据。
    光照度传感器流程图
    BH1750FVI光照度模块所涉及的程序如下:

    private void serialPortB_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                string s = "";
                int count = comm.BytesToRead;
    
                byte[] data = new byte[count];
                comm.Read(data, 0, count);
                foreach (byte item in data)
                {
                    s += Convert.ToChar(item);
    
                }
    
                if (this.InvokeRequired)//由于是非创建线程访问<span style="font-family:Arial,Helvetica,sans-serif">textBox1,所以要使用代理句柄。要不然会抛异常,这点需要特别注意</span>
                 {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        string[] arr1;
                        string[] arr2 = s.Replace("\r\n", "-").Split('-');
                        for (int i = 0; i < arr2.Length; i++)
                        {
                            try
                            {
                                arr1 = arr2[i].Split(' ');
                                if (arr1[0] == "tem")//温度
                                {
                                    float x = float.Parse(arr1[1]);
                                    textBox1.Text=arr1[1];
                                }
                                if (arr1[0] == "sh")//空气湿度
                                {
                                    float x = float.Parse(arr1[1]);
                                    textBox2.Text = arr1[1];
                                }
                                if (arr1[0] == "lx")//光照强度
                                {
                                    float x = float.Parse(arr1[1]);
                                    textBox3.Text = arr1[1];
                                }
                                if (arr1[0] == "che")
                                {
                                    chehao = (int.Parse(arr1[1])/10);
                                }
                            }
    

    蓝牙传感器工作流程
    HC-05蓝牙模块所涉及的程序如下:

    if (chehao != 0)
                         {
                             if (chehaojiance(chehao) == 0)//入场
                             {
                                 int a = cheweijiance();//场内有车位
                                 if (a == 1)
                                 {
                                     comm.Write("1");//开抬杆
                                     timer1.Enabled = true;//启动定时关抬杆
                                     comm.Write("a");//开引导灯
                                     comm.Write("d");
                                     comm.Write("f");
                                     timer2.Enabled = true;//启动定时关引导灯                                 comm.Write("3");//开1地锁
                                     button3.BackColor = Color.Red;//车位指示变为红色
                                     timer3.Enabled = true;//车位1计时器启动
                                     chewei1 = chehao;
                                     chewei1_1 = true;
                                     textBox16.Text = chehao.ToString();
                                 }
    

    上位机主程序

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO.Ports;
    using System.Text.RegularExpressions;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    {
        public partial class Form1 : Form
        {
            Dictionary<string, Socket> dict = new Dictionary<string, Socket>();
            Dictionary<string, Thread> dictThread = new Dictionary<string, Thread>();
            private SerialPort comm = new SerialPort();
            private StringBuilder builder = new StringBuilder();
            private bool Listening = false;
            private string z="";
            private int q = 0,jishi=50;
            private bool chewei1_1=false ,chewei2_1=false ,chewei3_1=false,kongzhiquan=false;
            private int chehao = 0,chewei1 = 0, chewei2 = 0, chewei3 = 0,guangqiang=0;
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
    
                string[] ports = SerialPort.GetPortNames();
                Array.Sort(ports);
                comboPortName.Items.AddRange(ports);
                comboPortName.SelectedIndex = comboPortName.Items.Count > 0 ? 0 : -1;
                comboBaudrate.SelectedIndex = comboBaudrate.Items.IndexOf("9600");
    
                comm.NewLine = "\r\n";
                comm.RtsEnable = true;
                button1.Enabled = comm.IsOpen;
                button4.Enabled = comm.IsOpen;
            }
    
    
    展开全文
  • 单片机:基本知识

    2020-09-17 23:39:53
    一般来说,单片机是用来做单一功能的控制,或者数据量小的运算的,例如电饭锅,冰箱,空调的控制电路,监控,停车场大门自动收费等等 kile开发 ,将会带来全新的写作体验; 下载器 进行展示; 仿真...

    入门概念

    单片机是芯片,
    开发板是一块电路板,上面包括单片机芯片,内存,屏幕,供电接口,下载接口,等。
    单片机芯片种类有,stm32,arm,plc
    开发板 种类有,stm,arm,fpga,Arduino开源硬件,树莓派(玩具)开源硬件

    用处

    一般来说,单片机是用来做单一功能的控制,或者数据量小的运算的,例如电饭锅,冰箱,空调的控制电路,监控,停车场大门自动收费等等

    1. Keil uVision 5软件开发 :C语言编写对外围电路的控制代码
    2. 下载器 :将电脑的代码下载到单片机里面;
    3. 仿真器 :JTAG、JLink、ULINK、ST-LINK;
    4. 仿真器除了能够下载程序,还可以控制单片机单步运行程序或停在程序的某一条语句处,持甘法[^1] 功能;
    5. 增加了 多屏 功能;
    6. 增加了 焦置 等间;
    7. usb转串口 PL2303 和CH340
    8. STM32有两种程序下载方式,一种是通过串口下载,一种是通过仿真器下载。串口下载又叫做ISP,通过仿真器下载又可以叫做通过JTAG口下载。
      PLC通过485线控制变频器调速,电脑用USB转串口连接PLC。用CH340的话,变频器一旦启动,电脑端和PLC的通讯就很容易中断,用FT232则无此问题。
      稳定性:FT232>PL2303>CH340,

    stm32连线接法

    USB、串口、JTAG、SWD都是可以下载的,
    USB_232 处插入 USB 线,并接上电脑,安装 CH340G 的驱动

    1. flymcu软件 :下发指令给开发板
    2. 单根线 最常用还是用usb转串口,看起来像是 USB 下载(只需一根 USB 线,并不需要串口线)的,实际上,是通过 USB 转成串口,然后再下载的。
    3. 多根线串口只能下载代码,不能实时跟踪调试,而利用调试工具,比如 JLINK、ULINK、STLINK等就可以实时跟踪程序,从而找到你程序中的 bug。
    4. 9
    5. 9
    6. 9
    7. 9
    8. 0
    展开全文
  • C51单片机培训开发班

    2014-06-29 12:10:04
    观察下就可以发现目前单片机、ARM为代表的嵌入式芯片已渗透到我们生活各个领域中 ,并改变着我们的生活,用单片机控制实现的产品随处可见,如数码产品、安防监控、仪器、仪表、家 电、机电一体化、汽车...
    伴随着社会经济发展,产业转型,中国已经从“中国制造”转向“中国创造”,科技技术是此次产业升


    级的最大动力。观察下就可以发现目前单片机、ARM为代表的嵌入式芯片已渗透到我们生活各个领域中


    ,并改变着我们的生活,用单片机控制实现的产品随处可见,如数码产品、安防监控、仪器、仪表、家


    电、机电一体化、汽车单元控制、及工业控制等很多方面。因此专业单片机开发人才才出现大规模的缺


    口,据调查目前我国单片机从业人员只有150万人,人员紧缺;随着社会的发展,单片机从业人员更为


    抢手,据不完全统计,到2012年,我国单片机行业人员需求将达到300万人。而学习掌握好单片机知识


    也是今后掌握更高级的嵌入式CPU的必经之路,所以许多人迫切希望进修单片机的知识,渴求在最短的


    时间内尽快掌握单片机产品开发的基本技能。
    【课程目标】
     重点培训单片机开发人员,我们将根据您个体情况和实际的基础,采用特点培训方法,从电子工程师


    的基本要求入手,根据学员基础优势入手,增强补弱,通过必要的基础理论教学与大量的实践练习环节


    相结合,加以项目实战,全面模拟IT公司的单片机、嵌入式软、硬件开发、管理、组织、实施过程,让


    没有嵌入式编程基础和实际工作经验的电子行业从业人员在2-3个月的时间内迅速获得1-3年的嵌入式


    ARM单片机开发经验,具备实际开发的能力,胜任开发工作,让学员学完后就以具有1-3年开发经验的嵌


    入式开发工程师身份进入工作岗位,亦可自行创业!
    【培养对象】
    1、电子行业硬件工程师想提升软件产品开发的各类从业人员
    2、数字电路熟悉,自学单片机很难提升实战开发能力的单片机嵌入式爱好者       
    3、各大专院校,自动化,计算机,信息工程等专业,理论知识熟悉无实战开发经验的学生老师等
    4、有一定的基础想通过实战开发进入嵌入式开发领域的嵌入式爱好者
    实训过程=补强阶段+实操阶段+项目实战+ (推荐就业阶段)


    【课程大纲及计划】


    增强补弱
     学时
     
    1、强化数字电路常用元件、常用芯片、常用电路设计
     3
     
    2、电子产品开发流程及行业分析
     3
     
    3、电子工程师焊接,调试实际动手能力及细节管理知识
     3
     
    理论实操阶段
      
     
    第一次课程单片机内外部结构  
     2
     
    第二次课程单片机C51语法介绍       
     2
     
    第三次课程液晶显示
     3
     
    第四次课程定时、中断、串行通信    1)定时3+1 
     6
     
    第五次课程矩阵键盘、AD/DA 
     5
     
    第六次课程IIC协议模块化设计1)IIC协议   
     4
     
    热门模块开发
      
     
    将LCD12864程序规范化、优化  
     6
     
    项目软件设计RS232、步进电机、RTC时钟实战调试  
     10
     
    温度传感器模块、1-wire总线协议调试讲解
     6
     
    红外遥控、无线38K编码模块调试与讲解
     8
     
    综合选择模块LCD彩屏、触摸屏、USB、SD卡介绍    
     20
     
      项目阶段——项目实施
      
     
    1、项目市场调研、可行性分析、计划书编制
     2
     
    2、硬件设计(包括自己动手设计硬件,焊接线路板等)
     3
     
    3、软件设计;产品样机制作
     5
     
    4、项目评估、设计文件编制、整理;
     3
     
    5、产品生产规范、作业指导书、研发后续更改、文件控制。
     3
     
    6、项目答疑和评比,对优秀学员进行奖励和点评。
     3
     
      就业阶段
      
     
    职业素质教育与拓展训练
     9
     
    热门技术的讨论
     9
     
    推荐工作
     18
     




    课程总体概述


     


    本阶段从单片机发展、原理内部结构、最小系统等单片机基础架构及基本外围电路入门学习,为单片机


    基础课程学习,如基础不好可循环学习。本阶段内容熟悉后方可进入下阶段学习,如果本阶段课程内容


    熟悉,可以直接进入下阶段
     
    一、单片机与嵌入式系统概述:包括嵌入式系统概念、单片机的特点、应用领域和发展趋势、市场主流


    单片机性能比较与选型、常用51核单片机介绍、业内通用嵌入式系统开发方法和流程、开发板及相关开


    发工具的介绍和使用等;


    二、1单片机架构及基本资源的使用:包括单片机工作原理介绍、51单片机架构介绍、单片机最小系统


    介绍、51单片机基本资源如并口、中断、时钟与复位、串口等的熟练使用等;


    三、 单片机基本资源扩展设计:包括存储器扩展设计、可编程和不可编程I/O接口扩展设计、I2C总线


    的模拟设计等;


    四、输入输出设备的设计:包括独立式按键和矩阵键盘的各种输入方法、数码管及液晶显示器的接口设


    计、蜂鸣器的设计;


    五、输入通道和输出通道的设计:包括一定模拟和数字信号量的输入、频率量的输入方法、A/D转换原


    理与器件选型及其与单片机的接口设计、数字与模拟量的输出方法、功率驱动相关知识、D/A转换原理


    与器件选型及其与单片机的接口设计等


    六、单片机软硬件设计和调试经验:各种软件开发和设计技巧、调试经验等;


    七、开发环境和开发工具介绍:Keil uVision2集成开发环境的使用与软调试等;


    八、软硬件系统集成和调试方法,技术文档的编写规范;
     
    通过第一阶段的系统学习对单片机编程、单片机模块的系统开发等能力得到强化和锻炼,本阶段重点是


    单片机热门模块的实战和项目开发
     
    一、产品设计流程、项目市场调研、可行性分析;


    二、计划书编制;硬件设计(包括自己动手设计硬件,焊接线路板等);


    三、软件设计、热门模块的开发和设计


    四、产品样机制作、项目评估、设计文件编制、整理;


    五、产品设计:模块组合,整体开发思路提升研发产品转为生产;


    六、产品生产规范、作业指导书,研发后续更改、文件控制。 


    总结:项目答疑和评比,对优秀学员进行奖励和点评。职业


    最后从公司众多的项项目方案中选择一个项目由工程师带您设计完成)


    从公司众多的产品项目中选择制作完成:


    一、智能车项目开发,


    二、温控系统


    三、智能门禁系统 


    四、电子撑项目


    五、广告机系统


    六、车载LED广告屏


    七、税控机


    八、停车场管理系统
     
    质量保证   
     
    1、每个班提供充足的实践操作和问题辅导答疑时间。保证人手一台机实验器材!
    2、所有学员在学习期间均会获得我公司研发部十几位资深高级工程师、国际项目经理等的技术支持,


    除正常学习时间外,其他任何时间学员均可前来进行额外实践
    3、所有学员提供一年的的免费技术支持服务。
    4、参加学员可以享受免费的推荐就业机会
    5、每周1-5晚上的7-9点都可以过来实践操作,有专门的工程师辅导练习
     
    课时
     
    课时:156周期(1-3个月)
    班别:周末班,全日班,晚班可选
    如需要证书另加300元考试合格颁发信息产业部《单片机设计工程师》证书
    实验环境----全空调教室及实验室
    为了保证培训效果,增加互动环节,我们坚持小班授课,每班10人以内,多余人员安排到下一期进行。


    选组长1名,每个学员配备ARM学习开发板。
     
    上课地点
     




     
    技术咨询:宋老师18336308250  QQ:2905283896




    ★这里是【深圳信盈达嵌入式实训学院】,单片机培训、嵌入式ARM培训、linux培训、PCB培训、FPGA


    培训,汇编C语言培训、Android培训、数电模电培训、cortex-m3培训!






    地址:
    郑州实训基地:郑州金水区文化路85号A时代广场1906





    展开全文
  • 嵌入式蓝桥杯2011年“国信长天杯”第三届嵌入式设计与开发的模拟试题“模拟停车场计费系统”设计任务书 首先我们看试题要求 首先我们看到试题要求并不是很多 需要用到的模块有 按键 LED LCD 串口 定时器 ...
  • 单片机不是裸奔就是RTOS,其实玩过RTOS和linux的同学都知道,RTOS虽然也叫操作系统,但是和linux这种根本不是一个级别。差远了,更不用说android了,android里随便拿出来一个模块代码量都比一个完整的RTOS都庞大,都...
  • 楔子 我时常在想,现代社会发展变化速度之快超越了很多人的认知。罗胖子说跟不上时代要交认知税,很有道理。半导体和IT行业又是旋涡中心,发展更加快,其实想想其他行业的创新(美团外卖、滴滴打车、微信社交、淘宝...
  •  从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机、光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有STM和Nuvoton这类通用...
  • 移动机器人入门篇

    2019-07-24 14:42:23
    我在接触机器人前,接触过单片机,那时候的单片机还是51、PIC16这种,当时就特别好奇:机器人一个关节需要几颗这样的芯片?这个问题我记得最清楚,因为做了机器人,发现根本不用芯片,整个机器人一个芯片就够了。...
  • c++学习记录(1) c++基础(1) 1、数学问题解决
  • android安卓源码海量项目合集打包-1

    万次阅读 2019-06-11 16:16:24
    下载地址 最后更新共计113个分类5177套源码29.2 GB。 卷 新加卷 的文件夹 PATH 列表 卷序列号为 00000200 5E7A:7F30 F:. ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签的灵活运用.rar ...
  • ProtoThreads实现Arduino多线程处理(1)

    千次阅读 2016-11-29 10:15:15
    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi QQ群:64770604 这几天和群里小V同学讨论一个项目时,偶然发现了 ProtoThreads,简称PT,用其来实现arduino的多线程控制很方便。这里摘录几篇介绍的文章。...
  • 《疯狂的程序员》二

    千次阅读 2012-10-25 20:34:58
    11 其实也没怎么等,机会就来了,好像是机会一直在等他,等他决定不玩游戏了,来把机会拿走。 现在很多人总是抱怨:“苦恼阿,没机会阿。”好像自己就是那个才华横溢又无法横溢才华的大诗人。...
  • 18年求职面经及总结

    2019-04-02 11:43:03
    18年求职面经及总结 ...先说背景:微电子科学与工程专业,学过两门和CS相关的课程:c语言单片机.这个专业的唯一好处就是:大部分人并不知道这个专业学什么,以为和电信差不多.所以在众多野生程序员中也算一丁点儿优势...
  • 嵌入式知识体系

    千次阅读 2012-02-11 12:25:55
    本文为自己总结的学习嵌入式的知识体系  ...数字电子技术,模拟电子技术(晶体管,运放,电源等为重点),C语言单片机外围电路设计以及驱动开发(AVR,PIC,8051F,STC等) 实时操作系统应用 上位机编写
  • 数据结构JAVA版2017教学视频课程

    千人学习 2018-10-22 21:38:08
    本课程共28个教学视频课程,22小时的教学时间,深入浅出的理论讲解,用JAVA语言实现每个知识点的代码,大量的上机练习题讲解,通过家家乐停车场,佳佳乐彩票机,佳佳乐通讯录,编译原理的语法分析等项目的综合应用实...
  • 课程介绍 仓库管理系统主要功能有采购入库,采购退货,销售出库,销售退货,仓库盘点,... 47、车牌识别停车场管理系统 48、身份证识别系统项目实战 49、营业执照识别系统项目实战 50、名片识别管理系统
1 2 3 4
收藏数 66
精华内容 26
关键字:

单片机停车场c语言