{
uchar i,j,k;
switch(scan_temp) { case 'p':
photo_todisp(); break; case 'l':
letter_todisp(); break; case 'n':
num_todisp(); break; case 'c':
dztodisp(); break; default: dztodisp(); break; }
for(i=0;i for(j=0;j<8;j++) { leftoned(); //左移1点 //屏的长度 for(k=0;k display1p(); if(scan_mod != scan_temp){scan_temp=scan_mod;goto exit;} //是否接收到命令 } } } exit:; //退出标记 cldispb(); //清显示缓存 } 21 完整源程序 1,main.c 主函数 /***************************************************************** 文件清单: main.c 主函数 code_area.c 字库表 display.c 显示相关函数 com.c 串口通信相关函数 CPU含256B RAM 现分配如下: 00H -- 07FH 程序常规使用 128B 7FH -- FFH 显示缓存 128B ******************************************************************/ #include uchar Receiv_Count=0; //串口接收字节计数 uchar scan_mod; sbit R1= P0^0 ; sbit R2= P0^1; sbit G1= P0^2; sbit G2= P0^3; sbit LL1 = P0^4; sbit LL2= P0^5; sbit LL3= P0^6; 22 sbit LL4= P0^7; sbit OE= P2^3 ; sbit STR= P2^2; sbit CLK= P2^1; void main()//主函数 { //SetTime( 0x12 , 0x23 ,0x50 ); SP = 0X30; Init_com(); Send_char(&Serial_Strar_inf[0],27); //onedisp(20); while(1) { cldispb(); moveleft(20); flicker(5,5); /* GetTime(); //读DS1302 temp= ADC0832(); */ } /*********************************************** 函数名称:Interrupt_serial() 传入参数: 无 函数功能:串口通讯协议 ************************************************/ void Interrupt_serial() interrupt 4 using 1 { EA = 0; if(RI) { Serial_Int_temp[Receiv_Count]=SBUF; // Receiv_Count++; 23 } if(Receiv_Count>=4) { if(Serial_Int_temp[Receiv_Count-2]==0x0d && Serial_Int_temp[Receiv_Count-1]==0x0a) { Send_char(&Serial_Int_temp[0],Receiv_Count); if(Serial_Int_temp[0]=='#') //指令格式 { switch(Serial_Int_temp[1]) { case 'p': Send_char(&Serial_Recei_OK[0],10); //命令正确,反馈接收成功信息 break; case 'n': Send_char(&Serial_Recei_OK[0],10); //命令正确,反馈接收成功信息 break; case 'l': Send_char(&Serial_Recei_OK[0],10); //命令正确,反馈接收成功信息 break; case 'c': Send_char(&Serial_Recei_OK[0],10); //命令正确,反馈接收成功信息 break; default: Send_char(&Serial_Error[0],7); //指令错误 break; } scan_mod=Serial_Int_temp[1]; //显示内容 cldispb(); } else {Send_char(&Serial_Error[0],7);} //指令错误 } else { Send_char(&Serial_Error[0],7); //指令错误 } Receiv_Count=0; } 24 if(Receiv_Count>=39)Receiv_Count=0; } RI=0; EA = 1; } Main.c所用到的头文件源代码: (1),display.h #define __DISPLAY_H #include extern void process_disbuf(unsigned char char_num); extern void onedisp(unsigned char ttime); extern void display1p(); extern void moveleft(unsigned char sspp); extern void cldispb(void); //清显示缓存区 extern void flicker(unsigned char sspeed,unsigned char stop);//闪烁显示 //extern void display(uint disp_long,uchar disp_times,uchar effect); //extern void display(); //extern unsigned char xdata disp_buf[128]; //extern unsigned char disp_buf[32]; (2),com.h #define __COM_H #include extern void Send_char(uchar *Data_addr,uchar char_num); extern unsigned char code Serial_data[42]; extern unsigned char code Serial_Recei_OK[10]; extern unsigned char code Serial_Error[7]; extern unsigned char code Serial_Strar_inf[27]; extern void Init_com(); 25 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库LED点阵显示屏(完整源程序版) - 图文(5)在线全文阅读。
相关推荐: