单片机课程设计报告

上传人:1888****888 文档编号:37989619 上传时间:2021-11-05 格式:DOC 页数:37 大小:1.03MB
收藏 版权申诉 举报 下载
单片机课程设计报告_第1页
第1页 / 共37页
单片机课程设计报告_第2页
第2页 / 共37页
单片机课程设计报告_第3页
第3页 / 共37页
资源描述:

《单片机课程设计报告》由会员分享,可在线阅读,更多相关《单片机课程设计报告(37页珍藏版)》请在装配图网上搜索。

1、前言目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在智能仪器仪

2、表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。 2.在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。 3.在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了

3、单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。 4.在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。 5.单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 6.在各种大型电器

4、中的模块化应用 某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。 在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。 7.单片机在汽车设备领域中的应用 单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动

5、系统等等。 此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。本次课程设计,主要学习单片机内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O、串行口通信等,实现键盘显示、电机控制应用等。1. 数码管显示系统1.1. 工作原理利用动态显示方式实现在数码管上稳定显示123456。1.2. 硬件电路设计及描述单片机、6位的7段数码管。单片机的P1口输出相应的段码,P2口低6位选择相应的数码管。硬件电路图如下。1.3. 软件设计流程及描述#include#define uint unsigned int#define uchar unsigned charuc

6、har code table=0x60,0xda,0xf2,0x66,0xb6,0xbe,;/数字1-6段码表uchar code adress=0xfe,0xfd,0xf7b,0xf7,0xef,0xdf;/位码表void delay(uint m)/延时程序while(m-);void main()uchar m=0;while(1)/动态循环if(m=6)m=0;P2=0xff; /数码管清零P2=adressm;/P2口输出位码,选择位P1=tablem+;/P1输出段码,显示相应数字delay(500);1.4. 综合调试结果分析与展示动态显示的结果是静态的。当动态循环一个一个数码管

7、显示足够快的时候,由于视觉原因,看上去是同时显示的。2. 步进电机控制系统2.1. 工作原理通过单片机的/O口控制步进电机运转,实现正传和反转。2.2. 硬件电路设计及描述单片机、74LS240、步进电机。P0口的低4位送出励磁电平,74LS240作为驱动电路。接线图如下。2.3. 软件设计流程及描述#includeunsigned char Lvalue8=0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06;void delay()/延时程序unsigned int i;for(i=0;i43000;i+);void main()unsigned char m,n

8、;P0=0;/P0口清零while(1)for(n=0;n12;n+)/电机正转for(m=0;m8;m+)P0=Lvaluem;delay();for(n=0;n0;m-)P0=Lvaluem-1;delay();2.4. 综合调试结果分析与展示步进电机正转一会,然后反转一会。3. 直流电机PWM调速系统3.1. 工作原理通过调节脉冲宽度,改变占空比,从而改变输出,达到改变直流电机转速的目的。3.2. 硬件电路设计及描述单片机、ULN2003A、直流电机、12V电源。单片机P1.7输出PWM波,经过ULN2003A驱动,加到直流电机上,改变PWM波占空比,即可改变输出电压平均值大小,从而改变

9、电机转速。接线图如下。3.3. 软件设计流程及描述#include#define N 6/N不能大于10sbit P17=P17;/P1.7输出PWM波unsigned char i=0;void main()TMOD=0x01;/定时器T0,方式1TH0=0xd8;TL0=0xf0;/定时10ms产生中断EA=1;ET0=1;TR0=1;/开启中断P17=1;/先置高电平while(1);void time0() interrupt 1/中断程序TH0=0xd8;TL0=0xf0; /重装初值i+;if(i=N)P17=0;/决定PWM波占空比if(i=10)P17=1;i=0;3.4. 综

10、合调试结果分析与展示改变程序中N的值即可改变占空比进行调速。4. 点阵LED广告屏设计(题目4)4.1. 工作原理1616LED点阵由四块88LED点阵组成。控制点阵的扫描显示,使1616LED点阵循环显示汉字。例如:新年好,同学们好,欢迎您。4.2. 硬件设计电路及描述单片机、4块74LS541、4块88LED。P0口经74LS541驱动接前8行LED,P2口经驱动接后8行,P3口经驱动接前8列,P1口经驱动接后8列。4.3. 软件设计流程及描述#include sst89x5x4.h#include hzdot1.h/要显示的字模文件#includevoid Delay(void)/ 延时

