电子科技大学
标准实验报告实验项目:基于FPGA数字秒表设计
目录
1.秒表设计要求 (1)
2.设计思路 (1)
2.1功能模块 (1)
2.1.1分频器 (1)
2.1.2计数器 (1)
2.1.3数据锁存器 (1)
2.1.4控制器 (1)
2.1.5扫描显示的控制电路 (2)
2.1.6显示电路 (3)
2.1.7按键消抖电路 (3)
3.电路实现 (4)
4.程序仿真 (10)
4.1分频器 (10)
4.1.1计数器电路综合 (11)
4.1.2计数器电路仿真 (11)
4.2同步计数器 (13)
4.2.1计数器实现 (13)
4.2.2计数器仿真 (15)
4.2.3同步计数器电路综合 (17)
4.3按键消抖电路 (18)
4.3.1按键消抖电路实现 (18)
4.3.2按键消抖电路仿真 (18)
4.3.3按键消抖电路综合 (20)
4.4八段译码器 (20)
4.4.1八段译码器实现 (20)
4.4.2八段译码器仿真 (21)
4.4.3八段译码器电路综合 (22)
4.5控制器 (23)
4.5.1控制器 (23)
4.5.1控制器仿真 (24)
4.5.3控制器电路综合 (25)
5.2View Technology Schematic : (26)
5.3管脚锁定: (27)
6.实验结论 (27)
1.秒表设计要求
(1)秒表的计时范围为00:00:00 ~ 59:59:99。
(2)两个按钮开关Start/Stop和Split/Reset,控制秒表的启动、停止、分段和复位:
在秒表已经被复位的情况下,按下“Start/Stop”键,秒表开始计时。在秒表正常运行的情况下,如果按下“Start/Stop”键,则秒表暂停计时;再次按下该键,秒表继续计时。在秒表正常运行的情况下,如果按下“Split/Reset”键,显示停止在按键时的时间,但秒表仍然在计时;再次按下该键,秒表恢复正常显示。在秒表暂停计时的情况下,按下“Split/Reset”键,秒表复位归零。
2.设计思路
2.1功能模块
2.1.1分频器
对晶体振荡器产生的时钟信号进行分频,产生时间基准信号
2.1.2计数器
对时间基准脉冲进行计数,完成计时功能
2.1.3数据锁存器
锁存数据使显示保持暂停
2.1.4控制器
通过产生锁存器的使能信号来控制计数器的运行、停止以及复位
设计分析:
2.1.5扫描显示的控制电路
包括扫描计数器、数据选择器和7段译码器,控制8个数码管以扫描方式显示计时结果,原理图如下:
2.1.6显示电路
2.1.7按键消抖电路
消除按键输入信号抖动的影响,输出单脉冲
按键按下时,FPGA 的输入为低电平;松开按键时,FPGA 的输入为高电平 但是在按下按键和松开按键的瞬间会出现抖动现象
2.2
电路框图
实验板上的数码管为共阳LED 数码管
实验电路板上的按键
3.电路实现
---------------------------------------------------------------------------------- -- Company:
-- Engineer:
--
-- Create Date: 09:08:39 03/12/2011
-- Design Name:
-- Module Name: stopwatch_1 - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
---------------------------------------------------------------------------------- library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity stopwatch_1 is
Port (
Clk : in STD_LOGIC;
start_stop : in STD_LOGIC;
split_reset : in STD_LOGIC;
ncs : out STD_LOGIC;
s : out STD_LOGIC_VECTOR(2 downto 0);
seg : out STD_LOGIC_VECTOR (7 downto 0)
);
end stopwatch_1;
architecture Behavioral of stopwatch_1 is
signal k1,k2,k3,k4: STD_LOGIC;
signal cnt_1,cnt_2 : STD_LOGIC_VECTOR(1 downto 0);
signal start_stop_out,split_reset_out: STD_LOGIC;
signal count: STD_LOGIC_VECTOR(15 downto 0):=(others=>'0');
signal clk_1k: STD_LOGIC;
signal z0,z1,z2,z3,z4,z5,z6,q1,q2,q3,q4,q5,q6 : STD_LOGIC_VECTOR(3 downto 0):=(others=>'0');
signal count_2: STD_LOGIC_VECTOR(2 downto 0 ):=(others=>'0');
signal in_7: STD_LOGIC_VECTOR(3 downto 0);
signal sreg: STD_LOGIC_VECTOR(2 downto 0):="111";
signal snext: STD_LOGIC_VECTOR(2 downto 0);
Begin
---------------------------------------------------------为三八译码器置入使能信号ncs <= '0';
---------------------------------------------------------分频电路
process(clk)
begin
if rising_edge(clk) then
if count = 47999 then
count <=(others=>'0');
else
count <= count+1;
end if;
end if;
end process;
clk_1k <= count(15);
---------------------------------------------------------同步计数电路process(clk_1k,sreg(2))
begin
if rising_edge(clk_1k) then
if sreg(2) = '1' then
z0<=(others=>'0');
z1<=(others=>'0');
z2<=(others=>'0');
z3<=(others=>'0');
z4<=(others=>'0');
z5<=(others=>'0');
z6<=(others=>'0');
elsif sreg(1) = '1' then
z0 <= z0+1;
if z0 = 9 then
z0 <=(others=>'0');
z1 <= z1+1;
if z1 = 9 then
z1 <=(others=>'0');
z2 <= z2+1;
if z2 = 9 then
z2 <=(others=>'0');
z3 <= z3+1;
if z3 = 9 then
z3 <= (others=>'0');
z4 <= z4+1;
if z4 = 5 then
z4 <= (others=>'0');
z5 <= z5+1;
if z5 = 9 then
z5 <= (others=>'0');
z6 <= z6+1;
if z6 = 5 then
z6 <= (others=>'0');
end if;
end if;
end if;
end if;
end if;
end if;
end if;
end if;
end if;
end process;
---------------------------------------------------------扫描计数器process(clk_1k)
begin
if rising_edge(clk_1k) then
count_2 <= count_2+1;
end if;
end process;
s <= count_2;
---------------------------------------------------------锁存器process(sreg(0),z1,z2,z3,z4,z5,z6)
begin
if sreg(0) = '1' then
q1 <= z1;
q2 <= z2;
q3 <= z3;
q4 <= z4;
q5 <= z5;
q6 <= z6;
end if;
end process;
---------------------------------------------------------
process(count_2,q1,q2,q3,q4,q5,q6)
begin
case count_2 is
when "000" => in_7 <= q1;
when "001" => in_7 <= q2;
when "011" => in_7 <= q3;
when "100" => in_7 <= q4;
when "110" => in_7 <= q5;
when "111" => in_7 <= q6;
when others => in_7 <= "1111";
end case;
end process;
---------------------------------------------------------八段译码器process(in_7)
begin
case in_7 is
when "0000" => seg <="00000011";
when "0001" => seg <="10011111";
when "0010" => seg <="00100101";
when "0011" => seg <="00001101";
when "0100" => seg <="10011001";
when "0101" => seg <="01001001";
when "0110" => seg <="01000001";
when "0111" => seg <="00011111";
when "1000" => seg <="00000001";
when "1001" => seg <="00001001";
when others => seg <="11111101";
end case;
end process;
---------------------------------------------------------按键去抖电路process(clk_1k,start_stop)
begin
if clk_1k'event and clk_1k='0' then
if cnt_1 = 3 then
k1 <= '1';
else
k1 <= '0';
cnt_1 <= cnt_1+1;
end if;
k2 <= k1;
end if;
if start_stop = '0' then
cnt_1 <= "00";
end if;
end process;
start_stop_out <= not k1 and k2;
process(clk_1k,split_reset)
begin
if clk_1k'event and clk_1k='0' then
if cnt_2 = 3 then
k3 <= '1';
else
k3 <= '0';
cnt_2 <= cnt_2+1;
end if;
k4 <= k3;
end if;
if split_reset = '0' then
cnt_2 <= "00";
end if;
end process;
split_reset_out <= not k3 and k4;
---------------------------------------------------------控制器
process(clk_1k,start_stop_out,split_reset_out)
begin
if rising_edge(clk_1k) then
sreg <= snext;
end if;
end process;
process(start_stop_out,split_reset_out,sreg)
begin
case sreg is
when "111" => if start_stop_out = '1' and split_reset_out = '0' then
snext <= "011";
else snext <= sreg;
end if;
when "011" => if start_stop_out = '1' and split_reset_out = '0' then
snext <= "001";
elsif start_stop_out = '0' and split_reset_out = '1'
then snext <= "010";
else snext <= sreg;
end if;
when "001" => if start_stop_out = '0' and split_reset_out = '1' then
snext <= "111";
elsif start_stop_out = '1' and split_reset_out = '0'
then snext <= "011";
else snext <= sreg;
end if;
when "010" => if start_stop_out = '0' and split_reset_out = '1' then
snext <= "011";
else snext <= sreg;
end if;
when others => snext <= "111";
end case;
end process;
end Behavioral;
注:控制器设计时,巧妙地将状态编码和控制器输出的控制信号编码合二为一,即状态编码也是控制信号编码,使得程序形式上更为简单、清晰。
4.程序仿真
4.1分频器
entity fp is
Port ( clk_48M : in STD_LOGIC;
clk_1k : out STD_LOGIC);
end fp;
architecture Behavioral of fp is
signal count: STD_LOGIC_VECTOR(15 downto 0):=(others=>'0'); begin
process(clk_48M)
begin
if rising_edge(clk_48M) then
if count = 47999 then
count <= (others=>'0');
else
count <= count+1;
end if;
end if;
end process;
clk_1k <= count(15);
end Behavioral;
tb : PROCESS
BEGIN
clk_48M <= '1'; wait for 10.4 ns;
clk_48M <= '0'; wait for 10.4 ns;
END PROCESS;
4.1.1计数器电路综合
4.1.2计数器电路仿真
由图可得分频后的信号周期T=999333718ps≈0.001s即的到了1KHz的信号
4.2.1计数器实现
entity count_6 is
Port ( clk_1k : in STD_LOGIC;
d1 : out STD_LOGIC_VECTOR(3 downto 0);
d2 : out STD_LOGIC_VECTOR(3 downto 0);
d3 : out STD_LOGIC_VECTOR(3 downto 0);
d4 : out STD_LOGIC_VECTOR(3 downto 0);
d5 : out STD_LOGIC_VECTOR(3 downto 0);
d6 : out STD_LOGIC_VECTOR(3 downto 0));
end count_6;
architecture Behavioral of count_6 is
signal z0,z1,z2,z3,z4,z5,z6: STD_LOGIC_VECTOR(3 downto 0):=(others=>'0');
signal clr,en: STD_LOGIC;
Begin
clr <= '0'; ---------------------------------------------清零无效
en <= '1'; ---------------------------------------------计数使能有效
d1 <= z1;
d2 <= z2;
d3 <= z3;
d4 <= z4;
d5 <= z5;
d6 <= z6;
process(clk_1k,clr)
begin
if rising_edge(clk_1k) then
if clr = '1' then
z0<=(others=>'0');
z1<=(others=>'0');
z2<=(others=>'0');
z3<=(others=>'0');
z4<=(others=>'0');
z5<=(others=>'0');
z6<=(others=>'0');
elsif en = '1' then
z0 <= z0+1;
if z0 = 9 then
z0 <=(others=>'0');
z1 <= z1+1;
if z1 = 9 then
z1 <=(others=>'0');
z2 <= z2+1;
if z2 = 9 then
z2 <=(others=>'0');
z3 <= z3+1;
if z3 = 9 then
z3 <= (others=>'0');
z4 <= z4+1;
if z4 = 5 then
z4 <= (others=>'0');
z5 <= z5+1;
if z5 = 9 then
z5 <= (others=>'0');
z6 <= z6+1;
if z6 = 5 then
z6 <= (others=>'0');
end if;
end if;
end if;
end if;
end if;
end if;
end if;
end if;
end if;
end process;
end Behavioral;
4.2.2计数器仿真
tb: PROCESS
BEGIN
clk_1k <= '0';wait for 0.5 ms;
clk_1k <= '1';wait for 0.5 ms;
END PROCESS;
0.01s位
由图可以看出为十进制
0.1s位
由图可以看出为十进制
1s位
由图可以看出为十进制10s位
由图可以看出为六进制
1min位
由图可以看出为十进制10min位
由图可以看出为六进制4.2.3同步计数器电路综合
4.3按键消抖电路
4.3.1按键消抖电路实现
entity quedou is
Port ( clk_1k : in STD_LOGIC;
key_in : in STD_LOGIC;
key_out : out STD_LOGIC);
end quedou;
architecture Behavioral of quedou is
signal k1,k2: STD_LOGIC;
signal cnt_1: STD_LOGIC_VECTOR(1 downto 0); begin
process(clk_1k,key_in)
begin
if clk_1k'event and clk_1k='0' then
if cnt_1 = 3 then
k1 <= '1';
else
k1 <= '0';
cnt_1 <= cnt_1+1;
end if;
k2 <= k1;
end if;
if key_in = '0' then
cnt_1 <= "00";
end if;
end process;
key_out <= not k1 and k2;
end Behavioral;
4.3.2按键消抖电路仿真
数字式秒表实验报告 摘要 本次设计任务是设计一个数字式秒表 经查阅资料后我把实验分为1.脉冲产生部分。2.电路控制部分。3.计数部分4.译码部分。5显示部分。 脉冲产生部分我选择555多谐振荡器,产生100Hz的脉冲。经参考资料,电路控制部分:启动和暂停控制开关使用由RS触发器组成的无抖动开关。 使用74ls160计数器计数,7447译码器驱动共阳极七段显示器。 实验要求 1.秒表最大计时值为99分59.99秒; 2. 6位数码管显示,分辨率为0.01秒; 3 .具有清零,启动计时,暂停及继续计数等控制功能; 4.控制操作间不超过二个。 实验分析 数字式秒表,所以必须有一个数字显示。按设计要求,须用七段数码管来做显示器。题目要求最大记数值为99,59,99,那则需要六个数码管。要求计数分辨率为0.01秒,并且需要相应频率的信号发生器。 选择信号发生器时,有两种方案:一种是用晶体震荡器,另一种方案是采用集成电路555定时器与电阻和电容组成的多谐振荡器。经过查询资料,555多谐振荡器性能稳定,故采用555多谐振荡器。 数字式秒表是一个频率(100HZ)进行计数的计数电路。由于数字式秒表计数的需要,故需要在电路上加一个控制电路,该控制电路清零、启动计时、暂停及继续计数等控制功能,同时100HZ的时间信号必须做到准确稳定。数字电子钟的总体图如图所示。由图可见,
数字电子钟由以下几部分组成:555振荡器秒脉冲发生器,防抖开关;秒表控制开关;一百进制秒、分计数器、六十进制秒计数器;以及秒、分的译码显示部分等 七段显示器 译码器译码器译码器 100进制计数器 60进制计数器 100进制计数器 控制开关 555多谐振器 1. 555构成的多谐振荡器 555构成的多谐振荡器电路图
“秒表测时”实验报告 一、实验任务 利用秒表对电脑主机主要元件装配作业进行测时,计算标准时间 二、实验目的 1、掌握秒表测时技术; 2、掌握标准时间的制定原理、方法、程序和步骤; 3、学会正确划分各测时单元及其计时点,并学会确定正确的宽放率; 4、掌握必要的软件工具。 三、实验原理 1、秒表测时的定义 2、秒表测时的用途 3、测时单元的划分 四、实验设备、仪器、工具及资料 1、电脑主机 2、计算机 3、装拆工具、笔、纸、记录表格 4、秒表、计算器 五、实验过程 1、实验分组,每四人一组,两人负责装配产品,两人负责观测记录 2、收集资料,实验准备,布置工作地 3、划分操作单元,确定计时点 4、测时 采用连续法记录时间研究,在现场记录时用铅笔填写秒表读数“W.R”,见附件:时间研究表(一)。计算基本时间“B.T”。 4、填写时间研究表(二),剔除异常值,用三倍标准法决定正常值范围(正常值范围在x±3σ内)。 5、决定宽放时间 取宽放率为:15%。宽放时间=正常时间×宽放率
6、计算标准时间:标准时间=平均操作时间×评比系数+宽放时间 六、整理时间研究表(一)和时间研究表(二) 时间研究表(一)(现场记录)
时间研究表(二)(统计表)
七、绘制管制界限图 对每一个操作单元进行异常值剔除,选取其中一个操作单元绘制其管制界限图 1、剔除异常值 (1)、操作单元1: n X X n i i ∑== 1 11(其中n=8) 计算得69.71=X n X X n i i ∑=-= 1 2 111)(σ 计算得=1σ 1.48 正常值为σ3±X 之内,即在(3.25,12.13)之间,所以操作单元1无异常值 (2)、操作单元2: n X X n i i ∑== 1 22(其中n=8) 计算得=2X 6.79 n X X n i i ∑=-= 1 2 222)(σ 计算得=2σ0.28 正常值为σ3±X 之内,即在(5.95,7.63)之间,所以操作单元2无异常值 (3)、操作单元3: n X X n i i ∑== 1 33(其中n=8) 计算得=3X 6.42 n X X n i i ∑=-= 1 2 333)(σ 计算得=3σ0.32 正常值为σ3±X 之内,即在(5.46,7.38)之间,所以操作单元3无异常值 (4)、操作单元4: n X X n i i ∑== 1 44(其中n=8) 计算得=4X 6.55 n X X n i i ∑=-= 1 2 444)(σ 计算得=4σ0.90
重庆交通大学信息科学与工程学院 综合性设计性实验报告 专业:通信工程专业11级 学号:0204 姓名:何国焕 实验所属课程:宽带无线接入技术 实验室(中心):软件与通信实验中心 指导教师:吴仕勋 一、题目 OFDM系统的CFO估计技术 二、仿真要求 要求一:OFDM系统的数据传输 ①传输的数据随机产生; ②调制方式采用16QAM; 要求二:要求对BER的性能仿真 设计仿真方案,比较两个CFO的性能(基于CP与基于训练符号Moose),并画出不同SNR下的两种估计技术的均方差(MSE)性能。
三、仿真方案详细设计 1、首先OFDM技术的基本思想和现状了解。认真学习OFDM技术的基本原理,包括OFDM系统的FFT实现、OFDM系统模型、OFDM信号的调制与解调、OFDM信号的正交性原理,根据PPT及网上查阅资料加以学习。其次,了 解OFDM的系统性能,包括OFDM系统的同步技术及训练序列等。 2、同步技术:接收机正常工作以前,OFDM系统至少要完成两类同步任务: ①时域同步,要求OFDM系统确定符号边界,并且提取出最佳的采样时钟,从而减小载波干扰(ICI)和码间干扰(ISI)造成的影响。 ②频域同步,要求系统估计和校正接收信号的载波偏移。在OFDM系统中,N个符号的并行传输会使符号的延续时间更长,因此它对时间的偏差不敏感。对于无线通信来说,无线信道存在时变性,在传输中存在的频率偏移会使OFDM 系统子载波之间的正交性遭到破坏。 3、载波频率的偏移会使子信道之间产生干扰。OFDM系统的输出信号是多个相互覆盖的子信道的叠加,它们之间的正交性有严格的要求。无线信道时变性的一种具体体现就是多普勒频移引起的CFO,从频域上看,信号失真会随发送信道的多普勒扩展的增加而加剧。因此对于要求子载波严格同步的OFDM 系统来说,载波的频率偏移所带来的影响会更加严重,如果不采取措施对这种信道间干扰(ICI)加以克服,系统的性能很难得到改善。 OFDM系统发射端的基本原理图OFDM信号频谱 4、训练序列和导频及信道估计技术 接收端使用差分检测时不需要信道估计,但仍需要一些导频信号提供初始的相位参考,差分检测可以降低系统的复杂度和导频的数量,但却损失了信噪
电子科技大学《数字秒表课程设计》 姓名: xxx 学号: 学院: 指导老师:xx
摘要 EDA技术作为电子工程领域的一门新技术,极大的提高了电子系统设计的效率和可靠性。文中介绍了一种基于FPGA在ISE10.1软件下利用VHDL语言结合硬件电路来实现数字秒表的功能的设计方法。采用VHDL硬件描述语言,运用ModelSim等EDA仿真工具。该设计具有外围电路少、集成度高、可靠性强等优点。通过数码管驱动电路动态显示计时结果。给出部分模块的VHDL源程序和仿真结果,仿真结果表明该设计方案的正确,展示了VHDL语言的强大功能和优秀特性。 关键词:FPGA, VHDL, EDA, 数字秒表
目录 第一章引言 (4) 第二章设计背景 (5) 2.1 方案设计 (5) 2.2 系统总体框图 (5) 2.3 -FPGA实验板 (5) 2.4 系统功能要求 (6) 2.5 开发软件 (6) 2.5.1 ISE10.1简介 (6) 2.5.2 ModelSim简介 (6) 2.6 VHDL语言简介 (7) 第三章模块设计 (8) 3.1 分频器 (8) 3.2 计数器 (8) 3.3 数据锁存器 (9) 3.4 控制器 (9) 3.5 扫描控制电路 (10) 3.6 按键消抖电路 (11) 第四章总体设计 (12) 第五章结论 (13) 附录 (14)
第一章引言 数字集成电路作为当今信息时代的基石,不仅在信息处理、工业控制等生产领域得到普及应用,并且在人们的日常生活中也是随处可见,极大的改变了人们的生活方式。面对如此巨大的市场,要求数字集成电路的设计周期尽可能短、实验成本尽可能低,最好能在实验室直接验证设计的准确性和可行性,因而出现了现场可编程逻辑门阵列FPGA。对于芯片设计而言,FPGA的易用性不仅使得设计更加简单、快捷,并且节省了反复流片验证的巨额成本。对于某些小批量应用的场合,甚至可以直接利用FPGA实现,无需再去订制专门的数字芯片。文中着重介绍了一种基于FPGA利用VHDL硬件描述语言的数字秒表设计方法,在设计过程中使用基于VHDL的EDA工具ModelSim对各个模块仿真验证,并给出了完整的源程序和仿真结果。
实验三:秒表实验报告 一、实验目的 1、了解74ls273的工作原理; 2、看懂8086工作的时序图,并且掌握8086总线的技术; 3. 通过此实验,熟悉protues7.9的基本操作和工作环境以及MASM32文件的建立与运行; 二、实验原理 用74ls273扩展IO口,通过片选信号和写信号奖数据总线上的值锁存在273中,同时在273的输出端口输出,当数据总线上的值撤销以后,由于74ls273能够锁存信号,所以273的输出端保持不变,直到下次有新的数据被锁存,通过按键可以控制数据的变化,cpu根据按键变化控制输出,通过总线就可以控制数码管的变化,显示出秒表的效果。 3、实验步骤 1、根据实验目的及内容在proteus画出电路图,如下图所示 2、画好电路图后用汇编软件,按要求写出实验代码,代码如下: .MODEL SMALL .8086 .stack .code
.startup MOV DX,0200H LOOP0: MOV BL,SEC AND BX,000FH MOV SI,BX MOV AL,SITUATION[SI] MOV BL,SEC AND BX,00F0H MOV CL,4 SHR BX,CL MOV SI,BX MOV AH,SITUATION[SI] OUT DX,AX CALL DELAY MOV AL,SEC ADD AL,1 DAA MOV SEC,AL CMP SEC,60H JB LOOP0 MOV SEC,0 JMP LOOP0 DELAY PROC NEAR PUSH BX PUSH CX MOV BX,50 DEL1: MOV CX,5882 DEL2: LOOP DEL2 DEC BX JNZ DEL1 POP CX POP BX RET DELAY ENDP .data SEC DB 00H
安徽科技学院机电与车辆工程学院 《电子电路课程综合实训》 验收材料 题目: 电子秒表 姓名(学号) 胡斌1609110208 李绪1609110214 王增龙1609110227 段鑫鹏 专业: 电气工程及其自动化 班级: 112班 指导教师:叶爱芹 2013 年 12 月 29日
目录 第一章单片机课程设计任务书 (1) 一、目的意义 (1) 二、设计时间、地点和班级 (1) 三、设计内容 (1) 四、参考电路图形 (2) 五、单片机的相关知识 (3) 第二章硬件设计 (5) 一、单片机简介 (5) 二、电源电路 (5) 三、晶振振荡电路 (5) 四、复位电路 (5) 五、显示电路 (6) 六、键盘电路 (6) 七、硬件主电路图设计 (7) 八、元件清单 (7) 第三章软件设计 (8) 一、软件设计概述 (8) 二、主程序流程图 (8) 三、程序中各函数设计 (8) 四、C语言主程序设计 (10) 第四章课程设计体会 (13) ..
五、单片机相关知识 本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了AT89C51。 AT89C51单片机采用40引脚的双列直插封装方式。图1.2为引脚排列图,40条引脚说明如下: 主电源引脚Vss和Vcc ①Vss接地 ②Vcc正常操作时为+5伏电源 外接晶振引脚XTAL1和XTAL2 ①XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。 ②XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。 图1.2 AT89C51单片机引脚图 控制或与其它电源复用引脚RST/VPD,ALE/PROG,PSEN和EA/Vpp ①RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。 ②ALE/PROG正常操作时为ALE功能(允许地址锁存)提供把地址的低 字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE 端可以驱动(吸收或输出电流)八个LSTTL电路。对于EPROM型单片机,在EPROM编程期间, 此引脚接收编程脉冲(PROG功能)
实验项目名称: CSS页面布局及样式设计 (所属课程:web系统与技术) 学院:计算机学院专业班级:11级计科信息姓名:学号: 实验日期:实验地点:A06-404 合作者:指导教师:李 本实验项目成绩:教师签字:日期: 一、实验目的 (1)掌握CSS中的定位属性使用方法。 (2)掌握DIV+CSS的页面布局方式。 (3)掌握CSS中的常用属性的使用方法。 (4)理解CSS的样式构造。 二、实验条件 安装Web开发环境的微机。 三、实验内容 (1)重新对聊天室的注册页面、登陆页面和聊天页面进行页面布局。 (1)对聊天室的注册页面、登陆页面和聊天页面进行样式设计。 四、实验步骤 (1)注册页面使用CSS将注册表单居中显示,表单内嵌入表格将文本与输入域格式化显示,表单内使用label标签。 (2)登录页面中添加div层用于显示在线用户数。 (3)登录页面使用div将登录表单,在线用户数,logo图片,超链接等页面元素重新定位布局。 (4)聊天页面改用div标签并使用CSS的position定位属性进行布局,框架内的独立页面使用float属性进行布局。 (5)使用CSS设置三个页面的背景颜色或背景图片。 (6)注册页面使用CSS设计所有输入框和提交按钮的样式。 (7)登录页面使用CSS设置的超链接的字体和下划线、登录表单使用圆顶角、在线用户数使用图片数字,使用CSS设计登录按钮的显示样式。
(8)聊天页面中使用CSS设计信息发送表单和发送按钮的样式,设计用户信息列表和聊天信息段落的的显示样式。 五、实验结果 注册界面效果图及代码: