資源簡介
mega16單片機實現交通燈protues仿真,12個LED,8個數碼管顯示時間。程序+原理圖

代碼片段和文件信息
#include?
#include?
#define?uchar?unsigned?char?
#define?uint?unsigned?int
uchar?moshi_flag=1;
#pragma?data:code?//數碼管碼值
const?table[]={~0x3f~0x06~0x5b~0x4f~0x66~0x6d~0x7d?~0x07
???????????~0x7f~0x6f~0x77~0x7c~0x39~0x5e~0x79~0x71};
void?delay(uint?ms)//延時函數
{
? ?uint?i;
?while(--ms)
? for(i=0;i<1154;i++);
}
void?show(uchar?j)//數碼管顯示單個管
{
?????PORTB|=BIT(0);
PORTA&=table[j];
PORTB&=~BIT(0);
PORTA|=0XFF;
PORTA&=BIT(j-1);
PORTB|=BIT(1);
PORTB&=~BIT(1);
PORTA|=0XFF;
delay(3);
}
void?show_num(uint?num)//數碼管顯示數字
{
uchar?i;
for(i=0;i<5;i++)
{
????switch?(i){
????????case?0:showgundong(num/1000i);break;
????????case?1:showgundong(num%1000/100i);break;
????????case?2:showgundong(num%100/10i);break;
????????case?3:showgundong(num%10i);break;
??????}
????}
}
void?showgundong(uchar?datuchar?num)//數碼管滾動顯示
{
??PORTB|=BIT(0);
PORTA&=table[dat];
PORTB&=~BIT(0);
PORTA|=0XFF;
PORTA&=BIT(num);
PORTB|=BIT(1);
PORTB&=~BIT(1);
PORTA|=0XFF;
delay(2);
}
uchar?key_press()//按鍵函數
{
uchar?i;
?DDRD|=0XF0;
?PORTD|=0XF0;
?DDRD&=0X0F;
?i=PIND;
?i&=0xf0;
?if(i==0xf0)
?{
??return?0;
?}
?else
?{
??return?1;
?}
}
uchar?key_scan()//檢測按鍵
{
? ??uchar?key;
? ??delay(10);
??if(key_press())
??{
???key=PIND;
???key&=0xf0;
???switch(key)
???{
case?0xb0:
?key=1;
?moshi_flag=1;
?break;
case?0x70:
?key=2;
??moshi_flag=0;
?break;
//default:key=16;
?
???}
???//while(key_press());
??}
??return?key;
}
void?main()//主函數
{
?uint?ijnumnum1=0count?=0anjian;
?DDRA=0XFF;//端口初始化
?DDRB|=BIT(0);
?DDRB|=BIT(1);
?DDRD|=BIT(PD0);
?PORTD|=BIT(PD0);
?DDRC=0XFF;
?PORTC=0XFF;
?
while(1)
{?
??anjian=key_scan();//
???show_num(num);//數碼管顯示
???delay(10);
???count++;
??if(count==50)//時間1s
??{
????count=0;
????num1++;
??}
if(moshi_flag==1)//白天模式
{
num?=?num1*100+num1;
????if(num1>=0&&num1<=30)
????{
??????if(num1>0&&num1<=26)
??????{
????????PORTC&=~BIT(0);//亮
????????PORTC|=BIT(1);//滅
????????PORTC|=BIT(2);
???????}
??????if(num1>26&&num1<=30)
??????{
????????PORTC|=BIT(0);
????????PORTC&=~BIT(1);
????????PORTC|=BIT(2);
??????}
?????PORTC&=~BIT(3);//亮
?????PORTC|=BIT(4);//滅
?????PORTC|=BIT(5);
???}
?????if(num1>30&&num1<60)
??{
??
???PORTC|=BIT(0);
???PORTC|=BIT(1);
???PORTC&=~BIT(2);?
????if(num1>30&&num1<56)
{
?????PORTC|=BIT(3);
?????PORTC&=~BIT(5);
?????PORTC|=BIT(4);
?}
?if(num1>56&&num1<60)
{
????? ?PORTC|=BIT(3);
?????PORTC&=~BIT(4);
?????PORTC|=BIT(5);
?}
?????if(num1==59)
?????num1=0;
????}
}
if(moshi_flag==0)//夜間模式,黃燈閃爍
{
?????num=0;num1=0;
?if(count>=0&&count<25)
?{
??????PORTC|=BIT(0);
?????PORTC&=~BIT(1);
?????PORTC|=BIT(2);
??????PORTC|=BIT(3);
?????PORTC&=~BIT(4);
?????PORTC|=BIT(5);
?}
?else
?{
??????PORTC|=BIT(1);
??????PORTC|=BIT(4);
?}
}
?}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????1??2011-10-01?20:23??程序\BACKUP\lesson2.c.111001202336
?????文件????????116??2011-10-01?20:24??程序\BACKUP\lesson2.c.111001202452
?????文件????????195??2011-10-01?20:26??程序\BACKUP\lesson2.c.111001202622
?????文件????????240??2011-10-01?20:30??程序\BACKUP\lesson2.c.111001203052
?????文件????????257??2011-10-01?20:32??程序\BACKUP\lesson2.c.111001203232
?????文件????????271??2011-10-01?20:32??程序\BACKUP\lesson2.c.111001203240
?????文件????????334??2011-10-01?20:38??程序\BACKUP\lesson2.c.111001203836
?????文件????????334??2011-10-01?20:39??程序\BACKUP\lesson2.c.111001203952
?????文件????????374??2011-10-01?20:41??程序\BACKUP\lesson2.c.111001204154
?????文件????????374??2011-10-01?20:44??程序\BACKUP\lesson2.c.111001204440
?????文件????????376??2011-10-01?20:44??程序\BACKUP\lesson2.c.111001204450
?????文件????????379??2011-10-01?20:46??程序\BACKUP\lesson2.c.111001204618
?????文件????????397??2011-10-01?20:47??程序\BACKUP\lesson2.c.111001204704
?????文件????????394??2011-10-01?20:47??程序\BACKUP\lesson2.c.111001204752
?????文件????????392??2011-10-01?20:48??程序\BACKUP\lesson2.c.111001204844
?????文件????????392??2011-10-01?20:49??程序\BACKUP\lesson2.c.111001204910
?????文件????????392??2011-10-01?20:50??程序\BACKUP\lesson2.c.111001205008
?????文件????????392??2011-10-01?20:50??程序\BACKUP\lesson2.c.111001205016
?????文件????????394??2011-10-01?20:51??程序\BACKUP\lesson2.c.111001205114
?????文件????????394??2011-10-01?20:51??程序\BACKUP\lesson2.c.111001205144
?????文件????????394??2011-10-01?20:52??程序\BACKUP\lesson2.c.111001205222
?????文件????????392??2011-10-01?20:52??程序\BACKUP\lesson2.c.111001205228
?????文件????????393??2011-10-01?20:53??程序\BACKUP\lesson2.c.111001205302
?????文件????????544??2011-10-01?20:55??程序\BACKUP\lesson2.c.111001205514
?????文件????????547??2011-10-01?20:55??程序\BACKUP\lesson2.c.111001205524
?????文件????????548??2011-10-01?20:56??程序\BACKUP\lesson2.c.111001205622
?????文件????????545??2011-10-01?20:56??程序\BACKUP\lesson2.c.111001205656
?????文件????????547??2011-10-01?20:57??程序\BACKUP\lesson2.c.111001205708
?????文件????????533??2011-10-01?20:57??程序\BACKUP\lesson2.c.111001205742
?????文件????????420??2011-10-01?20:58??程序\BACKUP\lesson2.c.111001205826
............此處省略164個文件信息
評論
共有 條評論