//==============================
//FileName=test_osd.c
//Date=20060518
//==============================
#include<SST89x5x4.H>
#include<string.h>
#include"public.h"
#include"test_osd.h"
#include"delay_s.h"
#include"upd6464a.h"
#include"menu.h"
uchar data disp_buff[25];
uchar data len;
uchar data tmp;
uchar data i;
uchar data j;
uchar doom_id;
uchar protocol;
uchar baud;
uint s_id;
void main(void)
{
EA =0;
for(i=0; i<5; i++)
{
LED_OFF;
delay_x250ms(3);
LED_ON;
delay_x250ms(3);
}
init_upd6464a();
/*
tmp =upd6464a_get_disp_code('A');
upd6464A_write_addr_control(0,0);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, &tmp, 1);
delay_x250ms(4);
tmp =upd6464a_get_disp_code('B');
upd6464A_write_addr_control(0,1);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, &tmp, 1);
delay_x250ms(4);
tmp =upd6464a_get_disp_code('Z');
upd6464A_write_addr_control(0,23);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, &tmp, 1);
delay_x250ms(4);
*/
memset(disp_buff,0,sizeof(disp_buff));
memcpy(disp_buff,"123456789012345678901234",CONST_COLUMN_NUMBER_MAX);
for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
{
disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
}
upd6464A_write_addr_control(0,0);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
memset(disp_buff,0,sizeof(disp_buff));
memcpy(disp_buff,"abcdefghijklmnopqrstuvwx",CONST_COLUMN_NUMBER_MAX);
for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
{
disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
}
upd6464A_write_addr_control(1,0);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
memset(disp_buff,0,sizeof(disp_buff));
memcpy(disp_buff,"yzABCDEFGHIJKLMNOPQRSTUV",CONST_COLUMN_NUMBER_MAX);
for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
{
disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
}
upd6464A_write_addr_control(2,0);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
memset(disp_buff,0,sizeof(disp_buff));
memcpy(disp_buff,"WXYZ><-,. ;/\x80\x81\x82\x83\x84XYYYYYZ",CONST_COLUMN_NUMBER_MAX);
for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
{
disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
}
upd6464A_write_addr_control(3,0);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
for(j=0; j<7; j++)
{
memset(disp_buff,0,sizeof(disp_buff));
memcpy(disp_buff,"123456789012345678901234",CONST_COLUMN_NUMBER_MAX);
for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
{
disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
}
upd6464A_write_addr_control(4+j,0);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
}
memset(disp_buff,0,sizeof(disp_buff));
memcpy(disp_buff,"abcdefghijklmnopqrstuvwx",CONST_COLUMN_NUMBER_MAX);
for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
{
disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
}
upd6464A_write_addr_control(11,0);
upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
//======================================================================================================
delay_x250ms(8);
upd6464a_video_clr_ram();
upd6464A_display_control(UPD6464A_CMD_DISPLAY_DISP_ON, UPD6464A_CMD_DISPLAY_LC_ON, UPD6464A_CMD_DISPLAY_NO_BLINK);
doom_id =1;
protocol=0;
baud =1;
s_id =12345;
disp_init_menu();
delay_x250ms(12);
while(1);
}
//字符芯片的初始化
void init_upd6464a(void)
{
uchar i;
P1 =0xff;
//内部清除,设置显示模式
upd6464a_video_clr_ram();
upd6464A_display_control(UPD6464A_CMD_DISPLAY_DISP_ON, UPD6464A_CMD_DISPLAY_LC_ON, UPD6464A_CMD_DISPLAY_NO_BLINK);
//设置PAL制
upd6464A_format_mode_control(UPD6464A_CMD_VSM_PAL);
//设置NTSC制:如果选择内同步则输出图象不稳定(无法同步)
// 如果选择外同步则输出图象稳定,但是字符显示缺少!
//说明芯片外部17.734MHz晶振和LC振荡决定了芯片只能使用PAL制!
//upd6464A_format_mode_control(UPD6464A_CMD_VSM_NTSC);
//设置显示字符块的原点
//这里的原点需要根据upd6464a外部的晶振以及显示的实际情况进行调试
//以所有字符都显示在屏幕的中央为合适!
//测试后: x差2大约1个字符的宽度
// y差1大约半个字符的高度
upd6464A_disp_position_control(8,5);
//设置视频模式和前景、后景
//现在是蓝色背景白色字符显示,芯片产生视频信号
//upd6464A_osc_mode_control(UPD6464A_CMD_OSC_ON,UPD6464A_CMD_VS_MODE_INTERNAL);
//upd6464A_internal_color_control(UPD6464A_CMD_COLOR_BLUE);
//现在是相机图象为背景,黑色字符显示,芯片 不 产生视频信号
//本模式下:如果要禁止字符的叠加输出,则通过upd6464A_display_control()将显示关闭即可!
// 如果不加外部视频,则没有图象输出!
upd6464A_osc_mode_control(UPD6464A_CMD_OSC_ON,UPD6464A_CMD_VS_MODE_EXTERNAL);
//upd6464A_internal_color_control(UPD6464A_CMD_COLOR_BLUE);
upd6464A_internal_color_control(UPD6464A_CMD_COLOR_WHITE);
//后景蓝色,显示字体是白色(内部视频输出的时候)
//后景蓝色,显示字体是黑色(外部视频输出的时候)
//upd6464A_background_control(UPD6464A_CMD_BACKGROUND_NO);
//字体具有黑色勾边(内部视频输出的时候)
//后景外部图象,显示字体是白色的(外部视频输出的时候)
upd6464A_background_control(UPD6464A_CMD_BACKGROUND_BLACK_FRAMING);
//字体具有黑色背景(内部视频输出的时候)
////后景蓝色,显示字体是黑底白字(外部视频输出的时候)
//upd6464A_background_control(UPD6464A_CMD_BACKGROUND_BLACK_FILLING);
//除了字符显示区的前景是蓝色外,显示字符是黑底白字(内部视频输出的时候)
//显示底色是黑色,导致黑屏(外部视频输出的时候)
//upd6464A_background_control(UPD6464A_CMD_BACKGROUND_BLACK_ON_WHITE);
//外部振荡
//upd6464A_osc_method_control(UPD6464A_CMD_OSC_METHOD_Q);
//由于硬件和晶振都接上,两者没有明显差异
upd6464A_osc_method_control(UPD6464A_CMD_OSC_METHOD_4);
//视频输出幅度
//输出强度太大时,如果使用外部视频信号叠加则可能造成显示字符别扭,同步不稳定!
//upd6464A_output_level_control(UPD6464A_CMD_90_IRE,UPD6464A_CMD_2V_PP);
//字符颜色的浓度比上面浅一些
//1/2Vpp的幅度设置要求和信号输出以及接收者的输入相匹配!
upd6464A_output_level_control(UPD6464A_CMD_75_IRE,UPD6464A_CMD_1V_PP);
//字符尺寸
//测试后可知: 设置为UPD6464A_CMD_1_DOT,正好可以全屏显示12行*24列
// 说明全屏高度大致可以分为8*12=96(line unit),可以根据实际要显示的行数来设置字体的大小!
//字体的大小为UPD6464A_CMD_2_DOT时可以显示6行×14列
//芯片设置为PAL制,并且使用外同步后,pal制相机显示正常字符,NTSC制的相机显示的字符略高一些,
//所以造成最后一行显示一小半而已,所以做菜单如果兼容两种制式则应将行数限制在10行以下!
//补充的方法可以通过调节前面 upd6464A_disp_position_control()的参数完成,所有行的显示!
for(i=0; i<CONST_UPD6464A_CMD_WRITE_LINE_MAX+1; i++)
{
upd6464A_character_size_control(i, UPD6464A_CMD_1_DOT);
}
}
//End Of File
Test_menu.rar_UPD6464_test_menu
版权申诉
55 浏览量
2022-09-23
22:59:41
上传
评论
收藏 63KB RAR 举报
![avatar](https://profile-avatar.csdnimg.cn/6a7aa99d23544fe38965063dcf203f49_weixin_42664597.jpg!1)
小贝德罗
- 粉丝: 71
- 资源: 1万+
最新资源
- 使用ASP.NET Core和Entity Framework Core来构建一个基本的进销存系统.rar
- 深度学习经典数据集+FER2013面部表情识别+附带使用方法的python代码
- Python中,要实现连接多个相机并识别多个二维码.rar
- 使用FFT算法对一个信号进行分析.rar
- 171cms游戏应用下载系统源码.zip
- 基于jsp+servlet+mysql蛋糕甜品店购物网站源码+数据库(期末大作业).zip
- Java项目:在线蛋糕商城系统(java+jsp+mysql)源码+数据库+期末大作业.zip
- ZapyaClient10_7-1.apk
- 织梦cms站长导航网站源码.zip
- 基于SSM+MySQL的网络投票调查问卷系统源码+数据库(java期末大作业).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)