历史上的今天
今天是:2024年11月11日(星期一)
2020年11月11日 | 单片机交通灯PCB板图与仿真源码(MAX7219+数码管显示)
2020-11-11 来源:51hei



单片机交通灯源程序如下:
#include #include #define uchar unsigned char #define uint unsigned int #define DIG0 0x01 // 定义数码管1 #define DIG1 0x02 // 定义数码管2 #define DIG2 0x03 // 定义数码管3 #define DIG3 0x04 // 定义数码管4 void delay(uint i); void T0_init(); void MAX7219(uchar addr,uchar num); void MAX7219_init(); //MAX7219初始化 void display(); sbit DIN=P3^0; //连接MAX7219 DIN引脚 sbit LOAD=P3^1; //连接MAX7219 LOAD 引脚 sbit CLK=P3^2; //连接MAX7219 CLK 引脚 sbit G1=P0^0; //南北红绿灯 sbit Y1=P0^1; sbit R1=P0^2; sbit G2=P1^0; //东西红绿灯 sbit Y2=P1^1; sbit R2=P1^2; uchar NS_S,NS_G,EW_S,EW_G; uchar NS,EW; uchar temp=0,i; uchar code table[10]= {0x7e,0x30,0x6d,0x79,0x33, 0x5b,0x5f,0x70,0x7f,0x7b}; //共阴级数码管数组 void delay(uint i) { uint j; for(j=0;j} void T0_init() { //装初值10MS TMOD=0X01; TH0=0XD8; TL0=0XF0; ET0=1; TR0=1; } void MAX_write(uchar ch) //以8位一个字节进行写值 { uchar j,ads; for(j=0;j<8;j++) //8位 { ads=ch&0x80; //取最高位 CLK = 0; //时钟线置低 if(ads) DIN = 1; else DIN = 0; ch=ch<<1; //左移一位 CLK=1; //上升沿,DIN的数据写入到7219 } } void MAX7219(uchar addr, uchar num) //写地址,写数据 { LOAD = 0; _nop_(); MAX_write(addr); _nop_(); MAX_write(num); _nop_(); LOAD = 1; //锁存 } void MAX7219_init() { MAX7219(0x0c,0x01); //正常状态 MAX7219(0x0b,0x03); //设置扫描范围DIG0-3 MAX7219(0x0a,0x05); //设置亮度11/32 MAX7219(0x09,0x00); //采用译码方式 ,不译码 } void display() { NS_S=NS/10; //南北十位,个位 NS_G=NS%10; EW_S=EW/10; //东西十位,个位 EW_G=EW%10; MAX7219(DIG0,table[NS_S]); //南北十位,个位 MAX7219(DIG1,table[NS_G]); MAX7219(DIG2,table[EW_S]); //东西十位,个位 MAX7219(DIG3,table[EW_G]); } void T0_(void)interrupt 1 { temp++; TH0=0XD8; TL0=0XF0; if(temp==100) { temp=0; NS--; EW--; if((NS==0)&&(EW==3)) { NS=3; EW=3; i=1; } if((NS==0)&&(EW==0)&&(i==1)) { NS=83; EW=80; i=2; } if((NS==3)&&(EW==0)) { NS=3; EW=3; i=3; } if((NS==0)&&(EW==0)&&(i==3)) { NS=60; EW=63; i=4; } } display(); } void main() { T0_init(); MAX7219_init(); EA=1; NS=60; //初始南北通行60秒 EW=63; R2=0,G1=0; //南北绿灯亮,东西红灯亮 while (1) { uint k; display(); switch(i) { case 1: R2=1,G1=1; //关闭南北绿灯,东西红灯 Y1=0,Y2=0; //黄灯闪烁 for(k=0;k<3;k++) { Y1=~Y1; Y2=~Y2; delay(10000);
史海拾趣
|
RF工程师的音:urgent:某著名半导体外企新出来的RF 职位(内部推荐) 某著名外企新出来的RF 职位, 不过指明了公司名, 注意不符合请勿浪费资源,同时请注意工作地点有:上海,深圳,北京,成都,请在简历中注明申请去的地方。紧急招募,越开越好。请发中英文简历到 herofighter88@gmail.com 除Technical Hub Manager, ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 Xilinx FPGA 和目标设计平台可以满足面板、存储器和视频/调谐器板接口的各种 I/O 要求,包括高速 LVDS、RSDS、PPDS、DisplayPortTM 和 V-by-OneTM。 Xilinx 还能满足新兴技术所需的清晰图像 ...… 查看全部问答> |
|
手把手教你写程序 内容:从最简单的程序入手,手把手教你写程序,让同学们拿到一个复杂的程序或者任务,能快速找到切入点,写出程序,再在此基础上优化程序。当拿到一个单片机任务时,不要急于动手写程序,先仔细分析它的以下几个点: 1、它要 ...… 查看全部问答> |
|
求助:arm linux驱动,要用到singal()函数和setitimer函数,应该包含哪些头文件? 2.6.22的内核, 要用到singal()函数和setitimer()函数,应该包含哪些头文件? #include #include 包含上面两个头文件后还是提示说singal和setitimer未定义,仔细看了下,linux/signal.h中没有signal函数的声明。 高手帮忙看看,谢谢… 查看全部问答> |
|
大家好。小弟要写一篇硕士毕业论文。内容是关于ZIGBEE的智能家居系统。 我看了一些1,2年前的文献,他们大都采用星型的拓扑结构。 我想问下,如果采用星型的话,那么在房间内的那些终端节点,会不会因为墙的阻挡,而在与中央的主控制器的通信过程 ...… 查看全部问答> |
|
找到一个memwatch工具,编译单个文件时只要在编译语句中定义memwatch相关的变量就好,但是编译大量的文件,makefile要怎么改;还有memwatch能否检测内核的内存泄露问题,请高手指教!!!… 查看全部问答> |
|
系统用的是S3C2440 build log 报错如下: BUILD_MARKER:LINK_STATIC_LIBRARY_END Copying fulllibc.* NMAKE : fatal error U1073: don\'t know how to make \'showerr\' Stop. 请问各位高手是何原因啊?… 查看全部问答> |
|
我用了一个虚拟打印机驱动,把word文档转化为bmp图片,一旦检测到有图片产生,就会弹出对话框处理当前文档的图片,但是,当word文档前面几页没有页码,后面有页码时,虚拟打印机却把前面没有页码的识别为一个文档,后面的识别为一个文档,弹出两次 ...… 查看全部问答> |




