这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » sacq 的进程帖(跟着手把手 开始搞串口)

共52条 5/6 |‹ 1 2 3 4 5 6 跳转至
高工
2012-12-06 23:41:15     打赏
41楼
LCD篇作业——2行字符移动

仔细看看教程里1602的指令,按斑竹的提示,移动这2行并不算太难。

细细地看着代码里的“状态机”部分,还没摸出太多的状态机的门道,倒是觉得代码里对1602的初始化过于频繁,因为用过1602 ,觉得初始化1次就够了。于是下手对有关初始部分作了小小的改动,改后居然也可以正常显示,而且移动还显得轻快了一点。

改动的部分截图如下:





(定义个标志(lcd_init_f),LCD初始化后该标志置位,初始化前判别下该标志位。)

(12-09) 再次对原状态机代码分析,原来的代码是合适的,之前对之有“误读”;
 

【视频】



高工
2012-12-09 23:29:21     打赏
42楼
数字时钟的LCD1602显示  

基本想法:在LCD1602的例程的基础上,加上时钟显示功能,用已实现的LED数字时钟的核心部分,显示部分转由LCD1602来完成。貌似2个拼凑起来的。
现实是折磨了差不多一整天,主要还是陷阱太多了:寄存器定义方面出过问题,状态机了解不够出的状况,阻塞非阻塞理解上还是不够......

放一张编译结果的截图,看资源使用情况:




【视频】




高工
2012-12-16 11:15:43     打赏
43楼

实验: PWM输出控制 LED显示 

照着“实验教程”的内容,增加了几行代码,避免了计数溢出引起 的亮度跳变的问题。

【代码】

module pwm_out(clk,key,led);
input clk;
input [1:0]key;
output led;
reg [32:0] count;
reg [9:0] pwm_count;
reg flag;
reg pwm_flag;

always @(posedge clk)
 begin
   count=count+1'b1;
  if (count[13:4] < pwm_count)
  pwm_flag=1;
 else
 pwm_flag=0;
 if (count[15] == 1'b1)
  begin
   if (flag == 1'b1)
  begin
      flag= 1'b0;
     if (key[0] == 1'b0)
     begin
      if (pwm_count != 10'b1111111111) 
         pwm_count=(pwm_count+10'b0000000001);
    else
     pwm_count = 10'b1111111111  ;   // 避免溢出
     end
       else
         if (key[1] == 1'b0)
      begin
        if (pwm_count != 10'b0000000000)
                pwm_count=(pwm_count-10'b0000000001);
      else
         pwm_count = 10'b0000000000 ;     
    end
           else
          pwm_count=pwm_count;
      end
  end
else
  flag= 1'b1;
end
assign led=pwm_flag;
endmodule




【引脚分配】


高工
2012-12-23 12:10:29     打赏
44楼
原以为这次的串口问题不大,虽然是用MAX232的3.3V供电,已有网友验证过了,说是没问题;前2天小试了下串口,发现能收不能发。查到底还是自己在焊接贴片时质量把关不严的问题——没焊好。
查找过程:对照电路图,检查各脚电压,问题出现在片子脚上的电压与对应相连的电容上的电压竟不一致,断电后查“电阻”,再用放大镜仔细察看,该明白了。
补焊这些脚,再试,基本正常了!

乘着官方的教程还不出来,玩个小游戏,目前还没有通过,努力中。

高工
2012-12-24 00:32:49     打赏
45楼
乒乓球小游戏基本搞定

源码基本来自于那本书的(见贴),当然,不改动代码是不可能的,改动的地方:
时钟由1K改为50M;
复位、LED等、LED数码的段码、位选的改动;
LED的数量由16个改为11个;
由于时钟改动的跨度太大,为了配合LED数码显示,LED动态扫描计数部分作了改动;
还有其它必须的改动。

11个LED 就是乒乓球的运动路线;
按钮S1,S2,s7,S7,S8分别用于:A 方的接球、发球,B方的发球、接球;
各用2位LED数码显示积分。

电路是这样的:



照片:




用了多少资源:

高工
2012-12-29 11:36:14     打赏
46楼
TLC549的ADC实验

基础资料:
TLC549:8位ADC,转换结果数据串行输出端,输出时高位在前,低位在后。
使用了5V供电,REF-接地,REF+是2.5V (由TL431提供)。
ANIN由可调电阻R63通过1K电阻提供,电路已设计为可调整的电压范围与ADC允许输入的范围相同:0~2.5V。

程序基本采用了某教程里的,根据实际电路作了少许改动, 将ADC结果转换成电压值显示,虽有多位显示,因ADC只有8位,对显示的精度应该是心中有数的。

先看几个效果(万用表测可调电阻输出端对地的电压):














菜鸟
2013-01-03 21:35:18     打赏
47楼
dddddddddddddddddd

高工
2013-02-24 09:58:21     打赏
48楼
重整旗鼓,准备继续~~

院士
2013-02-26 15:19:39     打赏
49楼
Waiting for you

高工
2013-02-26 15:41:01     打赏
50楼

一起等。。。


共52条 5/6 |‹ 1 2 3 4 5 6 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]