物联网工程专业为什么要学习信号与系统

物联网工程专业为什么要学习信号与系统,第1张

通信工程:电路分析基础,线性电子线路,c语言,数字电路与,信号系统,通信电子线路,微机原理,单片机原理,电磁场与电磁波,微波技术,数字信号处理,通信原理,EDA与VHDL,专业外语,电子测量原理,移动通信,通信网基础,光纤通信系统,数字程控交换原理,多媒体通信
物联网:这个专业比较新,开这个专业的学校也各有各的课程,物联网应用技术模块(嵌入式技术及应用、Android应用软件设计、上位机软件设计与应用、数据库基础、典型无线通信组网技术应用等)、物联网系统集成与维护模块(物联网技术应用与工程实践、物联网工程造价等),信息技术模块(维修电工、工程制图、电子技术基础、计算机网络与综合布线等),传感网技术模块(传感器技术与应用、自动识别技术与应用、典型无线通信组网技术等),工程技术模块(物联网工程管理、无线传感网系统工程。

『壹』 拜请各位大神帮忙解答物联网安全系统毕业课程设计的方向与题目。

物联网
的安全系统,这个开发平台
是什么,数据库等


『贰』 应用电子技术(物联网方向)专业的课程有哪些

电路分析、模拟电子技术、数字电子技术、微机原理与接口技术、电子设计自动化、C语言程序设计、平板电视技术、单片机原理及应用、传感器原理及应用、CPLD/FPGA可编程器件的设计与应用、数字处理DSP芯片原理及应用、ARM嵌入式系统设计、电磁兼容技术、MP3数码产品的设计、电子测量及自动检测技术、毕业设计等。

信号与系统、高频电路、电子测量技术、微机原理及接口技术、单片机技术、视频技术、通信原理、EDA技术、传感器技术应用、智能仪器、移动通信技术、程控交换技术、模拟电子、数字电子、电路分析、C语言、DSP原理、电声技术、PLC技术等。
『叁』 应用电子技术(物联网方向)专业的课程有哪些

物联网可以是一个“专业”,但不一定是一个“学科”。国内有些专家反对设置“物联网专业”,因为定位不清,一个学校往往有好几个院系争夺“物联网专业“的申报,又不是一个明确的学科,难以培养出真正的专业人才,培养出来的人可能是“万精油”,懂得多但是不精,尤其是本科阶段,建议只作为研究生专业,像MBA一样的模式。和目前许多高校设置的“电子商务”专业一样,“电子商务”也有同样的定位不清问题,只要高校设置的物联网专业能够培养出社会需要的专业人才,尤其是跨专业复合型人才,就应该可以设置,不必拘泥于它究竟属于哪个现有的“学科”。 下表列出了一个高校物联网专业课程设置的初步建议,算是抛砖引玉。
课程1、 物联网产业与技术导论 使用电子工业出版社《物联网:技术、应用、标准和商业模式》等等教材。 在学完高等数学,物理,化学,通信原理,数字电路,计算机原理,程序设计原理等课程后开设本课程,全面了解物联网之RFID、M2M、传感网、两化融合等技术与应用。
课程2、C语言程序设计 使用清华大学出版社《C语言程序设计》等教材。 物联网涉及底层编程,C语言为必修课,同时需要了解OSGi,OPC,Silverlight等技术标准。
课程3、Java程序设计 ,使用 机械工业出版社《Java语言程序设计教程》等教材。 物联网应用层,服务器端集成技术,开放Java技术也是必修课,同时需要了解Eclipse,SWT, Flash, HTML5,SaaS等技术。
课程4、无线传感网络概论,使用 无线龙通讯科技出版社《现代无线传感器网络概论》、北京航空航天大学出版社《短距离无线通讯入门与实战》等教材。 学习各种无线RF通讯技术与标准,Zigbee, 蓝牙,WiFi,GPRS,CDMA,3G, 4G, 5G等等 。
课程5、 TCP/IP网络与协议 ,《TCP/IP网络与协议》,清华大学出版社,等教材。 TCP/IP以及OSI网络分层协议标准是所有有线和无线网络协议的基础,Socket编程技术也是基础技能,为必修课。
课程6、嵌入式系统技, 《嵌入式系统技术教程》,人民邮电出版社等教材。 嵌入式系统(包括TinyOS等IoT系统),是物联网感知层和通讯层重要技术, 为必修课。
课程7、传感器技术概论, 《传感器技术》,中国计量出版社,等教材。 物联网专业学生需要对传感器技术与发展,尤其是在应用中如何选用有所了解,但不一定需要了解传感器的设计与生产,对相关的材料科学,生物技术等有深入了解。
课程8、RFID技术概论,《射频识别(RFID)技术原理与应用》,机械工业出版社,等教材。 RFID作为物联网主要技术之一,需要了解,它本身(与智能卡技术融合)可以是一个细分专业或行业,也可以是研究生专业选题方向。
课程9、工业信息化及现场总线技术,《现场总线技术及应用教程》,机械工业出版社,等教材。 工业信息化也是物联网主要应用领域,需要了解,它本身也可以是一个细分专业或行业,也可作为研究生专业选题方向。
课程10、M2M技术概论 , 《M2M: The Wireless Revolution》,TSTC Publishing,等教材。 本书是美国“Texas State Techinical College”推出的M2M专业教材,在美国首次提出了M2M专业教学大纲,M2M也是物联网主要领域,需要了解,建议直接用英文授课。
课程11、物联网软件、标准、与中间件技术 ,《中间件技术原理与应用》,清华大学出版社,《物联网:技术、应用、标准和商业模式》,电子工业出版社,等教材。 物联网产业发展的关键在于应用,软件是灵魂,中间件是产业化的基石,需要学习和了解,尤其是对毕业后有志于物联网技术发展的学生

『肆』 嵌入式系统和物联网方向该学些什么

嵌入式系统和物联网方向,该学些什么?就是学一些计算机相关的

想报考物联网应用技术专业的同学都很想知道,这个专业是文科还是理科。物联网应用技术专业属于专科专业,属于电子信息类,一般各高校该专业招理科生。

1 物联网应用技术专业是文是理?

理论上讲,物联网应用技术专业是 理科专业 。然而,也不排除部分专科院校开设此 文科专业 ,因为有些专业一般情况下是只招文科或者理科,但是不排除特殊情况存在,或许某一年某所学校就比较反常,文科专业招理科生,亦或是 理科专业 招文科生。

具体物联网应用技术专业招文科生还是理科生,考生及家长要以当年个大学 招生计划 为准,最好是以 志愿填报 时获得的一手材料为依据,这样最准确无误。

1 物联网应用技术专业相近专业

1 物联网应用技术专业介绍

本专业培养掌握物联网信息技术的基本理论知识和基本技能,经过相关课程的技能训练,能在物联网各相关领域中从事物联网工程建设、管理和应用的技能应用型的专业人员。毕业生能够具备从事物联网产品生产制造、技术应用、系统集成、系统维护与管理的技能工作。

主要课程:c语言程序设计、单片机及接口技术、嵌入式系统原理、EDA技术、物联网通信技术、TCP/IP网络协议、信息安全技术、Linux基础、RFID技术与应用、无线传感器网络、检测技术、物联网控制原理及技术等。

就业方向:能在物流、农业精细生产、环境保护、公共安全、智能家居、工业控制、工业监测等物联网相关领域企业从事物联网应用系统集成技术员、物联网软件应用系统程序员,可在相关城市管理、智能交通、环境监测、电信等企事业单位从事信息管理、电子通信终端仪器设备维护、物联网终端设备 *** 作技术员、物联网构建技术员、物联网应用系统管理员,还可在制造行业从事供、产、销、时间与信息等经营管理工作。

详细点???你问什么问题??
淮安信息职业技术学院
综合毕业实践说明书(论文)
2009-2010 学年
系 专业
摘要:数字电子时钟电路设计系统,以AT89C51单片机为控制核心,由键盘显示、定时闹铃、LED共阴极数码管和LED灯显示等功能模块组成。基于题目基本要求,本系统对时间显示和定时报警进行了重点设计。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,而且有一定的创新功能。
关键字:单片机 AT89C51 共阴极LED数码显示器
Abstract This digital electronic clock circuit design system ,based on chip microcomputer AT89C51,is composed by the following functional modules : keyboard displaying , timing alarmg common cathode LED digital tube,LED lights display,and so on
According to the basic requirements of the subject ,the system stresses on the realization of Time display and regularly report to the police
The design achieved all the required basic technical indexes Furthermore , adopting the idea of hardware-to-software, most of those functions are realized by softwares, which makes the electrocircuit more concise and the system more stable
Key words: chip microcomputer AT89C51
Common cathode LED digital display
目 录
一、 前言……………………………………………… … 1
二、 总体方案设计…………………………………………1
三、 系统硬件设计…………………………………………2
(1)输入部分……………………………………… …… 2
1 电源模块………………………………………………………………2
2 按键模块………………………………………………………………5
(2)输出部分……………………………………… ……3
1 显示模块………………………………………………………………3
2 闹铃模块………………………………………………………………4
3 LED灯显示模块………………………………………………………4
(3)电路相关参数…………………………………………4
1 LED数码显示器………………………………………………………4
2 集成器件CD4511………………………………………………………5
3 集成器件74LS138…………………………………………………… 5
四、 系统软件设计…………………………………………6
主程序流程图……………………………………………………………7
五、 系统调试………………………………………………9
1 系统功能………………………………………………………………9
2 时钟精度分析……………………………………………………… 9
六、 系统设计总结…………………………………………9
七、 参考文献…………………………………………… 10
附录……………………………………………………………11
1) 系统原理图……………………………………………11
2) 系统PCB图…………………………………………… 12
3) 源程序………………………………………………… 13

