欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机课程设计.docx

    • 资源ID:2231550       资源大小:222.83KB        全文页数:28页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机课程设计.docx

    1、单片机课程设计微 机 原 理 课 程 设 计学院:学号: 班级: 姓名: 一、 1、 实验目的:1) 简单I/O引脚的输出2) 掌握软件延时编程方法3) 简单按键输入捕获判断2、 完成功能要求1) 开机是点亮12发光二极管,闪烁三下2) 按照顺时针循环依次点亮发光二极管3) 通过按键将发光二极管的显示改为顺逆时针方式一功能介绍:此流水灯控制器,在按钮A=0时,8个流水灯的里亮灭顺序是1.,2,3,4,5,6,7,8;当A=1时,8个灯得亮灭顺序是8,7,6,5,4,3,2,1。按钮B可以随时启动或停止流水灯的运行。二设计理念:将按钮A设在P3.6,按钮B设在P3.7。在按钮A=0时,若B=0,

    2、则灯不亮;若B=1,则8个灯按照1,2,3,4,5,6,7,8的顺序亮灭,反复循环,B随时按下都可以启动或停止流水灯的运行。在按钮A=1时,若B=0,则灯不亮;若B=1,则8个流水灯按照8,7,6,5,4,3,2,1的顺亮灭,反复循环,B随时按下都可以启动或停止流水的运行。满足设计要求。三硬件结构图:四软件流程图:五:源代码:流水灯c语言程序: #include /包含51单片机寄存器定义的头文件sbit P14=P14; /将P14位定义为P1.4引脚sbit P15=P15; /将P15位定义为P1.5引脚sbit P16=P16; /将P16位定义为P1.6引脚sbit P17=P17;

    3、 /将P17位定义为P1.7引脚sbit P05=P05;sbit P06=P06;sbit P07=P07;sbit P36=P36;sbit P37=P37;sbit P35=P35; unsigned char code ledcode10 = 0x3f, 0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x67,; /数字09的段码unsigned char code saom4=0xfe,0xfd,0xfb,0xf7;unsigned char keyval; /定义变量储存按键值void delay1ms(unsigned int ms) / 延时

    4、子程序 unsigned char i; while(ms-) for(i = 0; i 120; i+); void led_delay(void) unsigned char j; for(j=0;j200;j+) ; void shui(unsigned char xx)switch(xx)case 1: P2=0x7f;P3=0xff; delay1ms(500); P2=0xbf;P3=0xff; delay1ms(500); P2=0xdf;P3=0xff; delay1ms(500); P2=0xef;P3=0xff; delay1ms(500); P2=0xf7;P3=0xff

    5、; delay1ms(500); P2=0xfb;P3=0xff; delay1ms(500); P2=0xfd;P3=0xff; delay1ms(500); P2=0xfe;P3=0xff; delay1ms(500); P2=0xff;P3=0xdf; delay1ms(500); P2=0xff;P3=0xef; delay1ms(500); P2=0xff;P3=0xf7; delay1ms(500); P2=0xff;P3=0xfb; delay1ms(500); break; case 2: P2=0xff;P3=0xfb; delay1ms(500); P2=0xff;P3=0

    6、xf7; delay1ms(500); P2=0xff;P3=0xef; delay1ms(500); P2=0xff;P3=0xdf; delay1ms(500); P2=0xfe;P3=0xff; delay1ms(500); P2=0xfd;P3=0xff; delay1ms(500); P2=0xfb;P3=0xff; delay1ms(500); P2=0xf7;P3=0xff; delay1ms(500); P2=0xef;P3=0xff; delay1ms(500); P2=0xdf;P3=0xff; delay1ms(500); P2=0xbf;P3=0xff; delay1m

    7、s(500); P2=0x7f;P3=0xff; delay1ms(500);break; defult:break;void display(unsigned char k) unsigned char m; P1=ledcodek%10; /显示十位 P0=saom0; /点亮数码管DS6 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 P0=0x00; P1=ledcodek%10; /显示个位 P0=saom1; /点亮数码管DS7 led_delay(); /动态扫描延时 led_delay(); /动态扫

    8、描延时 led_delay(); /动态扫描延时 P0=0x00; P1=ledcodek%10; /显示个位 P0=saom2; /点亮数码管DS7 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 P0=0x00; P1=ledcodek%10; /显示个位 P0=saom3; /点亮数码管DS7 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 P0=0x00; void delay20ms(void) unsigned char i,j

    9、; for(i=0;i100;i+) for(j=0;j60;j+) ; void main(void) P2=0x00;P3=0xc0; delay1ms(2000); P2=0xff;P3=0xff; delay1ms(2000); P2=0x00;P3=0xc0; delay1ms(2000); P2=0xff;P3=0xff; delay1ms(2000); P2=0x00;P3=0xc0; delay1ms(2000); P2=0xff;P3=0xff; delay1ms(2000); P0=0x0f; EA=1; /开总中断 ET0=1; /定时器T0中断允许 TMOD=0x01;

    10、 /使用定时器T0的模式1 TH0=0xee; /定时器T0的高8位赋初值 TL0=0x00; /定时器T0的高8位赋初值 TR0=1; /启动定时器T0 keyval=0x00; /按键值初始化为0 while(1) /无限循环 shui(keyval); void time0_interserve(void) interrupt 1 using 1 /定时器T0的中断编号为1,使用第一组寄存器 unsigned char sao=0; TR0=0; /关闭定时器T0 P3=0x3f; /所有行线置为低电平“0”,所有列线置为高电平“1” P0=0xe0; if(P0|0x0f!=0xef)

    11、 /列线中有一位为低电平“0”,说明有键按下 delay20ms(); /延时一段时间、软件消抖 if(P0|0x0f!=0xef) /确实有键按下 P0=0xff;P3=0xff; P36=0; /第一行置为低电平“0”(P1.0输出低电平“0”) if(P05=0) /如果检测到接P1.4引脚的列线为低电平“0” keyval=1; /可判断是S1键被按下 if(P06=0) /如果检测到接P1.5引脚的列线为低电平“0” keyval=2; /可判断是S2键被按下 if(P07=0) /如果检测到接P1.6引脚的列线为低电平“0” keyval=3; /可判断是S3键被按下 P37=0;

    12、 /第二行置为低电平“0”(P1.1输出低电平“0”) if(P05=0) /如果检测到接P1.4引脚的列线为低电平“0” keyval=1; /可判断是S5键被按下 if(P06=0) /如果检测到接P1.5引脚的列线为低电平“0” keyval=2; /可判断是S6键被按下 if(P07=0) /如果检测到接P1.6引脚的列线为低电平“0” keyval=3; /可判断是S7键被按下 sao=sao+1; if(sao=4)sao=0; P0=saomsao; switch(keyval) case 1:switch(sao)case 0:P1=ledcode0;break;case 1:

    13、P1=ledcode0;break;case 2:P1=ledcode0;break;case 3:P1=ledcode1;break; case 2:switch(sao) case 0:P1=ledcode0;break;case 1:P1=ledcode0;break;case 2:P1=ledcode2;break;case 3:P1=ledcode0;break; case 3:switch(sao) case 0:P1=ledcode2;break;case 1:P1=ledcode3;break;case 2:P1=ledcode0;break;case 3:P1=ledcode

    14、0;break; TR0=1; /开启定时器T0 TH0=0xee; /定时器T0的高8位赋初值 TL0=0x00; /定时器T0的高8位赋初值 二、 定时器或实时时钟实验1、 实验目的1) 数码管动态显示技术2) 定时器的应用3) 按键功能定义2、 完成功能要求1) 通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。2) 实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。上述二个功能至少完成一种功能。1设计功能:利用89C52RC单片机设计定时器,将按键定义为设置键、上翻键、下翻键、开始/取消键。数码管显当前设置时间与正在计时时间

    15、。可通过按键在1-99秒之间设置,按开始键启动计时,计时完成后驱动蜂鸣器发声提示。1 LED是发光二极管的英文缩写,LED显示器是由发光二极管构成的,它在单片机中的应用非常普遍。通常所说的LED显示器由7个发光二极管组成,其排列形状如图所示。此外,显示器中还有一个圆点型发光二极管以dp表示,用于小数点表示。通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。LED显示中的发光二极管共有两种连接方法:2 共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不亮。3共阴极接法:把发光二极管的阴极

    16、连在一起构成公共阴极。使用时公共阴极接地。这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。4 控制数码管驱动级的控制电路有静态式和动态式两类:5 静态驱动:它是指每个数码管都要用一个译码器译码驱动。6动态驱动:它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同。7采用动态数码管显示,可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,就是所谓的分时显示,显示所需要的硬件电路可分时复用。 共阴极 共阳极 符号与引脚 如表1为共阳极与共阴极的代码表2 设计目的1) 注重培养综合运用所学知识、独立分析和

    17、解决实际问题的能力,培养创新 意识和创新能力,并获得科学研究的基础训练;2) 了解89C52RC各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识;3) 通过软硬件设计实现定时器功能。1.3 设计任务1) 查阅相关文献资料,熟悉89C52RC芯片;2) 总体设计方案规划;3) 系统硬件设计,芯片设计及其各模块间的连线;4) 系统软件设计,用汇编语言编写程序,实现其定时器功能;5) 设计心得体会及总结。2 原理介绍 流程图程序:时钟c语言程序:#include /包含51单片机寄存器定义的头文件sbit P14=P14; /将P14位定义为P1.4引脚

    18、sbit P15=P15; /将P15位定义为P1.5引脚sbit P16=P16; /将P16位定义为P1.6引脚sbit P17=P17; /将P17位定义为P1.7引脚sbit P05=P05;sbit P06=P06;sbit P07=P07;sbit P36=P36;sbit P37=P37;sbit P35=P35; unsigned char tm=0,tf=60,o=0,u; unsigned char code ledcode10 = 0x3f, 0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x67,; /数字09的段码unsigned

    19、char code saom4=0xfe,0xfd,0xfb,0xf7;unsigned char keyval; /定义变量储存按键值void led_delay(void) unsigned char j; for(j=0;j200;j+) ; void display() P1=ledcodetf/10; /显示十位 P0=saom0; /点亮数码管DS6 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 P0=0x00; P1=ledcodetf%10; /显示个位 P0=saom1; /点亮数码管DS7 le

    20、d_delay(); /动态扫描延时 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 P0=0x00; P1=ledcodetm/10; /显示个位 P0=saom2; /点亮数码管DS7 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 P0=0x00; P1=ledcodetm%10; /显示个位 P0=saom3; /点亮数码管DS7 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 led_delay(); /动态扫描延时 P0=0x00;

    21、void delay20ms(void) unsigned char i,j; for(i=0;i100;i+) for(j=0;j60;j+) ; void main(void) EA=1; /开总中断 ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式1 TH0=0x4c; /定时器T0的高8位赋初值 TL0=0x00; /定时器T0的高8位赋初值 TR0=1; /启动定时器T0 keyval=0x00; /按键值初始化为0 while(1) /无限循环 display(); /调用按键值的数码管显示子程序 if(tf=0&tm=0) for(u=0;u9)

    22、tf=tf-10;while(P05=0); /可判断是S5键被按下 if(P06=0) /如果检测到接P1.5引脚的列线为低电平“0” if(tf0) tf=tf-1 ;while(P06=0); /可判断是S6键被按下 if(P07=0) /如果检测到接P1.6引脚的列线为低电平“0” tf=60;tm=0; while(P07=0); /可判断是S7键被按下 TR0=1; /开启定时器T0 TH0=0x4c; /定时器T0的高8位赋初值 TL0=0x00; /定时器T0的高8位赋初值 三、 双机通信实验1、 实验目的UART 串行通信接口技术应用2、 完成功能要求用两片核心板之间实现串行

    23、通信,将按键信息互发到对方数码管显示。单片机串口原理图串行口控制寄存器SCON(98H):SCON:SM0,SM1:串行口4种工作方式的选择位。 0 0 方式0:8位移位寄存器,波特率固定为 fosc/12 0 1 方式1:10位异步收发(1+8+1位), 波特率可变,按公式计算 1 0 方式2:11位异步收发(1+8+1+1位), 波特率固定=fosc x1/32或1/64 1 1 方式3:11位异步收发(1+8+1+1位), 波特率可变,按公式计算RI,TI:串行口收/发数据申请中断标志位 1 申请中断; 0 不申请中断在方式0中,第8位发送结束时,由硬件置位。在其他方式的发送停止位之前,

    24、由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询方法获得数据已发送完毕的信息,或者也可由中断的方式来发送下一个数据。TI必须由软件清0RI和TI道理相同 也需要由软件清0RB8:在方式2、3中,是收到的第9位数据。 在多机通信中,用作区别地址帧/数据帧的 标志。(奇偶校验)TB8:方式2、3中,是要发送的第9位数据。 多机通信中,TB8=0 表示发送的是数据; TB8=1 表示发送的是地址。(奇偶校验)REN:串行口接收允许控制位 = 1 表示允许接收; = 0 禁止接收。程序设计(单片机与上位机通信):#includeunsigned char tmp;v

    25、oid main(void)P1=0xff; TMOD = 0x20; / 定时器1工作于8位自动重载模式, 用于产生波特率 TH1 = 0xFD; / 波特率9600 TL1 = 0xFD; SCON = 0x50; / 设定串行口工作方式 PCON &= 0xef; / 波特率不倍增 TR1 = 1; / 启动定时器1 IE = 0x0; while(1) 四:交通灯实验1、 实验目的1) 按键、数码管、发光二极管综合应用编程技术2) 数据存储于EEPROM的技术(也可以不使用)3) 定时中断技术4) 按键中断技术2、 完成功能要求1) 对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的

    26、设定。2) 设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。3) 紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。一、设计目的1、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。2、通过交通信号灯控制系统的设计,掌握定时/计数器及中断的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。二、设计任务和要求任务:设计一个能够控制十二盏交通信号灯的模拟系统要求:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。1、东西绿灯亮,南北红灯亮 2、黄灯亮 3、东西红灯亮,南北绿灯亮 三、设计原理分析 1、首先了解实际交通灯的变化情况和规律。假设一个十字路口如上图所以,为东南西北走向。初始状态0:为东西绿灯亮,南北红灯亮;然后转状态1:东西绿灯亮黄灯亮,南北红灯亮黄灯亮;过后转状态2:东西红灯亮,南北绿灯亮;再转状态3:东西红灯亮黄灯亮,南北绿灯亮黄灯亮。一段时间后,又循环至状态0。中间可通过中断按钮产生中断,跳入中断程序执行中断。列出交通信号灯的状态表如下:(其中,1代表灯亮,0代表灯灭)状态北西南东绿黄红绿黄红绿黄红绿黄红0001100001


    注意事项

    本文(单片机课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开