11、程序unsigned char i;for(i=0; i60; i+);void clear(void)/ 清屏P3 = 0x00; /前8列P1 = 0x00; /P0 = 0xff; /P2 = 0xff; /void main(void)unsigned char Scan=0xfe, i, j;unsigned int count=0;clear();while(1)for(i=0; i50; i+)/每16行重复扫描50次for(j=0; j8; j+)P0 = Scan;/ 0-7行P3 = hzdotcount;/ 0-7列P1 = hzdotcount+1;/ 8-15列cou

12、nt+=2;Scan = _crol_(Scan,1);/ 行扫Delay();P0 = 0xff;for(j=0; j8; j+)P2 = Scan;/ 8-15行P3 = hzdotcount;P1 = hzdotcount+1;count+=2;Scan = _crol_(Scan,1);/ 行扫Delay();P2 = 0xff;count-=32;count+=2; /向上滚动一行if(count = (192-32) count=0;/最后一个字完全显示后,又从第一个字开始显示字模文件hzdot1.hunsigned char code hzdot320 = 0x80,0x00,0

13、x80,0x00,0xFE,0x3F,0xC0,0x01,0xA0,0x02,0x90,0x04,0x8C,0x18,0x83,0x60,0xF0,0x07,0x00,0x02,0x00,0x01,0xFF,0x7F,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00,/*李,0*/0x10,0x00,0x90,0x3F,0x10,0x22,0x7E,0x22,0x10,0x22,0x10,0x29,0xFF,0x10,0x10,0x3F,0x14,0x21,0x14,0x21,0x74,0x21,0x14,0x3F,0x14,0x00,0x1A,0x00,0xF2

14、,0x7F,0x01,0x00,/*超,1*/0x80,0x00,0x40,0x00,0x20,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,/*自,2*/0x08,0x02,0x08,0x04,0x08,0x04,0xC8,0x7F,0x5F,0x40,0x28,0x29,0x88,0x10,0x58,0x20,0x0C,0x00,0x8B,0x3F,0x08,0x04,

15、0x08,0x04,0x08,0x04,0x08,0x04,0xEA,0x7F,0x04,0x00,/*控,3*/0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x24,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x64,0x42,0x58,0x42,0x40,0x42,0x40,0x24,0x24,0x18,0x1C,0x00,0x00,0x00,0x00,/*09,4*/0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x24,0x30,0x42,0x28,0x42,0x24,0x42,

16、0x24,0x42,0x22,0x42,0x22,0x42,0x7E,0x42,0x20,0x24,0x20,0x18,0x78,0x00,0x00,0x00,0x00,/*04,5*/;4.4. 综合调试结果分析及展示1616LED显示屏向上滚动显示“李超自控0904”6个字。5. 温度显示系统设计(题目6)5.1. 工作原理1) 利用数字温度传感器DS18B20,测量环境温度,并在二位LED数码管上显示实时温度值。2) 使用ADC0809通道IN1作为报警值输入。按下S1键,CPU从IN1通道读入报警值显示在数码管上。放开S1键时将此时的IN1采样值作为报警值。使用S1设置高限报警温度值。

17、3) 可以通过按键设定高限报警温度值和低限报警温度值。当外界温度高于设定最高温度时,启动风扇降温:发出短嘀报警声和光报警。当外界温度低于指定最低温度时,发出长嘀报警声,并点亮报警指示灯。低限报警温度值可用键盘设置。5.2. 硬件设计电路及描述单片机,3个数码管,一个数字温度传感器DS18B20,红、绿led各一个,蜂鸣器,按键。具体连线见后面结果展示。5.3. 软件设计流程及描述#include#define uchar unsigned char#define uint unsigned intsbit DQ=P20;sbit red=P25;sbit green=P26;sbit fm=P

18、27;sbit fu=P07;union uchar c2; uint x; temp;uchar flag;uint cc;void delay(uint s) for(;s0;s-); uchar reset() uchar p; DQ=0; delay(50);DQ=1; delay(3);p=DQ; delay(25);return(p);uchar read_b() uchar i; uchar value=0;for(i=8;i0;i-) value=1; DQ=0; DQ=1; delay(1); if(DQ) value|=0x80; delay(6);return(value

19、);void write_b(uchar val)uchar i;for(i=8;i0;i-)DQ=0; DQ=val&0x01; delay(5); DQ=1; val=val/2; delay(5);uchar read_temperature()reset();write_b(0xCC);write_b(0x44);reset();write_b(0xCC); write_b(0xBE);temp.c1=read_b();temp.c0=read_b();return(temp.x/2);void s_p(uchar x,uchar y)uchar codevalue10=0x3f,0x