一、前言
本文通过对一个能实现按键开关可调整时、分、秒,且具有加密功能、定时报警的24小时制的时间系统的设计学习,详细介绍了51单片机应用中的定时中断原理、数码管显示原理、动态扫描显示原理等,进一步学习、应用单片机C语言系统的实现了各种功能。从而使自身明白使用单片机汇编语言和C语言之间的效率、整体性问题。系统由AT89C51、独立式按键、二极管、LED数码管、蜂鸣器等部分构成,能实现24小时制时、分、秒的时钟显示,能实现时钟简单的加密功能。同时也可进行时、分、秒的校准、定时报警和LED二极管流水灯显示。
本系统主要是和实际生活的数字钟结合起来,可用1功能键进行加密,进入时间校准等。可用3个带有不同按键分别对时钟的时、分、秒进行校准。每个按键伴有不同的声响以示区别。
文章后附有本次课程设计系统电路原理图及源程序,以供读者参考。

二、总体方案设计
本次设计根据实验要求设计数字时钟。可利用如下两种方案实现。
方案一:本方案采用美国DALLAS公司的专用时钟芯片DS1302。该芯片主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。其内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息,并通过程序控制扫描输出显示数据。利用定时器0与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
鉴于以上两种方案,虽然时钟芯片DS1302具有更多的优点,由于实验硬件的因素,现有的硬件缺少DS1302,为不影响实验进度,本设计采用方案二完成数字时钟的功能。
根据题目要求设计的总体框图,如图1 — 1所示:

图1 — 1单片机数字钟硬件系统的总体设计框图
三、系统硬件设计
(1)、输入部分:
1电源模块
方案一:采用干电池作为单片机数字钟的电源,由于调试时间较长,使用干电池需经常更换电池,不符合节约型社会的要求。并且需要有一个硬件将3节电池串联在一起以产生足够的电压,若如此,将造成携带不方便。
方案二:采用200W/5V直流稳压电源作为系统电源,不仅功率上可以满足系统需要,不需要更换电源,并且比较轻便,使用更加安全可靠。但稳压电源我们不能自备,若要调试系统,只能到实验室才能做。
方案三:采用普通的USB线连接微型计算机作为系统电源,虽然功率上可以满足稍大于系统需要,但同样不需要更换电源,并且比直流稳压电源更轻便,可随时使用、调试系统。
基于以上分析,由于本次设计系统都是软硬件想结合,所以要采用微机设备,有足够的USB接口供我们使用,所以我们决定采用方案三
2按键模块
键盘是人与单片机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间为20ms ( )
方案一:采用独立式键盘。独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。但当所需按键数量多,会占用过多的I/O口线。
方案二:采用矩阵键盘。因为单片机的I/O口有限, 显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口线。但必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。
基于以上分析,我们选用方案一,因为本次设计中仅用到4个按键。独立式按键键盘有利于PCB的作图。
(2)、输出部分:
1、 显示模块
显示模块是本次单片机课程设计最核心的部分。
方案一:采用LCD1602。LCD1602为工业字符型液晶,能够同时显示16x02即32个字符。其采用标准的16脚接口,该液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,所以可分容易的实现数字钟数码显示。
方案二:采用LED共阴极数码管。共阴数码管在应用时将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
基于以上分析,我们考虑到现实经济因素,所以选择了方案二。
对于6路共阴极数码管数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类:
方案一:静态显示驱动。就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的占用较小。但对于静态显示方式,所需的数据锁存装置很多,引线多而复杂,且可靠性也较低。
方案二:动态显示驱动。通过单片机对数码管位选通COM端电路的控制,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,也就是所谓的分时显示,故显示所需要的硬件电路可分时复用。动态显示方式,可以避免静态显示的问题。但设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既应保证驱动电路易实现,又要保证显示后的数据稳定,无闪烁。动态显示采用多路复用技术的动态扫描显示方式, 复用的程度不是无限增加的, 因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短, 发光的亮度等因素 我们通过实验发现, 当扫描刷新频率(发光二极管的停闪频率) 为50Hz, 发光二极管导通时间≥1m s 时, 显示亮度较好, 无闪烁感。
鉴于上述的方案分析, 我们采用方案二
2、闹铃模块
方案一:采用语音芯片ISD1110闹铃。ISD1110 具有多种采样率对应,多种录放时间,可以利用振荡电阻自已决定采样率。 *** 作简单,灵活。音质好,适应电压范围广。可先对录放音设备录入一段音乐或其他报时方式,当到设定时间时,单片机控制录放音设备放音。
方案二:采用蜂鸣器闹铃,当到设定时间时,单片机向蜂鸣器送出低电平,蜂鸣器响铃。采用蜂鸣器闹铃结构简单,只需要单路信号控制,发出的闹铃声音可以根据响和不响的不同的软件延时时间来控制,当然也能发出音乐声音。
基于两种方案分析,虽然语音芯片ISD1110具备更多优点,但鉴于经济因素,我们本次设计还是决定采用方案二。当然如果在大型比赛的话,还是偏向于采用方案一的。
3、LED灯显示模块
采用LED灯可以方便的用不同的流水方式或单个LED灯来判断系统的工作状态,实现不同的显示功能,是一种经济又实用的方式。
(3)电路相关参数
1、LED数码显示器
通常用的七段数码显示器的内部有8个发光二极管,其中7个发光二极管组成了数字“8”,剩下一个发光二极管就是这位数字所带的小数点。数码管结构图如图1 - 2所示。各段码位与显示段的对应关系如表1。

