数电课程设计 骨灰级进!!!在线等!!!
作者&投稿:赤响 (若有异议请与网页底部的电邮联系)
一般都是给你一个单片机,学校实验室里都有,然后在上面设计出一些功能,我列出一些你看看。
1、集成数字式闹钟
1.1设计任务与要求
(1) 时钟功能:具有24小时或12小时的计时方式,显示时、分、秒。
(2) 具有快速校准时、分、秒的功能。
(3) 能设定起闹时刻,响闹时间为1分钟,超过1分钟自动停;具有人工止闹功能;止闹后不再重新操作,将不再发生起闹。
(4) 计时准确度:每天计时误差不超过10秒。
(5) 供电方式:220V,50HZ交流供电,当交流中断时,自动接上内部备用电源供电,不影响计时功能。
2、直流可变稳压电源的设计
3、OTL互补对称功率放大器
4、PID调节器
5、有源滤波器
6、简易万用电表的制作
7、信号峰值检测仪
8、楼道触摸延时开关
9、自动水龙头的设计
10、简易交通灯控制逻辑电路设计
11、波形发生器
12、过/欠电压保护提示电路
13、音乐彩灯控制器
14、简易频率计
第1种我详细列了下,其实也就是在单片机上设计好电路,然后把程序导入就可以了。
2、3、4、5、6、7都不难的,一般的学校只要有实验课应该都有,一节课就能做完了。
后面的几个稍有难度,但是10和13这种都是很经典的,自己做一下挺有锻炼价值的。
用时间继电器电路图,cd4518
摘要:设计交通灯控制程序、用ICETEK-CTR上的发光二极管的亮灭模拟交通信号,并用其显示阵列模拟显示;使用TMS320VC5509DSP片上定时器定时产生时钟计数;利用ICETEK-CTR上键盘产生外中断,从而模拟实际生活中十字路口交通灯控制。关键词:交通灯控制、ICETEK-CTR发光二极管、定时器、键盘
目录:
1.系统设计要求
2.总体方案设计
3.程序编写
4.实验步骤及调试
5.设计总结
(一)
系统设计要求
利用ICETEK-EDU实验箱提供的设备,设计模拟实际生活中十字路口交通灯控制,具体要求如下:
交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变。
计时显示:8*8点阵显示两位计数,为倒计时,每秒改变计数显示。
正常交通灯信号自动变换:
(1) 南北方向绿灯,东西红灯(
20秒)
(2) 南北方向绿灯闪烁
(3) 南北方向黄灯
(4) 南北方向红灯,东西方向黄灯
(5) 东西方向绿灯(
20秒)
(6) 东西方向绿灯闪烁
(7) 东西方向黄灯
(8) 返回(
1)循环控制
紧急情况;
利用ICETEK-CTR上键盘产生外中断,中断正常信号顺序,模拟突发情况。
(二
) 总体方案设计
(1) 交通灯模拟:
利用ICETEK-CTR上的一组发光二极管(共12只,分为东西南北四组、红黄绿三色)的亮灭实现交通信号的模拟。
(2) 计时显示:
利用ICETEK-CTR上的发光二极管显示阵列模拟显示。
Welcome visit us at: www.eepw.com.cn
对于计数显示,当处于状态1、5、*中时需要进行倒计时,需要计算在此状态中的计数值增量,根据增量判断是否更新计数显示。
(3) 计时:
使用TMS320VC5509DSP片上定时器,定时产生时钟计数,再利用此计数对应具体时间。
Welcome visit us at: www.eepw.com.cn statusNSRedEWYellow 4 南北红灯,东西黄灯 4秒(16,200,215) 20
状态编号 信号灯状态 状态定义 保持时间(计数值,起始时间,结束时间) 计数显示
1 南北绿灯,东西红灯 statusNSGreenEWRed 20秒(160,0,159) 20-0
2 南北绿灯闪烁,东西红灯 statusNSFlashEWRed 6秒(24,160,183) 0
3 南北黄灯,东西红灯 statusNSYellowEWRed 4秒(16,184,199) 20
5 南北红灯,东西绿灯 statusNSRedEWGreen 20秒(160,216,375) 20-1
6 南北红灯,东西绿灯闪烁 statusNSRedEWFlash 6秒(24,376,399) 0
7 南北红灯,东西黄灯 statusNSRedEWYellow 4秒(16,400,415) 20
8 南北黄灯,东西红灯 statusNSYellowEWRed 4秒(16,416,431) 20
* 南北红灯,东西红灯 StatusHold 20秒(160,0,159) 20-1
其中,正常顺序每112秒(计数值日448)为一个循环,状态“*”为非顺序状态。
这样,只要根据计数值就可确定当前状态,根据状态再分情况处理。
(4) 紧急情况:
紧急情况处理;模拟紧急情况(重要车队通过、急救车通过等)发生时,交通警察手动控制
1.
当任意方向通行剩余时间多于是秒,将时间改成10秒。
2.
正常变换到四面红灯(20秒)
3.
直接返回正常顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。
(三)总程序流程图
Welcome visit us at: www.eepw.com.cn
定时器中断服务程序入口
计数工作变量值在原基础上加1
退出定时器中断服务程序
开始
初始化:EMIF、CPU、频率、ICETEK-CTR、定时器、中断控制寄存器、工作变量
根据定时器计数确定当前状态
根据当前状态设置批示灯状态
根据当前状态设置发光二极管显示阵列状态
读取键盘输入
结束?
结束
Welcome visit us at: www.eepw.com.cn
(四)
程序编写
根据设计要求,由于控制是由不同的各种状态按顺序发生的,我们可以采用状态机制控制方法来解决此问题。具体方法是:首先列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制。对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成。
注:程序附在后面几页里
(五)实验步骤及调试
1.连接实验箱附带的键盘的PS2插头到ICETEK-CTRR的键盘接口P8
2.将ICETEK-CTR板的供电电源开关拨动到“开”的位置。
3.设置Code Composer Studio2.21在硬件仿真方式下运行。
4.启动Code Composer Studio2.21:
选择菜单Debug->Reset CPU。
5.编译并下载已编好的程序。
6.运行程序观察结果。
7.突发事件控制。
在ICETEK-CTR附带的小键盘上按下除“Enter“键外的按键,观察信号是否满足要求。
8.结束程序运行退出。
在ICETEK-CTR附带的小键盘上按下“Enter“键。
9.退出CCS
(六)设计总结
通过此次课程设计,对交通灯的控制有了进一步的认识;同时 也掌握了TMS320VC5509DST定时器、外中断的使用和编程。设计控制系统在把握好整体设计理念的同时,要考虑到特殊情况的存在。本次控制程序的编写,考虑交通出现紧急情况是比较困难的一个方面,交通灯要如何高速。
(七)参考文献
胡庆名 李小刚 吴钰淳 EMS320C55X DSP原理、应用和设计 北京机械出版社,2005
同组者:
(八)程序:
键盘中断服务程序入口
设置突发事件标志
退出键盘中断服务程序
Welcome visit us at: www.eepw.com.cn
#include "c5509.h"
#include "ICETEK-VC5509-EDU.h"
#include "scancode.h"
#define nStatusNSGreenEWRed 160
#define nStatusNSFlashEWRed 184
#define nStatusNSYellowEWRed 200
#define nStatusNSRedEWYellow 216
#define nStatusNSRedEWGreen 376
#define nStatusNSRedEWFlash 400
#define nStatusNSRedEWYellow1 416
#define nStatusNSYellowEWRed1 432
#define nTotalTime 448
#define nStatusHold 160
#define statusNSGreenEWRed 0
#define statusNSFlashEWRed 1
#define statusNSYellowEWRed 2
#define statusNSRedEWYellow 3
#define statusNSRedEWGreen 4
#define statusNSRedEWFlash 5
#define statusHold 6
void InitDSP();
void InitTimer();
void InitICETEKCTR();
void INTR_init();
void interrupt time(void);
void interrupt xint2(void);// XINT2中断服务程序
void SetLEDArray1(int nNumber); // 修改显示内容
void RefreshLEDArray1(); // 刷新显示
void EndICETEKCTR();
unsigned int uWork,nTimeCount,nTimeMS;
unsigned int uLightStatusEW,uLightStatusSN;
unsigned int bHold;
unsigned char ledbuf[8],ledx[8];
unsigned char led[40]=
{
0x7E,0x81,0x81,0x7E,0x00,0x02,0xFF,0x00,
0xE2,0x91,0x91,0x8E,0x42,0x89,0x89,0x76,
0x38,0x24,0x22,0xFF,0x4F,0x89,0x89,0x71,
0x7E,0x89,0x89,0x72,0x01,0xF1,0x09,0x07,
Welcome visit us at: www.eepw.com.cn
0x76,0x89,0x89,0x76,0x4E,0x91,0x91,0x7E
};
int www=0;
main()
{
int nWork1,nWork2,nWork3,nWork4;
int nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus;
unsigned int nScanCode;
nTimeCount=nTimeMS=0; bHold=0;
uLightStatusEW=uLightStatusSN=0;
nNowStatus=0; nOldStatus=1; nOldTimeCount=0;
InitDSP(); // 初始化DSP,设置运行速度
InitICETEKCTR(); // 初始化显示/控制模块
InitTimer(); // 设置定时器中断
// 根据计时器计数切换状态
// 根据状态设置计数和交通灯状态
while ( 1 )
{
if ( bHold && nNowStatus==statusHold )
{
if ( nTimeCount>=nStatusHold )
{
nNowStatus=nSaveStatus;
nTimeCount=nSaveTimeCount;
bHold=0;
}
}
else if ( nTimeCount<nStatusNSGreenEWRed ) nNowStatus=statusNSGreenEWRed;
else if ( nTimeCount<nStatusNSFlashEWRed ) nNowStatus=statusNSFlashEWRed;
else if ( nTimeCount<nStatusNSYellowEWRed ) nNowStatus=statusNSYellowEWRed;
else if ( nTimeCount<nStatusNSRedEWYellow ) nNowStatus=statusNSRedEWYellow;
else if ( nTimeCount<nStatusNSRedEWGreen ) nNowStatus=statusNSRedEWGreen;
else if ( nTimeCount<nStatusNSRedEWFlash ) nNowStatus=statusNSRedEWFlash;
else if ( nTimeCount<nStatusNSRedEWYellow1 ) nNowStatus=statusNSRedEWYellow;
Welcome visit us at: www.eepw.com.cn
else if ( nTimeCount<nStatusNSYellowEWRed1 ) nNowStatus=statusNSYellowEWRed;
if ( nNowStatus==nOldStatus )
{
switch ( nNowStatus )
{
case statusNSFlashEWRed:
nWork1=nTimeCount-nStatusNSGreenEWRed;//-160
nWork2=nStatusNSYellowEWRed-nStatusNSFlashEWRed;//200-184=16
nWork3=nWork2/3;
nWork4=nWork3/2;
if ( nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0 )
uLightStatusSN=( (nWork1%nWork3)<=nWork4 )?(0x49):(0x40);
break;
case statusNSRedEWFlash:
nWork1=nTimeCount-nStatusNSRedEWGreen;
nWork2=nStatusNSRedEWYellow1-nStatusNSRedEWFlash;
nWork3=nWork2/3;
nWork4=nWork3/2;
if ( nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0 )
uLightStatusEW=( (nWork1%nWork3)<=nWork4 )?(0x09):(0x00);
break;
case statusNSGreenEWRed:
nWork1=nStatusNSGreenEWRed/20;
if ( nWork1>0 )
{
nWork2=20-nTimeCount/nWork1;
if ( bHold )
{
if ( nWork2>10 )
{
nTimeCount=nWork1*10;
nWork2=10;
}
}
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray1(nWork2);
}
Welcome visit us at: www.eepw.com.cn
}
break;
case statusNSRedEWGreen:
nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;
if ( nWork1>0 )
{
nWork2=20-(nTimeCount-nStatusNSRedEWYellow)/nWork1;
if ( bHold )
{
if ( nWork2>10 )
{
nTimeCount=nStatusNSRedEWYellow+nWork1*10;
nWork2=10;
}
}
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray1(nWork2);
}
}
break;
case statusHold:
nWork1=nStatusHold/20;
if ( nWork1>0 )
{
nWork2=20-nTimeCount/nWork1;
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray1(nWork2);
}
}
break;
}
}
else
{
if ( bHold )
{
Welcome visit us at: www.eepw.com.cn
nSaveStatus=nNowStatus;
nSaveTimeCount=nTimeCount;
nNowStatus=statusHold;
nTimeCount=0;
if ( nSaveStatus==statusNSFlashEWRed || nSaveStatus==statusNSYellowEWRed )
{
nSaveStatus=statusNSRedEWGreen;
nSaveTimeCount=nStatusNSRedEWYellow;
}
else if ( nSaveStatus==statusNSRedEWFlash || nSaveStatus==statusNSRedEWYellow )
{
nSaveStatus=statusNSGreenEWRed;
nSaveTimeCount=0;
}
}
nOldStatus=nNowStatus;
switch ( nNowStatus )
{
case statusNSGreenEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x49;
SetLEDArray1(20);
break;
case statusNSFlashEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x49;
SetLEDArray1(0);
break;
case statusNSYellowEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x52;
SetLEDArray1(20);
break;
case statusNSRedEWYellow:
uLightStatusEW=0x12; uLightStatusSN=0x64;
SetLEDArray1(20);
break;
case statusNSRedEWGreen:
uLightStatusEW=0x09; uLightStatusSN=0x64;
SetLEDArray1(20);
break;
case statusNSRedEWFlash:
uLightStatusEW=0x09; uLightStatusSN=0x64;
SetLEDArray1(0);
Welcome visit us at: www.eepw.com.cn
break;
case statusHold:
uLightStatusEW=0x24; uLightStatusSN=0x64;
SetLEDArray1(20);
break;
}
}
CTRLR=uLightStatusEW; CTRLR=uLightStatusSN; // 设置交通灯状态
RefreshLEDArray1(); // 刷新发光二极管显示
nScanCode=CTRKEY; // 读键盘扫描码
nScanCode&=0x0ff;
if ( nScanCode==SCANCODE_Enter ) break;
}
EndICETEKCTR();
exit(0);
}
// 定时器中断服务程序,进行时钟计数
void interrupt time(void)
{
nTimeMS++;
if ( nTimeMS>=5 )
{
nTimeMS=0;
nTimeCount++;
nTimeCount%=nTotalTime;
}
用分立元件设计电路和逻辑门电路设计电路有何不同?
前者是模拟电路为主,最难;将分立元器件设计成逻辑电路也难,而将别人设计的逻辑电路应用,就是通常的数字电路应用,最容易。而复杂的逻辑电路、时序电路、神经元电路、模糊数学电路最难设计,例如现在谁能设计出1980年的苹果机(中国后来仿制的中华学习机)的硬件逻辑?而复杂的逻辑电路、时序电路、神经元电路、模糊数学电路最难设计,例如现在谁能设计出1980年的苹果机(中国后来仿制的中华学习机)的硬件逻辑?
设计交通灯控制程序、用ICETEK-CTR上的发光二极管的亮灭模拟交通信号,并用其显示阵列模拟显示;使用TMS320VC5509DSP片上定时器定时产生时钟计数;利用ICETEK-CTR上键盘产生外中断,从而模拟实际生活中十字路口交通灯控制。
台供异丙: 算一下参数,在R2的位置多串一个固定电阻限定一下输出的最低电压,R2总阻值+后串的电阻计算限定在9V就好了.带上足够散热片可达1.5A输出 我有找我
金沙县18747172912: 数字电路课程设计?
台供异丙: 技术要求: 1 要求电路能够检测纯净水的温度T 2 要求电路能够通过两跟电阻丝实现对加热的控制,具体情况如下: * T<50度 两根电阻丝都工作,电路处在加热状态; * 50度<T<100度 只有一跟电阻丝工作,电路处在保温状态; * T>100度 两跟...
金沙县18747172912: 数电课程设计 跪求 - ?
台供异丙: 多弦振荡器产生一定宽度的矩形波(秒)! 再用分频计分别设计进行60进制计数(分)和12进制计数(时)
金沙县18747172912: 数电模电综合课程设计 - ?
台供异丙: 你可以对子电路的功能进行逐级仿真,然后再综合仿真,即可排查!
金沙县18747172912: 数电实验 电压测量系统设计 - ?
台供异丙: 目录1设计目的32设计要求指标32.1基本功能32.2扩展功能43.方案论证与比较44总体框图设计45电路原理分析45.1数字钟的构成45.1.1分频器电路55.1.2时间计数器电路55.1.3分频器电路65.1.4振荡器电路65.1.5数字时钟的计数显示电路65.2校时...
金沙县18747172912: 数电课程设计摘要怎么写 - ?
台供异丙: 课程设计: 设计背景: 面临的问题: 解决方案: 设计思想: 程序结构框图:
金沙县18747172912: 帮忙设计一个彩灯控制器数电课程设计电路 按下列要求设计 不尽感谢 - ?
台供异丙: 我只能给你提供一个思路,毕竟别人咀嚼过的饭味道不怎么好.呵呵,说笑.首先,之前你必须做过数码管0~9的显示电路和10路流水灯电路(如果没做过,...
金沙县18747172912: 求数电课程设计:主道红绿灯的简单设计 - ?
台供异丙: 用555定时器做成施密施秒脉冲,算出红绿灯的亮时间(t1秒,t2秒) 把秒脉冲作为加法计数器的输入,这样它每隔一秒计一次数,在经过一系列逻辑门处理,即可完成.
金沙县18747172912: 数电课程设计:设计频率比较电路 设计任务与要求: 1、利用可逆计数器设计频率比较电路,判断两输入频 - ?
台供异丙: 74161是四位二进制同步计数器.置数端低电平有效.当置数端低电平时,预置数0010,如果此时没有时钟脉冲,时钟输入端是低电平,预置数是没有预置进去的,时钟脉冲端为高电平时,预置数0010被预置进去,输出为0010.当预置数端变为高电平后,才能正常计数.有时序的.
金沙县18747172912: 急!急!急!急求数电课程设计《十字路口交通灯电路设计》,请各位大侠出手救命啊!!!?
台供异丙: 6个555电路搞定,而且每个三五电路接法基本一样,主支道用一个开关就可以控制循环,