20、06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;P0=codevaluex;P1=codevaluey;if(flag=1)fu=1; void main()red=0;green=0;P0=0x00;P1=0x00;EA=1;IT0=1;EX0=1;while(1);void int_x0() interrupt 0uchar j;uchar a,b;read_temperature();cc=temp.c0*256+temp.c1;if(temp.c00xf8)flag=1;cc=cc+1;cc=cc/16;a=(int)cc%10; b=(int)c

21、c/10)%10;s_p(a,b);if(cc30)red=1;for(j=0;j3;j+)fm=0;delay(50000);fm=1;delay(50000);red=0;fm=1;if(cc0|flag=1)green=1;for(j=0;j5;j+)fm=0;delay(50000);green=0;fm=1;flag=0;5.4. 综合调试结果分析与展示6. 字符型LCD显示设计(题目7)6.1. 工作原理1) 在液晶显示器上显示字符串、数字等,并循环动态显示。如显示“Happy new year!”2) 按下不同按钮,显示内容改变。6.2. 硬件设计电路及描述单片机,LCD显示屏,

22、按键控制显示内容。具体接线见后面结果展示。6.3. 软件设计流程及描述ORG 0000HLJMP MAINORG 0003HLJMP LOOP2ORG 0030HRS BIT P3.5RW BIT P3.6E BIT P3.7LCD EQU P1MAIN:ACALL INIT_LCDSETB IT0SETB EX0SETB EALOOP1:ACALL DELAYMOV LCD,#81HACALL WR_COMMOV DPTR,#LINE1MOV R0,#6ACALL DISP_LCDACALL DELAYMOV LCD,#0C0HACALL WR_COMMOV DPTR,#LINE2MOV R

23、0,#15ACALL DISP_LCDACALL DELAYACALL CLSJMP LOOP1LOOP2:ACALL CLSMOV R3,#02HLL2:ACALL DELAYMOV LCD,#80HACALL WR_COMMOV DPTR,#LINE3MOV R0,#16ACALL DISP_LCDACALL DELAYMOV LCD,#0C0HACALL WR_COMMOV DPTR,#LINE4MOV R0,#10ACALL DISP_LCDACALL DELAYACALL CLSDJNZ R3,LL2RETIINIT_LCD:MOV LCD,#00000001BACALL WR_CO

24、MMOV LCD,#00111000BACALL WR_COMMOV LCD,#00001111BACALL WR_COMMOV LCD,#00000110BACALL WR_COMRETWR_COM:CLR RSCLR RWCLR EACALL CHECK_BFSETB ERETCHECK_BF:MOV LCD,#0FFHCLR RSSETB RWCLR ENOPSETB EJB LCD.7,CHECK_BFRETWR_DATA:SETB RSCLR RWCLR EACALL CHECK_BFSETB ERETDISP_LCD:MOV R1,#0LOOP:MOV A,R1MOVC A,A+D

25、PTRMOV LCD,AINC R1ACALL WR_DATADJNZ R0,LOOPRETCLS:MOV LCD,#00000001BACALL WR_COMRETDELAY:MOV R5,#100D1:MOV R6,#100D2:MOV R7,#100DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETLINE1:DB Hello!LINE2:DB Welcome to LCD!LINE3:DB Nice to see you!LINE4:DB Good luck!END6.4. 综合调试结果分析与展示循环显示内容:按下键后显示内容如下:7. 数字钟设计(题目11)7.1. 工

26、作原理1) 系统运行从00点00分00秒开始计时,并在六个数码管上动态显示时、分、秒当前值。2) 用键盘设置当前时间。红色发光二极管是秒灯,每闪烁一次表示时间走动一秒钟。绿色发光二极管是设置灯,当时间正常走动时此灯不亮,当第一次按下设置键时,设置灯亮,分钟的两位数码管出现闪烁,时间停止走动,进入校时状态,表示此时可以进行分钟的调整,当按一次加1键,可实现分钟加1功能。如果再次按下设置键时,秒灯保持熄灭,设置灯保持点亮状态,表示分钟的数码管停止闪烁,表示小时的两位数码管则开始闪烁,此时可进行小时的调整,按加1键可实现小时的加1功能,小时调整以24为上限,超出24小时则重新回0。当第三次按下设置键