图1 – 2 LED数码管结构引脚图
表1 各段码位的对应关系
段码位 D7 D6 D5 D4 D3 D2 D1 D0
显示段 dp g f e d c b a
2、集成器件CD4511
CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点如下:
具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。其引脚图如图1 — 3所示。

图 1 — 3 CD4511 引 脚 图
其功能介绍如下:
BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。
LT:3脚是测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮,显示“8”。它主要用来检测数码管是否损坏。
LE:锁定控制端,当LE=0时,允许译码输出。 LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
A1、A2、A3、A4、为8421BCD码输入端。
a、b、c、d、e、f、g:为译码输出端,输出为高电平1有效。
3、集成器件74LS138
74LS138 为3 线-8 线译码器,本设计中74LS138做为对数码管位选通COM端电路的控制,将需要显示的数码管的选通控制打开。
图1 — 3 74LS138引脚图
74LS138工作原理如下:当一个选通端(G1)为高电平,另两个选通端( 和 )为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
四、系统软件设计
1、主程序流程图如图1 — 4所示:
图1 — 4 主程序流程图
2、定时器0子程序流程图如图1 — 5所示:
图1 — 5 定时器0子程序流程图
五、系统调试
1、系统功能
本系统已符合设计课程基本要求,即可以实现24小时方式;可用六位LED数码管显示时、分、秒;可使用按键开关可实现时、分调整。
除了满足这些基本要求外,本系统还做了一些创新:
(1) 通过1功能按键KEY1开关可使系统具有加密功能。加密前后可通过观察LED二极管的显示方式来判断。当LED做流水灯显示方式时,为加密前的状态;当只有LED灯中的LED2(由P01口控制亮灭)时,代表已对系统进行加密。
(2) 通过功能按键开关KEY1进入可进入时间校准系统。KEY2控制秒的校准,KEY3控制分的校准,KEY4控制时的校准。每次一有校准按键按下时,系统会发出不同的声响,以提示用户目前正在校准的是时、分、秒的哪一种。校准完成后仍然是通过功能按键KEY1返回时钟显示。
(3) 通过更改主程序中定时器的定时初值,可实现不同样式的数字钟显示方式。通过实验测得以下参数如表2所示(程序中定时参数CYCLE在以下简称C):
C (ms)
数码管显示方式 静态 闪烁 拉幕式
(1) 可实现整点闹鸣功能。整点到时,可短蜂鸣一次。
2、时钟精度分析
为进一步使本次的系统做得更完美,我使用了标准的秒表对自己设计的时间进行了精度测量。本次设计系统使用的晶振为12MHZ数码管显示
00:10:00时,用秒表测得相应的数据如表3所示:
表3:
序号 1 2 3 4 5
T(min) 10005781 10004787 10005040 10003096 9592587
序号 6 7 8 9 10
T(min) 10014335 10002003 9594556 10012026 10002597
序号 11 12 13 14 15
T(min) 9589750 10001181 10009604 10025060 9598985
序号 16 17 18 19 20
T(min) 10001081 10010545 10009560 10007854 10004355
通过计算可得数码管显示:00:10:00时,
秒表测得的数值平均值为:00:10:2343 。
以上数据表明了本次系统的精度基本符合实验课程精度要求。因为以上共有20组,测量时已去除了粗大误差。当然,如果将测量时间加长,所测得的精度将更精确。
六、系统设计总结
本次课程从基本方案的制定,再到硬件电路的选择,到制作电路完成,最后进行程序调试。在此期间我遇到很多困难,尤其是在做仿真时结果经常出不来。
经过仔细检查,仿真线路是没有错的,可结果就是不行。但当我将实物做出来后,进行了调试,实物上却可以出来成果。这说明了可能是仿真软件的。经过一次又一次品尝到了解决问题的喜悦,最终提前完成了要求的全部功能,并在空闲的时间里加入了一些创新的部分。在此次课程设计中我发现了自己知识的不足,通过一周的学习、实践,我学到了很多东西。
通过此次课程设计的教学实践,进一步学习、掌握单片机应用系统的有关知识,加深了解单片机的工作原理。初步掌握简单单片机应用系统的设计、制作、调试的方法。提高动手实践能力。通过这次对数字时钟的设计,让我系统的了解和学会应用单片机C语言来对所需实现的功能进行编程。
在调试时遇到了一些问题,比如,刚开始进行按键输入检测时,我们直接用万用表测量按键两端的电平,刚测时,万用表显示高电平,当有按键按下时,则万用表显示低电平,这说明了按键是正常的,但当直接用按键时,系统板则不能正常使用按键。后面重新焊接了按键,系统板则才能正常使用按键。还有,LED灯显示模块的上拉电阻,也是出现了同样的情况。原先焊接时发现了电阻的管脚比之前看到的同阻值电阻管脚细。后面经过万用表调试后,重新焊接了电阻,部里就解决了。
上述电子钟,无论在外观上还是功能上都实现了较为完善的设计。特别值得一提的是本系统的加密效果,可与现实生活中的数字钟相媲美,因为有了加密效果,可以使用户在购买时知道其产品是否是新的,还是二手货。但本系统在定时闹鸣时,声音不过响应,因为我为了让蜂鸣器闹鸣时系统时间不受到影响,而是继续走动,所以把闹鸣时间控制在定时器0 1s定时里面,所以定时时间到了时,响的时间不到1s,通过的电流过小,要解决此问题,可在蜂鸣器的放大电路中多加一级放大电路,使定时时间到了时,通过的电流足够大以驱动蜂鸣器。亦或通过软件设置蜂鸣,则可以正常实现蜂鸣器的功能。
七、参考文献:
[1]崔凤波《数字电子技术》大连理工大学出版社,20077
[2]戴仙金《51单片机及其C语言程序开发实例》清华大学出版社,200812
[3]谭浩强《C语言程序设计》清华大学出版社200711
[4]赵建领《51系列单片机开发宝典》 电子工业出版社,2007
[5]田立,马鸣鹤《51系列单片机开发实例》中国电力出版社,20098
[6]王昊天,李海涛,王志强等《PIC单片机原理与应用》机械工业出版社,20101
附录:
1、 系统原理图;
2、系统PCB图
3、源程序
/Copyright (c)
File name: ShuZiZhongc
Last modified Date: 2009-05-22
----------------------------------------------------------------- Created by: 翁连益
NO: 2006040235
Descriptions: 单片机数字钟
/
#include<reg51h>
#define uchar unsigned char
#define uint unsigned int
#define CYCLE 1000 /定时1ms时间 /
unsigned char i,j,k,ID; /ID 为case 的次数 K为LED灯控制。/
unsigned char temp;
unsigned char b,c;
uchar hour=0,min=0,sec=0; /定义秒时分初始值/
uchar a[6]; /定数码管显示缓冲/
uint t=0;
uint flag=0;
bit fla;
unsigned char count;
sbit KEY1=P3^0;
sbit KEY2=P3^1;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
sbit LED2=P1^0;
sbit BEEP=P0^7;
void Modifytime(); /时间调整模块/
void Adjust();
void scan(); /扫描数码模块/
void Time_BEEP();
void delay10ms(void) /软件10ms定时/
{ unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--); / 软件延时/
}
void dely250(void)
{ unsigned char i,j;
for(i=2;i>0;i--) / 软件延时/
for(j=248;j>0;j--);
}
void main()
{ TCON=0x01; /TIMER0工作在方式1/
TMOD=0x01;
TH0=(65536-CYCLE)/256; /设定T0每隔1000us(1ms)中断一次/ TL0=(65536-CYCLE)%256;
TR0=1;
IE=0x82;
Modifytime();
while(1)
{ if (flag==100)
{
{ temp=0xfe;
P1=temp;
delay10ms()
for(k=0;k<8;k++)
{ b=temp<<k;
c=temp>>(8-k);
P1=b|c;
delay10ms();
}
for(k=0;k<8;k++)
{ b=temp>>k;
c=temp<<(8-k);
P1=b|c;
delay10ms();
}}
}
if(flag==1000) /判断1秒钟到否/
{ sec++; /秒加一/
Modifytime();
flag=0;
while ((min==0)&(sec==0)) { if (flag==100)
{ { BEEP=0;
BEEP=1;
} }
if (flag==600) break;
}
}
while(KEY1== 0)
{ while(1)
{
if(KEY1==0)
{
delay10ms();
if(KEY1==0)
{ ID++;
if(ID==2)
{
ID=0;
}
while(KEY1==0);
}
}
switch(ID)
{ case 0: Adjust();
break;
case 1:
LED2=0;
if(flag==1000) /判断1秒钟到否/
{ sec++; /秒加一/
Modifytime();
flag=0; while ((min==0)&(sec==0))
{ if (flag==100)
{ { BEEP=0;
BEEP=1;
}
}
if (flag==600) break;
}} break;
}
}
}}
}
void Modifytime() /调整时间子程序/
{ uchar temp;
temp=sec; /uchar temp=sec;/
sec%=60;
min+=temp/60; /求余/
temp=min;
min%=60;
hour=(hour+temp/60)%24;
a[0]=(sec%10); /调整过的时间送到显示缓冲中/
a[1]=(sec/10); /对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。 /
a[2]=(min%10); /对于分计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。 /
a[3]=(min/10);
a[4]=(hour%10); /对于时计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。 /
a[5]=(hour/10);
}
void scan( ) /扫描6个数码管子程序/
{ static uchar x;
x++;
if(x>5) x=0; /6个数码管都扫描过了则重新开始/
P0=x|(a[x]<<3); /选中需要扫描的数码管并送数据/
}
void Timer0Int() interrupt 1 using 2 /中断定时 /
{ t++;
if(t==100) { flag=100;
}
else if(t==200)
{ flag=200;
}
else if(t==600)
{ flag=600;
}
else if (t==1000)
{ flag=1000;
t=0;
}
else
flag=0;
scan();
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
}
void Adjust()
{ while(1)
{ if(KEY2==0)
{ for(i=40;i>0;i--) /2482us5=2480=25ms 软件延时/
for(j=248;j>0;j--);
if(KEY2==0)
{
sec++;
for(count=200;count>0;count--)
{
BEEP=~BEEP;
dely250();
}
if(sec==60)
{ sec=0;
}
a[0]=(sec%10);
a[1]=(sec/10);
while(KEY2==0);
}
}
if(KEY3==0)
{ for(i=16;i>0;i--) / 软件延时/
for(j=248;j>0;j--);
if(KEY3==0)
{
min++;
for(count=200;count>0;count--)
{
BEEP=~ BEEP;
dely250();
}
for(count=200;count>0;count--)
{
BEEP =~ BEEP;
dely250();
dely250();
}
if(min==60)
{
min=0;
}
a[2]=(min%10);
a[3]=(min/10);
while(KEY3==0);
}
}
if(KEY4==0)
{ for(i=40;i>0;i--) / 软件延时/ for(j=248;j>0;j--);
if(KEY4==0)
{
hour++;
for(count=200;count>0;count--)
{
BEEP =~BEEP;
dely250();
dely250();
}
if(hour==24)
{
hour=0;
}
a[4]=(hour%10);
a[5]=(hour/10);
while(KEY4==0);
}
}
}
}

 自己在立创的Ada里面建立的那个原图原理图发给别人,这个的话,我是觉得如果你实在发不了的话,你就把它复制粘贴。

