基于单片机的交通灯设计(含开题报告 文献综述 英文翻译) - 图(8)

2019-08-30 21:01

:基于单片机的交通灯设计 致 谢

在本次设计论文完成之际,首先要向我的指导老师霍老师表示真挚的谢意。在设计过程、论文写作期间,正是霍老师的指点,我才能顺利完成设计。

其次,还要感谢大学四年各位老师的悉心教导,本设计是围绕单片机而设计的,需要用到数电、模电、电路设计、C语言等方方面面的知识。在老师的指导下,同学的帮助下,加上个人的努力,本设计才能顺利完成。

由于本人学识有限,设计中、论文中难免有错,欢迎各位老师对本设计提出宝贵的意见。

32

附录1

源程序:

#include #include #define key P3 #define ledout P1 #define count1 120 #define count2 20 sbit sngreen= P1^1; sbit ewgreen= P1^5; void model0(); void model1(bit k); u8 scan_key();

void delayms(u8 ms); void tim_init(); u8 j=0;u8 flag; u8 numb=count1;

u8 led_buf[2]={0xed,0xde}; u8 disp_buf[4]={16,16,6,0}; bit modflag=0; bit dirflag=0; void main() {u8 keybuf;

ledout=led_buf[dirflag]; led_t2init(disp_buf); tim_init(); while(1)

{keybuf=scan_key(); switch(keybuf)

{case 0x0f: break;

case 0x0e: model0();break; case 0x0d: model1(0);break; case 0x0b: model1(1);break; default:break; } } } u8 scan_key() {u8 keybuf; key=0xff;

keybuf=key&0x0f; if(keybuf!=0x0f) {delayms(20);

if(keybuf!=(key&0x0f)) keybuf=0x0f;

:基于单片机的交通灯设计 }

return(keybuf); }

void model0() {if(modflag!=0) {modflag=0; numb=count2;

TR1=1;ET1=1; flag=1; } } void model1(bit k) {u8 i;

if(modflag==0) {modflag=1; if(dirflag==k)

{TR1=0;ET1=0; flag=0; ledout=led_buf[k]; for(i=0;i<4;i++) disp_buf[i]=9; }

else numb=count2; }

else if((flag==0)&&(dirflag!=k)) {ledout=led_buf[k];

dirflag=~dirflag; } } void tim_init() {TH1=0X3C; TL1=0XB0; TMOD=0X11; ET1=1;

TR1=1; flag=1; }

void t1_50ms(void) interrupt 3 {TH1=0X3C; TL1=0XB0; if(++j==10)

{unsigned char count,i; j=0;

count=numb>>1; disp_buf[0]=16; disp_buf[1]=16;

disp_buf[2]=count/10; disp_buf[3]=count; if(numb<=20)

{if(dirflag==0)sngreen=~sngreen; else ewgreen=~ewgreen;

34

} numb--; if(numb==0)

{if(modflag==1)

{TR1=0;ET1=0; flag=0; for(i=0;i<4;i++) disp_buf[i]=9; } numb=count1; dirflag=~dirflag; ledout=led_buf[dirflag]; } } } void delayms(u8 ms) {u8 i;

while(ms--)

{for(i=0;i<123;i++);} }

数码管驱动子程序: #define u8 unsigned char #define u16 unsigned int #define led_seg P0 #define led_dig P2 #define led_num 4

void led_t2init(u8 *dispbuf);

code u8 led_table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; u8 led_digset=0xfe; u8 led_dignum=0; u8 *led_dispbuf;

void led_t2init(u8 *dispbuf) {

led_dispbuf=dispbuf; EA=1; TH0=0xfe; TL0=0x0c; ET0=1; TR0=1;

TMOD=0x11; }

void led_t2(void) interrupt 1 {u8 i;

TH0=0xfe; TL0=0x0c; led_seg=0xff;

:基于单片机的交通灯设计 led_dig=0xff;

led_dig=led_digset;

i=*(led_dispbuf+led_dignum); i=led_table[i]; led_seg=i;

led_dignum++; led_digset<<=1; led_digset|=0x01;

if(led_dignum==led_num) {led_dignum=0; led_digset=0xfe; } }

36


基于单片机的交通灯设计(含开题报告 文献综述 英文翻译) - 图(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:计算机组成原理2013

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: