中国地质大学江城学院毕业设计(论文)
附 录
1 系统原理图
S1B109S2B C8E7D6CEDS1LEDDR G Y D4D5D6D9D8D7 YGR S1FAdpG1G GdpAF23A4F5S2 LEDB GAFS4 G1dp2A3F4S15 D12S2BCED 109876S3BCED LEDBDECBS3 D6E7C8B9S210 54321 S4FAG S2FA5432D11D10 RGYY G 1GS1FAdpGR 6D1D2D3 DECBS2LEDD78910DECBVCCS1Q19012SPEAKER 2K4LS 4qiehuan 12
34K6R5 2.2K 1dec P30102RP2 R8R79R68R57R46R35R24R13COM21 VCC ABCDEFG1817161514131211 RP110K(A8)P2.0(A9)P2.1(A10)P2.2(A11)P2.321(A12)P2.4G122(A13)P2.5Y123(A14)P2.6R124(A15)P2.7G225Y226ALE/PROGR2PSEN2728EA/VPP(AD7)P0.729(AD6)P0.630(AD5)P0.5VCC31R8(AD4)P0.432R79(AD3)P0.3G033R68(AD2)P0.2F034R57(AD1)P0.1E035R46(AD0)P0.0D036R35C037R24B038COMR13A0VCC392401VCC VCC74HC24512MHzGNDXTAL1XTAL2P3.7(RD)20P3.6(WR)19 C322 addK5AT89C51U1 642 18P3.5(T1)17P3.4(T0)P3.3(INT1)16P3.2(INT0)15P3.1(TXD)14P3.0(RXD)131211RST10P1.7P1.69P1.58P1.47P1.36P1.25P1.14P1.0321 2 34Y1 12C222 34okK7 12 P30 K3 34nbS4S3S2S1 2 12 34dx553311S12 B0B1B2B3B4B5B6B7A0A1A2A3A4A5A6A7DIRE3456789A0B0C0D0E0F0G0191 642K0 4SY2 4K2 12 P11 POWER 1 VCCR 1C4+ 23 3 310uF 34stopR2 10KK1 1 3
21
中国地质大学江城学院毕业设计(论文)
2 实物图
22
中国地质大学江城学院毕业设计(论文)
3 程序
#include
#define uchar unsigned char #define uint unsigned int
uchar data buf[4];
uchar data sec_dx=20; //东西数默认 uchar data sec_nb=30; //南北默认值
uchar data set_timedx=20; //设置东西方向的时间 uchar data set_timenb=30; //设置南北方向的时间 int n;
uchar data countt0;//定时器0中断次数 //定义5组开关
sbit k4=P3^7; //切换方向 sbit k1=P3^5; //时间加 sbit k2=P3^6; //时间减 sbit k3=P3^4; //确认 sbit k5=P3^1; //禁止 sbit k6=P1^5; //夜间模式
// P3^2 //只允许东西方向通行,中断0 // P3^3 //只允许南北方向通行,中断1
sbit Red_nb=P2^6; //南北红灯标志 sbit Yellow_nb=P2^5; //南北黄灯标志 sbit Green_nb=P2^4; //南北绿灯标志
sbit Red_dx=P2^3; //东西红灯标志 sbit Yellow_dx=P2^2; //东西黄灯标志 sbit Green_dx=P2^1; //东西绿灯标志
sbit Buzz=P3^0; bit Buzzer_Indicate;
bit set=0; //调时方向切换键标志 =1时,南北,=0时,东西 bit dx_nb=0; //东西南北控制位 bit shanruo=0;
uchar code table[11]={ //共阴极字型码 0x3f, //--0 0x06, //--1 0x5b, //--2 0x4f, //--3 0x66, //--4 0x6d, //--5 0x7d, //--6 0x07, //--7
23
中国地质大学江城学院毕业设计(论文)
0x7f, //--8 0x6f, //--9
0x00 //--NULL };
//函数的声明部分
void delay(int ms); //延时子程序 void key(); //按键扫描子程序 void key_to1(); //键处理子程序 void key_to2(); void key_to3();
void display(); //显示子程序 void logo(); //开机LOGO void Buzzer(); //主程序 void main() {
TMOD=0X11; //定时器设置
TH0=0X3C; //定时器0置初值 0.05S TL0=0XB0;
EA=1; //开总中断
ET0=1; //定时器0中断开启 TR0=1; //启动定时0 EX0=1; //开外部中断0 EX1=1; //开外部中断1 logo();
P2=0Xc3; // 开始默认状态,东西绿灯,南北黄灯 sec_nb=sec_dx+5; //默认南北通行时间比东西多5秒 while(1) {
key(); //调用按键扫描程序 display(); //调用显示程序 Buzzer(); } }
//函数的定义部分
void key(void) //按键扫描子程序 {
if(k1!=1) //当K1(时间加)按下时 {
display(); //调用显示,用于延时消抖 if(k1!=1) {
TR0=0; //关定时器 shanruo=0;
24
中国地质大学江城学院毕业设计(论文)
P2=0x00; if(set==0)
set_timedx++; //南北加1S else
set_timenb++; //东西加1S if(set_timenb==100) set_timenb=1;
if( set_timedx==100)
set_timedx=1; //加到100置1
sec_nb=set_timenb ; //设置的数值赋给东西南北 sec_dx=set_timedx; // do {
display(); }
while(k1!=1); } }
if(k2!=1) //当K2(时间减)按键按下时 {
display(); //调用显示,用于延时消抖 if(k2!=1) {
TR0=0; //关定时器 shanruo=0; P2=0x00; if(set==0)
set_timedx--; //南北减1S else
set_timenb--; //东西减1S if(set_timenb==0) set_timenb=99; if( set_timedx==0 )
set_timedx=99; //减到1重置99
sec_nb=set_timenb ; //设置的数值赋给东西南北 sec_dx=set_timedx; do {
display(); //调用显示,用于延时 }
while(k2!=1); } }
25