数码管设计电子钟
设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间
EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。
扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。
二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。
4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。
毕业设计论文_单片机电子时钟的设计
毕业设计论文_单片机电子时钟的设计摘要:电子时钟作为一种常见的时间显示装置,在现代社会中应用广泛。
本文设计了一款基于单片机的电子时钟,使用DS1307实时时钟芯片来获取系统时间,并通过数码管进行显示。
设计过程中,通过对单片机的编程和电路的连接,实现了时间的显示与调节功能,具有较高的准确性和稳定性。
该设计方案简单、实用,可用于各种场合。
关键词:单片机;电子时钟;DS1307;数码管1.引言电子时钟是一种利用电子技术构造的显示时间的装置,具有时间准确、使用简单、显示清晰等特点,广泛应用于生活和工作中。
本文以单片机为核心,设计了一款实时准确的电子时钟,提高了时间的准确度和稳定性。
2.设计原理该设计的核心是通过单片机与DS1307实时时钟芯片的连接,使得单片机可以获取到准确的系统时间,并通过数码管进行显示。
DS1307芯片通过I2C总线与单片机连接,通过读取芯片中的时间寄存器,单片机可以获得当前的时间信息。
3.硬件设计本设计中使用了AT89S52单片机作为主控芯片,通过引脚与DS1307芯片相连。
单片机的P0口接到数码管的段选信号,P1口接到数码管的位选信号,通过控制这两个口的输出状态,可实现对数码管上显示的数字进行控制。
同时,为了使时钟可以正常运行,需外接一个晶振电路为单片机提供时钟信号。
4.软件设计通过对单片机的编程,实现了以下功能:(1)初始化DS1307芯片,设置初始时间;(2)每隔一秒读取一次DS1307芯片的时间寄存器,将时间信息保存到单片机的RAM中;(3)根据当前时间信息,在数码管上显示对应的小时和分钟。
5.调试与测试经过硬件的连接以及软件的编写,进行了调试与测试。
将初始时间设置为08:30,观察数码管上的显示是否正确,以及时间是否准确。
同时,通过手动调节DS1307芯片中的时间,检查单片机是否能正确获取时间,并进行显示。
6.总结与展望本文设计了一款基于单片机的电子时钟,通过单片机与DS1307芯片的连接和编程,实现了准确的时间显示功能。
基于郭天祥单片机数码管的电子钟(含闹钟、整点报时)
基于单片机数码管的电子钟(郭天祥系列单片机)功能说明(D本电子钟可以显示当前时刻、年月日和闹钟时刻。
不同时间的显示可以用key4来切换。
(2)、独立键盘key—key4(左到右)调节不同功能,7段数码管显示。
(3)整点提示功能:当时间为整点时,蜂鸣器会滴滴滴响,响20秒;(4)闹铃功能:本程序有闹铃功能,当定时时间到时,闹铃会滴滴滴报警,报警30秒;(5)附加功能:当在闹铃和整点时,8个发光二极管会闪亮;(6)时、分、秒之间和年、月、日之间也是用分割。
2、键盘控制(1)key1-键移动调整单位,每按一次移动一个单位,可调整时分秒、年月日和闹钟时间。
比如:在显示时分秒时,按下keyl 键, 可通过key2和key3对'秒'加减;再按一下keyl,可对"分'加减;再按一下keyl,可对"时'加减;再按keyl,时间开始走动(2)key2-加 1 ; key3-减 1;(3)key4-键切换时分秒、年月日和闹铃时间的显示。
比如:当前为时分秒,按一下key4,则显示年月;再按一下,则显示闹铃时间;再按一下,则显示时分秒时间。
附录:C语言程序〃设计项目:带闹铃的电子钟//功能:keyV键:开始/调时分秒/调年月日/调定时// key2 ■键:加 1// key3-键:减 1// key4-键:切换页面#in clude<reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2A6;sbit wela=P2A7;sbit key1=P3A4;sbit key2=P3A5;sbit key3=P3A6;sbit key4=P3A7;sbit bear=P2A3;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar sed ,hour1 ,year1 ,mon1 ,day1,tempi ,temp2,sec2,min2,hour2; void keyscan();void display(uchar hour,uchar min,uchar sec);void delay(uint z){uint x,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}void init(){TMOD=0X02;TH0=6;TL0=6;EA=1;ET0=1;TR0=1;hour1=00;mini =00;sed =00;year1=12;mon1=03;day1=10;void display(uchar hour,uchar min,uchar sec) { uchar s1 ,s2,m15m2,h1 ,h2;s2=sec/10;s1=sec%10;m2=min/10;m1=min%10;h2=hour/10;h1=hour%10;dula=1;P0=table[h2];dula=0;P0=0XFF;wela=1;P0=0XFE;delay(1);dula=1;P0=table[h1]+0x80;dula=0;P0=0XFF;wela=1;P0=0XFd;delay(1);dula=1;P0=table[m2];dula=0;P0=0XFF;wela=1;P0=0XFb;delay(1);dula=1;P0=table[m1]+0x80;dula=0;P0=0XFF;wela=1;P0=0XF7;delay(1);dula=1;P0=table[s2];dula=0;PO=OXFf;wela=1;P0=0Xef;delay(1);dula=1; PO=table[s1J; dula=0; P0=0XFF; wela=1; PO=OXdf; delay(1);}void keyscan()if(key1 ==0)delay(10); if(key1 ==0)//TR0=0; tempi++; if(temp1 ==4){tempi=;TR0=1;while(!key1)switch(temp2){case 0:display(hour1,sec1 );break; case1:display(year1 ,mon1 ,day1 );break; case2:display(hour2,min2,sec2);break;if(key2==0){delay(10); if(key2==0){ if(temp2==0) { TR0=0;switch(templ){case 1:sed ++;if(sec1 ==60)sec1 =O;break;case 2:min1 ++;if(min1 ==60)min1 =O;break;case 3:hour1 ++;if(hour1 ==24)hour1 =O;break;while(!key2) display(hour1 ,min1 ,sec1);if(temp2==1) { TR0=1;switch(templ)case 1:day1 ++;if(day1==31 )day1=1 ;break; case 2:mon1 ++;if(mon1==13)mon1 =1 ;break;case 3:year1 ++;if(year1 ==100)year1 =0;break; } while(!key2)display(year1 ,mon1 ,day1);if(temp2==2) { TR0=1;switch(templ)case 1:sec2++;if(sec2==60)sec2=0;break;case 2:min2++;if(min2==60)min2=0;break;case 3:hour2++;if(hour2==24)hour2=0;break; }while(!key2)display(hour2,min2,sec2);if(key3==0){delay(10); if(key3==0){if(temp2==0){ TR0=0;switch(templ){case 1:if(sec1 ==0)sec1 =60;sec1 ~;break;case 2:if(min1 ==0)min1 =60;min1 -;break;case 3:if(hour1 ==0)hour1 =24;hour1 -;break; } while(!key3)display(hour1 ,min1 ,sec1);if(temp2==1){ TR0=1;switch(templ){case 1:if(day1==1 )day1=31 ;day1-;break;case 2:if(mon1==1 )mon1 =13;mon1 ・-;break;case 3:if(year1 ==0)year1 =100;year1 -;break; } while(!key3) display(year1 ,mon1,day1);}if(temp2==2){ TR0=1;switch(templ){case 1:if(sec2==0)sec2=60;sec2-;break;case 2:if(min2==0)min2=60;min2-;break;case 3:if(hour2==0)hour2=24;hour2-;break; } while(!key3)display(hour2,mi n2,sec2);if(key4==0)delay(10); if(key4==O)tempi =0;temp2++; if(temp2==3)temp2=0;while(!key4) switch(temp2){case 0:display(hour1 ,min1 ,sec1);break; case1:display(year1 ,mon1 ,day1 );break;case 2:display(hour2,min2,sec2);break;switch(temp2){case 0:display(hour1 ,min1 ,sec1 );break;case 1:display(year1 ,mon1 ,day1 );break; case2:display(hour2,min2,sec2);break;void alarm(){uint i;if((hour1==hour2&&min1==min2&&(sec1 >=sec2&&sec1 <sec2+30))||(min1==0 &&sec"l <20)) { for(i=0;i<20;i++){bear=~bear;P1=~P1;switch(temp2){case 0:display(hour1,mi,sec1 );break;case 1:display(year1 ,mon1 ,day1);break;case 2:display(hour2,min2,sec2);break;}delay(30);}bear=1;P1=Oxff;void main(){init();while(1){keyscan();{if (key 1 ==0 || key2==0 || key3==0 || key4==O )Bear=0}alarm();void time1()interrupt 1{uint m;m++;if(m==3686){m=0;sec1++;if(sec1 ==60){sec1=0;min1++;if(min1==60){min1=0; hour1++; if(hour1==24)hour1=0;day1++; if(day1==31) {day1=1;mon 1++;if(mon1==13){mon1 =1; year1++; if(year1==100) year1=0;。
LED数码管设计的可调式电子钟说明说
LED数码管设计的可调式电子钟说明说可调式电子钟的设计理念是提供用户多样化的时间显示和闹钟设定选项,以满足用户不同的需求和喜好。
以下是对设计的详细说明:1.数码管显示:LED数码管采用7段共阳极连接方式,每个数码管由7个LED灯组成,通过控制各个LED灯的点亮与否,可以显示0-9的数字。
数码管的显示仿真效果要清晰、鲜明,确保用户可以轻松辨认时间。
2.时间调节功能:可调式电子钟具备时间调节的功能,用户可以通过按钮或旋钮调整时间。
其中旋钮可以实现小时和分钟的调节,而按钮可以实现小时和分钟的增加或减少。
设计时需考虑人机交互的便利性,确保时间调节操作简单明了。
3.闹钟设定:可调式电子钟还具备闹钟功能,用户可以设定一个或多个闹钟时间点。
用户可以通过按钮或旋钮设置闹钟的小时和分钟,还可以设定是否重复响铃。
闹铃可以通过声音、震动或LED灯闪烁等方式提醒用户。
为了避免误操作,设计时需要考虑设置闹钟的过程,确保用户能够轻松设置闹钟。
4.电源供应:可调式电子钟可采用外部电源或内置电池供电。
设计时需考虑到电源的稳定性和可靠性,确保时钟长时间准确运行。
当外部电源断开时,内置电池可以提供备用电源,防止时间设置的丢失。
5.背光功能:可调式电子钟还可以考虑添加背光功能,在光线不好的情况下,用户可以通过按下按钮或通过传感器自动点亮背光。
背光的亮度可以根据用户偏好进行调节。
6.美观设计:除了功能性,可调式电子钟的外观设计也很重要。
设计时可以考虑采用简约设计风格,以及时尚的外壳材料。
同时,数字显示的对齐和间距,以及按钮和旋钮的位置、大小都需要细致推敲,确保整体外观美观大方。
总之,可调式电子钟的设计需要满足用户对时间显示和闹钟功能的需求。
通过合理的控制功能,人性化的设计以及简洁好看的外观,可为用户提供一台方便、易用的电子钟。
8位数码管显示电子时钟c51单片机程序
8位数码管显示电子时钟c51单片机程序 /*8位数码管显示时间格式 055000 标示05点50分00秒S1 用于小时加1操作S2 用于小时减1操作S3 用于分钟加1操作S4 用于分钟减1操作*/#includereg52.hsbit KEY1=P3^0; //定义端口参数sbit KEY2=P3^1;sbit KEY3=P3^2;sbit KEY4=P3^3;sbit LED=P1^2; //定义指示灯参数code unsigned chartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管09unsigned char StrTab[8]; //定义缓冲区unsigned char minute=19,hour=23,second; //定义并初始化为12:30:00void delay(unsigned int cnt){while(cnt);}/********************************************************** ********//* 显示处理函数 *//********************************************************** ********/void Displaypro(void){StrTab[0]=tab[hour/10]; //显示小时StrTab[1]=tab[hour%10];StrTab[2]=0x40; //显示StrTab[3]=tab[minute/10]; //显示分钟StrTab[4]=tab[minute%10];StrTab[5]=0x40; //显示StrTab[6]=tab[second/10]; //显示秒StrTab[7]=tab[second%10];}main(){TMOD |=0x01; //定时器0 10ms inM crystal 用于计时TH0=0xd8; //初值TL0=0xf0;ET0=1;TR0=1;TMOD |=0x10; //定时器1用于动态扫描 TH1=0xF8; //初值TL1=0xf0;ET1=1;TR1=1;EA =1;Displaypro(); //调用显示处理函数while(1){if(!KEY1) //按键1去抖以及动作{delay(10000);if(!KEY1){hour++;if(hour==24)hour=0; //正常时间小时加1Displaypro();}if(!KEY2) //按键2去抖以及动作 {delay(10000);if(!KEY2){hour;if(hour==255)hour=23; //正常时间小时减1 Displaypro();}}if(!KEY3) //按键去抖以及动作{delay(10000);if(!KEY3){minute++;if(minute==60)minute=0; //分加1Displaypro();}if(!KEY4) //按键去抖以及动作{delay(10000);if(!KEY4){minute;if(minute==255)minute=59; //分减1Displaypro();}}}}/********************************************************** ********//* 定时器1中断 *//********************************************************** ********/void time1_isr(void) interrupt 3 using 0 //定时器1用来动态扫描static unsigned char num;TH1=0xF8; //重入初值TL1=0xf0;switch (num){case 0:P2=0;P0=StrTab[num];break; //分别调用缓冲区的值进行扫描case 1:P2=1;P0=StrTab[num];break;case 2:P2=2;P0=StrTab[num];break;case 3:P2=3;P0=StrTab[num];break;case 4:P2=4;P0=StrTab[num];break;case 5:P2=5;P0=StrTab[num];break;case 6:P2=6;P0=StrTab[num];break;case 7:P2=7;P0=StrTab[num];break;default:break;}num++; //扫描8次,使用8个数码管if(num==8)num=0;}/******************************************************************//* 定时器0中断 *//********************************************************** ********/void tim(void) interrupt 1 using 1{static unsigned char count; //定义内部局部变量TH0=0xd8; //重新赋值TL0=0xf0;count++;switch (count){case 0:case 20:case 40:case 60:case 80:Displaypro();break; //隔一定时间调用显示处理case 50:P1=~P1;break; //半秒 LED 闪烁default:break;}if (count==100){count=0;second++; //秒加1 if(second==60){second=0;minute++; //分加1 if(minute==60){minute=0;hour++; //时加1 if(hour==24)hour=0;}}}}。
74LS161电子时钟设计
74LS161电子时钟设计首先,我们需要生成一个稳定的时钟信号,用于驱动计数器的计数。
可以使用定时器芯片或者晶振电路来生成一个准确的时钟信号。
在本设计中,我们使用一个1Hz的晶振电路来生成时钟信号。
接下来,我们需要将计数器芯片74LS161与显示模块连接起来,以显示时间数据。
我们可以使用数码管作为显示模块,利用74LS161的输出线连接到数码管的显示线上。
74LS161的输出线共有四个,分别对应四位二进制数的四个位。
我们需要将四个输出线与四个数码管的显示线相连接,使得74LS161的输出可以被数码管显示出来。
然后,我们需要将计数器的计数范围设置为12小时制。
由于74LS161是一个四位计数器,可以表示的最大数为15(二进制1111),所以我们需要在12小时范围内进行循环计数。
为了实现这一功能,我们可以将计数器的CLR端口(清零端口)与一个12小时的比较器相连,当计数器达到12时,比较器输出高电平,将CLR端口拉低,实现清零操作。
此外,我们还可以添加时间数据的设置功能,以让用户可以自由设置时间。
可以使用按钮来控制时间的设置操作。
当用户按下设置按钮时,可以通过74LS161的LOAD端口来锁存时间数据。
在锁存状态下,用户可以通过增加或减少按钮来修改时间。
当用户完成设置后,再次按下设置按钮,锁存状态解除,时间数据开始更新。
最后,为了使电子时钟更加美观,我们可以添加LED背光灯。
可以使用74LS161的输出线来驱动LED灯,使得LED灯在时间数据显示时亮起,提高可视性。
在整个设计过程中,需要注意的是信号的稳定性和准确性。
时钟信号的稳定性将直接影响时间数据的准确性。
因此,在选择晶振电路或者定时器芯片时,需要选择稳定性好的产品,保证时钟信号的准确性。
另外,还需要注意电平的匹配,避免因电平不匹配而导致显示不正确的情况发生。
以上是一个基本的74LS161电子时钟设计,通过合理的连接和功能设置,可以实现准确显示和修改时间数据的功能。
简易电子钟设计范文
简易电子钟设计范文电子钟是一种通过电子技术实现时间显示的设备。
它通常由一个数字显示屏,一个控制电路和一个电源组成。
其主要功能是显示小时、分钟和秒钟等时间信息,可以准确地显示时间,并可以根据需要设置闹铃功能。
设计一款简易电子钟可以使用Arduino等开发板或单片机来实现。
首先,我们需要选择一块合适的数字显示屏。
常见的数字显示屏有数码管和液晶显示屏两种类型,它们的显示原理和控制方式有所不同。
如果选择数码管作为显示屏,可以考虑使用常见的7段数码管,它由八个LED灯组成,可以显示0-9的数字以及一些字母和特殊符号。
数码管的控制方式是通过控制每个LED灯的亮灭来实现显示,可以使用数字输出口来控制。
Arduino的数字输出口可以输出高电平(5V)和低电平(0V),通过控制输出口的电平,就能够控制数码管的亮灭。
如果选择液晶显示屏作为显示器,可以选择字符型液晶显示屏或者图形型液晶显示屏。
字符型液晶显示屏通常可以显示一些字符或者数字,它的控制方式是通过并行或者串行接口来控制,可以使用开发板的GPIO口来实现。
图形型液晶显示屏可以显示更多的信息,它的控制方式是通过SPI接口或者I2C接口来控制,这需要相应的驱动库或者芯片来实现。
无论选择数码管还是液晶显示屏,我们都需要编写程序来控制显示。
程序的核心是一个循环,其中使用时钟模块来获取当前的时间,并使用相应的控制方式将时间信息显示在显示屏上。
如果需要设置闹铃功能,可以在循环中判断当前时间和设置的时间是否相等,如果相等则触发闹铃。
设计一个简易电子钟的完整步骤如下:1. 选择适合的开发板或者单片机,例如Arduino。
2.选择合适的显示屏,例如7段数码管或者液晶显示屏。
3.连接显示屏到开发板,根据显示屏的类型选择合适的引脚连接方式。
4.编写代码来控制显示屏显示时间信息。
5.添加时钟模块,用来获取当前的时间信息。
6.根据需要添加闹铃功能。
7.测试电子钟的功能和性能,不断优化改进。
数码管时钟电路的设计
前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习、应用,以AT89C205芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示。
.数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。
本系统是基于AT89C2051单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。
目录摘要时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
本文利用单片机实现数字时钟计时功能的主要内容,其中AT89C2051是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。
数字电子时钟设计
数字电子时钟设计数字电子时钟是一种简单易用、精度高、使用方便的时钟仪器。
在现代化的生活中,数字电子时钟已经成为人们生活和工作中不可缺少的一部分。
本文将介绍数字电子时钟的设计及其原理。
1. 数字电子时钟的结构数字电子时钟一般由数字显示器、电源、时钟芯片、振荡电路和控制电路等几个部分组成。
数字显示器:数字电子时钟采用的是七段数码管作为显示器,显示出当前时刻的时间。
电源:数字电子时钟的电源一般采用直流电源,可以通过普通的插座或者电池供电。
时钟芯片:时钟芯片是数字电子时钟的核心部分,可以提供高精度的时钟信号,并且可以根据用户设置的时间来进行计时。
振荡电路:振荡电路是数字电子时钟的发挥器,用于产生一个稳定的高精度的时钟信号。
控制电路:控制电路主要用于对数字电子时钟进行各种设置,并且可以控制数字电子时钟的各种功能。
2. 数字电子时钟的操作原理数字电子时钟的操作原理是通过时钟芯片来实现的。
时钟芯片可以提供一个高精度的时钟信号,这个时钟信号可以被控制电路所接收,并且控制电路可以将这个信号转化为秒、分、时等时间单位。
随着科技的发展,数字电子时钟的精度越来越高,可以达到秒级甚至毫秒级的精度。
这些高精度的时钟芯片可以通过电子时钟所连接的振荡电路来产生非常稳定的时钟信号。
3. 数字电子时钟设计的技术要求数字电子时钟的设计需要考虑以下几个方面的技术要求:(1)高精度的时钟信号数字电子时钟的时钟信号需要具有高精度,通常要求时钟误差不超过几秒钟。
这就需要时钟芯片具有非常高的精度的时钟信号源,同时还需要连接高精度的振荡电路。
(2)显示效果清晰明了数字电子时钟的显示效果要求非常的清晰明了,这就需要采用高质量的七段数码管,并且数量要足够,以显示出完整的时间信息。
(3)快速响应、稳定性好由于数字电子时钟是人们生活和工作中不可缺少的一部分,因此数字电子时钟的响应速度和稳定性也非常的重要,需要在设计时特别注重。
4. 数字电子时钟的优点和缺点数字电子时钟有以下几个优点:(1)高精度稳定数字电子时钟可以提供高精度的时钟信号,并且可以保持这个时钟信号的稳定性,误差范围非常小。
设计一个4位数码管时钟电路
设计一个4位数码管时钟电路了解什么是4位数码管;四位数码管是一种半导体发光器件,其基本单元是发光二极管。
能显示4个数码管叫四位数码管。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
什么是时钟电路;1.就是产生像时钟一样准确的振荡电路;2.任何工作都按时间顺序。
(时钟电路一般由晶体震荡器,晶震控制芯片和电容组成)四位数码管怎么显示;利用单片机调节开关的高低电平的变化,然后显示在数码管上;四位数码管怎样驱动;1、静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O 端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O 端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
数码管电子钟(可调时)程序
TR1=1;//开t1
TR0=0;//关t0
}
/**********以下延时程序***********/
void Delayms(uint xms)
{
uint i,j;
for(i=0;i<=xms;i++)
for(j=115;j>0;j--);
{
if(k2==0)
{
Delayms(10);//延时去抖
if(k2==0)//确定k2键按下
{
while(!k2);//等待k2释放
sec++;
if(sec==60)sec=0;
}
}
if(k3==0)
{ sec=0,min++;
if(min>=60)
{ min=0;hour++;
if(hour>=M)hour=0;
}
}
}
}
/*********以下是按键检查函数**********/
void keyplay()
{
P3=0xff;//读取数据前要先写1
{
key=0;
TR1=1;
TR0=0;
}
}
/*********以下是主程序**********/
void main()
{
Timert();
while(1)
{
keyplay();
timerpaly();
Dispaly();
}
{
if(k2==0)
十五位数码管电子钟万年历设计 c编写
十五位数码管电子钟万年历设计c编写后带原理设计图供参考(本人已验证可正常工作)我们以一个实际的时钟电路来说明定时器的软件编程方法,时钟就是我们最为常见的显示时、分、秒为单位的计时工具,它是典型的应用代表。
时钟的最小计时单位是秒,但使用单片机定时器来进行计时,若使用 6.0MHz的晶振,即使按工作方式1工作,最大的计时时间也只能到131ms,所以我们可把每个定时时间取125ms,这样定时器溢出8次(125ms╳8=1000ms)就得到最小的计时单位秒。
而要实现8次计数用软件方法实现是轻而易举的。
我们使用定时器1,以工作方式1工作,定时器进行125ms定时。
采用中断方法进行溢出次数的累计,当计满8次即得到1秒的计时。
一个时钟的计时累加,要实现分、时的进位,要用到多种进制,秒、分、时中的进位是十进制,秒向分进位和分想时进位却是六十进制,而每天又有十二小时制或二十四小时制,它们分别又是十二进制和二十四进制。
从秒到分和从分到小时可以通过软件累加和数值比较方法实现。
在单片机的内部RAM中,需要设置显示缓冲区,显示的时、分、秒值是从显示缓冲区中取出的,在RAM中设置四个单元作为显示缓冲区,分别是7AH、7BH、7CH。
为使电路和原理叙述方便,我们这里不显示秒值,秒的进位我们通过闪烁分值实现。
这样我们一共有四位LED分别显示时和分值。
同时时钟都需要校准的。
在程序中还需设置显示码表,要显示的数值通过查表指令将显示用的真正码值送到LED上。
我们用单片机AT89C2051的PP3.4和P3.5两个I/O口外接微动开关来实现时和分的校正,每按一次小时或分值加1,连续按下数值累计下去,实现时钟的校准。
在电路中我们还设置了一个蜂鸣器,用作简单报时用,如可设早上7:30分起床,中午1点30分再有起床报时,每次响时1分钟,响1秒,停2秒的方式,而不是连续响铃。
这个程序我们采用12小时制,为此,要在程序中设置相应的标志,以利于主程序识别。
电子时钟实验报告电子时钟
电子时钟实验报告一、实验目的学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。
二、设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求:1.在4位数码管上显示当前时间,显示格式为“时时分分”;2.由LED闪动做秒显示;3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。
当闹玲时间到蜂鸣器发出音乐,按停止键使可使闹玲声停止。
三、工作原理及设计思路利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。
为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。
闹铃声由交流蜂鸣器产生,电路如右图,当P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。
四、电路设计及描述(1) 硬件连接部分:在ZKS-03单片机综合实验仪上有四位共阳LED数码管,其标号分别为LED1~LED4。
为了节省MCU的I/O口,采用串行接口方式,它仅占用系统2个I/O口,即P1.0口和P1.1口,一个用作数据线SDA,另一个用作时钟信号线CLK,它们都通过跳线选择器JP1相连。
由于采用共阳LED数码管,它的阴极分别通过限流电阻R20~R27连接到控制KD_0~KD_Q7。
这样控制8个发光二极管,就需要8个I/O口。
但由于单片机的I/O 口资源是有限的,因此常采用实验电路所示的串并转换电路来扩充系统资源。
串并转换电路其实质是一个串入并处的移位寄存器,串行数据再同步移位脉冲CLK的作用下经串行数据线SDA把数据移位到KD_0~KD_Q7端,这样仅需2根线就可以分别控制8个发光二极管的亮灭。
而P0口只能作地址/数据总线,P2口只能作地址总线高8位,P3.0、P3.1作为串行输入、输出接口,实验仪上单片机可用作I/O的口仅有:P1.0--P1.7 ,8位;P3.2、P3.3、P3.4、P3.5 ,4位。
数码管电子钟实习报告
实习报告:数码管电子钟设计与制作一、实习目的与要求1. 熟悉数码管的工作原理及驱动方式;2. 学习使用Proteus等仿真软件进行电子系统设计与仿真;3. 掌握C语言编程,并能应用于实际电子项目;4. 培养动手实践能力和团队合作精神。
二、实习内容与过程1. 设计思路本次实习的数码管电子钟主要由51单片机、数码管、按键、时钟芯片等组成。
通过编程实现时间的显示、设置、闹钟等功能。
2. 仿真设计在Proteus软件中,搭建数码管电子钟的仿真电路,包括51单片机、数码管、按键、时钟芯片等元件。
编写C语言程序,实现时间的显示、设置、闹钟等功能。
经过多次调试,确保电路与程序的正确性。
3. 编程实现使用Keil编译器,编写C语言程序,实现数码管电子钟的功能。
主要功能包括:(1)实时显示当前时间;(2)可通过按键设置时间;(3)具备闹钟功能,可设置闹钟时间并报警;(4)数码管显示效果优化。
4. 实物制作根据仿真电路,购买相关元件,进行实物焊接。
注意焊接顺序、焊接质量,确保电路的稳定性。
5. 测试与调试完成实物焊接后,对数码管电子钟进行测试与调试。
检查各功能是否正常,如有问题,进行分析并与同学、老师交流,找出问题所在并解决。
三、实习收获与体会1. 掌握了数码管的工作原理及驱动方式,学会了使用Proteus等仿真软件进行电子系统设计与仿真;2. 熟悉了C语言编程,并能够应用于实际电子项目;3. 培养了动手实践能力和团队合作精神,提高了自己的沟通协调能力;4. 认识到电子设计与实际应用中的困难与挑战,增强了克服困难的信心和决心。
四、不足与改进方向1. 实物焊接过程中,部分焊接质量不高,需要提高焊接技巧;2. 程序编写中,部分代码可优化,提高运行效率;3. 数码管显示效果仍有优化空间,可尝试不同的显示方式。
总之,本次数码管电子钟实习收获颇丰,不仅提高了自己的电子技术水平,还培养了团队合作精神。
在今后的学习和工作中,将继续努力,不断提高自己的实践能力和综合素质。
基于单片机的电子时钟6位LED数码管显示
数码管显示电子时钟设计一.功能要求1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。
2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。
二.方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.数码管显示方案方案一:静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
51单片机数码管电子时钟C程序
//**单片机stc89c52, 8位共阴数码管12M晶振//*******P0 位选,P2 段选❖******//#include 〃reg52・ h〃#define uchar unsigned char#define uint unsigned intuchar code tab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40, Oxff}; uchar n;uchar hh, mm, ss;uchar nhh, nmm, nss;uint year;uchar day, mon, week;uchar hhs, hhg, mms, mmg, sss, ssg;uchar days,dayg, mons, mong;uchar nhhs, nhhg, nmms, nmmg, nsss, nssg;uchar setl=l, set2=l;sbit dula=P3 3;sbit fm=P3 2;sbit kl二P3"4;sbit k2二P3"5;sbit k3二P3飞;sbit k4二P3"7;uchar tablel[] = {31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 〃闰年uchar table2[] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //非闰年void jishi ();void baoshi ();void alarm();void set_time();void set_alarm();void set_mdw();void key_change():void key_set ();void delay (int m) 〃延时程序,延时m*0. 5msuint i;uint j;for (i=0;i<m;i++){for(j=0;j<500;j++){}}}void timerO() interrupt 1 {TMOD二0x01;TH0=0x3c;TLO=Oxbl;n++;JishiO;}main()TMOD二0x01;TH0=0x3c;TLO二Oxbl;TRO二1;EA二1;ETO二1;hh=12;mm=00;ss=00;nhh二7;nmm=30;nss=0;year=2012;mon=01;day=01;week=7; while(1){hhs=hh/10%10; // 时分秒hhg=hh%10;mms=mm/10%10;mmg=mm%10;sss=ss/10%10;ssg=ss%10;nhhs=nhh/10%10; 〃闹钟nhhg=nhh%10; nmms=nmm/10%10;nmmg=nmm%10; nsss=nss/10%10;nssg=nss%10; days=day/10%10;//月Hday萨day%10; mons=mon/10%10;mong=mon%10;key_change () ; //kl 按键扫描key_set (); //k2 按键扫描set_time() ; //设置时间set.mdwO ; //设置月日星期set_alarm() ; //设置闹钟辻(setl-1) //正常走时显示dula=l: P2=tab [hhs] ; dula=O: P2=0xff; PO=Oxef; delay (1) ;P0二Oxff; //时十位dula二1;P2二tab[hhg]; dula=0;P2=0xff;PO=Oxdf;delay(1) ; PO二Oxff;//时个位dula=l;P2=tab[10]:dula=0;P2=0xff; PO=Oxbf;delay(1); PO二Oxffdula=l: P2=tab [mms] : dula=0: P2 二Oxff ;P0 二0x7f; delay (1) ;P0 二Oxff; //分十位dula=l; P2=tab [mmg] ; dula=0; P2=0xf f; P0=0xfe; delay (1) ; PO 二Oxff;//分个位dula=l;P2=tab[10]; dula=0:P2=0xff;PO=Oxfd:delay(1); PO二Oxffdula二1;P2二tab[sss]; dula=0;P2=0xff;PO=Oxfb:delay(1) ; PO二Oxff;//秒十位dula二1;P2二tablssg]; dula=0:P2=0xff;P0=0xf7; delay(1) ;P0二Oxff; //秒个位}辻(set 1=2) //设置时间dula=l; P2=tab [hhs] ; dula=0; P2=Oxff; PO=Oxef; delay (1) ;P0二Oxff; //时十位dula二1;P2二tablhhg]; dula=0:P2=0xff;PO=Oxdf;delay(1) ; PO二Oxff;//时个位dula=l:P2=tab[10]:dula=0;P2=0xff; PO=Oxbf;delay(1); PO二Oxffdula=l: P2=tab [mms] : dula=0: P2 二Oxff ;P0 二0x7f; delay (1) ;P0 二Oxff; //分十位dula=l; P2=tab [mmg] ; dula=0: P2=0xf f: P0=0xfe; delay (1) ; PO 二Oxff;//分个位dula=l;P2=tab[10]; dula=0:P2=0xff;PO=Oxfd:delay(1); PO二Oxffdula二1;P2二tab[sss]; dula=0;P2=0xff;PO=Oxfb:delay(1) ; PO二Oxff;//秒十位dula二1;P2二tablssg]; dula=0:P2=0xff;P0=0xf7; delay(1) ;P0二Oxff; //秒个位}辻(set 1-3) //正常显示月日-星期(肆匕诂S )M心T P 鏗\m x o u o 匕(DAPWZJXOUOddxouzdoudnp 二席*〕qpf Zd二 H d n p 创+忌、、d x o u o d - (I )A p w q J x o u o d d x o u z d o H £n p =s 〕q p f z d =%-n p 、、—、、、、QJXOUOd - (I)xp^p&Jxouod2Jxouzdo%w 〔OI 〕qeTzd=%-np 心T p g 'm x o u o d - u)APW*xouoddxouzd oUPTnp 二"App 〕qpfzd二%-np^+、、dxouocr(DAP^PQZXOUOmxouzdou d n p 二 SAPP 〕qpfzd 二%-np 、、—、、、、QJXOUOdJI) A32P cu q x o u o d 世o %I n p 二2〕q e F CN d 二%H T P 鏗\m x o u o 匕(DAPWZJXOUOddxouzdoudnp 二席*〕qpf Zd二 H d n p 创+忌、、d x o u o d - (I )A p w q J x o u o d d x o u z d o H £n p =s 〕q p f z d =%-n p 、、—、、、、心 J x o u o d - (I)xp^p&Jxouod2Jxouzdo%w 〔OI 〕qeTzd=%-np 心T p g 'm x o u o d - u)APW*xouoddxouzd oUPTnp 二"App 〕qpfzd 二%-np ^+0、、d x ouocr(DAP^PQZXOUOmxouzdoudnp二SAPP〕qpfzd二%-np 、、—、、、、QJXOUOd J I ) A32Pcu q x o u o d £0 世dula=l; P2=tab [nhhs]; dula=O; P2二Oxff; PO二Oxef; delay (1) ; PO二Oxff; 〃时十位dula=l;P2=tab[nhhg]; dula=0;P2=0xff;PO=Oxdf; delay (1) ; PO二Oxff;//时个位dula=l;P2=tab[10];dula=0;P2=0xff; PO=Oxbf;delay(1); PO二Oxff dula=l:P2=tab [nmms] : dula=0; P2=0xff ;P0=0x7f; delay (1) ;PO=Oxff; //分十位dula=l;P2=tab[nmmg] :dula=0;P2=0xff;PO=Oxfe; delay (1) ; PO=Oxff;//分个位dula=l;P2=tab[10]; dula=0:P2=0xff;PO=Oxfd:delay(1) ; PO二Oxffdula=l ;P2=tab[nsss] : dula=0;P2=0xff ;PO=Oxfb; delay (1) ; PO二Oxff;//秒十位dula=l;P2=tab[nssg] ; dula=0: P2=0xff; PO=Oxf7; delay (1) ;PO=Oxff; //秒个位} if(setl—6) //设置闹钟定时dula=l; P2=tab [nhhs] ; dula=0; P2二Oxff; PO二Oxef; delay (1) ; PO二Oxff; 〃时十位dula=l;P2=tab[nhhg]; dula=0;P2=0xff;PO=Oxdf; delay (1) ; PO二Oxff;//时个位dula=l;P2=tab[10];dula=0;P2=0xff; PO=Oxbf;delay(1); PO二Oxff dula=l:P2=tab [nmms] : dula=0; P2=0xff ;P0=0x7f; delay (1) ;PO=Oxff; //分十位dula=l;P2=tab[nmmg] :dula=0;P2=0xff;PO=Oxfe;delay(1) ; PO二Oxff;//分个位dula=l;P2=tab[10]; dula=0;P2=0xff;PO=Oxfd:delay(1); PO二Oxff dula=l;P2=tab[nsss]; dula二0;P2二Oxff;P0二Oxfb;delay(l) ; PO二Oxff;//秒十位dula=l;P2=tab[nssg] ; dula=0: P2=0xff; PO=Oxf7; delay (1) ;P0二Oxff; //秒个位}baoshi () : //整点报时alarm () ; //闹钟}}void JishiO 〃计时函数辻(n二二20){n=0;ss++;辻(ss=60){ss二0;mm++;if(mm二二60){mm^O;hh++;辻(hh=24){hh二0;day++;week++;if(week==8){week二0;}if (year%4==0&&year%100! =0 year%400==0) //闰年if(day=二tablel[mon]+l){day=0;mon++;if(mon==13){mon二0;year++;}}else //非闰年{辻(day—table2 [mon]+l){day=0;mon++;辻(mon—13){mon二0;year++;}}}}}}}}uchar incone (uchar n) //加 1 函数{辻(k3=0){delay(20);if(k3==0){n++;while(!k3);}}return(n);}uchar decone(uchar m) //减 1 函数{ if (k4==0){delay(20);if(k4==0)辻(m<0){m 二0;}}}}void key_change() //kl 按键扫描{ if(kl==0){delay(20);if(kl==0){setl++;while(!kl);if(setl==7){setl二1;}}void key_set() //k2 按键扫描{if(k2==0){delay(20);{set2++;while(!k2);辻(set2=4){set2=l;}}}}void baoshi () //整点报时函数{ fm=O;}if(ss==l){fm=l;}}void alarm() //闹钟函数{uchar x;if(nhh==0){goto end;}if(hh==nhh&&mm二二nmm&&ss==nss)fm=O; delay(30); fm=l; delay(20); fm=0; delay(30); fm=l; delay(20); fm=0; delay(30); fm=l; delay(20); fm=0; delay(30); fm=l; delay (180);end:;}void set_time() //设置时间函数{辻(setl==2){辻(set2==l){hh=incone(hh);if(hh==24){hh=0;}if(hh==-l){hh二23;}hh二decone(hh);}mm=incone(mm); if(mm==60) {mm 二0;}if(mm==-l) {mm=59;}mm=decone(mm); }辻(set2=3){ss=incone(ss);辻(ss=60){ss=O;}if (ss—-1){ss=59;}ss二decone (ss);}void set_mdw() //设置月日星期函数{ 辻(setl==4) {辻(set2==l){mon=incone(mon);if(mon二二13){mon=l;}mon=decone(mon);if(mon==0){mon二12;}}if(set2==2)day=incone(day);if(day==32){day=l;} day=decone(day);if (day—0){day=31;}}辻(set2=3){week=incone(week);if(week==8){week二1;}week二decone(week);if(week==0){week=7;}}}void set_alarm() //设置闹钟函数{ if(setl二二6){辻(set2=l){nhh二incone(nhh);辻(nhh二二24) {nhh二0;}辻(nhh—-1){nhh二23;}nhh二decone(nhh); }if(set2==2){nmm二incone(nmm); if (nmm—60) {nmm二0;}nmm二decone(nmm); if (nmm 二二 T){nmm=59;}}辻(set2二二3) {nss=incone (nss); if (nss=60){nss=0;}nss二decone(nss); if(nss==-l){nss二59;}}}。
74LS161电子时钟设计
74LS161电子时钟设计在设计74LS161电子时钟之前,首先需要了解74LS161是一种四位二进制同步计数器。
该计数器可以用于实现各种计数和计时功能,如时钟,倒计时器等。
以下是设计74LS161电子时钟的步骤:1.确定时钟的显示以及计数器的位数:在设计时钟之前,需要确定时钟的显示方式以及计数器的位数。
一般常见的显示方式为七段显示器和LCD显示器。
计数器的位数决定了时钟能够显示的时间范围,一般常见的位数为4位、6位、8位等。
2.选择外部时钟源:时钟的准确性取决于外部时钟源的稳定性和精度。
可以选择石英晶体振荡器或其他稳定的时钟源来提供准确的时钟信号。
3.确定时钟的工作模式:时钟可以使用24小时制或12小时制。
根据用户需求来选择时钟的工作模式。
4.构建时钟电路:根据选择的显示方式和计数器位数,使用74LS161计数器和逻辑门等器件构建时钟电路。
这个电路可以分为计数逻辑和显示控制两部分。
-计数逻辑部分:使用74LS161计数器和逻辑门等实现计数递增的逻辑。
使用74LS161的时钟输入端作为外部时钟源,通过逻辑门将四位计数器的输出反馈到清零端,实现循环计数。
-显示控制部分:根据显示器的类型,使用逻辑门来对计数器的输出进行处理并驱动显示器。
七段显示器需要使用译码器来将计数器的输出映射为具体的数码管段选信号和位选信号。
5.添加按钮和控制电路:在时钟电路中添加按钮和控制电路,用于调整时钟的时间和设置。
按钮可以用来递增或递减时钟的时间,同时可以设置时钟的工作模式等。
6.调试和优化:完成设计后,需要对电路进行调试和优化,确保时钟显示准确稳定,并且按钮和控制电路的功能正常。
最后,需要注意的是,为了确保时钟的准确性和稳定性,需要合理选择元器件,特别是时钟源和计数器。
另外,在布线和连接电路时,应尽量减少干扰和时钟信号衰减,以确保时钟电路的正常工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理与应用课程十二用DS1302与1602LCD设计的可调式电子日历与时钟实验小结本文主要针对不含字库的LCD12864进行了时钟和日期的显示,具体的介绍了LCD12864显示程序的设计。
同时我们在程序设计时也要善于把程序分解,分解成一个一个的小程序,这对于C 程序的应用大有好处。
当然通过这个项目的学习,我们也学习到了如何应用字模软件得到我们所要显示的汉字和数字的字模。
程序设计Q0000: LJMP Q046E ;0000 02 04 6ELJMP Q03DD ;0003 02 03 DDQ0006: DB 00H, 00H ;..Q0008: NOP ;0008 00NOP ;0009 00NOP ;000A 00LJMP Q029A ;000B 02 02 9AQ000E: CJNE R3,#01H,Q001D ;000E BB 01 0CMOV A,DPL ;0011 E5 82ADD A,R1 ;0013 29MOV DPL,A ;0014 F5 82MOV A,DPH ;0016 E5 83ADDC A,R2 ;0018 3AMOV DPH,A ;0019 F5 83MOVX A,@DPTR ;001B E0RET ;001C22Q001D: JNC Q0025 ;001D 50 06MOV A,R1 ;001F E9ADD A,DPL ;0020 25 82MOV R0,A ;0022 F8MOV A,@R0 ;0023 E6RET ;0024 22Q0025: CJNE R3,#0FEH,Q002E ;0025 BB FE 06MOV A,R1 ;0028 E9ADD A,DPL ;0029 25 82MOV R0,A ;002B F8MOVX A,@R0 ;002C E2RET ;002D 22Q002E: MOV A,DPL ;002E E5 82ADD A,R1 ;0030 29MOV DPL,A ;0031 F5 82MOV A,DPH ;0033 E5 83ADDC A,R2 ;0035 3AMOV DPH,A ;0036 F5 83CLR A ;0038 E4MOVC A,@A+DPTR ;0039 93Q003A: RET ;003A 22Q003B: CJNE R3,#01H,Q0044 ;003B BB 01 06MOV DPL,R1 ;003E 89 82MOV DPH,R2 ;0040 8A 83MOVX @DPTR,A ;0042 F0RET ;0043 22Q0044: JNC Q0048 ;0044 50 02MOV @R1,A ;0046 F7RET ;0047 22Q0048: CJNE R3,#0FEH,Q004C ;0048 BB FE 01MOVX @R1,A ;004B F3Q004C: RET ;004C 22Q004D: MOV R0,A ;004D F8CJNE R3,#01H,Q005E ;004E BB 01 0DMOV A,DPL ;0051 E5 82ADD A,R1 ;0053 29MOV DPL,A ;0054 F5 82MOV A,DPH ;0056 E5 83ADDC A,R2 ;0058 3AMOV DPH,A ;0059 F5 83MOV A,R0 ;005B E8MOVX @DPTR,A ;005C F0RET ;005D 22Q005E: JNC Q0066 ;005E 50 06MOV A,R1 ;0060 E9ADD A,DPL ;0061 25 82XCH A,R0 ;0063 C8MOV @R0,A ;0064 F6RET ;0065 22Q0066: CJNE R3,#0FEH,Q006E ;0066 BB FE 05MOV A,R1 ;0069 E9ADD A,DPL ;006A 25 82XCH A,R0 ;006C C8MOVX @R0,A ;006D F2Q006E: RET ;006E 22Q006F: CJNE R4,#00H,Q007D ;006F BC 00 0BCJNE R6,#00H,Q009E ;0072 BE 00 29MOV A,R7 ;0075 EFMOV B,R5 ;0076 8D F0DIV AB ;0078 84MOV R7,A ;0079 FFMOV R5,B ;007A AD F0RET ;007C 22Q007D: CLR A ;007D E4XCH A,R4 ;007E CCMOV R0,A ;007F F8MOV B,#08H ;0080 75 F0 08 Q0083: MOV A,R7 ;0083 EFADD A,R7 ;0084 2FMOV R7,A ;0085 FFMOV A,R6 ;0086 EERLC A ;0087 33MOV R6,A ;0088 FEMOV A,R4 ;0089 ECRLC A ;008A 33MOV R4,A ;008B FCMOV A,R6 ;008C EESUBB A,R5 ;008D 9DMOV A,R4 ;008E ECSUBB A,R0 ;008F 98JC Q0097 ;0090 40 05MOV R4,A ;0092 FCMOV A,R6 ;0093 EESUBB A,R5 ;0094 9DMOV R6,A ;0095 FEINC R7 ;0096 0FQ0097: DJNZ B,Q0083 ;0097 D5 F0 E9CLR A ;009A E4XCH A,R6 ;009B CEMOV R5,A ;009C FDRET ;009D 22Q009E: MOV A,R5 ;009E EDMOV R0,A ;009F F8MOV B,A ;00A0 F5 F0MOV A,R6 ;00A2 EEDIV AB ;00A3 84JB OV,Q00C3 ;00A4 20 D2 1CMOV R6,A ;00A7 FEMOV R5,B ;00A8 AD F0MOV B,#08H ;00AA 75 F0 08 Q00AD: MOV A,R7 ;00AD EFADD A,R7 ;00AE 2FMOV R7,A ;00AF FFMOV A,R5 ;00B0 EDRLC A ;00B1 33MOV R5,A ;00B2 FDJC Q00BC ;00B3 40 07SUBB A,R0 ;00B5 98JNC Q00BE ;00B6 50 06DJNZ B,Q00AD ;00B8 D5 F0 F2RET ;00BB 22Q00BC: CLR C ;00BC C3SUBB A,R0 ;00BD 98Q00BE: MOV R5,A ;00BE FDINC R7 ;00BF 0FDJNZ B,Q00AD ;00C0 D5 F0 EA Q00C3: RET ;00C3 22Q00C4: DB 0E7H, 09H,0F6H, 08H, 70H,0FAH, 80H, 46H ;....p..FQ00CC: DB 0E7H, 09H,0F2H, 08H, 70H,0FAH, 80H, 3EH ;....p..>Q00D4: DB 88H, 82H, 8CH, 83H,0E7H, 09H,0F0H,0A3H ;........Q00DC: DB 70H,0FAH, 80H, 7EH,0E3H, 09H,0F6H, 08H ;p..~....Q00E4: DB 70H,0FAH, 80H, 76H,0E3H, 09H,0F2H, 08H ;p..v....Q00EC: DB 70H,0FAH, 80H, 6EH, 88H, 82H, 8CH, 83H ;p..n....Q00F4: DB 0E3H, 09H,0F0H,0A3H, 70H,0FAH, 80H, 62H ;....p..bQ00FC: DB 89H, 82H, 8AH, 83H,0E0H,0A3H,0F6H, 08H ;........Q0104: DB 70H,0FAH, 80H, 56H, 89H, 82H, 8AH, 83H ;p..V....Q010C: DB 0E0H,0A3H,0F2H, 08H, 70H,0FAH, 80H, 4AH ;....p..JQ0114: DB 80H,0D2H, 80H,0FAH, 80H,0C6H, 80H,0D4H ;........Q011C: DB 80H, 65H, 80H,0F2H, 80H, 31H, 80H, 10H ;.e...1..Q0124: DB 80H,0A6H, 80H,0EAH, 80H, 9AH, 80H,0A8H ;........Q012C: DB 80H,0DAH, 80H,0E2H, 80H,0CAH, 80H, 31H ; (1)Q0134: DB 89H, 82H, 8AH, 83H,0ECH,0FAH,0E4H, 93H ;........Q013C: DB 0A3H,0C8H,0C5H, 82H,0C8H,0CCH,0C5H, 83H ;........Q0144: DB 0CCH,0F0H,0A3H,0C8H,0C5H, 82H,0C8H,0CCH ;........Q014C: DB 0C5H, 83H,0CCH, 70H,0E9H, 80H, 0DH, 89H ;...p....Q0154: DB 82H, 8AH, 83H,0E4H, 93H,0A3H,0F6H, 08H ;........Q015C: DB 70H,0F9H ;p.Q015E: MOV A,R4 ;015E ECMOV R2,A ;015F FAMOV R1,B ;0160 A9 F0MOV A,R5 ;0162 EDMOV R3,A ;0163 FBRET ;0164 22Q0165: DB 89H, 82H, 8AH, 83H,0ECH,0FAH,0E0H,0A3H ;........Q016D: DB 0C8H,0C5H, 82H,0C8H,0CCH,0C5H, 83H,0CCH ;........Q0175: DB 0F0H,0A3H,0C8H,0C5H, 82H,0C8H,0CCH,0C5H ;........Q017D: DB 83H,0CCH, 70H,0EAH, 80H,0DDH, 89H, 82H ;..p.....Q0185: DB 8AH, 83H,0E4H, 93H,0A3H,0F2H, 08H, 70H ;.......pQ018D: DB 0F9H, 80H,0CEH ;...Q0190: MOV B,R0 ;0190 88 F0MOV A,R5 ;0192 EDADD A,#02H ;0193 24 02CJNE A,#04H,Q0198 ;0195 B4 04 00 Q0198: JNC Q015E ;0198 50 C4MOV DPL,A ;019A F5 82MOV A,R3 ;019C EBADD A,#02H ;019D 24 02CJNE A,#04H,Q01A2 ;019F B4 04 00 Q01A2: JNC Q015E ;01A2 50 BARL A ;01A4 23RL A ;01A5 23ORL A,DPL ;01A6 45 82RL A ;01A8 23MOV DPTR,#0114H ;01A9 90 01 14JMP @A+DPTR ;01AC 73Q01AD: MOV R1,07H ;01AD A9 07MOV A,3AH ;01AF E5 3ADEC A ;01B1 14JNZ Q01B7 ;01B2 70 03LJMP Q0281 ;01B4 02 02 81 Q01B7: DEC A ;01B7 14JNZ Q01BD ;01B8 70 03LJMP Q0267 ;01BA 02 02 67 Q01BD: DEC A ;01BD 14JZ Q0238 ;01BE 60 78DEC A ;01C0 14JZ Q0201 ;01C1 60 3EADD A,#0FEH ;01C3 24 FEJZ Q01CA ;01C5 60 03LJMP Q0299 ;01C7 02 02 99 Q01CA: CJNE R1,#01H,Q01D6 ;01CA B9 01 09MOV A,1CH ;01CD E5 1CCLR C ;01CF C3SUBB A,#63H ;01D0 94 63JNC Q01D6 ;01D2 50 02INC 1CH ;01D4 05 1CQ01D6: CJNE R1,#0FFH,Q01E2 ;01D6 B9 FF 09MOV A,1CH ;01D9 E5 1CSETB C ;01DB D3SUBB A,#00H ;01DC 94 00JC Q01E2 ;01DE 40 02DEC 1CH ;01E0 15 1CQ01E2: LCALL Q058B ;01E2 12 05 8BMOV A,R7 ;01E5 EFJZ Q01EC ;01E6 60 04MOV R7,#1DH ;01E8 7F 1DSJMP Q01EE ;01EA 80 02Q01EC: MOV R7,#1CH ;01EC 7F 1C Q01EE: MOV 0BH,R7 ;01EE 8F 0BMOV A,#09H ;01F0 74 09ADD A,1AH ;01F2 25 1AMOV R0,A ;01F4 F8MOV A,@R0 ;01F5 E6MOV R7,A ;01F6 FFMOV A,19H ;01F7 E5 19SETB C ;01F9 D3SUBB A,R7 ;01FA 9FJC Q0264 ;01FB 40 67MOV 19H,R7 ;01FD 8F 19SJMP Q0264 ;01FF 80 63Q0201: CJNE R1,#01H,Q020D ;0201 B9 01 09MOV A,1AH ;0204 E5 1ACLR C ;0206 C3SUBB A,#0CH ;0207 94 0CJNC Q020D ;0209 50 02INC 1AH ;020B 05 1AQ020D: CJNE R1,#0FFH,Q0219 ;020D B9 FF 09MOV A,1AH ;0210 E5 1ASETB C ;0212 D3SUBB A,#01H ;0213 94 01JC Q0219 ;0215 40 02DEC 1AH ;0217 15 1A Q0219: LCALL Q058B ;0219 12 05 8BMOV A,R7 ;021C EFJZ Q0223 ;021D 60 04MOV R7,#1DH ;021F 7F 1DSJMP Q0225 ;0221 80 02 Q0223: MOV R7,#1CH ;0223 7F 1C Q0225: MOV 0BH,R7 ;0225 8F 0BMOV A,#09H ;0227 74 09ADD A,1AH ;0229 25 1AMOV R0,A ;022B F8MOV A,@R0 ;022C E6MOV R7,A ;022D FFMOV A,19H ;022E E5 19SETB C ;0230 D3SUBB A,R7 ;0231 9FJC Q0236 ;0232 40 02MOV 19H,R7 ;0234 8F 19 Q0236: SJMP Q0264 ;0236 80 2C Q0238: LCALL Q058B ;0238 12 05 8BMOV A,R7 ;023B EFJZ Q0242 ;023C 60 04MOV R7,#1DH ;023E 7F 1DSJMP Q0244 ;0240 80 02 Q0242: MOV R7,#1CH ;0242 7F 1C Q0244: MOV 0BH,R7 ;0244 8F 0BCJNE R1,#01H,Q0258 ;0246 B9 01 0FMOV A,#09H ;0249 74 09ADD A,1AH ;024B 25 1AMOV R0,A ;024D F8MOV A,@R0 ;024E E6MOV R7,A ;024F FFMOV A,19H ;0250 E5 19CLR C ;0252 C3SUBB A,R7 ;0253 9FJNC Q0258 ;0254 50 02INC 19H ;0256 05 19 Q0258: CJNE R1,#0FFH,Q0264 ;0258 B9 FF 09MOV A,19H ;025B E5 19SETB C ;025D D3SUBB A,#00H ;025E 94 00JC Q0264 ;0260 40 02DEC 19H ;0262 15 19Q0264: LJMP Q034B ;0264 02 03 4B Q0267: CJNE R1,#01H,Q0273 ;0267 B9 01 09MOV A,18H ;026A E5 18CLR C ;026C C3SUBB A,#17H ;026D 94 17JNC Q0273 ;026F 50 02INC 18H ;0271 05 18Q0273: MOV A,R1 ;0273 E9CPL A ;0274 F4JNZ Q0299 ;0275 70 22MOV A,18H ;0277 E5 18SETB C ;0279 D3SUBB A,#00H ;027A 94 00JC Q0299 ;027C 40 1BDEC 18H ;027E 15 18RET ;0280 22Q0281: CJNE R1,#01H,Q028D ;0281 B9 01 09MOV A,17H ;0284 E5 17CLR C ;0286 C3SUBB A,#3BH ;0287 94 3BJNC Q028D ;0289 50 02INC 17H ;028B 05 17Q028D: CJNE R1,#0FFH,Q0299 ;028D B9 FF 09MOV A,17H ;0290 E5 17SETB C ;0292 D3SUBB A,#00H ;0293 94 00JC Q0299 ;0295 40 02DEC 17H ;0297 15 17Q0299: RET ;0299 22Q029A: PUSH ACC ;029A C0 E0PUSH B ;029C C0 F0PUSH DPH ;029E C0 83PUSH DPL ;02A0 C0 82PUSH PSW ;02A2 C0 D0MOV PSW,#00H ;02A4 75 D0 00PUSH 00H ;02A7 C0 00PUSH 01H ;02A9 C0 01PUSH 02H ;02AB C0 02PUSH 03H ;02AD C0 03PUSH 04H ;02AF C0 04PUSH 05H ;02B1 C0 05PUSH 06H ;02B3 C0 06PUSH 07H ;02B5 C0 07MOV TH0,#3DH ;02B7 75 8C 3DMOV TL0,#0B0H ;02BA 75 8A B0 INC 08H ;02BD 05 08 MOV A,08H ;02BF E5 08 XRL A,#02H ;02C1 64 02 JNZ Q0330 ;02C3 70 6B MOV 08H,#00H ;02C5 75 08 00 MOV R3,#00H ;02C8 7B 00 MOV R2,#00H ;02CA 7A 00 MOV R1,#40H ;02CC 79 40 MOV R7,1CH ;02CE AF 1C LCALL Q0695 ;02D0 12 06 95 MOV R2,#00H ;02D3 7A 00 MOV R1,#43H ;02D5 79 43 MOV R7,1AH ;02D7 AF 1A LCALL Q0695 ;02D9 12 06 95 MOV R2,#00H ;02DC 7A 00 MOV R1,#46H ;02DE 79 46 MOV R7,19H ;02E0 AF 19 LCALL Q0695 ;02E2 12 06 95 MOV A,1BH ;02E5 E5 1B MOV B,#03H ;02E7 75 F0 03 MUL AB ;02EA A4 ADD A,#22H ;02EB 24 22 MOV R0,A ;02ED F8 MOV 03H,@R0 ;02EE 86 03 INC R0 ;02F0 08MOV A,@R0 ;02F1 E6 MOV R2,A ;02F2 FAINC R0 ;02F3 08MOV A,@R0 ;02F4 E6 MOV R1,A ;02F5 F9 MOV R0,#48H ;02F6 78 48 MOV R4,#00H ;02F8 7C 00 MOV R5,#00H ;02FA 7D 00 LCALL Q0190 ;02FC 12 01 90 MOV R3,#00H ;02FF 7B 00 MOV R2,#00H ;0301 7A 00 MOV R1,#51H ;0303 79 51 MOV R7,18H ;0305 AF 18 LCALL Q0695 ;0307 12 06 95 MOV R2,#00H ;030A 7A 00 MOV R1,#54H ;030C 79 54 MOV R7,17H ;030E AF 17 LCALL Q0695 ;0310 12 06 95MOV R2,#00H ;0313 7A 00MOV R1,#57H ;0315 79 57MOV R7,16H ;0317 AF 16LCALL Q0695 ;0319 12 06 95MOV R2,#00H ;031C 7A 00MOV R1,#3BH ;031E 79 3BCLR A ;0320 E4MOV R7,A ;0321 FFLCALL Q05BD ;0322 12 05 BDMOV R3,#00H ;0325 7B 00MOV R2,#00H ;0327 7A 00MOV R1,#4CH ;0329 79 4CMOV R7,#40H ;032B 7F 40LCALL Q05BD ;032D 12 05 BD Q0330: POP 07H ;0330 D0 07POP 06H ;0332 D0 06POP 05H ;0334 D0 05POP 04H ;0336 D0 04POP 03H ;0338 D0 03POP 02H ;033A D0 02POP 01H ;033C D0 01POP 00H ;033E D0 00POP PSW ;0340 D0 D0POP DPL ;0342 D0 82POP DPH ;0344 D0 83POP B ;0346 D0 F0POP ACC ;0348 D0 E0RETI ;034A 32Q034B: MOV 63H,#00H ;034B 75 63 00MOV 64H,#05H ;034E 75 64 05MOV DPTR,#07D0H ;0351 90 07 D0 Q0354: MOV A,1CH ;0354 E5 1CADD A,#0D0H ;0356 24 D0MOV R7,A ;0358 FFCLR A ;0359 E4ADDC A,#07H ;035A 34 07MOV R6,A ;035C FECLR C ;035D C3MOV A,DPL ;035E E5 82SUBB A,R7 ;0360 9FMOV A,DPH ;0361 E5 83SUBB A,R6 ;0363 9EJNC Q0394 ;0364 50 2EMOV R7,DPL ;0366 AF 82MOV R6,DPH ;0368 AE 83LCALL Q0594 ;036A 12 05 94MOV A,R7 ;036D EFMOV R6,#01H ;036E 7E 01JZ Q0376 ;0370 60 04MOV R7,#6EH ;0372 7F 6ESJMP Q0378 ;0374 80 02Q0376: MOV R7,#6DH ;0376 7F 6DQ0378: MOV 61H,R6 ;0378 8E 61MOV 62H,R7 ;037A 8F 62MOV A,64H ;037C E5 64ADD A,62H ;037E 25 62MOV R7,A ;0380 FFMOV A,63H ;0381 E5 63ADDC A,61H ;0383 35 61MOV R6,A ;0385 FEMOV R4,#00H ;0386 7C 00MOV R5,#07H ;0388 7D 07LCALL Q006F ;038A 12 00 6FMOV 63H,R4 ;038D 8C 63MOV 64H,R5 ;038F 8D 64INC DPTR ;0391 A3SJMP Q0354 ;0392 80 C0Q0394: CLR A ;0394 E4MOV 61H,A ;0395 F5 61MOV 62H,A ;0397 F5 62MOV DPH,A ;0399 F5 83MOV DPL,#01H ;039B 75 82 01 Q039E: CLR C ;039E C3MOV A,DPL ;039F E5 82SUBB A,1AH ;03A1 95 1AMOV A,DPH ;03A3 E5 83SUBB A,#00H ;03A5 94 00JNC Q03BC ;03A7 50 13MOV R7,DPL ;03A9 AF 82MOV A,#09H ;03AB 74 09ADD A,R7 ;03AD 2FMOV R0,A ;03AE F8MOV A,@R0 ;03AF E6ADD A,62H ;03B0 25 62MOV 62H,A ;03B2 F5 62CLR A ;03B4 E4ADDC A,61H ;03B5 35 61MOV 61H,A ;03B7 F5 61INC DPTR ;03B9 A3SJMP Q039E ;03BA 80 E2Q03BC: MOV A,19H ;03BC E5 19ADD A,62H ;03BE 25 62MOV 62H,A ;03C0 F5 62CLR A ;03C2 E4ADDC A,61H ;03C3 35 61MOV 61H,A ;03C5 F5 61MOV A,64H ;03C7 E5 64ADD A,62H ;03C9 25 62MOV R7,A ;03CB FFMOV A,63H ;03CC E5 63ADDC A,61H ;03CE 35 61MOV R6,A ;03D0 FEMOV R4,#00H ;03D1 7C 00MOV R5,#07H ;03D3 7D 07LCALL Q006F ;03D5 12 00 6FMOV A,R5 ;03D8 EDINC A ;03D9 04MOV 1BH,A ;03DA F5 1BRET ;03DC 22Q03DD: PUSH ACC ;03DD C0 E0PUSH B ;03DF C0 F0PUSH DPH ;03E1 C0 83PUSH DPL ;03E3 C0 82PUSH PSW ;03E5 C0 D0MOV PSW,#00H ;03E7 75 D0 00PUSH 00H ;03EA C0 00PUSH 01H ;03EC C0 01PUSH 02H ;03EE C0 02PUSH 03H ;03F0 C0 03PUSH 04H ;03F2 C0 04PUSH 05H ;03F4 C0 05PUSH 06H ;03F6 C0 06PUSH 07H ;03F8 C0 07JB P3.4,Q0427 ;03FA 20 B4 2AJNB P3.4,$ ;03FD 30 B4 FDMOV A,3AH ;0400 E5 3ACPL A ;0402 F4JZ Q040A ;0403 60 05MOV A,3AH ;0405 E5 3ACJNE A,#01H,Q040D ;0407 B4 01 03 Q040A: MOV 3AH,#07H ;040A 75 3A 07 Q040D: DEC 3AH ;040D 15 3AMOV A,3AH ;040F E5 3AQ0411: CJNE A,#05H,Q0417 ;0411 B4 05 03MOV 3AH,#04H ;0414 75 3A 04 Q0417: MOV 59H,#5BH ;0417 75 59 5BMOV A,#1DH ;041A 74 1DADD A,3AH ;041C 25 3AMOV R0,A ;041E F8MOV A,@R0 ;041F E6MOV 5AH,A ;0420 F5 5AMOV 5BH,#5DH ;0422 75 5B 5DSJMP Q0453 ;0425 80 2CQ0427: JB P3.5,Q0431 ;0427 20 B5 07JNB P3.5,$ ;042A 30 B5 FDMOV R7,#01H ;042D 7F 01SJMP Q0439 ;042F 80 08Q0431: JB P3.6,Q043E ;0431 20 B6 0AJNB P3.6,$ ;0434 30 B6 FDMOV R7,#0FFH ;0437 7F FFQ0439: LCALL Q01AD ;0439 12 01 ADSJMP Q0453 ;043C 80 15Q043E: JB P3.7,Q0453 ;043E 20 B7 12JNB P3.7,$ ;0441 30 B7 FDLCALL Q0557 ;0444 12 05 57MOV 59H,#20H ;0447 75 59 20MOV 5AH,#20H ;044A 75 5A 20MOV 5BH,#20H ;044D 75 5B 20MOV 3AH,#0FFH ;0450 75 3A FF Q0453: POP 07H ;0453 D0 07POP 06H ;0455 D0 06POP 05H ;0457 D0 05POP 04H ;0459 D0 04POP 03H ;045B D0 03POP 02H ;045D D0 02POP 01H ;045F D0 01POP 00H ;0461 D0 00POP PSW ;0463 D0 D0POP DPL ;0465 D0 82POP DPH ;0467 D0 83POP B ;0469 D0 F0POP ACC ;046B D0 E0RETI ;046D 32Q046E: MOV R0,#7FH ;046E 78 7FCLR A ;0470 E4Q0471: MOV @R0,A ;0471 F6DJNZ R0,Q0471 ;0472 D8 FDMOV SP,#64H ;0474 75 81 64LJMP Q04B5 ;0477 02 04 B5 Q047A: LJMP Q0659 ;047A 02 06 59 Q047D: CLR A ;047D E4MOVC A,@A+DPTR ;047E 93INC DPTR ;047F A3MOV R0,A ;0480 F8Q0481: CLR A ;0481 E4MOVC A,@A+DPTR ;0482 93INC DPTR ;0483 A3JC Q0489 ;0484 40 03MOV @R0,A ;0486 F6SJMP Q048A ;0487 80 01Q0489: MOVX @R0,A ;0489 F2Q048A: INC R0 ;048A 08DJNZ R7,Q0481 ;048B DF F4SJMP Q04B8 ;048D 80 29Q048F: CLR A ;048F E4MOVC A,@A+DPTR ;0490 93INC DPTR ;0491 A3MOV R0,A ;0492 F8ANL A,#07H ;0493 54 07ADD A,#0CH ;0495 24 0CXCH A,R0 ;0497 C8CLR C ;0498 C3RLC A ;0499 33SWAP A ;049A C4ANL A,#0FH ;049B 54 0FORL A,#20H ;049D 44 20XCH A,R0 ;049F C8MOVC A,@A+PC ;04A0 83JC Q04A7 ;04A1 40 04CPL A ;04A3 F4ANL A,@R0 ;04A4 56SJMP Q04A8 ;04A5 80 01Q04A7: ORL A,@R0 ;04A7 46Q04A8: MOV @R0,A ;04A8 F6DJNZ R7,Q048F ;04A9 DF E4SJMP Q04B8 ;04AB 80 0BAJMP Q0000 ;04AD 01 02INC A ;04AF 04INC R0 ;04B0 08JBC 24H.0,Q04F4 ;04B1 10 20 40SJMP Q0453 ;04B4 80 90Q04B5: MOV DPTR,#04FAH ;04B5 90 04 FA Q04B8: CLR A ;04B8 E4MOV R6,#01H ;04B9 7E 01MOVC A,@A+DPTR ;04BB 93JZ Q047A ;04BC 60 BCINC DPTR ;04BE A3MOV R7,A ;04BF FFANL A,#3FH ;04C0 54 3FJNB ACC.5,Q04CE ;04C2 30 E5 09ANL A,#1FH ;04C5 54 1FMOV R6,A ;04C7 FECLR A ;04C8 E4MOVC A,@A+DPTR ;04C9 93INC DPTR ;04CA A3JZ Q04CE ;04CB 60 01INC R6 ;04CD 0EQ04CE: XCH A,R7 ;04CE CFANL A,#0C0H ;04CF 54 C0ADD A,ACC ;04D1 25 E0JZ Q047D ;04D3 60 A8JC Q048F ;04D5 40 B8CLR A ;04D7 E4MOVC A,@A+DPTR ;04D8 93INC DPTR ;04D9 A3MOV R2,A ;04DA FACLR A ;04DB E4MOVC A,@A+DPTR ;04DC 93INC DPTR ;04DD A3MOV R0,A ;04DE F8Q04DF: CLR A ;04DF E4MOVC A,@A+DPTR ;04E0 93INC DPTR ;04E1 A3XCH A,R0 ;04E2 C8XCH A,DPL ;04E3 C5 82XCH A,R0 ;04E5 C8XCH A,R2 ;04E6 CAXCH A,DPH ;04E7 C5 83XCH A,R2 ;04E9 CAMOVX @DPTR,A ;04EA F0INC DPTR ;04EB A3XCH A,R0 ;04EC C8XCH A,DPL ;04ED C5 82XCH A,R0 ;04EF C8XCH A,R2 ;04F0 CAXCH A,DPH ;04F1 C5 83XCH A,R2 ;04F3 CAQ04F4: DJNZ R7,Q04DF ;04F4 DF E9DJNZ R6,Q04DF ;04F6 DE E7SJMP Q04B8 ;04F8 80 BEAJMP Q0008 ;04FA 01 08NOP ;04FC 00INC R5 ;04FD 0DINC R1 ;04FE 09Q04FF: NOP ;04FF 00DEC R7 ;0500 1FNOP ;0501 00DEC R7 ;0502 1FDEC R6 ;0503 1EDEC R7 ;0504 1FDEC R6 ;0505 1EDEC R7 ;0506 1FDEC R7 ;0507 1FDEC R6 ;0508 1EDEC R7 ;0509 1FDEC R6 ;050A 1EDEC R7 ;050B 1FDEC 25H ;050C 15 25MOV R7,A ;050E FFINC @R0 ;050F 06MOV R1,#0FFH ;0510 79 FFINC @R0 ;0512 06MOV R5,#0FFH ;0513 7D FFINC @R0 ;0515 06AJMP Q04FF ;0516 81 FFINC @R0 ;0518 06MOV 06H,0FFH ;0519 85 FF 06MOV 0FFH,R1 ;051C 89 FFINC @R0 ;051E 06MOV 0FFH,R5 ;051F 8D FFINC @R0 ;0521 06ACALL Q0411 ;0522 91 11ADDC A,R3 ;0524 3BORL A,#41H ;0525 44 41ANL A,#45H ;0527 54 45JB 26H.0,Q0553 ;0529 20 30 30ADD A,R5 ;052C 2DJNB 26H.0,Q0557 ;052D 30 30 2DJNB 26H.0,Q0553 ;0530 30 30 20JB 24H.0,Q0536 ;0533 20 20 00 Q0536: ACALL Q004C ;0536 11 4CANL A,#49H ;0538 54 49ORL A,R5 ;053A 4DORL A,20H ;053B 45 20JNB 26H.0,Q057D ;053D 30 30 3AJNB 26H.0,Q057D ;0540 30 30 3AJNB 26H.0,Q0566 ;0543 30 30 20JB 24H.0,Q0549 ;0546 20 20 00 Q0549: AJMP Q003A ;0549 01 3AMOV R7,A ;054B FFINC R0 ;054C 08DEC R5 ;054D 1DADD A,R5 ;054E 2DORL A,R5 ;054F 4DORL A,R0 ;0550 48ORL A,#4DH ;0551 44 4DQ0553: ADD A,R5 ;0553 2DANL A,R1 ;0554 59NOP ;0555 00NOP ;0556 00Q0557: CLR A ;0557 E4MOV R5,A ;0558 FDMOV R7,#8EH ;0559 7F 8ELCALL Q06E8 ;055B 12 06 E8MOV R4,#01H ;055E 7C 01Q0560: MOV A,R4 ;0560 ECADD A,ACC ;0561 25 E0ADD A,#80H ;0563 24 80MOV R7,A ;0565 FFQ0566: MOV A,#16H ;0566 74 16ADD A,R4 ;0568 2CMOV R0,A ;0569 F8MOV A,@R0 ;056A E6MOV R6,A ;056B FEMOV B,#0AH ;056C 75 F0 0ADIV AB ;056F 84SWAP A ;0570 C4ANL A,#0F0H ;0571 54 F0MOV R5,A ;0573 FDMOV A,R6 ;0574 EEMOV B,#0AH ;0575 75 F0 0ADIV AB ;0578 84MOV A,B ;0579 E5 F0ORL A,R5 ;057B 4DMOV R5,A ;057C FDQ057D: LCALL Q06E8 ;057D 12 06 E8INC R4 ;0580 0CCJNE R4,#07H,Q0560 ;0581 BC 07 DCMOV R5,#80H ;0584 7D 80MOV R7,#8EH ;0586 7F 8ELJMP Q06E8 ;0588 02 06 E8 Q058B: MOV A,1CH ;058B E5 1CADD A,#0D0H ;058D 24 D0MOV R7,A ;058F FFCLR A ;0590 E4ADDC A,#07H ;0591 34 07MOV R6,A ;0593 FEQ0594: MOV R3,07H ;0594 AB 07MOV R2,06H ;0596 AA 06MOV A,R3 ;0598 EBANL A,#03H ;0599 54 03JNZ Q05A7 ;059B 70 0AMOV R4,A ;059D FCMOV R5,#64H ;059E 7D 64LCALL Q006F ;05A0 12 00 6FMOV A,R5 ;05A3 EDORL A,R4 ;05A4 4CJNZ Q05B6 ;05A5 70 0FQ05A7: MOV R6,02H ;05A7 AE 02MOV R7,03H ;05A9 AF 03MOV R4,#01H ;05AB 7C 01MOV R5,#90H ;05AD 7D 90LCALL Q006F ;05AF 12 00 6FMOV A,R5 ;05B2 EDORL A,R4 ;05B3 4CJNZ Q05BA ;05B4 70 04Q05B6: MOV R7,#01H ;05B6 7F 01SJMP Q05BC ;05B8 80 02 Q05BA: MOV R7,#00H ;05BA 7F 00 Q05BC: RET ;05BC 22Q05BD: MOV 5DH,R3 ;05BD 8B 5DMOV 5EH,R2 ;05BF 8A 5EMOV 5FH,R1 ;05C1 89 5FLCALL Q0732 ;05C3 12 07 32CLR A ;05C6 E4MOV 60H,A ;05C7 F5 60Q05C9: MOV R3,5DH ;05C9 AB 5DMOV R2,5EH ;05CB AA 5EMOV R1,5FH ;05CD A9 5FMOV DPL,60H ;05CF 85 60 82MOV DPH,#00H ;05D2 75 83 00LCALL Q000E ;05D5 12 00 0EMOV R7,A ;05D8 FFLCALL Q0718 ;05D9 12 07 18LCALL Q063F ;05DC 12 06 3FINC 60H ;05DF 05 60MOV A,60H ;05E1 E5 60CLR C ;05E3 C3SUBB A,#10H ;05E4 94 10JC Q05C9 ;05E6 40 E1RET ;05E8 22Q05E9: CLR A ;05E9 E4MOV R7,A ;05EA FFQ05EB: MOV A,R6 ;05EB EECLR C ;05EC C3RRC A ;05ED 13MOV R6,A ;05EE FEMOV C,P1.0 ;05EF A2 90CLR A ;05F1 E4RLC A ;05F2 33MOV R5,A ;05F3 FDSWAP A ;05F4 C4RLC A ;05F5 33RLC A ;05F6 33RLC A ;05F7 33ANL A,#80H ;05F8 54 80ORL 06H,A ;05FA 42 06SETB P1.1 ;05FC D2 91CLR P1.1 ;05FE C2 91INC R7 ;0600 0FCJNE R7,#08H,Q05EB ;0601 BF 08 E7MOV A,R6 ;0604 EESWAP A ;0605 C4ANL A,#0FH ;0606 54 0FMOV B,#0AH ;0608 75 F0 0AMUL AB ;060B A4MOV R7,A ;060C FFMOV A,R6 ;060D EEANL A,#0FH ;060E 54 0FADD A,R7 ;0610 2FMOV R7,A ;0611 FFRET ;0612 22Q0613: MOV R7,#38H ;0613 7F 38LCALL Q0725 ;0615 12 07 25LCALL Q063F ;0618 12 06 3FMOV R7,#01H ;061B 7F 01LCALL Q0725 ;061D 12 07 25LCALL Q063F ;0620 12 06 3FMOV R7,#06H ;0623 7F 06LCALL Q0725 ;0625 12 07 25LCALL Q063F ;0628 12 06 3FMOV R7,#0CH ;062B 7F 0CLCALL Q0725 ;062D 12 07 25MOV R7,#01H ;0630 7F 01MOV R6,#00H ;0632 7E 00LJMP Q0643 ;0634 02 06 43 Q0637: CLR P2.1 ;0637 C2 A1CLR P2.2 ;0639 C2 A2MOV P0,R3 ;063B 8B 80Q063D: SETB P2.2 ;063D D2 A2Q063F: MOV R7,#01H ;063F 7F 01MOV R6,#00H ;0641 7E 00Q0643: MOV A,R7 ;0643 EFDEC R7 ;0644 1FMOV R2,06H ;0645 AA 06JNZ Q064A ;0647 70 01DEC R6 ;0649 1EQ064A: ORL A,R2 ;064A 4AJZ Q0658 ;064B 60 0BCLR A ;064D E4MOV R5,A ;064E FDQ064F: MOV A,R5 ;064F EDCLR C ;0650 C3SUBB A,#78H ;0651 94 78JNC Q0643 ;0653 50 EEINC R5 ;0655 0DSJMP Q064F ;0656 80 F7Q0658: RET ;0658 22Q0659: LCALL Q0613 ;0659 12 06 13MOV IE,#83H ;065C 75 A8 83MOV IP,#01H ;065F 75 B8 01SETB IT0 ;0662 D2 88MOV TMOD,#01H ;0664 75 89 01MOV TH0,#3DH ;0667 75 8C 3DMOV TL0,#0B0H ;066A 75 8A B0SETB TR0 ;066D D2 8CQ066F: MOV A,3AH ;066F E5 3ACJNE A,#0FFH,Q066F ;0671 B4 FF FBLCALL Q06AE ;0674 12 06 AESJMP Q066F ;0677 80 F6ANL 55H,#4EH ;0679 53 55 4ENOP ;067C 00ORL A,R5 ;067D 4DORL A,R7 ;067E 4FORL A,R6 ;067F 4ENOP ;0680 00ANL A,#55H ;0681 54 55ANL 00H,#57H ;0683 53 00 57ORL A,4EH ;0686 45 4ENOP ;0688 00ANL A,#48H ;0689 54 48ANL A,00H ;068B 55 00ORL A,@R0 ;068D 46ANL 49H,A ;068E 52 49NOP ;0690 00ANL 41H,#54H ;0691 53 41 54NOP ;0694 00Q0695: MOV A,R7 ;0695 EFMOV B,#0AH ;0696 75 F0 0ADIV AB ;0699 84ADD A,#30H ;069A 24 30LCALL Q003B ;069C 12 00 3BMOV A,R7 ;069F EFMOV B,#0AH ;06A0 75 F0 0ADIV AB ;06A3 84MOV A,B ;06A4 E5 F0ADD A,#30H ;06A6 24 30MOV DPTR,#0001H ;06A8 90 00 01LJMP Q004D ;06AB 02 00 4D Q06AE: CLR A ;06AE E4MOV R4,A ;06AF FCQ06B0: MOV A,R4 ;06B0 ECADD A,ACC ;06B1 25 E0ADD A,#81H ;06B3 24 81MOV R7,A ;06B5 FFLCALL Q06D7 ;06B6 12 06 D7MOV A,#16H ;06B9 74 16ADD A,R4 ;06BB 2CMOV R0,A ;06BC F8MOV @R0,07H ;06BD A6 07INC R4 ;06BF 0CCJNE R4,#07H,Q06B0 ;06C0 BC 07 EDRET ;06C3 22Q06C4: CLR A ;06C4 E4MOV R6,A ;06C5 FEQ06C6: MOV A,R7 ;06C6 EFRRC A ;06C7 13MOV P1.0,C ;06C8 92 90SETB P1.1 ;06CA D2 91CLR P1.1 ;06CC C2 91MOV A,R7 ;06CE EFCLR C ;06CF C3RRC A ;06D0 13MOV R7,A ;06D1 FFINC R6 ;06D2 0ECJNE R6,#08H,Q06C6 ;06D3 BE 08 F0RET ;06D6 22Q06D7: CLR P1.2 ;06D7 C2 92CLR P1.1 ;06D9 C2 91SETB P1.2 ;06DB D2 92LCALL Q06C4 ;06DD 12 06 C4LCALL Q05E9 ;06E0 12 05 E9SETB P1.1 ;06E3 D2 91CLR P1.2 ;06E5 C2 92RET ;06E7 22Q06E8: CLR P1.1 ;06E8 C2 91SETB P1.2 ;06EA D2 92LCALL Q06C4 ;06EC 12 06 C4MOV R7,05H ;06EF AF 05LCALL Q06C4 ;06F1 12 06 C4CLR P1.1 ;06F4 C2 91CLR P1.2 ;06F6 C2 92RET ;06F8 22Q06F9: CLR P2.0 ;06F9 C2 A0SETB P2.1 ;06FB D2 A1LCALL Q063D ;06FD 12 06 3DMOV R4,P0 ;0700 AC 80CLR P2.2 ;0702 C2 A2LCALL Q063F ;0704 12 06 3FMOV R7,04H ;0707 AF 04RET ;0709 22Q070A: LCALL Q06F9 ;070A 12 06 F9MOV A,R7 ;070D EFJB ACC.7,Q070A ;070E 20 E7 F9MOV R7,#05H ;0711 7F 05MOV R6,#00H ;0713 7E 00LJMP Q0643 ;0715 02 06 43 Q0718: MOV R3,07H ;0718 AB 07LCALL Q070A ;071A 12 07 0ASETB P2.0 ;071D D2 A0LCALL Q0637 ;071F 12 06 37CLR P2.2 ;0722 C2 A2RET ;0724 22Q0725: MOV R3,07H ;0725 AB 07LCALL Q070A ;0727 12 07 0ACLR P2.0 ;072A C2 A0LCALL Q0637 ;072C 12 06 37CLR P2.2 ;072F C2 A2RET ;0731 22Q0732: MOV A,R7 ;0732 EFORL A,#80H ;0733 44 80MOV R7,A ;0735 FFLJMP Q0725 ;0736 02 07 25。