27、时,数码管停止闪烁,设置灯熄灭,秒灯重新闪烁,时间以设置值开始计时。3) 可以设置闹铃时间为:07:30:00蜂鸣器发音。7.2. 硬件设计电路及描述单片机,7段8位数码管,蜂鸣器作为闹铃发声,按键来设置时间。具体接线见后面结果展示。7.3. 软件设计流程及描述#include unsigned char code codevalue=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00; unsigned char dispbitcode=0xfe,0xfd,0xfb,0xf7

28、,0xef,0xdf,0xbf,0x7f; unsigned char dispbuf8=0,0,16,0,0,16,0,0; unsigned char dispbitcnt=0;unsigned char mstcnt=0;unsigned char second; unsigned char minite; unsigned char hour; unsigned int tcnt; unsigned char i,j;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit fm=P17; void main(void) TMOD=0x02; TH0

29、=0x06; TL0=0x06; TR0=1; ET0=1; EA=1; EX0=1; IT0=1; hour=0; while(1) if(P1_0=0) for(i=5;i0;i-) for(j=248;j0;j-); if(P1_0=0) second+; if(second=60) second=0; dispbuf0=second%10; dispbuf1=second/10; while(P1_0=0); if(P1_1=0) for(i=5;i0;i-) for(j=248;j0;j-); if(P1_1=0) minite+; if(minite=60) minite=0; d

30、ispbuf3=minite%10; dispbuf4=minite/10; while(P1_1=0); if(P1_2=0) for(i=5;i0;i-) for(j=248;j0;j-); if(P1_2=0) hour+; if(hour=24) hour=0; dispbuf6=hour%10; dispbuf7=hour/10; while(P1_2=0); if(hour=7&minite=30&second=00) fm=0; for(i=100;i0;i-) for(j=248;j0;j-); fm=1; void t0(void) interrupt 1 mstcnt+;

31、if(mstcnt=8) mstcnt=0; P2=0xff; /关闭所有显示 P0=codevaluedispbufdispbitcnt; P2=dispbitcodedispbitcnt; dispbitcnt+; if(dispbitcnt=8) dispbitcnt=0; ; tcnt+; if(tcnt=4000) tcnt=0; second+; if(second=60) second=0; minite+; if(minite=60) minite=0; hour+; if(hour=24) hour=0; dispbuf0=second%10; dispbuf1=second

32、/10; dispbuf3=minite%10; dispbuf4=minite/10; dispbuf6=hour%10; dispbuf7=hour/10; 7.4. 综合调试结果分析与展示台8. 电梯控制系统简易模型设计(题目14)8.1. 工作原理1) 电梯的起始位置为一楼,等待控制START按键按下,数码管显示“1”。2) 当START按键按下后,电梯开始向上运动,控制台的上升指示灯UP亮。2秒后到达二楼,数码管显示“2”,并在二楼停留5秒,然后继续上升。每楼层停留5秒,直到1楼。然后重复上述过程。3) 如果在一个上下循环中按下STOP键,电梯下降到一楼后停止工作。直到再次按下STA

33、RT键后重新恢复工作。8.2. 硬件设计电路及描述单片机,一个7段数码管显示楼层号,红、绿led灯对应上、下方向,两个按键控制走、停。具体连线见结果展示。8.3. 软件设计流程及描述#include#define uint unsigned int#define uchar unsigned charuchar flag;uchar codevalue=0x06,0x06,0x5B,0x4f,0x66,0x66;sbit up=P20;sbit down=P21;void delay_1ms(uint x)/延时X*1ms uint i; uchar j; for(i = 0; i x; i+

34、) for(j = 0; j = 148; j+); void main()uchar i;EA=1;IT0=1;IT1=1;EX0=1;EX1=1;P2=0x00;P0=0x06;flag=0;while(1)if(flag=1) for(i=1;i0;i-)down=1;P0=codevaluei;delay_1ms(5000);P0=codevaluei-1;delay_1ms(2000);down=0; void Ex_int0() interrupt 0flag=1;void Ex_int1() interrupt 2flag=0;8.4. 综合调试结果分析与展示9. 智力竞赛抢答器

