首页 单片机 交通灯课程设计 代码

单片机 交通灯课程设计 代码

举报
开通vip

单片机 交通灯课程设计 代码#include #include #define uchar unsigned char #define uint unsigned int sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit RS=P2^5; //1602数据/命令选择引脚 sbit key1=P3^2; sbit key2=P3^4; uchar time=0,cnt=0; /*******************************************...

单片机 交通灯课程设计  代码
#include #include #define uchar unsigned char #define uint unsigned int sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit RS=P2^5; //1602数据/命令选择引脚 sbit key1=P3^2; sbit key2=P3^4; uchar time=0,cnt=0; /**********************************************************/ void delay1(int ms) { unsigned char y; while(ms--) { for(y = 0; y<250; y++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } /******************************************************************** * 名称: delay2() * 功能: 延时,延时时间大概为140US。 * 输入: 无 * 输出: 无 ***********************************************************************/ void Delay2() { int i,j; for(i=0; i<=10; i++) for(j=0; j<=2; j++) ; } /******************************************************************** * 名称: enable(uchar del) * 功能: 1602命令函数 * 输入: 输入的命令值 * 输出: 无 ***********************************************************************/ void enable(uchar del) { P0 = del; RS = 0; RW = 0; E = 0; Delay2(); E = 1; Delay2(); } /******************************************************************** * 名称: write(uchar del) * 功能: 1602写数据函数 * 输入: 需要写入1602的数据 * 输出: 无 ***********************************************************************/ void write(uchar del) { P0 = del; RS = 1; RW = 0; E = 0; Delay2(); E = 1; Delay2(); }/******************************************************************** * 名称: L1602_init() * 功能: 1602初始化,请参考1602的资料 * 输入: 无 * 输出: 无 ***********************************************************************/ void L1602_init(void) { enable(0x01); enable(0x38); enable(0x0c); enable(0x06); enable(0xd0); } /******************************************************************** * 名称: L1602_char(uchar hang,uchar lie,char sign) * 功能: 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下L1602_char(1,5,'b') * 输入: 行,列,需要输入1602的数据 * 输出: 无 ***********************************************************************/ void L1602_char(uchar hang,uchar lie,char sign) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); write(sign); } /******************************************************************** * 名称: L1602_string(uchar hang,uchar lie,uchar *p) * 功能: 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下 L1602_string(1,5,"ab cd ef;") * 输入: 行,列,需要输入1602的数据 * 输出: 无 ***********************************************************************/ void L1602_string(uchar hang,uchar lie,uchar *p) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); while(1) { if(*p == '\0') break; write(*p); p++; } } /******************************************************************* 主函数 ********************************************************************/ void main(void) { uchar night=0,urgent=0,temp=0xff; L1602_init(); //初始化LCD TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; while(1) { if(key1==0) { L1602_init(); while(key1==0); urgent++; if(urgent==2) urgent=0; } if(key2==0) { L1602_init(); while(key2==0); night++; if(night==2) night=0; } if(urgent==1) { TR0=0; L1602_init(); L1602_string(1,1,"urgent"); P0=0x3f; delay1(100); } if(night==1) { TR0=0; L1602_init(); L1602_string(1,1,"night"); if(temp==0xff) temp=0xcf; else temp=0xff; P0=temp; delay1(150); } if(urgent==0 && night==0) TR0=1; } } /***************************************** 定时中断 ******************************************/ void t0(void) interrupt 1 { uchar a; TH0=(65536-10000)/256; TL0=(65536-10000)%256; cnt++; if(cnt==100) { cnt=0; time++; if(time==60) time=0; if(time>=0 && time<25) { a=24-time; L1602_string(1,1," green"); L1602_char(1,7,a/10+48); L1602_char(1,8,a%10+48); P0=0x1b; } if(time>=25 && time<30) { P0=0x6f; } if(time>=30 && time<55) { a=54-time; L1602_string(1,1,"green"); L1602_char(1,7,a/10+48); L1602_char(1,8,a%10+48); P0=0xb7; } if(time>=55 && time<60) { P0=0x9f; } } }
本文档为【单片机 交通灯课程设计 代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_721103
暂无简介~
格式:doc
大小:27KB
软件:Word
页数:13
分类:理学
上传时间:2019-06-05
浏览量:15