资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
哈尔滨工业大学(威海)课程设计II报告姓名:班级:学号:指导教师:1 设计题目要求1.1 单片机部分(必做部分)1.1.1 基于51单片机的多路数据采集系统设置3个功能键:当某一功能键被按下后,进入相应的功能模式。3个功能有:1)8路数据采集功能通过调节可变电阻实现0-5V的电压输出作为8路输入信号使用,每路信号用2位LED显示采集的结果。报警:任意一路超过某一门限(可自己设定)时,发出报警(声音+灯闪烁,并通过灯指示是哪一路报警),同时停止采集。2)计数功能利用计数功能键,实现每按一次按键,LED显示加1,从0-99计数。3) 秒表功能只用一个键控制。按下一个按键后时钟启动,从零开始计时,计时间隔0.01秒,再按一次后停止。再按一次后清零。如此循环。1.1.2 电子琴1) 8个键盘(实现中音17和高音1共8个音),8位LED数码管可以记忆并显示最近8个按下的音,用喇叭送出按下的音。要求必须使用8255/8155扩展实现键盘和显示部分。2) 长时间(如2s)按下某一键(可自己定义),可播放某一歌曲。1.2 FPGA部分(选做部分)1.2.1 基于VHDL的多人抢答器抢答器不少于4路,要求该系统应具备以下功能:(1) 抢答器线路测试功能为了保证比赛的正常进行,比赛前需要调试线路能否正常工作。有指示灯显示该系统现在是否工作正常。(2) 第一抢答信号的鉴别和锁存功能可以判断哪一路最先抢到回答的资格,在数码管上显示选手的号码或者让其相应的指示灯显示为绿灯表示抢答成功,并具有锁存功能,此后其他人不能抢答,一直到下一题开始。(3) 犯规警示功能可以判断出参赛者有没有在主持人读题的期间按下抢答器,有则声音报警并显示该选手号码或相应的红灯闪烁,同时取消其本轮抢答资格。(4) 计时功能可以预置时间,可以进行倒计时并且将时间显示出来。离计时结束还有10秒时有声音提示。(5) 计分功能可以实现加分和减分,并且显示出来。 (6) 声音提示及报警功能在犯规和计时将结束时,要求有此功能。(7) 有清零键和启动开关的功能清零键:主持人可以按此键清除所有分数。启动开关:主持人可以按此键启动抢答开始。流程参考: 接通电源后,先按清零键,清除所有分数;启动开关处于关闭状态,禁止所有抢答器; 主持人开始读题,读题完毕后按“启动键”开始抢答,并计时开始,有数码管显示;若未在按“启动键”之前抢答视为犯规,有声音报警,并显示选手号码或者令其相应指示灯显示为红灯闪烁,取消此次答题机会,再按抢答键无效; 开始抢答后,若有人抢答时,有声音提示,并显示选手号码或者令其相应的指示灯显示为绿灯闪烁,表明哪一路为第一抢答者,同时禁止其他路的抢答信号,直至下一题开始,主持人再次按“启动键”。 抢答者在规定时间内回答正确,用“加分键”相应加一分,回答错误则用“减分键”扣一分;在即将到达规定时间时的前10秒,有声音提示。2 基于51单片机的多路数据采集系统2.1 芯片介绍2.1.1 ADC08081.综述:ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。2.引脚功能:ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下:15和2628(IN0IN7):8路模拟量输入端。8、14、15和1721:8位数字量输出端。22(ALE):地址锁存允许信号,输入,高电平有效。6(START): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。7(EOC): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。12(VREF(+)和16(VREF(-):参考电压输入端11(Vcc):主电源输入端。13(GND):地。2325(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路本设计中ADC0808的接法如下图所示:2.2 C语言程序设计#include#define uc unsigned char#define ui unsigned int/共阴极数码管编码(无小数点)uc code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极数码管编码(有小数点)uc code table_point=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;uc number=255,shi,ge,second,second_behind,function,flag_watch,time4,Voltage_Integer,Voltage_Decimal;ui AD_Digital,AD_Analog;sbit DULA=P20;/申明段选锁存器的锁存端sbit WELA1=P21;/申明位选锁存器1的锁存端sbit WELA2=P22;/申明位选锁存器2的锁存端sbit LEDLA=P23;/申明LED锁存器的锁存端sbit K1=P24;/功能键1sbit K2=P25;/功能键2sbit K3=P26;/功能键3sbit LED=P27;/报警灯sbit A1=P10; /地址线Asbit A2=P11;/地址线Bsbit A3=P12;/地址线Csbit ST=P13;/A/D转换启动信号sbit OE=P14;/数据输出允许信号sbit EOC=P15;/A/D转换结束信号sbit CLK=P16;/时钟脉冲输入信号sbit BEEP=P17; /蜂鸣器/延时(单位ms)void delayms(ui xms)ui i,j;for(i=xms;i0;i-)for(j=31;j0;j-);/报警void alarm(uc n)switch(n)case 1:LEDLA=1;P0=0xfe;LEDLA=0;break;case 2:LEDLA=1;P0=0xfd;LEDLA=0;break;case 3:LEDLA=1;P0=0xfb;LEDLA=0;break;case 4:LEDLA=1;P0=0xf7;LEDLA=0;break;case 5:LEDLA=1;P0=0xef;LEDLA=0;break;case 6:LEDLA=1;P0=0xdf;LEDLA=0;break;case 7:LEDLA=1;P0=0xbf;LEDLA=0;break;case 8:LEDLA=1;P0=0x7f;LEDLA=0;break;while(K2=1&K3=1) BEEP=BEEP;LED=LED;switch(n)case 1:WELA1=1;P0=0xfe;WELA1=0;DULA=1;P0=table_pointVoltage_Integer;DULA=0;delayms(4);WELA1=1;P0=0xfd;WELA1=0;DULA=1;P0=tableVoltage_Decimal;DULA=0;delayms(4);break;case 2:WELA1=1;P0=0xfb;WELA1=0;DULA=1;P0=table_pointVoltage_Integer;DULA=0;delayms(4);WELA1=1;P0=0xf7;WELA1=0;DULA=1;P0=tableVoltage_Decimal;DULA=0;delayms(4);break;case 3:WELA1=1;P0=0xef;WELA1=0;DULA=1;P0=table_pointVoltage_Integer;DULA=0;delayms(4);WELA1=1;P0=0xdf;WELA1=0;DULA=1;P0=tableVoltage_Decimal;DULA=0;delayms(4);break;case 4:WELA1=1;P0=0xbf;WELA1=0;DULA=1;P0=table_pointVoltage_Integer;DULA=0;delayms(4);WELA1=1;P0=0x7f;WELA1=0;DULA=1;P0=tableVoltage_Decimal;DULA=0;delayms(4);break;case 5:WELA2=1;P0=0xfe;WELA2=0;DULA=1;P0=table_pointVoltage_Integer;DULA=0;delayms(4);WELA2=1;P0=0xfd;WELA2=0;DULA=1;P0=tableVoltage_Decimal;DULA=0;delayms(4);break;case 6:WELA2=1;P0=0xfb;WELA2=0;DULA=1;P0=table_pointVoltage_Integer;DULA=0;delayms(4);WELA2=1;P0=0xf7;WELA2=0;DULA=1;P0=tableVoltage_Decimal;DULA=0;delayms(4);break;case 7:WELA2=1;P0=0xef;WELA2=0;DULA=1;P0=table_pointVoltage_Integer;DULA=0;delayms(4);WELA2=1;P0=0xdf;WELA2=0;DULA=1;P0=tableVoltage_Decimal;DULA=0;delayms(4);break;case 8:WELA2=1;P0=0xbf;WELA2=0;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号