《手把手教你学做电路设计--基于立创EDA》是2019年9月北京航空航天大学出版社出版的图书,作者是孟瑞生、杨中兴、吴封博。

本书以“立创EDA”为平台,系统地介绍了电路设计的方法与技巧。全书共分为11章。

内容包括立创EDA介绍、原理图设计基础、PCB设计基础、原理图库及PCB封装库的制作、原理图的绘制、PCB的绘制、电路板的生产、TP4056锂电池充电器电路设计、096寸OLED电路设计实例、ESP8266物联网电路板设计实例、在电子竞赛与企业协同中的高级应用。

一、设计题目及要求
1.有十六只LED,L0……L15
2.显示方式
①先奇数灯依次灭
②再偶数灯依次灭
③再由L0到L15依次灭
3.显示间隔05S,1S可调。
二、设计过程及内容(包括1总体设计的文字描述,即由哪几个部分构成的,各个部分的功能及如何实现方法;2主要模块比较详尽的文字描述,并配以必要的加以说明,但数量无需太多)
1设计方案
从课程设计要求来看,要求实现彩灯的23种状态,所以,可以用一个23进制的计数器,从0到22来控制这23种状态。
再画出这23种状态和计数器数字对应的状态图,计算出逻辑式,便可实现彩灯的控制。由于变量过多,逻辑式的化简比较困难,所以我们使用了译码器来得到最小项,直接用最小项进行连接。
题目要求实现频率的选择,所以我使用了74161进行分频,从实验箱得到8Hz的脉冲信号,经分频得到2Hz和1Hz的信号,然后用数据选择器进行选择。
模块一,23进制计数器
使用2块74161扩展成为23进制计数器,采用并行进位方式、整体置数。因为计数器需要23种状态(00000-10110),所以,我先用两片74161连接成256(16×16)进制计数器,然后在输出为10110(22)时,用与非门来控制两计数器的LDN端清零。同时清零信号可作为进位信号输出。
具体连接如下:
仿真图如下:
每次计数器输出22时,CO端输出高电平。
模块二,5-32译码器
用两片74154(4-16译码器)扩展为5-32译码器。74154只有4个地址输入端A,B,C,D,如果对5为二进制代码译码,就要利用一个附加控制端来实现扩展。A,B,C,D分别对应连接两片74154的A,B,C,D输入端,另外一个输入端E,利用74154的G1N和G2N来实现选择两片之一。高位的O0N――O15N分别表示O16N――O31N。
具体连接如下图:
仿真图如下:
输入端分别输入0—31,可得到如下波形
模块三,分频器
用74161做23进制计数器进行分频分出8Hz,用数据选择器和一个数据选择器,控制时间间隔分别为05s,1s可调。用跳线选择实验箱上的CLK2的183Hz,用模块一的23进制计数器来实现23分频,可得到8Hz的时钟信号,在把得到的信号用74151再次分频,选择B,C端输出,即可得到2Hz和1Hz的时钟信号。具体连接如下图:
仿真图如下:
模块四,控制模块
由23进制计数器输入一个五位二进制数(00000-10110),输出彩灯所对应的状态(1表示灯亮,0表示灯灭)。对应的状态图如下:
由上表可得到各个输出对应输入端的逻辑表达式
L0=M0+M1+M2+M3+M4+M5+M6+M12
L1=M0+M6+M7+M8+M9+M10+M11+M12+M13
L2= M0+M1+M2+M3+M4+M5+M6+M7+M12+M13+M14
L3= M0+M1+ M6+M7+M8+M9+M10+M11+M12+M13+M14+M15
L4= M0+M1+M2+M3+M4+M5+M6+M7+M8+M12+M13+M14+M15+M16
L5= M0+M1+M2+ M6+M7+M8+M9+M10+M11+M12+M13+M14+M15+M16+M17
L6= M0+M1+M2+M3+M4+M5+M6+M7+M8+M9+M12+M13+M14+M15+M16+M17+M18=
然后进行连线。
具体连接如下:
仿真图如下:
其中cp为时钟信号,L0—L9表示10个彩灯
模块五,总控制模块
把频率控制模块(模块三)和彩灯控制模块(模块四)连接起来,就组成了频率可调的彩灯控制器,输入端control可控制输入频率(0为2赫兹,1为1赫兹)。
仿真波形如下:
图中显示了控制信号分别为0和1时的波形
三、设计结论(包括设计过程中出现的问题;对EDA课程设计感想、意见和建议)
1. 硬件实验情况
软件设计是非常重要的,但是还是纸上谈兵啊,真正要到了 安装调试的时候,这又是一个另一个比设计还头痛的事,
在确定了我的演示波形正确之后,按照书上的程序下载 *** 作流程,成功的将我的设计内容下载到EPF10K10LC84-3的芯片中,然后根据引脚,逐个连接,在连线的过程中,我尤其注意了时钟信号的连接,最终得到了令人相当满意的彩灯闪烁效果。
2. 改进方法
刚刚开始设计时,计数器的我都采用了CLRN端清零,但在使用中发现这样进位的脉冲过短,影响实验结果。于是全部改为LDN端清零。

