带液晶显示驱动的智能电梯控制器
}//显示歌词
if(k==(UINT16)stamp[5]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[11]) {
//usleep(50000); LCD_Init();
if(k==(UINT16)stamp[6]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[7]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[8]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[9]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[10]) {
//usleep(50000);
- 16 -
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\}//显示歌词
if(k==(UINT16)stamp[12]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\}//显示歌词
if(k==(UINT16)stamp[13]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\}//显示歌词
if(k==(UINT16)stamp[14]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\}//显示歌词
if(k==(UINT16)stamp[14]+1000) {
LCD_Init();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[15]) {
带液晶显示驱动的智能电梯控制器
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[15]+1000) {
LCD_Init();
}
if(k==(UINT16)stamp[19]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[16]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[16]+1000) {
LCD_Init();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[17]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[17]+1000) {
LCD_Init();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[18]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
- 17 -
if(k==(UINT16)stamp[20]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[21]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[22]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[23]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[24]) {
//usleep(50000);
带液晶显示驱动的智能电梯控制器
LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[25]) {
//usleep(50000); LCD_Init();
if(k==(UINT16)stamp[29]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
}//显示歌词
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[26]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
}//显示歌词
if(k==(UINT16)stamp[26]+1000) {
LCD_Init();
LCD_Show_Text(\ }//显示歌词
if(k==(UINT16)stamp[27]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
}//显示歌词
if(k==(UINT16)stamp[28]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\ }
- 18 -
if(k==(UINT16)stamp[30]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\}//显示歌词
if(k==(UINT16)stamp[31]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\}//显示歌词
if(k==(UINT16)stamp[32]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\}//显示歌词
if(k==(UINT16)stamp[33]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
带液晶显示驱动的智能电梯控制器
}//显示歌词
if(k==(UINT16)stamp[34]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
}//显示歌词
if(k==(UINT16)stamp[35]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
}//显示歌词
if(k==(UINT16)stamp[36]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\ LCD_Line2();
LCD_Show_Text(\
}//显示歌词
if(k==(UINT16)stamp[37]) {
//usleep(50000); LCD_Init();
LCD_Show_Text(\
LCD_Line2();
LCD_Show_Text(\
}//显示歌词 /*
if(jd==0) {
Tmp2=Tmp1*Tmp1;
IOWR(LED_RED_BASE,0,Tmp2);
IOWR(LED_GREEN_BASE,0,Tmp1); } */
IOWR(SEG7_DISPLAY_BASE,0,j); j++; k++; i=0; }
return 0; }
//-------------------------------------------------------------------------
/*总而言之,由于时间的关系,我的同步显示歌词没有采用读取“歌词文件”的方法来做,这个也许是我的小小遗憾,不过我觉得做些力所能及得事情总比不做来的强。尽管这个方法连我自己也觉得比较笨^_^。 */
5 带有LCD驱动的智能电梯控制器源码与注释 5.1 分频模块
module frequence_div(cp_50M,cp_1); input cp_50M;//板子提供的最高时钟 output cp_1;//要求得到的秒脉冲 reg [27:0] counter_1;//计数器 reg cp_1;//类型声明
always@(posedge cp_50M)
- 19 -
带液晶显示驱动的智能电梯控制器
begin
if(counter_1==28'h17D7840)//50M的一半到了,秒脉冲翻转 begin
cp_1<=~cp_1;//翻转
counter_1<=28'h0000000; end else
counter_1<=counter_1+1'b1;//否则加1 end endmodule
5.2 智能电梯主控制器模块
module elevator_controller(//input ports:
cp_50M,clk,reset,forbid, call_up_1, call_up_2, call_up_3, call_up_4, call_up_5, call_down_2, call_down_3, call_down_4, call_down_5,call_down_6, request_1, request_2, request_3, request_4, request_5, request_6, //output ports: out,LiftState,over_alarm,count_out,count ); //output ports:
output [6:0]out;//输出楼层
output [6:0] LiftState;//输出电梯状态 output over_alarm;//出错
output [6:0]count_out;//计数器输出,便于我控制开关门的状态显示 output [2:0]count;//计数器 //input ports: input cp_50M; input
clk,reset,call_up_1,call_up_2,call_up_3,call_up_4,call_up_5,call_down_2,call_down_3,call_down_4,call_down_5,call_down_6,request_1,request_2,request_3,request_4,request_5,request_6; input forbid; //pos与Posout的关系:当前状态一改变,pos立即作相应改变,而PosOut则是当前状态在要变到下一状态的瞬间 //,将PosOut作相应改变。如从WAIT切换到第一个UP时,pos立即加一,而PosOut则要等到第一个UP //即将切换到第二个UP时,才加一。
//这个说的简单一点,就是移位寄存器,便于对电梯状态的实时的控制 wire over_alarm;
- 20 -