📄 signal_show.lst
字号:
648 }*/
649 /***************************************************************
650 *名称:showsine (void)
651 *描述:显示采样的结果,采64个点但显示256点
652 *参数:xr_temp[]显示数组,N_temp数组元素个数,
653 start_add图形开始的x地址,last上次显示最后一个元素
654 *返回:
655 ****************************************************************/
656 /*void showsine (uchar xr_temp[],uchar N_temp,uchar start_add,uchar last)
657 {
658 uchar i ;
659 WriteD(start_add,xr_temp[1]>>1);
660 vector(start_add-1,last>>1,xr_temp[1]>>1);
661 for(i=2;i<N_temp;i++)
662 {
663 WriteD(i-1+start_add,xr_temp[i]>>1);
664 vector(i-2+start_add,xr_temp[i-1]>>1,xr_temp[i]>>1);
665 }
666 }*/
667 void led_display(uchar i)
668 {
669 1 uchar j,mask;
670 1 mask=0x01;
671 1 for(j=0;j<8;j++){
672 2 LED_CLK=0;
673 2 LED_DAT=( (LED_FONT[i]) & mask);
674 2 mask<<=1;
675 2 LED_CLK=1; //上升沿移位
C51 COMPILER V7.06 SIGNAL_SHOW 03/26/2007 17:35:00 PAGE 12
676 2 }
677 1 }
678 void refresh_led()
679 {
680 1 led_display(10);
681 1 led_display(value[0]);
682 1 led_display(value[1]);
683 1 led_display(value[2]);
684 1 led_display(value[3]);
685 1 led_display(value[4]);
686 1 }
687 void init_interrupt()
688 {
689 1 EA=0;
690 1 EX1=1;
691 1 PX1=1;
692 1 IE1=0;
693 1 IT1=1; //外部中断1为跳变触发方式
694 1
695 1 PX0=1;
696 1 EX0=1;
697 1 IE0=0;
698 1 IT0=1; //外部中断0为跳变触发方式
699 1 }
700 void show_f(unsigned int freq)
701 {
702 1 unsigned int idata time,temp;
703 1 uchar x,y;
704 1 time = 25000/freq;
705 1 x=10;y=162;
706 1 temp=time/1000;
707 1 show_num(x,y,CC000+(temp<<4));
708 1 x=x+8;
709 1 temp=(time%1000)/100;
710 1 show_num(x,y,CC000+(temp<<4));
711 1 x=x+8;
712 1 temp=(time%100)/10;
713 1 show_num(x,y,CC000+(temp<<4));
714 1 x=x+8;
715 1 temp=time%10;
716 1 show_num(x,y,CC000+(temp<<4));
717 1 }
718 void main()
719 {
720 1 unsigned int idata k=0 ;
721 1 unsigned int idata x,y;
722 1 unsigned char idata value_index;
723 1 unsigned int idata freq,freq_2;
724 1 bit flag_grid=0;
725 1
726 1 lcd_a0=1;
727 1 lcd_wr = 1 ;
728 1 initall() ;
729 1 showchin() ;
730 1 refresh_led();
731 1 show_f(5000);
732 1 init_interrupt();
733 1
734 1 TMOD = 0x01;// 定时器相关设置
735 1 ET0 = 1;
736 1 TR0 = 1;
737 1
C51 COMPILER V7.06 SIGNAL_SHOW 03/26/2007 17:35:00 PAGE 13
738 1 k=1;
739 1 num = 0;
740 1 value_index=0;
741 1 Adc_cs = 0 ;
742 1 lcd_wr = 0 ;
743 1 lcd_wr = 1 ;
744 1 Adc_cs = 1 ;
745 1 EX1=1;
746 1 TH0 = dH;
747 1 TL0 = dL;
748 1 ET0=1;
749 1 EA = 1;
750 1
751 1 clear_1(8,0);
752 1 clear_1(16,0);
753 1 clear_1(24,0);
754 1
755 1 clear_1(32,0);
756 1 x=32;y=25;
757 1 clear(x,y,21);
758 1
759 1 while(1)
760 1 {
761 2 if(key_pressed==ON)
762 2 {
763 3 EX0=0;
764 3 switch(key_no)
765 3 {
766 4 case key0:
767 4 case key1:
768 4 case key2:
769 4 case key3:
770 4 case key4:
771 4 case key5:
772 4 case key6:
773 4 case key7:
774 4 case key8:
775 4 case key9:
776 4 if(value_index<5)
777 4 {
778 5 value[value_index]=key_no;
779 5 value_index++;
780 5 }
781 4 refresh_led();
782 4 break;
783 4 case key_enter:
784 4 freq=value[0]*10000+value[1]*1000+value[2]*100+value[3]*10+value[4];
785 4 if(freq>7000)
786 4 {
787 5 freq=7000;
788 5 freq_2=0xff71;
789 5 value[0]=0;
790 5 value[1]=7;
791 5 value[2]=0;
792 5 value[3]=0;
793 5 value[4]=0;
794 5 }
795 4 else if(freq<50)
796 4 {
797 5 freq=50;
798 5 freq_2=0xb1df;
799 5 value[0]=0;
C51 COMPILER V7.06 SIGNAL_SHOW 03/26/2007 17:35:00 PAGE 14
800 5 value[1]=0;
801 5 value[2]=0;
802 5 value[3]=5;
803 5 value[4]=0;
804 5 }
805 4 else freq_2=0xffff-(1000000/freq);
806 4 refresh_led();
807 4 dH=freq_2>>8;
808 4 dL=(uchar)freq_2;
809 4 show_f(freq);
810 4 value_index=0;
811 4 break;
812 4 case key_mod:
813 4 flag_grid=!flag_grid;
814 4 if(flag_grid)DrawGrid();
815 4 else{
816 5 initram_2();
817 5 DrawFrame();
818 5 }
819 4 default :break;
820 4 }
821 3 key_pressed=OFF;
822 3 EX0=1;
823 3 }
824 2
825 2 if(k<=num)
826 2 {
827 3 lcd_cs=0;
828 3 turnon();
829 3 WriteD(k+24,(x_data[k]>>1)+40);
830 3
831 3 if(k%8==0)
832 3 {
833 4 x=x+8;
834 4 y=25;
835 4 }
836 3 else y=y+21;
837 3
838 3 clear(x,y,21);
839 3 if(k==127)
840 3 {
841 4 lcd_cs=0;
842 4 turnon();
843 4 clear_1(24,0);
844 4 num = 0;
845 4 Adc_cs = 0 ;
846 4 lcd_wr = 0 ;
847 4 lcd_wr = 1 ;
848 4 Adc_cs = 1 ;
849 4 EX1=1;
850 4 TH0 = dH;
851 4 TL0 = dL;
852 4 ET0=1;
853 4 EA = 1;
854 4
855 4 clear_1(8,0);
856 4 clear_1(16,0);
857 4 clear_1(24,0);
858 4 clear_1(32,0);
859 4 clear_1(40,0);
860 4
861 4 x=32;y=25;
C51 COMPILER V7.06 SIGNAL_SHOW 03/26/2007 17:35:00 PAGE 15
862 4 clear(x,y,21);
863 4
864 4 WriteD(24,(x_data[0]>>1)+40);
865 4 y=y+21;
866 4 clear(x,y,21);
867 4 k=0;
868 4 }
869 3 k++;
870 3 }
871 2 }
872 1 }
873
874 void interrupt_handle() interrupt 2 using 1
875 {
876 1 uchar idata temp_data;
877 1 EA=0; //CPU关中断
878 1 lcd_cs=1;
879 1 if(num!=127)
880 1 {
881 2 Adc_cs = 0 ;
882 2 P0=0xff;
883 2 lcd_a0=0;
884 2 temp_data=P0;
885 2 lcd_a0=1;
886 2 Adc_cs = 1 ;
887 2 if(num==0)
888 2 {
889 3 if((temp_data>125)&(temp_data<135))
890 3 {
891 4 x_data[0]=temp_data;
892 4 num++;
893 4 }
894 3
895 3 }
896 2 else if(num==1)
897 2 {
898 3 if(temp_data<x_data[0])
899 3 {
900 4 x_data[1]=temp_data;
901 4 num++;
902 4 }
903 3 else if((temp_data>125)&(temp_data<135))
904 3 {
905 4 x_data[0]=temp_data;
906 4 num=1;
907 4 }
908 3 else num=0;
909 3
910 3 }
911 2 else{
912 3 x_data[num]=temp_data;
913 3 num++;
914 3 }
915 2 EX1=1;
916 2 }
917 1 else EX1=0;
918 1 lcd_cs=0;
919 1 EA=1;
920 1
921 1 }
922
923 void timer0(void) interrupt 1 using 1
C51 COMPILER V7.06 SIGNAL_SHOW 03/26/2007 17:35:00 PAGE 16
924 {
925 1 EA=0;
926 1 lcd_cs=1;
927 1 if(num!=127)
928 1 {
929 2 Adc_cs = 0 ;
930 2 lcd_wr = 0 ;
931 2 lcd_wr = 1 ;
932 2 Adc_cs = 1 ;
933 2 TH0 = dH;
934 2 TL0 = dL;
935 2 ET0 = 1;
936 2 }
937 1 else ET0 = 0;
938 1 lcd_cs=0;
939 1 EA=1;
940 1 }
941 void wait(void)
942 {
943 1 unsigned int i;
944 1 for(i=0;i<5000;i++);
945 1 }
946 void interrupt_handle_key() interrupt 0 using 1
947 {
948 1 EA=0; //CPU关中断
949 1 lcd_cs=1;
950 1 wait(); //键盘消抖延时
951 1 if (Int_wire==0)
952 1 {
953 2 key_pressed=ON;
954 2 P2=0xFF;
955 2 key_no=P2&0x0F; //读取P2口的低四位显示数据编码
956 2 }
957 1 lcd_cs=0;
958 1 EA=1; //CPU开中断
959 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2998 ----
CONSTANT SIZE = 1045 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 10
IDATA SIZE = 136 65
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -