名词解释
EDA :电子设计自动化 HDL:硬件描述语言
EPROM :可檫除可编程只读存储器 E E PROM:电可檫除可编程只读存储器 PROM:可编程只读存储器 PLA :可编程逻辑阵列 PAL :可编程阵列逻辑 FPGA :现场可编程门阵列 CPLD :复杂可编程逻辑器件 PLD:可编程逻辑器件
MCU:微控制单元 (单片微型计算机)
简答题:
1、电子系统的定义
由电子元件和模块组成的,能够产生、传输、处理电信号和信息的客观实体。
特点:
1. 包含多种电子电路 2. 具有复杂性和综合性
2、电子系统的构成
电子系统的分类
模拟电子系统
系统优点:简单、高效、低成本、低功耗 系统缺点:1. 系统工作的稳定性、可靠性低
2. 设计与调试的难度大
数字电子系统
系统优点:工作稳定、可靠性高
系统缺点:1. 处理复杂运算时,所需硬件规模大,成本高,功耗大 2. 实时性差
单片机系统
系统优点:处理功能灵活,强大,硬件设计可以适当简化 系统缺点:1. 处理速度慢,难以满足实时性高的要求
2. 除硬件设计外,还需进行软件设计
DSP系统
系统优点:信号处理速度快,实时处理能力强 系统缺点: 器件价格比较高
嵌入式系统
系统特点:1. 嵌入性 2. 专用性3. 计算机系统
容错设计
允许错误存在,并能防止它对系统正常工作的破坏,称为“容错”。 一个没有考虑容错的设计,包括一个程序,不能算一个完美的设计。
软件的简单抗干扰措施
1、指令冗余:单片机的PC因干扰出现错误,程序出现“跑飞”、改变操作数,将操作数误认为操作码等情况。为了使程序返回正常轨道,在关键地方插入一些空操作指令NOP或将有效单字节指令重写 2、软件陷阱:当乱飞程序进入非程序区或表格区,无法采用指令冗余
3、软件看门狗:单片机受外界电磁场的干扰,造成程序跑飞而陷入死循环,程序无法正常运行,必须实时监测单片机的运行状态
温度传感器DS18B20
1、主控制器(AT89C2051):通过向DS18B20写不同的时序来传输温度信号转换成的数字信号。
2、测温电路(DS18B20):把外界温度信号直接转换成串行数字信号供微机处理。
3、显示电路(SR430561K):数码管采用共阳极接法 4、驱动电路(三极管PNP):放大电流让数码管能正常显示 5、锁存器(74CH244):把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。
6、时钟电路:给AT89C2051单片机芯片工作提供基本的时钟周期。 7、上电复位电路:在上电过程中,控制CPU的复位状态。
画出数码管动态显示电路图
#include sbit qian=P1^0; sbit bai=P1^1; sbit shi=P1^2; sbit ge=P1^3;
code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //显示段码共阴极
void Delay(unsigned int tc) //延时程序 { while( tc != 0 ) //如果tc为0则终止延时 { unsigned int i; //局部正整数变量 i for(i=0; i<100; i++); //执行400次将耗时1毫秒 tc--; //tc计数减一 } }
void Led(int date) //显示函数 {
qian=0; //P1.0输出低电平,选通千位数 P0=seg7code[date/1000]; //取出千位数,查表,输出。 Delay(10); //延时 qian=1; //销隐 bai=0; //P1.1输出低电平,选通百位数 P0=seg7code[date00/100]; //取出百位数,查表,输出。 Delay(10); //延时 bai=1; //销隐 shi=0; //P1.2输出低电平,选通十位数 P0=seg7code[date0/10]; //取出十位数,查表,输出。 Delay(10); //延时 shi=1; //销隐 ge=0; //P1.3输出低电平,选通十位数 P0=seg7code[date]; //取出个位数,查表,输出。 Delay(10); ge=1; }
main() {
int display_date=1234; //定义并赋值要显示的数据 while(1) {
Led(display_date);//调用显示函数显示数据display_date } }
按键识别
include
sbit INT_0=P3^2; //定义按键的输入端 sbit D1=P3^0; //D1小灯定义 void delay10ms(void) //延时程序 {
unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }
key( ) //按键判断程序 { if(INT_0==0) //判断是否按下键盘 { delay10ms( ); //延时,软件去干扰 if(INT_0==0) //确认按键按下 { D1=!D1; //D1亮灭交替变化
} while(INT_0==0);//按键锁定,每按一次D1只变化一次 } } main() {
while(1) //永远循环,扫描判断按键是否按下 { key(); //对于此处CPU只按键判断 一直扫描; } }
VHDL语言程序结构
1、60进制秒计数器VHDL代码
使用库声明,并调用库中的程序包 library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
实体,规定了模块输入输出接口及引脚 entity second is
port(reset,clk,setmin : in std_logic;
daout : out std_logic_vector(7 downto 0); enmin : out std_logic); end second;
从此段开始到结束的代码为结构体,描述了模块内部逻辑功能和电路结构 architecture behav of second is
signal miaoshi : std_logic_vector(3 downto 0); signal miaoge : std_logic_vector(3 downto 0); signal carry_out : std_logic; begin
secdaoclksetins
enm2、触发器
ENTITY regdff IS PORT --实体说明,定义输入和输出端口
( d, clk :IN BIT; q :OUT BIT );
END regdff;
------------边沿触发器第一种实现------------------------------------------------------------------------- ARCHITECTURE a1 OF regdff IS BEGIN PROCESS (clk) --时钟脉冲触发 BEGIN IF (clk'EVENT AND clk = '1') THEN --定义上升沿触发 q <= d; --特性方程,也可以直接通过算法实现 END IF; END PROCESS; END a1;
第二种实现------------------------------------------------------------------------------------- ARCHITECTURE a2 OF regdff IS BEGIN PROCESS --没有敏感信号表有,但内部WAIT语句 BEGIN WAIT UNTIL (clk'EVENT AND clk = '1'); --定义上升沿触发 q <= d; END PROCESS; END a2;