课程设计内容与要求
1,用开关按键表示脉冲,每个脉冲代表100米,10个脉冲1公里,每公里14元,能同步显示里程和费用;
2,低于2公里5元计费,高于2公里总费用=起步费用+(里程-2公里)里程单价+
等候时间等后单价;
3,等候时间大于2分钟,按每分钟13元计费;
4,可以设定起步价和里程单价。
一、设计原理与技术方法:
包括:电路工作原理分析与原理图、元器件选择与参数计算、电路调试方法与结果说明;
软件设计说明书与流程图、软件源程序代码、软件调试方法与运行结果说明。
根据设计要求,系统的输入信号clk,计价开始信号start,等待信号stop,里程脉冲信号fin。系统的输出信号有:总费用数C0—c3,行驶距离k0—k1,等待时间m0—m1等。系统有两个脉冲输入信号clk_750k,fin,其中clk_750k将根据设计要求分频成14hz,15hz和1hz分别作为公里计费和超时计费的脉冲。两个控制输入开关start,stop;控制过程为:start作为计费开始的开关,当start为高电平时,系统开始根据输入的情况计费。当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,
并去除fin输入脉冲,进行等待计费;当乘客下车且不等待时,直接将start置为0,系统停止工作;价格开始归为起步价50元。
整个设计由分频模块,计量模块,计费模块,控制模块和显示模块五个部分组成。
其中计量模块是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分,根据所设计的使能端选择是根据里程计费还是根据等待时间计费,同时设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。计量模块采用1hz的驱动信号,计费模块采用14hz,13hz的驱动信号;计量模块每计数一次,计量模块就实现14次或者13次计数,即为实现计时的13元/min,计程时的14元/km的收费。组成框图如下所示:
1百进制模块:
实现百米脉冲的驱动信号,元件框图如图3所示:
图3 百进制模块框图
源程序如下:
library ieee;
use ieeestd_logic_1164all;
use ieeestd_logic_unsignedall;
entity baijinzhi is
port(start,clk2: in std_logic; --秒脉冲
a: out std_logic_vector(3 downto 0));
end baijinzhi;
architecture rt1 of baijinzhi is
signal count_1:std_logic_vector(3 downto 0);
begin
a<=count_1;
process(start,clk2)
begin
if(start='0')then
count_1<="0000";
elsif(clk2'event and clk2='1')then
if(count_1="0111")then
count_1<="0000";
else
count_1<=count_1+'1';
end if;
end if;
end process;
end rt1
2计费模块
; 实现里程和等候时间的计费并输出到显示,元件框图4如下:
图4 计费模块框图
源程序如下:
Library IEEE;
use IEEEstd_logic_1164all;
use IEEEstd_logic_arithall;
use IEEEstd_logic_unsignedall;
entity jifei is
port(clk2:in std_logic; --计费驱动信号
start:in std_logic; --计费开始信号
c0,c1,c2,c3:buffer std_logic_vector(3 downto 0));
end jifei;
architecture rt1 of jifei is
begin
process(clk2,start)
begin
if start='0'then c3<="0000";c2<="0000";c1<="0101";c0<="0000"; --起步价5元
elsif clk2'event and clk2='1'then
if c0="1001" then c0<="0000";
if c1="1001" then c1<="0000";
if c2="1001" then c2<="0000";
if c3="1001" then c3<="0000";
else c3<=c3+1;
end if;
else c2<=c2+1;
end if;
else c1<=c1+1;
end if;
else c0<=c0+1;
end if;
end if;
end process;
end rt1;
3公里模块
实现历程的计数和输出计费脉冲,元件框图5如下:
图5 公里模块框图
源程序如下:
library ieee;
use ieeestd_logic_1164all;
use ieeestd_logic_unsignedall;
entity gongli is
port(clk1,start: in std_logic; --百米脉冲
k1,k2,k3,k4: out std_logic_vector(3 downto 0); --里程显示
temp2 : out std_logic);
end gongli;

architecture rt1 of gongli is
signal count_1: std_logic_vector(3 downto 0);
signal count_2: std_logic_vector(3 downto 0);
signal count_3: std_logic_vector(3 downto 0);
signal count_4: std_logic_vector(3 downto 0);
begin
k1<=count_1;
k2<=count_2;
k3<=count_3;
k4<=count_4;
process(start,clk1)
begin
if(start='0')then
count_1<="0000";
count_2<="0000";
count_3<="0000";
count_4<="0000"; ---公里清零
elsif(clk1'event and clk1='1')then
if(count_1="1001")then --公里计数器
count_1<="0000";count_2<=count_2+1;temp2<='1';
if(count_2="1001")then
count_2<="0000";count_3<=count_3+'1';
if(count_3="1001")then
count_3<="0000";count_4<=count_4+'1';
end if;
end if;
else
count_1<=count_1+'1';temp2<='0';
end if;
end if;
end process;
end rt1;
4输出模块
实现所有数据的输出,元件框图6如下:
图6 输出模块框图
源程序如下:
library ieee;
use ieeestd_logic_1164all;
use ieeestd_logic_unsignedall;
entity shuchu is
port(y: in std_logic_vector(3 downto 0);
e: out std_logic_vector(6 downto 0));
end shuchu;

architecture rt1of shuchu is
begin
process
begin
case y is
when"0000"=>e<="0111111";
when"0001"=>e<="0000110";
when"0010"=>e<="1011011";
when"0011"=>e<="1001111";
when"0100"=>e<="1100110";
when"0101"=>e<="1101101";
when"0110"=>e<="1111101";
when"0111"=>e<="0000111";
when"1000"=>e<="1111111";
when"1001"=>e<="1100111";
when others=>e<="0000000";
end case;
end process;
end rt1;
5显示模块
实现所有数据的显示,元件框图7如下:
图7 显示模块框图
源程序如下:
library ieee;
use ieeestd_logic_1164all;
use ieeestd_logic_unsignedall;
entity xianshi is
port(start: in std_logic;
a:in std_logic_vector(3 downto 0); --选择信号
c1,c2,c3,c4,out1,out2,out3,out4:in std_logic_vector(3 downto 0); --里程显示,时间显示输入
y:out std_logic_vector(3 downto 0)); --里程显示,时间显示输出
end xianshi;
architecture rt1 of xianshi is
begin
process
begin
if(start='0')then
y<="0000";
else case a is
when "0000"=> y<=c1 ;
when "0001"=> y<=c2 ;
when "0010"=> y<=c3 ;
when "0011"=> y<=c4 ;
when "0100"=> y<=out1 ;
when "0101"=> y<=out2;
when "0110"=> y<=out3 ;
when "0111"=> y<=out4;
when others =>y<= "0000";
end case;
end if;
end process;
end rt1;
6dian模块
图8 dian模块框图
源程序如下:
library ieee;
use ieeestd_logic_1164all;
use ieeestd_logic_unsignedall;
entity dian is
port(a: in std_logic_vector(3 downto 0);
e: out std_logic);
end dian;
architecture rt1 of dian is
begin
process
begin
case a is
when "0001"=>e<='1';
when "0101"=>e<='1';
when others=>e<='0';
end case;
end process;
end rt1;
三、中各个模块设计分析
系统总体顶层框图如下:
系统总体顶层框图
程序最终功能实现波形仿真
1 分频模块
由于实验箱上没有14hz和13hz的整数倍时钟信号,因此采用频率较大的750khz进行分频,以近似得到14hz,13hz和1hz的时钟频率。通过以上三种不同频率的脉冲信号实行出租车行驶,等待两种情况下的不同计费。模块元件如下:

分频模块框图
源程序如下:
Library IEEE;
use IEEEstd_logic_1164all;
use IEEEstd_logic_arithall;
use IEEEstd_logic_unsignedall;
entity fenpin is
port(clk_750k:in std_logic; --系统时钟
clk_14:buffer std_logic; --14分频
clk_13:buffer std_logic; --13分频
clk_1 : buffer std_logic); --1分频
end fenpin ;
architecture rt1 of fenpin is
signal q_14:integer range 0 to 53570; --定义中间信号量
signal q_13:integer range 0 to 57691;
signal q_1:integer range 0 to 749999;
begin
process(clk_750k)
begin
If(clk_750k' event and clk_750k='1')then
If q_14=53570 then q_14<=0;clk_14<=not clk_14;
else q_14<=q_14+1;
end if; --得14hz频率信号
If q_13=57691 then q_13<=0;clk_13<=not clk_13;
else q_13<=q_13+1;
end if; --得13hz频率信号
If q_1=749999 then q_1<=0;clk_1<=not clk_1;
else q_1<=q_1+1;
end if; --得1hz频率信号
end if;
end process;
end rt1;
2 计量模块
计量模块主要完成计时和计程功能。
计时部分:计算乘客的等待累积时间,当等待时间大于2min时,本模块中en1使能信号变为1;当clk1每来一个上升沿,计时器就自增1,计时器的量程为59min,满量程后自动归零。
计程部分:计算乘客所行驶的公里数,当行驶里程大于2km时,本模块中en0使能信号变为1;当clk每来一个上升沿,计程器就自增1,计程器的量程为99km,满量程后自动归零。
元件框图为:
计量模块框图
计量模块仿真波形为:
源程序如下:
library ieee;
use ieeestd_logic_1164all;
use ieeestd_logic_arithall;
use ieeestd_logic_unsignedall;
entity jiliang is
port(start:in std_logic; --计费开始信号
fin:in std_logic; --里程脉冲信号
stop:in std_logic; --行驶中途等待信号
clk1:in std_logic; --驱动脉冲
en1,en0:buffer std_logic; --计费单价使能信号
k1,k0:buffer std_logic_vector(3 downto 0); --行驶公里计数
m1,m0:buffer std_logic_vector(3 downto 0)); --等待时间计数
end jiliang;
architecture rt2 of jiliang is
signal w:integer range 0 to 59; --计时范围0~59
begin
process(clk1)
begin
if(clk1'event and clk1='1')then
if start='0' then
w<=0;en1<='0';en0<='0';m1<="0000";
m0<="0000";k1<="0000";k0<="0000";
elsif stop='1' then --计时开始信号
if w=59 then
w<=0;
else w<=w+1;
end if;
if m0="1001" then
m0<="0000";
if m1="0101" then
m1<="0000";
else m1<=m1+1;
end if;
else m0<=m0+1;
end if;
if stop='1' then en0<='0';
if m1&m0>"00000001" then en1<='1'; --若等待时间大于2min则en1置1
else en1<='0';
end if;
end if;
elsif fin='1' then --里程计数开始
if k0="1001" then k0<="0000";
if k1="1001" then k1<="0000"; --计程范围0~99
else k1<=k1+1;
end if;
else k0<=k0+1;
end if;
if stop='0' then
en1<='0';
if k1&k0>"00000001" then
en0<='1'; --若行使里程大于2km,则en0置1
else en0<='0';
end if;
end if;
end if;
end if;
end process;
end rt2;
3 控制模块
本模块主要是通过计量模块产生的两个不同的输入使能信号en0,en1,对每个分频模块输出的14hz,13hz的脉冲进行选择输出的过程;本模块实现了双脉冲的二选一;最终目的为了计费模块中对行驶过程中不同的时段进行计价。
模块元件如下:
控制模块框图
控制模块仿真波形为:

源程序如下:
Library IEEE;
use IEEEstd_logic_1164all;
use IEEEstd_logic_arithall;
use IEEEstd_logic_unsignedall;
entity kongzhi is
port(en0,en1:in std_logic; --使能选择信号
clk_in1:in std_logic; --14分频输入信号
clk_in2:in std_logic; --13分频输入信号
clk_out:out std_logic); --输出信号
end kongzhi;
architecture rt3 of kongzhi is
begin
process(en0,en1)
begin
if en0='1' then --实现二选一功能
clk_out<=clk_in1;
elsif en1='1' then
clk_out<=clk_in2;
end if;
end process;
end rt3;
4计费模块
当计费信号start一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同的单价时段进行计费。即行程在2km内,而且等待累计时间小于2min则为起步价5元;2km外以每公里14元计费,等待累积时间超过2min则按每分钟13元计费。c0,c1,c2,c3分别表示费用的显示。
模块元件为:
计费模块框图
计费模块仿真波形为:
源程序如下:
Library IEEE;
use IEEEstd_logic_1164all;
use IEEEstd_logic_arithall;
use IEEEstd_logic_unsignedall;
entity jifei is
port(clk2:in std_logic; --计费驱动信号
start:in std_logic; --计费开始信号
c0,c1,c2,c3:buffer std_logic_vector(3 downto 0));
end jifei;
architecture rt4 of jifei is
begin
process(clk2,start)
begin
if start='0'then c3<="0000";c2<="0000";c1<="0101";c0<="0000"; --起步价5元
elsif clk2'event and clk2='1'then
if c0="1001" then c0<="0000";
if c1="1001" then c1<="0000";
if c2="1001" then c2<="0000";
if c3="1001" then c3<="0000"; --计价范围0~9999
else c3<=c3+1;
end if;
else c2<=c2+1;
end if;
else c1<=c1+1;
end if;
else c0<=c0+1;
end if;
end if;
end process;
end rt4;
5显示模块
显示模块完成计价,计时和计程数据显示。计费数据送入显示模块进行译码,最后送至以百元,十元,元,角为单位对应的数码管上显示。计时数据送入显示模块进行译码,最后送至以分为单位对应的数码管上显示。计程数据送入显示模块进行译码,最后送至以km为单位的数码管上显示。
模块元件为:

显示模块框图
源程序如下:
library ieee;
use ieeestd_logic_1164all;
use ieeestd_logic_unsignedall; --定义库包

entity xianshi is --定义实体
port(
clk_scan:in std_logic; --扫描时钟信号端口设置
c3,c2,c1,c0:in std_logic_vector(3 downto 0); --总费用输入端口
k0,k1:in std_logic_vector(3 downto 0); --里程输入端口
m0,m1:in std_logic_vector(3 downto 0); --等待时间输入端口
sel:out std_logic_vector(2 downto 0); --控制数码管位选信号的扫描信号输出端口
led:out std_logic_vector(6 downto 0); --数码管的控制端口
led_dp:out std_logic --数码管的小数点输出端口
);
end xianshi;
architecture rt5 of xianshi is
signal duan:std_logic_vector(6 downto 0); --数码显示管中间变量
signal shuju:std_logic_vector(3 downto 0); --选择输入端的中间变量
signal cnt:std_logic_vector(2 downto 0); --控制数码管的中间变量
signal xiaodian:std_logic; --小数点的中间变量
begin
process(clk_scan) --开始进程
begin
if clk_scan'event and clk_scan='1' then
cnt<=cnt+1; --每有一个扫描信号上升沿实现加1扫描
end if;
end process; --结束进程

process(cnt) --开始进程(选择扫描显示数码管)
begin
case cnt is --扫描时给每个数码管赋值
when "000"=>shuju<=c0;
when "001"=>shuju<=c1;
when "010"=>shuju<=c2;
when "011"=>shuju<=c3;
when "100"=>shuju<=k0;
when "101"=>shuju<=k1;
when "110"=>shuju<=m0;
when "111"=>shuju<=m1;
when others=> null;
end case;
if (cnt="001" or cnt="110")
then xiaodian<='1'; --在里程和总费用的个位处显示小数点
else xiaodian<='0';
end if;
end process; --结束进程

process(shuju) --开始进程(译码显示)
begin
case shuju is
when "0000"=>duan<="0111111"; --0
when "0001"=>duan<="0000110"; --1
when "0010"=>duan<="1011011"; --2
when "0011"=>duan<="1001111"; --3
when "0100"=>duan<="1100110"; --4
when "0101"=>duan<="1101101"; --5
when "0110"=>duan<="1111101"; --6
when "0111"=>duan<="0000111"; --7
when "1000"=>duan<="1111111"; --8
when "1001"=>duan<="1101111"; --9
when others=>null;
end case;
end process;
sel<=cnt;
led<=duan;
led_dp<=xiaodian;
end rt5;
二、课程设计工作记录:
包括:设计步骤与时间安排、调试步骤与时间安排、课题完成结果说明
2课题完成结果说明:
此计费器能实现起步价是5元;实现实验要求的1公里计费一次单价,行驶公里大于2km时每公里按14元计费并能显示里程和总共的费用。当行驶了6公里,等待了4分钟时,费用显示为158元。与计算公式总费用=起步费用+(里程-2公里)里程单价+等候时间等后单价;即158=5+(6-2)14+413。实验结果与理论结果完全一致,实验设计成功。

『数字电路』课程设计指导书
一、 教学目标
(一)课程性质
课程设计。
(二)课程目的
训练学生综合运用学过的数字电路的基本知识,独立设计比较复杂的数字电路的能力。
二、教学内容基本要求及学时分配
(一) 课程设计题目
题目见附录I,原则上每人一题。
(二) 设计内容
拿到题目后首先进行电路设计。然后在微机上进行原理图输入、编译和软件仿真,如满足设计要求,再进行下载和硬件实验。如硬件实验结果不满足要求,则修改设计,直到满足要求为止。
(三) 设计要求
(1) 按题目要求的逻辑功能进行设计,电路各个组成部分须有设计说明;
(2) 必须采用原理图输入法;
(3) 软件仿真完成后,必须经教师允许方可进行下载;
(四) 使用的硬件和软件
硬件为可编程逻辑器件EPM7128S;软件为MAX+PLUSII。见附录。
三、主要教学环节
(一)设计安排
1 课程设计时间为两周,每人一台微机;
2 第1、2天讲授设计需要的硬件和软件、设计的要求、布置设计题目;
3 第3~8天学生进行设计;
4 第9、10天教师验收,然后学生撰写和打印设计报告。
(二)指导与答疑
每天都有教师现场答疑,学生有疑难问题可找教师答疑。学时应充分发挥主观能动性,不应过分依赖教师。
(三)设计的考评
设计全部完成后,须经教师验收。验收时学生要讲述自己设计电路的原理、仿真情况,还要演示硬件实验结果。
教师根据学生设计全过程的表现和验收情况给出成绩。
四、课程设计报告的内容和要求
(一)课程设计报告的内容
按附录中给出 的报告模板进行编写,用A4纸打印,左侧装订。
(二)课程设计报告编写的基本要求
(1)按设计指导书中要求的格式书写,所有的内容一律打印;
(2)报告内容包括设计过程、软件仿真的结果及分析、硬件仿真结果及分析;
(3)要有整体电路原理图、各模块原理图;
(4) 软件仿真包括各个模块的仿真和整体电路的仿真,对仿真必须要有必要的说明;
(5) 硬件仿真要给出各个输入信号的具体波形和输出信号的测试结果。
附录I EDA课程设计参考题目
注:在以下设计中只可以用一个参考时钟
一、数码管显示控制器
要求:
1.能自动一次显示出数字 0、1、2、3、4、5、6、7、8、9(自然数列),1、3、5、7、9(奇数列), 0、2、4、6、8(偶数列),0、1、2、3、4、5、6、7、0、1(音乐符号序列);然后再从头循环;
2.打开电源自动复位,从自然数列开始显示。

二、乒乓球游戏机
要求:
1.用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍;
2.一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,在其他时候击球视为犯规,给对方加1分;都犯规,各自加1分;
3.甲、乙各有一数码管计分;
4.裁判有一个按钮,是系统初始化,每次得分后, 按下一次。
三、智力竞赛抢答器
要求:
1.五人参赛每人一个按钮,主持人一个按钮, 按下就开始;
2.每人一个发光二极管,抢中者灯亮;
3.有人抢答时,喇叭响两秒钟;
4.答题时限为10秒钟,从有人抢答开始,用数码管倒计时间,0、9、8…1、0;倒计时到0的时候,喇叭发出两秒声响。
四、数字钟
要求:
1.输入10HZ的时钟;(提示:对已有kHz频率时钟进行分频)
2.能显示时、分、秒,24小时制;
4.时和分有校正功能;
5.整点报时,喇叭响两秒;
6.可设定夜间某个时段不报时;
注意:硬件资源的节约,否则器件内资源会枯竭。
五、交通灯控制器
要求:
1.东西方向为主干道,南北方向为副干道;
2.主干道通行40秒后,若副干道无车,仍主干道通行,否则转换;
4.换向时要有4秒的黄灯期;
5.南北通行时间为20秒,到时间则转换,若未到时,但是南北方向已经无车,也要转换。
6.附加:用数码管显示计时。
六、双钮电子锁
要求:
1. 有两个按钮A和B,开锁密码可自设,如(3、5、7、9);
2. 若按B钮,则门铃响;(滴、嗒…);
3. 开锁过程:按3下A,按一下B,则3579中的“3”即被输入;接着按5下A,按一下B,则输入“5”;依此类推,直到输入完“9”,按B,则锁被打开——用发光管KS表示;
4. 报警:在输入3、5、6、9过程后,如果输入与密码不同,则报警;用发光管BJ表示,同时发出“嘟、嘟……的报警声音;
5. 用一个开关表示关门(即闭锁)。
七、彩灯控制器二
要求:
1.有十只LED,L0……L9
2.显示方式
①先奇数灯依次灭
②再偶数灯依次灭
③再由L0到L9依次灭
3.显示间隔05S,1S可调。
八、速度表
要求:
1.显示汽车Km/h数;
2.车轮每转一圈,有一传感脉冲;每个脉冲代表1m的距离;
3.采样周期设为10S;
4.要求显示到小数点后边两位;
5.用数码管显示;
6,最高时速小于300Km/h。
九、彩灯控制器一
要求:
1.有八只LED,L0……L7
2.显示顺序如下表
3.显示间隔为025S,05S,1S,2S可调。
序号 L0 L1 L2 L3 L4 L5 L6 L7
0 1 1 1 1 1 1 1 0
1 0 1 1 1 1 1 1 1
2 1 0 1 1 1 1 1 1
3 1 1 0 1 1 1 1 1
4 1 1 1 0 1 1 1 1
5 1 1 1 1 0 1 1 1
6 1 1 1 1 1 0 1 1
7 1 1 1 1 1 1 0 1
8 1 1 1 1 1 1 1 0
9 1 1 1 1 1 1 1 1
10 0 1 1 1 1 1 1 1
11 0 0 1 1 1 1 1 1
12 0 0 0 1 1 1 1 1
13 0 0 0 0 1 1 1 1
14 0 0 0 0 0 1 1 1
15 0 0 0 0 0 0 1 1
16 0 0 0 0 0 0 0 1
17 0 0 0 0 0 0 0 0
18 1 0 0 0 0 0 0 0
19 1 1 0 0 0 0 0 0
20 1 1 1 0 0 0 0 0
21 1 1 1 1 0 0 0 0
22 1 1 1 1 1 0 0 0
23 1 1 1 1 1 1 0 0
24 1 1 1 1 1 1 1 0
25 1 0 0 0 0 0 0 0
26 0 1 0 0 0 0 0 0
27 0 0 1 0 0 0 0 0
28 0 0 0 1 0 0 0 0
29 0 0 0 0 1 0 0 0
30 0 0 0 0 0 1 0 0
31 0 0 0 0 0 0 1 0
32 0 0 0 0 0 0 0 1
十、出租车计价器
要求:
1.5 Km起计价,起始价5元,每公里12元;
2.传感器输出脉冲为05m/个;
3.每05km改变一次显示,且提前显示(只显示钱数)。
十一、八音电子琴
要求:
1.能发出1、2、3、4、5、6、7、1八个音;
2.用按键作为键盘;
3.C调到B调对应频率为。
调 频率(HZ)

261632
B 49388
A 44000
G 39200
F 34923
E 32963
D 29366
C 26163
十二、自动奏乐器一
要求:
1.开机能自动奏一个乐曲,可以反复演奏;
2.速度可变。
1 1 5 5 6 6 5 –
4 4 3 3 2 2 1 –
5 5 4 4 3 3 2 –
5 5 4 4 3 3 2 –
3.附加:显示乐谱。
十三、自动奏乐器二
要求:
1.开机能自动奏一个乐曲,可以反复演奏;
2.速度可变。
1 3 1 3 5 6 5 – 6 6 6 5 – – –
6 6 6 5 5 3 1 2 2 3 2 1 – – –
3.附加:显示乐谱。
十四、自动打铃器
要求:
1.有数字钟功能;(不包括校时等功能)
2.可设置六个时间,定时打铃;
3.响铃5秒钟。
十五、 数字频率计
要求:
1.输入为矩形脉冲,频率范围0~99MHz;
2.用五位数码管显示;只显示最后的结果,不要将计数过程显示出来;
3.单位为Hz和KHz两档,自动切换。
十六、算术运算单元ALU的设计
要求:
1.进行两个四位二进制数的运算。
2.算术运算:A+B,A-B,A+1,A-1
3.逻辑运算:A and B,A or B,A not, A xor B
注意:从整体考虑设计方案,优化资源的利用
十七、游戏机,有三位数码管显示0—7之间的数码,按下按钮,三个数码管循环显示,抬起按钮,显示停止,当显示内容相同时,为赢
要求:
1.三个数码管循环显示的速度不同
2.停止时的延迟时间也要不同
3.如果赢了游戏时,要有数码管或LED的花样显示或声音提示。
十八、路数显报警器
要求:
1.设计16路数显报警器,16路中某一路断开时(可用高低电平表示断开和接通),用十进制数显示该路编号,并发出声音信号;
2.报警时间持续10秒钟;
3.当多路报警时,要有优先级,并将低优先级的报警存储,处理完高优先级报警后,再处理之(附加)。
十九、脉冲按键电话按键显示器
要求:
1.设计一个具有八位显示的电话按键显示器;
2.能准确反映按键数字;
3.显示器显示从低位向高位前移,逐位显示,最低位为当前输入位;
4.重按键时,能首先清除显示;
5.摘下话机后才能拨号有效,挂机后熄灭显示。
二十、病房呼叫系统
要求:
1.用1~5个开关模拟5个病房的呼叫输入信号,1号优先级最高;1~5优先级依次降低;
2.用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;又多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);
3.凡有呼叫发出5秒的呼叫声;
4.对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理(附加)。
二十一、自动电子钟
要求:
1.用24小时制进行时间显示;
2.能够显示小时、分钟;
3.每秒钟要有秒闪烁指示;
4.上电后从“00:00”开始显示。
二十二、具有数字显示的洗衣机时控电路
要求:
1.洗衣机工作时间可在1~15分钟内任意设定(整分钟数);
2.规定电动机运行规律为正转20s、停10s、反转20s、停10s、再正转20s,以后反复运行;
3.要求能显示洗衣机剩余工作时间,每当电机运行一分钟,显示计数器自动减1,直到显示器为“0”时,电机停止运转;
4.电机正转和反转要有指示灯指示。
二十三、篮球比赛数字计分牌
要求:
1.分别记录两队得分情况;
2.进球得分加2分,罚球进球得分加1分;
3.纠正错判得分减2分或1分;
4.分别用三个数码管显示器记录两队的得分情况。
二十四、电子日历
要求:
1.能显示年、月、日,星期;
2.例如:“011108 6”,星期日显示“8”;
3.年月日,星期可调;
4.不考虑闰年。
二十五、用电器电源自动控制电路
要求:
1.控制电路能使用电器的电源自动开启30s,然后自动关闭30s,如此周而复始的工作,要有工作状态指示;
2.当电源接通时,可随时采用手动方式切断电源;当电源切断时,可随时采用手动方式接通电源;
3.若手动接通,可由定时信号断开,然后进入自动运行状态,反之亦然
4.定时范围0分~60分,要有分秒的倒计时显示。
二十六、设计模拟中央人民广播电台报时电路
要求:
1.当计时器运行到59分49秒开始报时,每鸣叫1s就停叫1s,共鸣叫6响;前5响为低音,频率为750Hz;最后1响为高音,频率为1KHz;
2.至少要有分秒显示。
二十七、数字跑表
要求:
1.具有暂停/启动功能;
2.具有重新开始功能;
3.用6个数码管分别显示百分秒、秒和分钟。
二十八、数字电压表
要求:
1.0-5V输入;
2.用3个数码管显示;有小数点的显示;显示小数后两位数,如001;只显示最后结果,不要显示中间结果。
提示:实验箱提供了8bits的DAC -AD558和比较器-LM358N。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13507127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存