35、(题目21)9.1. 工作原理当主持人按下抢答开始按钮K发布抢答命令后,8位参赛选手通过按下各自的抢答按钮进行抢答。哪位选手最先按下抢答按钮,数码管就显示其对应的号码,蜂鸣器发音。表示该名选手抢答成功,并且锁定,其他参赛选手本轮无法再进行抢答。在主持人发布完下一道题,再次发出抢答命令前,要先按下抢答按钮,以清除上次抢答号码,同时开放各按钮,以备参赛选手进行下一道题的抢答。9.2. 硬件设计电路及描述单片机,8个开关按钮用于选手抢答,按键2个主持人控制键,一个7段数码管显示用,蜂鸣器。具体连线见后面结果展示。9.3. 软件设计流程及描述#include#define uint unsigned

36、int#define uchar unsigned charsbit fm=P20;uchar codevalue10=0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f;void delay(uint j)for(;j0;j-);void main()EA=1;IT0=1;IT1=1;EX0=1;EX1=1;P0=0x3f;while(1);void start() interrupt 0uchar i,j;i=P1;while(i=0xff)i=P1;i=i;if(i=1)j=0;else if(i=2)j=1;else if(i=4)j=2;else if(i

37、=8)j=3;else if(i=16)j=4;else if(i=32)j=5;else if(i=64)j=6;else j=7;P0=codevaluej;fm=0;delay(60000);fm=1;void clear() interrupt 2P0=0x3f;9.4. 综合调试结果分析与展示10. 进制转换设计(题目23)10.1. 工作原理1) 开始无输入时,4个LED闪烁显示0.2) 通过44矩阵编码键盘连续输入不多于4位(0到9共十个键)十进制数。3) 数码管显示相应的十进制数(高位在前,低位在后)。4) 输入其他数值(AF)时蜂鸣器发出错误提示声音,该输入不被接收,继续接收

38、后续数据。5) 选择一个功能键,作为确认命令键,当按下该键,单片机将转换结果以十六进制的方式显示。6) 当输入位数超过4位时发出警告声音。7) 设置一个清除键,取消以前输入的所有数据。10.2. 硬件设计电路及描述单片机,7段8位数码管,16个按键键盘输入用,蜂鸣器出错提示。具体连线见结果展示。10.3. 软件设计流程及描述#include #include #define uint unsigned int #define uchar unsigned charsbit fm=P30;uchar wei;uchar code table10 = 0xC0, 0xf9, 0xa4, 0xb0,

39、 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; uchar store4; void Delay_1ms(uint x) uint i; uchar j; for(i = 0; i x; i+) for(j = 0; j = 148; j+); uchar Keyscan(void) uchar i, j, temp, Buffer4 = 0xef, 0xdf, 0xbf, 0x7f; for(j = 0; j 4; j+) /循环四次 P1 = Bufferj; /在P1高四位分别输出一个低电平 temp = 0x01; /计划先判断P1.0位 for(i = 0;

40、 i 4; i+) /循环四次 if(!(P1 & temp) /从P1低四位,截取1位 return (i + j * 4); /返回取得的按键值 temp = 1; /判断的位,左移一位 return 16; /判断结束,没有键按下,返回16 void Display() uchar j=0x08,m,k; for(m=0;m1;Delay_1ms(5);void Main(void) uchar Key_Value = 0, Key_Temp1, Key_Temp2; /两次读出的键值 EA=1; IT0=1; IT1=1; EX0=1; EX1=1;while(1) /-以下读入按键、

41、消抖、等待按键释放 P1 = 0xff; Key_Temp1 = Keyscan(); /先读入按键 if(Key_Temp1 != 16) /如果有键按下 if(Key_Temp1 9) fm=0;Delay_1ms(100);fm=1;continue; if(wei3) fm=0;Delay_1ms(100);fm=1;continue; Display(); /可用显示代替延时 Key_Temp2 = Keyscan(); /再读一次按键 if (Key_Temp1 = Key_Temp2) Key_Value = Key_Temp1; storewei+=Key_Value; /才保

42、存下来,这就是消除抖动 while(Keyscan() 16) /等待按键释放 Display(); /等待期间显示键值/-以下是对按键的处理 Display(); /显示键值 Display(); /没有按键按下,也显示键值 void clear_int1(void) interrupt 2 /清除键wei=0;store0=0;store1=0;store2=0;store3=0;void transport_int0(void) interrupt 0 /转换键uint i;i=store0*1000+store1*100+store2*10+store3;store3=i%16;sto

43、re2=(i/16)%16;store1=(i/256)%16;store0=(i/4096)%16;10.4. 综合调试结果分析与展示转换之前输入的数:转换之后输出的数:11. 简易秒表设计(题目27)11.1. 工作原理采用两位LED显示,显示时间为0099秒。一个开始按键、一个复位按键、一个暂停按键。启动后按一次暂停按钮记录一个中间时间,最多可记录5个中间时间。按翻页按键可查看不同的中间时间。11.2. 硬件设计电路及描述单片机,7448作驱动,2个7段数码管,3个开关,一个按键。具体连线见后面的结果展示。11.3. 软件设计流程及描述#include#define uint unsig

44、ned int#define uchar unsigned charsbit st=P35;sbit clr=P36;sbit pause=P37;uchar table5;uchar i=0;uchar g=0;void delay_1ms(uint x)/延时X*1ms uint i; uchar j; for(i = 0; i x; i+) for(j = 0; j = 148; j+); void main(void)uchar j;uint c;P2=0x00;EA=1;IT0=1;EX0=1;while(st=1) while(st=1)delay_1ms(30); while(i

45、!=100) j=(i/10)%10; j=j4; j=j|(i%10)&0x0f); P2=j; i+;for(c=0;c999;c+) delay_1ms(1); while(pause=0) delay_1ms(30); while(clr=0) i=0;delay_1ms(30);P2=0x00; void Ex_int0() interrupt 0uchar j,k;if(g6) tableg=i; g+; else for(k=0;k5;k+) j=(tablek/10)%10; j=j4; j=j|(tablek%10)&0x0f); P2=j; delay_1ms(1000);

