本科毕业论文---单片机设计全套.doc

上传人:pu****.1 文档编号:545073568 上传时间:2023-11-25 格式:DOC 页数:46 大小:5.09MB
返回 下载 相关 举报
本科毕业论文---单片机设计全套.doc_第1页
第1页 / 共46页
本科毕业论文---单片机设计全套.doc_第2页
第2页 / 共46页
本科毕业论文---单片机设计全套.doc_第3页
第3页 / 共46页
本科毕业论文---单片机设计全套.doc_第4页
第4页 / 共46页
本科毕业论文---单片机设计全套.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《本科毕业论文---单片机设计全套.doc》由会员分享,可在线阅读,更多相关《本科毕业论文---单片机设计全套.doc(46页珍藏版)》请在金锄头文库上搜索。

1、单片机设计一、使用KEIL的步骤3二、单片机最小系统的设计62.1 程序代码62.2 Keil仿真72.3 Protues仿真7三、流水灯循环点亮73.1 原理介绍83.2 程序代码93.3 Keil结果展示103.4 protues仿真11四、心形灯闪烁134.1 程序代码134.2 Protues仿真38五、 最简单电子秒表01405.1 程序代码405.2 Keil仿真435.3 Protues仿真44六、电子秒表02456.1 程序代码456.2 Keil仿真476.3 Protues仿真48七、 电子秒表0348晶振在protues中的符号:CRYSTAL一、使用KEIL的步骤010

2、203040506二、单片机最小系统的设计2.1 程序代码#include#define uint unsigned int#define uchar unsigned char / 定义头文件sbit P2_1=P21; / 定义P2_1为P2口的第1位,以便进行位操作。 void delay(uint z) / 定义延时函数 uchar x,y;for(x=0;xz;x+)for(y=0;y121;y+); /使用两个嵌套的for语句来实现延时,先赋值x=0,判断一下xz,若为真则执行下一个for语句,赋值y=0,判断一下y121,若为真则执行下一条,若无下一条则执行y+,直到y121为假

3、,则在执行x+,在判断一下xz,若为真则再执行一次y的for语句,为假则跳出循环,结束。 void main() / 定义主函数 P2_1=0; / 将P2-1口赋值为0,即给予P2_1一个低电平,在电路中led灯另一端接VCC高电平,给一低电平即将LED灯导通,使其亮。 2.2 Keil仿真2.3 Protues仿真三、流水灯循环点亮3.1 原理介绍3.2 程序代码#include#include#define uchar unsigned char#define uint unsigned int /加黑的都是定义头文件void DelayMS(uint x)/延时uchar i;whil

4、e(x-)for(i=0;i120;i+); /采用for循环来实现延时void main() /主程序uchar i;P2=0x01;while(1)for(i=0;i7;i+) / i=0,判断i7,再执行P2=_crol_(P2,1),之后再执行i+P2=_crol_(P2,1); /以位的形式将P2左循环移动1位DelayMS(150);for(i=0;i7;i+)/ / i=0,判断i7,再执行P2=_crol_(P2,1),之后再执行i+P2=_cror_(P2,1); /以位的形式将P2右循环移动1位DelayMS(150); /利用循环移位函数_crol_(左循环)和_cror

5、_(右循环)形成来回滚动的效果a=0xA5; b=_crol_(a,1); /*bnowis0xD2*/unsignedchar_crol_(unsignedcharc,unsignedcharb);/使无符号字符循环向左移b位unsignedchar_cror_(unsignedcharc,unsignedcharb);/使无符号字符循环向右移动b位功能:_crol_,_irol_,_lrol_以位形式将变量val循环左移n位。3.3 Keil结果展示3.4 protues仿真010203四、心形灯闪烁4.1 程序代码#include #defineuintunsigned int#defi

6、neucharunsigned charuchar code table0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f / LED从低位往高位移 uchar code table1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe; / LED从高位往低位移uchar code table2=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00; / LED从1个亮到8个都点亮(低位往高位移)uchar code table3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0

7、0; / LED从1个亮到8个都亮(高位往低位移)uchar code table4=0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff; /led从8个全亮到一个不亮(从低位到高位)uchar code table5=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff; /led从8个全亮到一个不亮(从高位到低位)uchar code table6=0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e; / 从低位往高位移(最低位始终为0)uchar code table7=0x7f,0x3

8、f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e; / 从高位往低位移(最高位始终为0)uchar i,j;/定义循环变量uint tt=70;/定义时间函数void delay(uint time) /定义延时函数uint x,y;for(x=time;x0;x-)for(y=110;y0;y-); /使用两个嵌套的for语句来实现延时void disp0()/定义状态0 所有led灯闪烁3 次for(i=0;i3;i+) / for 循环P0=0x00; P2=0x00; P3=0x00; P1=0x00; /led灯一端接VCC,另一端使P0/P1/P2/P3为0即低电平,

9、则led灯导通,led亮delay(300);P0=0xff; P2=0xff; P3=0xff; P1=0xff; /led灯一端接VCC,另一端使P0/P1/P2/P3为0即高电平,则led灯截止,led灭delay(300);/整个状态实现了led灯的亮灭闪烁3次void disp1()/ 状态1 LED逆时针转一圈for(i=0;i8;i+)P2=table1i; /table1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe; LED从高位往低位移(P2.8为高位,结合图可知)delay(100);P2=0xff; / 给P2高电平,P2截止,P2全灭

10、for(i=0;i8;i+)P3=table1i; /LED从高位往低位移(P3.8为高位,结合图可知)delay(100);P3=0xff; / 给P3高电平,P3截止,P3全灭for(i=0;i8;i+)P1=table1i; /LED从高位往低位移(P3.8为高位,结合图可知) delay(100);P1=0xff; / 给P1高电平,P1截止,P1全灭for(i=0;i8;i+) P0=table0i; /table0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f LED从低位往高位移 delay(100);P0=0xff; / 给P0高电平,P0截止

11、,P0全灭void disp2()/状态2 LED顺时针转一圈for(i=0;i8;i+)P0=table1i;delay(100);P0=0xff;for(i=0;i8;i+)P1=table0i;delay(100);P1=0xff;for(i=0;i8;i+)P3=table0i;delay(100);P3=0xff;for(i=0;i8;i+)P2=table0i;delay(100);P2=0xff; void disp3() /状态3 4 个LED灯同时顺时、逆时针移动1/4圈for(i=0;i8;i+)P0=table1i; /P0组 LED从高位往低位移P1=table1i;

12、/P1组 LED从高位往低位移P2=table1i; /P2组 LED从高位往低位移P3=table0i; / P3组LED从低位往高位移 delay(100);for(i=0;i8;i+)P0=table0i; / P0组LED从低位往高位移 P1=table0i; / P1组LED从低位往高位移 P2=table0i; / P2组LED从低位往高位移 P3=table1i; /P3组 LED从高位往低位移delay(100);P3=0xff; P0=0xff; /P3,P0全组都灭void disp4()/ 状态4 2个LED同时顺时针移动半圈for(i=0;i8;i+)P2=table1i; /P2组 LED从高位往低位移P1=table1i; /P1组 LED从高位往低位移delay(100);P2=0xff; P1=0xff;for(i=0;i8;i+)P3=table1i; /P3组 LED从高位往低位移P0=table0i; / P0组LED从低位往高位移delay(100);P3=0xff; P0=0xff; /P3,P0全组都灭

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号