仔细看看教程里1602的指令,按斑竹的提示,移动这2行并不算太难。
细细地看着代码里的“状态机”部分,还没摸出太多的状态机的门道,倒是觉得代码里对1602的初始化过于频繁,因为用过1602 ,觉得初始化1次就够了。于是下手对有关初始部分作了小小的改动,改后居然也可以正常显示,而且移动还显得轻快了一点。
改动的部分截图如下:


(定义个标志(lcd_init_f),LCD初始化后该标志置位,初始化前判别下该标志位。)
(12-09) 再次对原状态机代码分析,原来的代码是合适的,之前对之有“误读”;
【视频】
实验: 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
【引脚分配】

回复
我要赚赏金打赏帖 |
|
|---|---|
| 28BYJ-48机械臂实现人脸跟随被打赏¥24元 | |
| 基于RK3506B的片温识读功能的实现被打赏¥25元 | |
| 【瑞萨RA8D1测评】基于FreeRTOS的lvgl移植教程被打赏¥29元 | |
| 电子价签墨水屏开发被打赏¥35元 | |
| 【Ozone】RTT 打印终端使用被打赏¥29元 | |
| BMS保护板绝缘检测功能-不平衡电桥技术绝缘电阻检测设计与实现被打赏¥34元 | |
| 给28BYJ-48三自由度机械臂加一个网页控制台被打赏¥32元 | |
| 用28BYJ-48电机从零搭一台三自由度机械臂被打赏¥33元 | |
| 【英飞凌开发经验】ModusToolbox配置EdgeTalk外设被打赏¥27元 | |
| 基于BQ76952PFBR的BMS保护板热插拔损坏的原因和处理措施被打赏¥32元 | |


我要赚赏金