46、g=0; 11.4. 综合调试结果分析与展示12. 按键控制点阵LED广告屏显示(题目30)12.1. 工作原理1616LED点阵由四块88LED点阵组成,通过按键控制点阵的显示,使1616LED点阵显示不同的汉字。12.2. 硬件设计电路及描述单片机,74154译码,74LS245作为驱动,两个按键控制显示,1616LED点阵由4块88LED组成。具体连线见后面结果展示。12.3. 软件设计流程及描述ORG 0000HLJMP MAINORG 0003HLJMP START1ORG 0013HLJMP START2ORG 0030HMAIN:SETB EASETB IT0SETB IT1SE

47、TB EX0SETB EX1SJMP $START1:MOV A,#00HMOV P0,A;清除画面ANL P2,#00HMOV R2,#200D11:MOV R3,#248;延时0.1sDJNZ R3,$DJNZ R2,D11MOV 20H,#00HL11:MOV R1,#0FFH;每字停留时间L12:MOV R6,#16;每字16码MOV R4,#00H;扫描初值MOV R0,20HL13:MOV A,R4;扫描指针载入AMOV P1,AINC R4;扫描下一个MOV A,R0MOV DPTR,#TABLEMOVC A,A+DPTR;至Table1取上半部数据码MOV P0,AINC R0

48、MOV A,R0MOV DPTR,#TABLEMOVC A,A+DPTR;至Table1取下半部数据码MOV P2,AINC R0MOV R3,#02;扫描时间1msD12:MOV R5,#248DJNZ R5,$DJNZ R3,D12MOV A,#00H;清屏MOV P0,AANL P2,#00HDJNZ R6,L13;显示了一个字?DJNZ R1,L12;停留时间到?MOV 20H,R0;取码指针存入20H地址CJNE R0,#40H,L11;8个字256码是否取完MOV A,#00HMOV P0,AMOV P1,AANL P2,#00HRETISTART2:MOV A,#00HMOV P

49、0,A;清除画面ANL P2,#00HMOV R2,#200D21:MOV R3,#248;延时0.1sDJNZ R3,$DJNZ R2,D21MOV 20H,#40HL21:MOV R1,#0FFH;每字停留时间L22:MOV R6,#16;每字16码MOV R4,#00H;扫描初值MOV R0,20HL23:MOV A,R4;扫描指针载入AMOV P1,AINC R4;扫描下一个MOV A,R0MOV DPTR,#TABLEMOVC A,A+DPTR;至Table取上半部数据码MOV P0,AINC R0MOV A,R0MOV DPTR,#TABLEMOVC A,A+DPTR;至Table取下半部数据码MOV P2,AINC R0MOV R3,#02;扫描时间1msD22:MOV R5,#248DJNZ R5,$DJNZ R3,D12MOV A,#00H;清屏MOV P0,AANL P2,#00HDJNZ R6,L23;显示了一个字?DJNZ R1,L22;停留时间到?MOV 20H,R0;取码指针存入20H地址CJNE R0,#80H,L21;8个字256码是否取完MOV A,#00HMOV P0,AMOV P1,AANL P2,#00HRETIT

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!