简易数字钟设计Verilog
直接verilog代码就可以了吧?
以前写的一个代码,供参考。
module clock(clk,rst,set, set_typ, set_data, yr, mon, dt, hr, min, sec,
alarm_en, alm_typ, alm_yr, alm_mon, alm_dt, alm_hr, alm_min, alm_sec, alarm_output);
input clk,rst,set;
input [2:0] set_typ; //
input [6:0] set_data;//
output [6:0] yr, mon, dt, hr, min, sec;
input alarm_en;
input [2:0] alm_typ; //
input [6:0] alm_yr, alm_mon, alm_dt, alm_hr, alm_min, alm_sec;
output alarm_output;
parameter C_FR = 32'd20_000_000-32'd1; //定义系统时钟20MHz
reg [31:0] fr_cnt;
reg [3:0] sec_cnt;
reg pp1s; //秒脉冲
//==================================================
//fr_cnt
always@(posedge clk)//
if(!rst)
fr_cnt <= 32'b0;
else if (fr_cnt >= C_FR)
fr_cnt <= 32'b0;
else
fr_cnt <= fr_cnt + 1'b1;
//pp1s
always@(posedge clk)//
if(!rst)
pp1s <= 1'b0;
else if (fr_cnt == C_FR)
pp1s <= 1'b1;
else
pp1s <= 1'b0;
///time counter
always@(posedge clk)
if(!rst)
begin
yr <= 7'b0;
mon <= 7'b0;
dt <= 7'b0;
hr <= 7'b0;
min <= 7'b0;
sec <= 7'b0;
end
else if (set)
begin
case (set_typ)
3'b000: yr <= set_data;
3'b001: mon <= set_data;
3'b010: dt <= set_data;
3'b011: hr <= set_data;
3'b100: min <= set_data;
3'b101: sec <= set_data;
end
else if (pp1s)
begin
if (sec >= 7'd59)
sec <= 7'd0;
else
sec <= sec + 1'b1;
if (sec >= 7'd59)
begin
if (min >= 7'd59)
min <= 7'd0;
else
min <= min + 1'b1;
end
if (sec >= 7'd59 && min >= 7'd59)
begin
if (hr >= 7'd23)
hr <= 7'd0;
else
hr <= hr + 1'b1;
end
///data,mon, year, 大月小月,闰年等,依此类推
//
end
//=================================
//alarm
always@(posedge clk)
if(!rst)
alarm_output <= 1'b0;
else if (alarm_en)
case (alm_typ)
3'b000:
if (yr == alm_yr && mon == alm_mon && dt == alm_dt && hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b001:
if (mon == alm_mon && dt == alm_dt && hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b010:
if (dt == alm_dt && hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b011:
if (hr == alm_hr && min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
3'b100:
if (min == alm_min && sec == alm_sec)
alarm_output <= 1'b1;
else
alarm_output <= 1'b0;
default
alarm_output <= 1'b0;
endcase
endmodule
利用STM32F103VET6中SysTick设计一个简易数字钟
SysTick即为系统定时器,又称嘀嗒定时器,是Cortex-M3内核的一个外设,集成在NVIC中。SysTick是一个24bit的向下递减的计数器,每计数一次的时间为1/SYSCLK(SYSCLK一般为72MHz)。
操作系统需要执行多任务管理,用SysTick产生中断,确保单个任务不会锁定整个系统。同时SysTick还可用于闹钟定时、时间测量等。
由于Cortex-M3芯片都有SysTick,所以软件可以很容易地在Cortex-M3的产品间移植。
我们待会儿将利用SysTick产生1s的时基,让LED一秒钟闪烁一次,以完成SysTick的定时实验。
用纯数字电路设计一个数字钟
http://zhidao.baidu.com/question/71555238.html?si=6
大家好, 呵呵,我19岁 男,是大学生,在本地上的,家在市里,学校在郊区,有12公里左右,大家建议是需要买辆电动车还是自行车?
请帮我选择下, 小款电动车【挺时尚的】。摩托样电动车【地下室不方便】 公路赛自行车 山地自行车【有点沉】
感谢大家!问题补充:不住校,早起去学校,中午回来,下午没课。
优先选用公路赛车,通常所说的700轮胎,内胎像腊肠一样细,因为轮胎细而窄小,骑行就很省力,整车重量轻,不能载重,不能搭载货物,优点是可以方便地扛上宿舍,放在楼道或楼梯旁,实施主动防盗;缺点是内胎截面细小,不耐振动,惧怕路面有坑坑洼洼,所以说是公路赛车,对于路面质量要求高,而且都是普通刹车,进口的也没有碟刹,骑行速度快,制动能力弱,制动滑行距离长,安全性差。国产的公路赛车,低档的400元就有,正常价格是3000元,这种自行车卖的人少,丢的也少,因为贵,车主外出即使到大排档吃饭,也将相互保持在视线距离内,时刻关注着,晚上都扛回家。那些3万元到5万元的碳纤维公路赛车,轻便的使人惊叹。
山地车轮胎过宽,是越野用途,适合于颠簸的道路条件,骑行就比普通1又8分之3截面的普通26寸自行车要沉重。
电池车吗,电动自行车的通常用12安培小时的电池,新电池也就跑15公里,电池充放电寿命嘛,一般按照使用一年为适宜,一般用到半年,就连续跑10公里路吧,对于你不适合,而且普通铅酸电池的电动车沉重,如果用锂电池,你这种情况,用两组10安培小时的电池组吧,电池就要3000元,普通的电动车也有装一组电池,还要改装,国内做动力锂电池的企业成功的很少,也就天津、北京有少数几家,一般的锂电池、镍氢电池、镍镉电池用在电动车上都要爆炸。像你这样,充电的时间不够,快速充电对任何二次电池来说都要缩短充放电循环次数,就是通常所说的使用寿命,就你的具体情况而言,就要购置四组锂电池,在家里和学校安置两台充电机,学校的那台平时连续充电,因为高能电池本身就是一颗炸弹,国外的原装助动自行车的充电器在电池组内有温度传感器,国外的充电机没有尖峰脉冲超高压输出,充电时候无人值守就算了;国产的充电器对动力锂电池或动力镍氢电池、动力镍镉电池充电,你就不要在宿舍里面充电了,还是花钱请门口值班人员看管为妥帖和安全,电池被盗也别指望索赔。
http://zhidao.baidu.com/question/70954609.html?si=6
机械功原理:人与自行车
自行车和人走路比,明显自行车省力,好像也省距离,这是怎么回事?知道的告诉下,要详细一点!
几十年前就有公开的结论;人走路,每一步要抬高人体重心2厘米,在肌腱和重力的共同作用下,向前运动;骑行自行车人体做的功方向都一样不变,还可以滑行。
http://zhidao.baidu.com/question/71414759.html?si=10
购买自行车,怎么选?
我是女生,想买自行车上下班,既环保又可以健身,呵呵~~想法不错吧!
怎样选择自行车,要注意些什么?
或者有什么好的款式推荐?
请大家给些意见波!
问题补充:品牌?什么品牌的好呢?
几十年前,中国就进口了三枪等等国外品牌的自行车,其女装自行车的特点是车头把高,车身也是有特色 ,造就了淑女的形象,请到旧照片里面找吧。
现在一般买日本的自行车,可以委托海员带,高档自行车行也可以代办进口。也有走私的。
数字钟电路设计
根据设计任务和要求,对照数字电子钟的框图,可以分以下几部分进行模块化设计。
1. 秒脉冲发生器
脉冲发生器是数字钟的核心部分,它的精度和稳定度决定了数字钟的质量,通常用晶体振荡器发出的脉冲经过整形、分频获得1Hz的秒脉冲。如晶振为32768 Hz,通过15次二分频后可获得1Hz的脉冲输出.
2. 计数译码显示
秒、分、时、日分别为60、60、24、7进制计数器、秒、分均为60进制,即显示00~59,它们的个位为十进制,十位为六进制。时为二十四进制计数器,显示为00~23,个位仍为十进制,而十位为三进制,但当十进位计到2,而个位计到4时清零,就为二十四进制了。
周为七进制数,按人们一般的概念一周的显示日期“日、1、2、3、4、5、6”,所以我们设计这个七进制计数器,应根据译码显示器的状态表来进行,如表1.1所示。
按表1.1状态表不难设计出“日”计数器的电路(日用数字8代替)。
所有计数器的译码显示均采用BCD—七段译码器,显示器采用共阴或共阳的显示器。
Q4 Q3 Q2 Q1
显示
1 0 0 0
日
0 0 0 1
1
0 0 1 0
2
0 0 1 1
3
0 1 0 0
4
0 1 0 1
5
0 1 1 0
6
表1.1 状态表
3. 校时电路
在刚刚开机接通电源时,由于日、时、分、秒为任意值,所以,需要进行调整。
置开关在手动位置,分别对时、分、秒、日进行单独计数,计数脉冲由单次脉冲或连续脉冲输入。
4. 整点报时电路
当时计数器在每次计到整点前六秒时,需要报时,这可用译码电路来解决。即
当分为59时,则秒在计数计到54时,输出一延时高电平去打开低音与门,使报时声按500Hz频率呜叫5声,直至秒计数器计到58时,结束这高电平脉冲;当秒计数到59时,则去驱动高音1KHz频率输出而鸣叫1声。
五、参考电路
数字电子钟逻辑电路参考图如图1.3所示。
参考电路简要说明
1. 秒脉冲电路
由晶振32768Hz经14分频器分频为2Hz,再经一次分频,即得1Hz标准秒脉冲,供时钟计数器用。
2. 单次脉冲、连续脉冲
这主要是供手动校时用。若开关K1打在单次端,要调整日、时、分、秒即可按单次脉冲进行校正。如K1在单次,K2在手动,则此时按动单次脉冲键,使周计数器从星期1到星期日计数。若开关K1处于连续端,则校正时,不需要按动单次脉冲,即可进行校正。单次、连续脉冲均由门电路构成。
3. 秒、分、时、日计数器
这一部分电路均使用中规模集成电路74LS161实现秒、分、时的计数,其中秒、分为六十进制,时为二十四进制。从图3中可以发现秒、分两组计数器完全相同。当计数到59时,再来一个脉冲变成00,然后再重新开始计数。图中利用“异步清零”反馈到/CR端,而实现个位十进制,十位六进制的功能。
时计数器为二十四进制,当开始计数时,个位按十进制计数,当计到23时,这时再来一个脉冲,应该回到“零”。所以,这里必须使个位既能完成十进制计数,又能在高低位满足“23”这一数字后,时计数器清零,图中采用了十位的“2”和个位的“4”相与非后再清零。
对于日计数器电路,它是由四个D触发器组成的(也可以用JK触发器),其逻辑功能满足了表1,即当计数器计到6后,再来一个脉冲,用7的瞬态将Q4、Q3、Q2、Q1置数,即为“1000”,从而显示“日”(8)。
4.译码、显示
译码、显示很简单,采用共阴极LED数码管LC5011-11和译码器74LS248,当然也可用共阳数码管和译码器。
1. 整点报时
当计数到整点的前6秒钟,此时应该准备报时。图3中,当分计到59分时,
将分触发器QH置1,而等到秒计数到54秒时,将秒触发器QL置1,然后通过QL与QH相与后再和1s标准秒信号相与而去控制低音喇叭呜叫,直至59秒时,产生一个复位信号,使QL清0,停止低音呜叫,同时59秒信号的反相又和QH相与后去控制高音喇叭呜叫。当计到分、秒从59:59—00:00时,呜叫结束,完成整点报时。
2. 呜叫电路
呜叫电路由高、低两种频率通过或门去驱动一个三极管,带动喇叭呜叫。1KHz
和500Hz从晶振分频器近似获得。如图中CD4060分频器的输出端Q5和Q6。Q5输出频率为1024Hz,Q6输出频率为512Hz。
数字钟的设计 功能是什么?
一般来说数字钟要完成的基本功能是利用数码管、按键、蜂鸣器完成24小时制时间显示(输入时钟脉冲一般要求为1024Hz),时间调节,闹钟设定,整点报时。我不知道你是用vhdl和实验箱做还是直接用现有元件完成电路板,后者可能要麻烦一点我没做过,前一种方法可能容易一定,可以自己增加一些功能,比如日期显示,和闹钟开关。难度在于要利用设计软件进行设计或仿真,需要摸清软件的脾性,vhdl并没有c语言那么容易掌握。
我不清楚你到底哪个地方有问题,能不能再说清楚点。
关于数字时钟设计
单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是 集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51 单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。二 说明系统由AT89C51、LED 数码管、按键、发光二极管等部分构成,能实现时间的调整、定时时间的设定,输出等功能。系统的功能选择由SB0、SB1、SB2、SB3、SB4 完成。其中SB0为时间校对,定时器调整功能键,按SB 0 进入调整状态。SB1 为功能切换键。第一轮按动SB1 依次进入一路、二路、三路定时时间设置提示程序,按SB3 进入各路定时调整状态。定时时间到,二极管发亮。到了关断时间后灭掉。如果不进入继续按SB1 键,依次进入时间�0�3 年�0�3 位校对、�0�3 月�0�3 位校对、 �0�3 日�0�3 位校对、�0�3 时�0�3 位校对、�0�3 分�0�3 位校对、�0�3 秒�0�3 位校对状态。不管是进入那种状态,按动SB2 皆可以使被调整位进行不进位增量加1 变化。各预置量设置完成后,系统将所有的设置存入RAM 中,按SB1 退出调整状态。上电后,系统自动进入计时状态,起始于�0�3 00�0�3 时�0�3 00�0�3 分。SB4 为年月日显示转换键,可使原来显示时分秒转换显示年月日。三、电路原理分析1. 显示原理电原理图见附图1。由6 个共阴极的数码管组成时、分、秒的显示。P0 口的8 条数据线P0.0 至P0.7 分别与两个CD4511 译码的ABCD 口相接,P2 口的 P2.0 至P2.2 分别通过电阻R10 至R13 与VT1 至VT3 的基极相连接。这样通过P0 口送出一个存储单元的高位、低位BCD显示代码,通过P2 口送出扫描选通代码轮流点亮LED1 至LED6,就会将要显示的数据在数码管中显示出来。从P0 口输出的代码是BCD 码,从P2 口输出的就是位选码。这是扫描显示原理。。2 键盘及读数原理键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms.3 连击功能的实现按下某键时,对应的功能键解释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执行,在这里我们采用软件延时250ms,当按键没释放则执行下一条对应程序。利用连击功能,能实现快速调时操作。四、程序设计思想和相关指令介绍本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。1.数据与代码转换。由前述可知,从P2 口输出位选码,从P0 口输出段选码,LED 就会显示出数字来。但P0口的输出的数据是要BCD 码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0 口去驱动LED 数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD 码行转换后,将各个单元数据的段选代码送入P0 口,给CD4511 译码后去驱动数码管显示。具体转换过程如下:我们先将要显示的数据装入累加器A 中,再将A 中的数据转换成高低两位的BCD 码,再放回A 中,然后将A 中的值输出。如:有一个单元存储了45 这样一位数,则需转换成四位的BCD 码:(0100)(0101)然后放入A 中。 A 中BCD 码,高位四位代表�0�34�0�3低四位代表�0�35�0�3同时送给两个译码器中,译码后�0�3 45�0�3 字就在两个LED 中显示出来。2.计时功能的实现与中断服务程序时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0 打开后,进入计时,满100 毫秒后,重装定时。中断一次,满一秒后秒进位,满60 秒后即为1 分钟,分钟单元进位,60 分到了后,时单元进位,24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LED 中显示出来,实现时钟计时功能。累加是用指令INC 来实现的。进入中断服务程序以后,执行PUSH PSW 和PUSH A 将程序状态寄存器PSW 的内容和累加器A 中的数据保存起来,这便是所谓的�0�3 保护现场�0�3 . 以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM 中的任一区间设定,而堆栈的数据存取与一般的RAM 存取又有区别,对它的操作,要遵循�0�3 后进先出�0�3 的原则。3 时间控制功能与比较指令系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM 某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条 CLR 指令,将对应的那路P3 置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3 置低电位,二极管截止,。实现此控制功能用到的比较指令为CJNE A,#direct,rel,其转移条件是累加器A 中的值与立即数不等则转移。参考文献1、 谢自美,《电子线路设计、实验、测试 》武汉:华中理工大学出版社,20002、 何书森、何华斌《实用数字电路原理与设计速成》福州:福建科学技术出版社,2000.63、 白驹衍, 《单片计算机及应用》北京:电子工业出版社, 1999.2
系统分类: 单片机 | 用户分类: 笔记本 | 来源: 转贴 | 【推荐给朋友】 | 【添加到收藏夹】